[cmor] 11/12: release 3.1

Alastair McKinstry mckinstry at moszumanska.debian.org
Mon Aug 8 08:05:52 UTC 2016


This is an automated email from the git hooks/post-receive script.

mckinstry pushed a commit to branch debian/master
in repository cmor.

commit 83b74e0ef147dec8a2455ba67a607c8ab129ccb2
Author: Alastair McKinstry <mckinstry at debian.org>
Date:   Fri Jun 17 09:06:29 2016 +0100

    release 3.1
---
 .gitignore                                         |     6 +-
 Doc/IPCC_output_requirements.htm                   |  3381 ----
 Doc/IPCC_output_requirements.pdf                   |   Bin 111256 -> 0 bytes
 Doc/cmor_users_guide.doc                           |   Bin 383488 -> 0 bytes
 Doc/cmor_users_guide.htm                           | 16650 -------------------
 Doc/cmor_users_guide.pdf                           |   Bin 576996 -> 0 bytes
 Doc/cmor_users_guide_files/filelist.xml            |     5 -
 Doc/cmor_users_guide_files/header.htm              |   122 -
 Doc/standard_output.html                           |  5561 -------
 Doc/standard_output.pdf                            |   Bin 107820 -> 0 bytes
 Doc/standard_output_updates.htm                    |   256 -
 INSTALL                                            |     6 +-
 LICENSE                                            |    66 +
 Lib/CV_experiments.json                            |  2224 +++
 Lib/__init__.py                                    |     2 +-
 Lib/check_CMOR_compliant.py                        |  1622 --
 Lib/convertCSVFile.py                              |    88 +
 Lib/pywrapper.py                                   |   143 +-
 Makefile.in                                        |    27 +-
 README.md                                          |    12 +
 RELEASE-NOTES                                      |     2 +
 Src/_cmormodule.c                                  |  1623 +-
 Src/cdTime/cdRegTrfm.c                             |    10 +
 Src/cdTime/cdTimeConv.c                            |     1 +
 Src/cdTime/reg_trfm.c                              |    42 +-
 Src/cmor.c                                         |  9479 ++++++-----
 Src/cmor_CV.c                                      |  1048 ++
 Src/cmor_axes.c                                    |  3999 +++--
 Src/cmor_cfortran_interface.c                      |  1228 +-
 Src/cmor_fortran_interface.f90                     |   973 +-
 Src/cmor_grids.c                                   |  1681 +-
 Src/cmor_tables.c                                  |  1193 +-
 Src/cmor_variables.c                               |  4905 ++++--
 Src/json-c/arraylist.c                             |   108 +
 Src/json-c/debug.c                                 |    83 +
 Src/json-c/json_c_version.c                        |    20 +
 Src/json-c/json_object.c                           |   994 ++
 Src/json-c/json_object_iterator.c                  |   168 +
 Src/json-c/json_tokener.c                          |   926 ++
 Src/json-c/json_util.c                             |   314 +
 Src/json-c/libjson.c                               |    26 +
 Src/json-c/linkhash.c                              |   670 +
 Src/json-c/printbuf.c                              |   193 +
 Src/json-c/random_seed.c                           |   238 +
 Test/CMIP6schema.py                                |    25 +
 Test/climatology_test_code.f90                     |    37 +-
 Test/cmor_speed_and_compression.json               |    61 +
 Test/cmor_speed_and_compression.py                 |    26 +-
 Test/cmor_speed_and_compression_01.py              |   123 +-
 Test/cmor_speed_and_compression_02.py              |     3 +
 ...sion_01.py => cmor_speed_and_compression_03.py} |    61 +-
 Test/ipcc_test_code.c                              |    61 +-
 Test/ipcc_test_code.f90                            |    53 +-
 Test/ipcc_test_code.json                           |    92 +
 Test/{ipcc_test_code.c => ipcc_test_code_json.c}   |     4 +-
 Test/jamie_hybrid_height.json                      |    62 +
 Test/jamie_hybrid_height.py                        |    17 +-
 Test/jamie_positive.json                           |    62 +
 Test/jamie_positive.py                             |    12 +-
 Test/karls.json                                    |    62 +
 Test/karls_test.f90                                |    58 +-
 Test/main_prog.f90                                 |    43 +-
 Test/mytest.f90                                    |    19 +-
 Test/mytest_3d_i_2.f90                             |    19 +-
 Test/mytest_3d_r.f90                               |    19 +-
 Test/mytest_3d_r_2.f90                             |    19 +-
 Test/mytest_4d_d_big_array_2.f90                   |    29 +-
 Test/mytest_4d_d_big_array_3.f90                   |    29 +-
 Test/mytest_4d_d_big_array_4.f90                   |    29 +-
 Test/mytest_4d_d_big_array_5.f90                   |    29 +-
 Test/mytest_4d_r.f90                               |    30 +-
 Test/mytest_4d_r_big_array.f90                     |    29 +-
 Test/omonxyztst.f90                                |    26 +-
 Test/python_test_table_A                           |  4399 +++--
 Test/rewrite_harvardf_data.f90                     |    16 +-
 Test/speed_test_table_A                            |  4133 +++--
 Test/test1.f90                                     |    46 +-
 Test/test1.json                                    |    62 +
 Test/test2.f90                                     |    44 +-
 Test/test2.json                                    |    62 +
 Test/test3.f90                                     |    64 +-
 Test/test4.f90                                     |    53 +-
 Test/test_3h.f90                                   |    44 +-
 Test/test_any_from_asc.f90                         |    30 +-
 Test/test_any_from_asc.json                        |    62 +
 Test/test_any_from_asc_d.f90                       |    27 +-
 Test/test_any_from_asc_d.json                      |    62 +
 Test/test_any_from_asc_i.f90                       |    27 +-
 Test/test_checker_works.py                         |   132 +-
 Test/test_cmor_grid_alejandro.f90                  |     6 +-
 Test/test_compression.json                         |    62 +
 Test/test_compression.py                           |    20 +-
 Test/test_dimensionless.f90                        |    50 +-
 Test/test_doc.json                                 |    41 +
 Test/test_doc.py                                   |    31 +
 Test/test_fortran_example_00.f90                   |    50 +-
 Test/test_fortran_example_01.f90                   |    32 +-
 Test/test_grid.c                                   |    22 +-
 Test/test_grid.json                                |    62 +
 Test/test_lon_gt_360.json                          |    62 +
 Test/test_lon_gt_360.py                            |    19 +-
 Test/test_lon_thro_360.json                        |    62 +
 Test/test_lon_thro_360.py                          |    17 +-
 Test/test_lots_of_variables.c                      |    27 +-
 Test/test_lots_of_variables.f90                    |    31 +-
 Test/test_lots_of_variables.json                   |    60 +
 Test/test_non_monotonic_climo_bonds_ok.py          |     2 +-
 Test/test_python_1D_var.json                       |    62 +
 Test/test_python_1D_var.py                         |    26 +-
 Test/test_python_2Gb_file.json                     |    62 +
 Test/test_python_2Gb_file.py                       |     9 +-
 Test/test_python_2Gb_slice.json                    |    62 +
 Test/test_python_2Gb_slice.py                      |     8 +-
 Test/test_python_3hr.json                          |    62 +
 Test/test_python_3hr.py                            |    25 +-
 Test/test_python_CMIP6_CV_HISTORY.json             |    82 +
 Test/test_python_CMIP6_CV_HISTORY.py               |   102 +
 Test/test_python_CMIP6_CV_badgridgr.json           |    92 +
 Test/test_python_CMIP6_CV_badgridgr.py             |    98 +
 Test/test_python_CMIP6_CV_badgridlabel.json        |    92 +
 Test/test_python_CMIP6_CV_badgridlabel.py          |    98 +
 Test/test_python_CMIP6_CV_badgridresolution.json   |    92 +
 Test/test_python_CMIP6_CV_badgridresolution.py     |    98 +
 Test/test_python_CMIP6_CV_badgridresolution2.json  |    92 +
 Test/test_python_CMIP6_CV_badgridresolution2.py    |    98 +
 Test/test_python_CMIP6_CV_badinstitution.json      |   102 +
 Test/test_python_CMIP6_CV_badinstitution.py        |    60 +
 Test/test_python_CMIP6_CV_badinstitutionID.json    |   102 +
 Test/test_python_CMIP6_CV_badinstitutionID.py      |    86 +
 ...est_python_CMIP6_CV_badinstitutionIDNotSet.json |   102 +
 .../test_python_CMIP6_CV_badinstitutionIDNotSet.py |    85 +
 Test/test_python_CMIP6_CV_badsource.json           |   100 +
 Test/test_python_CMIP6_CV_badsource.py             |    62 +
 Test/test_python_CMIP6_CV_badsourceid.json         |   102 +
 Test/test_python_CMIP6_CV_badsourceid.py           |    85 +
 Test/test_python_CMIP6_CV_badsourcetype.json       |   102 +
 Test/test_python_CMIP6_CV_badsourcetype.py         |    85 +
 .../test_python_CMIP6_CV_badsourcetypeCHEMAER.json |   102 +
 Test/test_python_CMIP6_CV_badsourcetypeCHEMAER.py  |    85 +
 Test/test_python_CMIP6_CV_badsourcetypeCHMAER.json |   102 +
 ...test_python_CMIP6_CV_badsourcetypeRequired.json |    82 +
 Test/test_python_CMIP6_CV_badsourcetypeRequired.py |    98 +
 Test/test_python_CMIP6_CV_badvariant.json          |    92 +
 Test/test_python_CMIP6_CV_badvariant.py            |    98 +
 Test/test_python_CMIP6_CV_externalvariables.json   |    91 +
 Test/test_python_CMIP6_CV_externalvariables.py     |    73 +
 Test/test_python_CMIP6_CV_furtherinfourl.json      |    82 +
 Test/test_python_CMIP6_CV_furtherinfourl.py        |   101 +
 Test/test_python_CMIP6_CV_fxtable.json             |    92 +
 Test/test_python_CMIP6_CV_fxtable.py               |   114 +
 .../test_python_CMIP6_CV_longrealizationindex.json |    92 +
 Test/test_python_CMIP6_CV_longrealizationindex.py  |   100 +
 Test/test_python_CMIP6_CV_nomipera.json            |    98 +
 Test/test_python_CMIP6_CV_nomipera.py              |    96 +
 Test/test_python_CMIP6_CV_trackingNoprefix.json    |    92 +
 Test/test_python_CMIP6_CV_trackingNoprefix.py      |    98 +
 Test/test_python_CMIP6_CV_trackingprefix.json      |    92 +
 Test/test_python_CMIP6_CV_trackingprefix.py        |    98 +
 Test/test_python_CMIP6_driving.json                |   103 +
 Test/test_python_CMIP6_driving.py                  |    15 +
 Test/test_python_CMIP6_experimentID.json           |    81 +
 Test/test_python_CMIP6_experimentID.py             |    15 +
 Test/test_python_CMIP6_no_driving.json             |    95 +
 Test/test_python_CMIP6_no_driving.py               |    15 +
 Test/test_python_CMIP6_wrong_activity.json         |   105 +
 Test/test_python_CMIP6_wrong_activity.py           |    14 +
 Test/test_python_YYYMMDDHH_exp_fmt.json            |    62 +
 Test/test_python_YYYMMDDHH_exp_fmt.py              |     6 +-
 Test/test_python_alastair_1.json                   |    62 +
 Test/test_python_alastair_1.py                     |    25 +-
 Test/test_python_appending.json                    |    62 +
 Test/test_python_appending.py                      |    19 +-
 Test/test_python_bounds_request.json               |    62 +
 Test/test_python_bounds_request.py                 |    14 +-
 Test/test_python_cfmip_site_axis_test.json         |    62 +
 Test/test_python_cfmip_site_axis_test.py           |    17 +-
 Test/test_python_direct_calls.json                 |    62 +
 Test/test_python_direct_calls.py                   |    24 +-
 Test/test_python_free_wrapping_issue.json          |    62 +
 Test/test_python_free_wrapping_issue.py            |    21 +-
 Test/test_python_fx.py                             |    48 -
 Test/test_python_grid_and_ocn_sigma.json           |    62 +
 Test/test_python_grid_and_ocn_sigma.py             |    35 +-
 Test/test_python_index_coord.py                    |     2 +-
 Test/test_python_jamie.json                        |    62 +
 Test/test_python_jamie.py                          |    11 +-
 Test/test_python_jamie_10.json                     |    62 +
 Test/test_python_jamie_10.py                       |    14 +-
 Test/test_python_jamie_11.json                     |    63 +
 Test/test_python_jamie_11.py                       |    19 +-
 Test/test_python_jamie_12.json                     |    62 +
 Test/test_python_jamie_12.py                       |    14 +-
 Test/test_python_jamie_2.json                      |    62 +
 Test/test_python_jamie_2.py                        |    10 +-
 Test/test_python_jamie_3.json                      |    62 +
 Test/test_python_jamie_3.py                        |    10 +-
 Test/test_python_jamie_4.json                      |    62 +
 Test/test_python_jamie_4.py                        |     9 +-
 Test/test_python_jamie_6.json                      |    62 +
 Test/test_python_jamie_6.py                        |    19 +-
 Test/test_python_jamie_7.json                      |    62 +
 Test/test_python_jamie_7.py                        |    21 +-
 Test/test_python_jamie_8.json                      |    62 +
 Test/test_python_jamie_8.py                        |    15 +-
 Test/test_python_jamie_9.json                      |    62 +
 Test/test_python_jamie_9.py                        |    18 +-
 Test/test_python_jamie_site_surface.json           |    62 +
 Test/test_python_jamie_site_surface.py             |    13 +-
 Test/test_python_joerg_1.json                      |    65 +
 Test/test_python_joerg_1.py                        |    21 +-
 Test/test_python_joerg_10.json                     |    62 +
 Test/test_python_joerg_10.py                       |    41 +-
 Test/test_python_joerg_11.json                     |    62 +
 Test/test_python_joerg_11.py                       |    31 +-
 Test/test_python_joerg_12.json                     |    62 +
 Test/test_python_joerg_12.py                       |    25 +-
 Test/test_python_joerg_2.json                      |    62 +
 Test/test_python_joerg_2.py                        |    16 +-
 Test/test_python_joerg_3.json                      |    51 +
 Test/test_python_joerg_3.py                        |    45 +-
 Test/test_python_joerg_4.json                      |    62 +
 Test/test_python_joerg_4.py                        |    38 +-
 Test/test_python_joerg_5.json                      |    31 +
 Test/test_python_joerg_5.py                        |    21 +-
 Test/test_python_joerg_6.json                      |    62 +
 Test/test_python_joerg_6.py                        |    24 +-
 Test/test_python_joerg_7.json                      |    62 +
 Test/test_python_joerg_7.py                        |    24 +-
 Test/test_python_joerg_8.json                      |    62 +
 Test/test_python_joerg_8.py                        |    29 +-
 Test/test_python_joerg_9.py                        |     4 +-
 Test/test_python_joerg_tim2_clim_02.json           |    62 +
 Test/test_python_joerg_tim2_clim_02.py             |    14 +-
 Test/test_python_max_variables.json                |    62 +
 Test/test_python_max_variables.py                  |    23 +-
 Test/test_python_max_variables_2.py                |    22 +-
 Test/test_python_memory_check.json                 |    62 +
 Test/test_python_memory_check.py                   |     8 +-
 Test/test_python_new_tables.json                   |    62 +
 Test/test_python_new_tables.py                     |    19 +-
 Test/test_python_obs4MIPs.json                     |    30 +
 ...YYMMDDHH_exp_fmt.py => test_python_obs4MIPs.py} |    29 +-
 Test/test_python_open_close_cmor_multiple.json     |    62 +
 Test/test_python_open_close_cmor_multiple.py       |    14 +-
 Test/test_python_region.json                       |    62 +
 Test/test_python_region.py                         |     7 +-
 Test/test_python_reverted_lats.json                |    62 +
 Test/test_python_reverted_lats.py                  |     4 +-
 .../test_python_singleton_anywhere_in_table_def.py |     6 +-
 Test/test_python_singleton_string.py               |    27 +-
 Test/test_python_user_interface_00.json            |    62 +
 Test/test_python_user_interface_00.py              |    29 +-
 Test/test_python_user_interface_01.json            |    62 +
 Test/test_python_user_interface_01.py              |    27 +-
 Test/test_python_user_interface_03.json            |    62 +
 Test/test_python_user_interface_03.py              |    38 +-
 Test/test_region.f90                               |    32 +-
 Test/test_shrt_exp_nm_set_att_initi.f90            |    30 +-
 Test/test_sigma.f90                                |    51 +-
 Test/test_singleton.f90                            |    55 +-
 .../{test_region.f90 => test_singleton_5D_tas.f90} |   226 +-
 Test/test_site_ts.json                             |    62 +
 Test/test_site_ts.py                               |    15 +-
 Test/test_sophie.f90                               |    46 +-
 Test/test_station_data.f90                         |    40 +-
 TestTables/CMIP6_3hr.json                          |  2522 +++
 TestTables/CMIP6_6hrLev.json                       |  2278 +++
 TestTables/CMIP6_6hrPlev.json                      |  2273 +++
 TestTables/CMIP6_6hrPlevpt.json                    |  2273 +++
 TestTables/CMIP6_Amon.json                         |  3417 ++++
 TestTables/CMIP6_AmonAdj.json                      |  2205 +++
 TestTables/CMIP6_Amon_json_hfls                    |  7423 +++++++++
 TestTables/CMIP6_CCMI1_hourly.json                 |  2380 +++
 TestTables/CMIP6_CCMI1_monthly.json                |  2341 +++
 TestTables/CMIP6_CORDEX_day.json                   |  2154 +++
 TestTables/CMIP6_CV.json                           |  2393 +++
 TestTables/CMIP6_LImon.json                        |  2800 ++++
 TestTables/CMIP6_Lmon.json                         |  3140 ++++
 TestTables/CMIP6_Oclim.json                        |  2715 +++
 TestTables/CMIP6_Oday.json                         |  2154 +++
 TestTables/CMIP6_Ofx.json                          |     1 +
 TestTables/CMIP6_Omon.json                         |  5979 +++++++
 TestTables/CMIP6_Oyr.json                          |  4007 +++++
 TestTables/CMIP6_SIday.json                        |     1 +
 TestTables/CMIP6_SImon.json                        |  3633 ++++
 TestTables/CMIP6_aerannual.json                    |  2273 +++
 TestTables/CMIP6_aerdaily.json                     |  2454 +++
 TestTables/CMIP6_aerfixed.json                     |  2182 +++
 TestTables/CMIP6_aerhourly.json                    |  2216 +++
 TestTables/CMIP6_aermonthly.json                   |  4766 ++++++
 TestTables/CMIP6_aero.json                         |  3536 ++++
 TestTables/CMIP6_badOmon.json                      |  5825 +++++++
 TestTables/CMIP6_cf3hr.json                        |  2375 +++
 TestTables/CMIP6_cfDay.json                        |  2873 ++++
 TestTables/CMIP6_cfMon.json                        |  3808 +++++
 TestTables/CMIP6_cfOff.json                        |     1 +
 TestTables/CMIP6_cfSites.json                      |  3273 ++++
 TestTables/CMIP6_cfsites.json                      |  3487 ++++
 TestTables/CMIP6_configure.json                    |     5 +
 TestTables/CMIP6_day.json                          |  2851 ++++
 TestTables/CMIP6_em.json                           |     1 +
 TestTables/CMIP6_em1hr.json                        |     1 +
 TestTables/CMIP6_em1hrclimmon.json                 |     1 +
 TestTables/CMIP6_em3hr.json                        |  2171 +++
 TestTables/CMIP6_em3hrpt.json                      |  2171 +++
 TestTables/CMIP6_emDay.json                        |  4058 +++++
 TestTables/CMIP6_emDayZ.json                       |  2222 +++
 TestTables/CMIP6_emDaypt.json                      |     1 +
 TestTables/CMIP6_emFx.json                         |  2256 +++
 TestTables/CMIP6_emMon.json                        |  7917 +++++++++
 TestTables/CMIP6_emMonZ.json                       |  2256 +++
 TestTables/CMIP6_emMonclim.json                    |     1 +
 TestTables/CMIP6_emMonpt.json                      |     1 +
 TestTables/CMIP6_emSubhr.json                      |  2358 +++
 TestTables/CMIP6_emYr.json                         |  2947 ++++
 TestTables/CMIP6_excerpts.json                     |   295 +
 TestTables/CMIP6_expt_list_042716-1.csv            |     1 +
 TestTables/CMIP6_fx.json                           |  2352 +++
 TestTables/CMIP6_grids.json                        |   156 +
 build.sh                                           |    85 +
 compile_line.txt.in                                |     3 +-
 configure                                          |    48 +-
 configure.ac                                       |    18 +-
 data/tas_ccsr-95a.xml                              |   168 +
 include/cdTime/cfortran.h                          |   234 +-
 include/cmor.h                                     |   649 +-
 include/cmor_func_def.h                            |   395 +-
 include/cmor_locale.h                              |     4 +
 include/cmor_md5.h                                 |    39 +-
 include/cmor_users_functions.mod                   |   Bin 0 -> 20233 bytes
 include/json-c/arraylist.h                         |    61 +
 include/json-c/bits.h                              |    35 +
 include/json-c/config.h                            |   175 +
 include/json-c/debug.h                             |    71 +
 include/json-c/json.h                              |    33 +
 include/json-c/json_c_version.h                    |    22 +
 include/json-c/json_config.h                       |     4 +
 include/json-c/json_inttypes.h                     |    19 +
 include/json-c/json_object.h                       |   698 +
 include/json-c/json_object_iterator.h              |   239 +
 include/json-c/json_object_private.h               |    55 +
 include/json-c/json_tokener.h                      |   208 +
 include/json-c/json_util.h                         |    51 +
 include/json-c/linkhash.h                          |   342 +
 include/json-c/math_compat.h                       |    31 +
 include/json-c/printbuf.h                          |    77 +
 include/json-c/random_seed.h                       |    25 +
 setup.py.in                                        |    11 +-
 348 files changed, 167814 insertions(+), 45134 deletions(-)

diff --git a/.gitignore b/.gitignore
index 76eb5e3..517ed31 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,6 +2,11 @@
 *~
 *.nc
 *.pyc
+*.gcno
+*.gcda
+.cproject
+.project
+.settings/
 Test/CMIP5
 CMIP5
 Makefile
@@ -9,6 +14,5 @@ build
 config.log
 compile_line.txt
 config.status
-setup.py
 Tables_csv/standard_output.xls
 autom4te.cache
diff --git a/Doc/IPCC_output_requirements.htm b/Doc/IPCC_output_requirements.htm
deleted file mode 100644
index 68a36b2..0000000
--- a/Doc/IPCC_output_requirements.htm
+++ /dev/null
@@ -1,3381 +0,0 @@
-<html>
-
-<head>
-<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
-<meta name=Generator content="Microsoft FrontPage 5.0">
-<title>IPCC Model Output Requirements</title>
-
-<style>
-<!--
- /* Font Definitions */
- @font-face
-	{font-family:Wingdings;
-	panose-1:5 0 0 0 0 0 0 0 0 0;}
- at font-face
-	{font-family:StarSymbol;}
- /* Style Definitions */
- p.MsoNormal, li.MsoNormal, div.MsoNormal
-	{margin:0in;
-	margin-bottom:.0001pt;
-	font-size:12.0pt;
-	font-family:"Times New Roman";}
-p.MsoFootnoteText, li.MsoFootnoteText, div.MsoFootnoteText
-	{margin:0in;
-	margin-bottom:.0001pt;
-	font-size:10.0pt;
-	font-family:"Times New Roman";}
-span.MsoFootnoteReference
-	{vertical-align:super;}
-span.MsoEndnoteReference
-	{vertical-align:super;}
-a:link, span.MsoHyperlink
-	{color:blue;
-	text-decoration:underline;}
-a:visited, span.MsoHyperlinkFollowed
-	{color:purple;
-	text-decoration:underline;}
-p
-	{margin-right:0in;
-	margin-left:0in;
-	font-size:12.0pt;
-	font-family:"Times New Roman";}
-span.FootnoteCharacters
-	{vertical-align:super;}
-span.WW8Num3z0
-	{font-family:Symbol;}
-span.WW8Num3z1
-	{font-family:"Courier New";}
-span.WW8Num3z2
-	{font-family:Wingdings;}
-span.WW8Num4z0
-	{font-family:Symbol;}
-span.WW8Num4z1
-	{font-family:"Courier New";}
-span.WW8Num4z2
-	{font-family:Wingdings;}
-span.WW8Num6z0
-	{font-family:Symbol;}
-span.WW8Num6z1
-	{font-family:"Courier New";}
-span.WW8Num6z2
-	{font-family:Wingdings;}
-span.WW8Num7z0
-	{font-family:Symbol;}
-span.WW8Num7z1
-	{font-family:"Courier New";}
-span.WW8Num7z2
-	{font-family:Wingdings;}
-span.WW8Num9z0
-	{font-family:Symbol;}
-span.WW8Num9z1
-	{font-family:"Courier New";}
-span.WW8Num9z2
-	{font-family:Wingdings;}
-span.WW8Num10z0
-	{font-family:Symbol;}
-span.WW8Num10z1
-	{font-family:"Courier New";}
-span.WW8Num10z2
-	{font-family:Wingdings;}
-span.WW8Num12z0
-	{font-family:Symbol;}
-span.WW8Num12z1
-	{font-family:"Courier New";}
-span.WW8Num12z2
-	{font-family:Wingdings;}
-span.WW8Num13z0
-	{font-family:Symbol;}
-span.WW8Num13z1
-	{font-family:"Courier New";}
-span.WW8Num13z2
-	{font-family:Wingdings;}
-span.WW8Num14z0
-	{font-family:Symbol;}
-span.WW8Num14z1
-	{font-family:"Courier New";}
-span.WW8Num14z2
-	{font-family:Wingdings;}
-span.WW8Num15z0
-	{font-family:Symbol;}
-span.WW8Num15z1
-	{font-family:"Courier New";}
-span.WW8Num15z2
-	{font-family:Wingdings;}
-span.WW8Num16z0
-	{font-family:Symbol;}
-span.WW8Num16z1
-	{font-family:"Courier New";}
-span.WW8Num16z2
-	{font-family:Wingdings;}
-span.WW8Num17z0
-	{font-family:Symbol;}
-span.WW8Num17z1
-	{font-family:"Courier New";}
-span.WW8Num17z2
-	{font-family:Wingdings;}
-span.WW8Num18z0
-	{font-family:Symbol;}
-span.WW8Num18z1
-	{font-family:"Courier New";}
-span.WW8Num18z2
-	{font-family:Wingdings;}
-span.WW8Num19z0
-	{font-family:Symbol;}
-span.WW8Num19z1
-	{font-family:"Courier New";}
-span.WW8Num19z2
-	{font-family:Wingdings;}
-span.WW8Num23z0
-	{font-family:Symbol;}
-span.WW8Num23z1
-	{font-family:"Courier New";}
-span.WW8Num23z2
-	{font-family:Wingdings;}
-span.BulletSymbols
-	{font-family:StarSymbol;}
- at page Section1
-	{size:8.5in 11.0in;
-	margin:1.0in 1.2in 1.0in 1.25in;}
-div.Section1
-	{page:Section1;}
- /* List Definitions */
- ol
-	{margin-bottom:0in;}
-ul
-	{margin-bottom:0in;}
--->
-</style>
-
-</head>
-
-<body lang=EN-US link=blue vlink=purple>
-
-<div class=Section1>
-
-<p class=MsoNormal align=center style='text-align:center'><b><span
-style='font-size:16.0pt'>Requirements for</span></b></p>
-
-<p class=MsoNormal align=center style='text-align:center'><b><span
-style='font-size:16.0pt'>IPCC Standard Output Contributed to the PCMDI Archive</span></b></p>
-
-<p class=MsoNormal align=center style='text-align:center'><b><span
-style='font-size:16.0pt'> </span></b></p>
-
-<p class=MsoNormal align=center style='text-align:center'><span style='font-size:14.0pt'>15 September 2005</span></p>
-
-<p class=MsoNormal><b><span style='font-size:14.0pt'> </span></b></p>
-
-<p class=MsoNormal align=center style='text-align:center'><span
-style='font-size:14.0pt'>(Send questions/comments/suggestions to <span
-class=MsoHyperlink><span style='color:blue'><a href="mailto:taylor13 at llnl.gov">taylor13 at llnl.gov</a></span></span>)</span></p>
-
-<p class=MsoNormal><span style='font-size:16.0pt;color:red'> </span></p>
-
-<p class=MsoNormal align=center style='text-align:center'><span
-style='font-size:16.0pt;color:red'>Click <i><a
-href="http://www-pcmdi.llnl.gov/ipcc/IPCC_output_requirements.pdf">here</a></i>
-to obtain a pdf version of this document.</span></p>
-
-<p class=MsoNormal><span style='font-size:16.0pt;color:red'> </span></p>
-
-<p class=MsoNormal align=center style='text-align:center'><span
-style='font-size:16.0pt'>Recent changes to this document are summarized in the
-last section <a href="#updates">below</a>.</span></p>
-
-<p class=MsoNormal><span style='font-size:16.0pt'> </span></p>
-
-<p class=MsoNormal><b><span style='font-size:14.0pt'>������������������������������������ ���������������������������������� </span></b></p>
-
-<p class=MsoNormal><b><span style='font-size:14.0pt'>Overview</span></b></p>
-
-<p class=MsoNormal style='text-align:justify'> </p>
-
-<p class=MsoNormal style='text-align:justify'>Much of the output from coupled
-ocean-atmosphere GCM simulations performed as part of the IPCC process will be
-archived at PCMDI and then distributed for analysis to IPCC WG1 under policies
-developed by IPCC and the WGCM.� The user community will expect to be able to
-extract the data both efficiently and in a uniform way across all models.� This
-imposes rather restrictive constraints on how the data should be organized.�
-With currently available resources, the effort to write the data in a uniform
-structure and format falls on the modeling centers contributing the data.� In
-this document we provide the specifications for writing this model output.� There
-is considerable community support for imposing these same requirements on
-output contributed as part of various model intercomparison projects (e.g.,
-CMIP, AMIP, CFMIP, APE, PMIP, etc.), so the effort required to prepare data for
-IPCC will likely have longer term payoffs as model output is prepared for these
-other projects. </p>
-
-<p class=MsoNormal style='text-align:justify'> </p>
-
-<p class=MsoNormal style='text-align:justify'>A FORTRAN 90 code,
-<a href="http://www-pcmdi.llnl.gov/software-portal/cmor">CMOR</a><a
-href="#_ftn1" name="_ftnref1" title=""><span class=MsoFootnoteReference><span style='font-size:12.0pt;font-family:"Times New Roman"'>[1]</span></span></a>
-(pronounced "see more") has been written to output data that conforms
-to these requirements. <a
-href="http://www-pcmdi.llnl.gov/software/cmor/cmor_users_guide.pdf">Documentation</a><a
-href="#_ftn2" name="_ftnref2" title=""><span class=MsoFootnoteReference><span
-class=MsoFootnoteReference><span style='font-size:12.0pt;font-family:"Times New Roman"'>[2]</span></span></span></a>
-for this code explains how it can substantially reduce the burden placed on the
-modeling centers preparing IPCC model output.  For those groups choosing
-not to use this output code, the following requirements should be strictly
-adhered to.</p>
-
-<p class=MsoNormal style='text-align:justify'> </p>
-
-<p class=MsoNormal style='text-align:justify'>The data archived at PCMDI will
-be made available to the community via the <a href="http://esg.llnl.gov/portal">ESG
-</a><a href="#_ftn3" name="_ftnref3" title=""><span class=MsoFootnoteReference><span
-class=MsoFootnoteReference><span style='font-size:12.0pt;font-family:"Times New Roman"'>[3]</span></span></span></a>(Earth
-System Grid), which will include a variety of methods for accessing the data
-(e.g., GridFTP).� Password protection will be used to limit access to those
-granted permission according to IPCC and WGCM policies.</p>
-
-<p class=MsoNormal style='text-align:justify'> </p>
-
-<p class=MsoNormal style='text-align:justify'>The requirements for data
-contributed to the archive are listed in four sections below, the first specifying
-the general structure and format of the data, the second the constraints
-imposed on the variables, the third the metadata required for describing the
-coordinates, and the last setting down the required and recommended
-"global attributes".� </p>
-
-<p class=MsoNormal style='text-align:justify'> </p>
-
-<p class=MsoNormal style='text-align:justify;page-break-after:avoid'><b><span
-style='font-size:14.0pt'>Data format, data structure, and file composition
-requirements:</span></b></p>
-
-<p class=MsoNormal style='text-align:justify;page-break-after:avoid'> </p>
-
-<p class=MsoNormal style='margin-left:.55in;text-align:justify;text-indent:
--.3in'><span style='font-family:"Courier New"'>▪ </span>Data must be
-written through the <a
-href="http://my.unidata.ucar.edu/content/software/netcdf/">netCDF</a><a
-href="#_ftn4" name="_ftnref4" title=""><span class=FootnoteCharacters><span
-class=FootnoteCharacters><span style='font-size:12.0pt;font-family:"Times New Roman"'>[4]</span></span></span></a>
-API (application program interface) and conform to the <a
-href="http://www.cgd.ucar.edu/cms/eaton/cf-metadata">CF metadata standards</a><a
-href="#_ftn5" name="_ftnref5" title=""><span class=FootnoteCharacters><span
-class=FootnoteCharacters><span style='font-size:12.0pt;font-family:"Times New Roman"'>[5]</span></span></span></a>.
-</p>
-
-<p class=MsoNormal style='margin-left:.55in;text-align:justify;text-indent:
--.3in'><span style='font-family:"Courier New"'>▪ </span>Each file must
-contain only a single output field from a single simulation (i.e., a single
-run).� Each file will also include coordinate variables, attributes and other
-metadata as specified below.� If the field is a function of time, more than one
-time sample (but not necessarily all time samples) may be included in a single
-file.� File size should never exceed 2 gigabytes; we recommend that for long
-time-series typical of many coupled model simulations, the data should not be
-parsed to finely: a few large files is preferred to many small files (within
-the 2 gigabyte limit).� (Monthly data, for example, might be divided into multi-decade
-chunks.)</p>
-
-<p class=MsoNormal style='margin-left:.55in;text-align:justify;text-indent:
--.3in'><span style='font-family:"Courier New"'>▪ </span>For data that are
-a function of longitude and latitude, only grids representable as a Cartesian
-product of longitude and latitude axes are allowed.� Model output on other
-grids, such as "thin" grids, grids with rotated poles, and irregular
-grids, must be mapped to a longitude-latitude Cartesian grid before being
-stored.</p>
-
-<p class=MsoNormal style='margin-left:.55in;text-align:justify;text-indent:
--.3in'><span style='font-family:"Courier New"'>▪ </span>Most atmospheric
-fields that are functions of the vertical coordinate must be interpolated to
-standard pressure levels (as specified in the <a
-href="http://www-pcmdi.llnl.gov/ipcc/standard_output.html">IPCC Standard Output</a><a
-href="#_ftn6" name="_ftnref6" title=""><sup><sup><span style='font-size:12.0pt;
-font-family:"Times New Roman"'>[6]</span></sup></sup></a> list of variables),
-but one field (the 3-d cloud fraction) will reside on the original model
-levels.� There are different metadata and attribute requirements specified
-below for these two types of "3-d" fields.� </p>
-
-<p class=MsoNormal style='margin-left:.55in;text-align:justify;text-indent:
--.3in'><span style='font-family:"Courier New"'>▪ </span>Oceanic fields
-that are a function of the vertical coordinate must be reported on depth levels
-and it is recommended, but not required, that they be interpolated �to standard
-depth levels (as specified in the <a
-href="http://www-pcmdi.llnl.gov/ipcc/standard_output.html">IPCC Standard Output</a><a
-href="#_ftn7" name="_ftnref7" title=""><sup><sup><span style='font-size:12.0pt;
-font-family:"Times New Roman"'>[7]</span></sup></sup></a>).</p>
-
-<p class=MsoNormal style='margin-left:.55in;text-align:justify;text-indent:
--.3in'><span style='font-family:"Courier New"'>▪ </span>The IPCC database
-will comprise output from many different models, at least 11 experiments,
-perhaps several ensemble members, which have been sampled (or averaged) at 5
-different frequencies (time-independent, annually, monthly, daily, and 3-hourly).
-��A separate directory should be created containing all the variables in each
-model/experiment/standard_output_table/ensemble_member category (e.g., CSIRO/20C3M/A1/run1).�
-This will ensure that filenames (discussed next) within each directory are
-unique.� For uniformity, it is suggested that the trailing lower case letter on
-tables should be dropped (e.g., 'A1', not A1a) and it is suggested that the
-experiments be abbreviated as follows:</p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.25in'><span style='font-family:"Courier New"'>→ </span>PIcntrl (i.e.,
-the pre-industrial control experiment)</p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.25in'><span style='font-family:"Courier New"'>→ </span>PDcntrl (i.e.,
-the present-day control experiment)</p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.25in'><a name="OLE_LINK1"><span style='font-family:"Courier New"'>→ </span>20C3M
-(i.e., the climate of the 20th Century experiment (20C3M))</a></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.25in'><span style='font-family:"Courier New"'>→ </span>Commit (i.e.,
-the committed climate change experiment)</p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.25in'><span style='font-family:"Courier New"'>→ </span>SRESA2 (i.e.,
-the SRES A2 experiment)</p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.25in'><span style='font-family:"Courier New"'>→ </span>SRESA1B (i.e.,
-the 720 ppm stabilization experiment (SRES A1B))</p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.25in'><span style='font-family:"Courier New"'>→ </span>SRESB1 (i.e.,
-the 550 ppm stabilization experiment (SRES B1))</p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.25in'><span style='font-family:"Courier New"'>→ </span>1%_to2x (i.e.,
-the 1%/year CO2 increase experiment (to doubling))</p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.25in'><span style='font-family:"Courier New"'>→ </span>1%_to4x (i.e.,
-the 1%/year CO2 increase experiment (to quadrupling))</p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.25in'><span style='font-family:"Courier New"'>→ </span>Slabcntl (i.e.,
-the slab ocean control experiment)</p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.25in'><span style='font-family:"Courier New"'>→ </span>2xCO2 (i.e., the
-2xCO2 equilibrium experiment)</p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.25in'><span style='font-family:"Courier New"'>→ </span>AMIP (i.e., the
-AMIP experiment)</p>
-
-<p class=MsoNormal style='margin-left:.25in;text-align:justify'> </p>
-
-<p class=MsoNormal style='margin-left:.55in;text-align:justify;text-indent:
--.3in'><span style='font-family:"Courier New"'>▪ </span>The names of
-output netCDF files must begin with the 'output variable name' listed in the <a
-href="http://www-pcmdi.llnl.gov/ipcc/standard_output.html">IPCC Standard Output</a><a
-href="#_ftn8" name="_ftnref8" title=""><sup><sup><span style='font-size:12.0pt;
-font-family:"Times New Roman"'>[8]</span></sup></sup></a> list of variables,
-followed by an underscore and then the table number (e.g., tas_O1, psl_A1, tas_A4,
-etc.; note that the lower case letter suffix on the tables may be omitted:
-psl_A1a may be written psl_A1).� Following this prefix, the user is free to
-complete the name in any reasonable way. �Recall that the time samples from a
-single variable may be separated into contiguous groups and stored in separate
-files.� The user must make sure that the names of the series of files are
-unique.� If, for example, each file contains 50 years of data, the user might
-simply label the files by 50-year chunks (e.g., tas_O1_1.nc, tas_O1_2.nc, tas_O1_3.nc,
-etc.), but more explicit information could also be included in the file names
-(e.g., tas_O1_1900-1949.nc, tas_O1950-1999.nc, tas_O1_2000-2049.nc, etc.)</p>
-
-<p class=MsoNormal style='margin-left:.25in;text-align:justify'> </p>
-
-<p class=MsoNormal style='text-align:justify;page-break-after:avoid'><b><span
-style='font-size:14.0pt'>Requirements for output variables:</span></b></p>
-
-<p class=MsoNormal style='text-align:justify;page-break-after:avoid'> </p>
-
-<p class=MsoNormal style='margin-left:.55in;text-align:justify;text-indent:
--.3in'><span style='font-family:"Courier New"'>▪ </span>All output fields
-must be written as single precision floating point numbers (netCDF type
-"float").</p>
-
-<p class=MsoNormal style='margin-left:.55in;text-align:justify;text-indent:
--.3in'><span style='font-family:"Courier New"'>▪ </span>The variable
-names (in the netCDF file) must be the names ("output variable
-names") specified in the <a
-href="http://www-pcmdi.llnl.gov/ipcc/standard_output.html">IPCC Standard Output</a><a
-href="#_ftn9" name="_ftnref9" title=""><sup><sup><span style='font-size:12.0pt;
-font-family:"Times New Roman"'>[9]</span></sup></sup></a> table (e.g., surface
-air temperature data will be stored in a variable named "tas").</p>
-
-<p class=MsoNormal style='margin-left:.55in;text-align:justify;text-indent:
--.3in'><span style='font-family:"Courier New"'>▪ </span>The units
-required for the output fields are given in the <a
-href="http://www-pcmdi.llnl.gov/ipcc/standard_output.html">IPCC Standard Output</a><a
-href="#_ftn10" name="_ftnref10" title=""><sup><sup><span style='font-size:12.0pt;
-font-family:"Times New Roman"'>[10]</span></sup></sup></a> tables.</p>
-
-<p class=MsoNormal style='margin-left:.55in;text-align:justify;text-indent:
--.3in'><span style='font-family:"Courier New"'>▪ </span>The positive
-direction of vertical fluxes must be consistent with that specified in the <a
-href="http://www-pcmdi.llnl.gov/ipcc/standard_output.html">IPCC Standard Output</a><a
-href="#_ftn11" name="_ftnref11" title=""><sup><sup><span style='font-size:12.0pt;
-font-family:"Times New Roman"'>[11]</span></sup></sup></a> table "CF
-standard name".� For example, the positive direction for vertical heat
-fluxes (e.g., "surface_upward_latent_heat_flux") and momentum fluxes
-(e.g., "surface_downward_eastward_stress") are implied by the
-standard name.</p>
-
-<p class=MsoNormal style='margin-left:.55in;text-align:justify;text-indent:
--.3in'><span style='font-family:"Courier New"'>▪ </span>The order of
-array dimensions must be:� time, level, latitude, longitude.� For fields of
-lesser rank, one or more coordinate will be omitted, but the ordering must be
-preserved.� The above order assumes the C language convention (opposite the
-FORTRAN convention) in which the last coordinate varies most rapidly.� In the
-few cases where an additional dimension is required (e.g., the
-"region" dimension used to distinguish different ocean basins), that
-dimension should appear just after the "time" dimension.</p>
-
-<p class=MsoNormal style='margin-left:.55in;text-align:justify;text-indent:
--.3in'><span style='font-family:"Courier New"'>▪ </span>If longitude is a
-coordinate, data must be stored west to east (in degrees), starting with the
-first grid point greater than or equal to 0 degrees east.� All coordinate
-locations must be unique (e.g., don't include both 0 and 360 degrees east).</p>
-
-<p class=MsoNormal style='margin-left:.55in;text-align:justify;text-indent:
--.3in'><span style='font-family:"Courier New"'>▪ </span>If latitude is a
-coordinate, data must be stored south to north (in degrees).</p>
-
-<p class=MsoNormal style='margin-left:.55in;text-align:justify;text-indent:
--.3in'><span style='font-family:"Courier New"'>▪ </span>If there is a
-vertical coordinate, data must be stored starting with the grid point nearest
-the surface. </p>
-
-<p class=MsoNormal style='margin-left:.55in;text-align:justify;text-indent:
--.3in'><span style='font-family:"Courier New"'>▪ </span>If there is a
-time dimension, data must be stored with time increasing.</p>
-
-<p class=MsoNormal style='margin-left:.55in;text-align:justify;text-indent:
--.3in'><span style='font-family:"Courier New"'>▪ </span>If there is a
-"region" coordinate, used to distinguish ocean basins, the data
-should be stored in the order: Atlantic, Indian, Pacific, global.</p>
-
-<p class=MsoNormal style='margin-left:.55in;text-align:justify;text-indent:
--.3in'><span style='font-family:"Courier New"'>▪ </span>All "missing
-data"<a href="#_ftn12" name="_ftnref12" title=""><sup><sup><span
-style='font-size:12.0pt;font-family:"Times New Roman"'>[12]</span></sup></sup></a>
-must be assigned the single precision floating point value of 1.e20</p>
-
-<p class=MsoNormal style='margin-left:.55in;text-align:justify;text-indent:
--.3in'><span style='font-family:"Courier New"'>▪ </span>For ocean heat
-flux and stream function data, an extra dimension must be included to identify
-the basin � Atlantic, Indian, Pacific, or global oceans. (See <a
-href="#example_4">example 4</a> �below.)</p>
-
-<p class=MsoNormal style='margin-left:.55in;text-align:justify;text-indent:
--.3in'><span style='font-family:"Courier New"'>▪ </span>Required
-attributes:</p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.25in'><span style='font-family:"Courier New"'>→ </span>standard_name =
-a character string containing a CF standard name that can be found in the <a
-href="http://www-pcmdi.llnl.gov/ipcc/standard_output.html">IPCC Standard Output</a><a
-href="#_ftn13" name="_ftnref13" title=""><sup><sup><span style='font-size:12.0pt;
-font-family:"Times New Roman"'>[13]</span></sup></sup></a> tables.� Although
-usually required, for a few fields the standard_name is omitted from the table,
-and for these variables the standard_name should be omitted as an attribute. </p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.25in'><span style='font-family:"Courier New"'>→ </span>units = a
-character string containing the units given in the <a
-href="http://www-pcmdi.llnl.gov/ipcc/standard_output.html">IPCC Standard Output</a><a
-href="#_ftn14" name="_ftnref14" title=""><sup><sup><span style='font-size:12.0pt;
-font-family:"Times New Roman"'>[14]</span></sup></sup></a> tables, which must
-be in a form recognizable by <a
-href="http://my.unidata.ucar.edu/content/software/udunits/">UNIDATA's Udunits
-package</a><a href="#_ftn15" name="_ftnref15" title=""><span
-class=MsoFootnoteReference><span class=MsoFootnoteReference><span
-style='font-size:12.0pt;font-family:"Times New Roman"'>[15]</span></span></span></a>
-(e.g., "W m-2".) </p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.25in'><span style='font-family:"Courier New"'>→ </span>If the variable
-has any "missing values", then define _FillValue = 1.e20, and assign
-that value to data that are "missing".</p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.25in'><span style='font-family:"Courier New"'>→ </span>When an output
-field has a coordinate that is single-valued (e.g., surface wind may have a
-vertical coordinate value of 10 meters), a "coordinates" attribute must
-be defined and the scalar value must be stored in the file.� The following
-variables require singleton dimension information: tas, tasmin, tasmax, mrsos,
-mrros, uas, vas, and huss. �For each of these variables, an <a
-href="http://www-pcmdi.llnl.gov/ipcc/standard_output.html">IPCC Standard Output</a><a
-href="#_ftn16" name="_ftnref16" title=""><sup><sup><span style='font-size:12.0pt;
-font-family:"Times New Roman"'>[16]</span></sup></sup></a> table indicates what
-the value of the singleton dimension should be. �As illustrated by<a
-href="#example_3"> example 3</a> below, the "bounds" attribute is
-required on the singleton dimension associated with mrsos and mrros.� See <a
-href="http://www.cgd.ucar.edu/cms/eaton/cf-metadata/CF-1.0.html#scalar_coords">section
-5.7 of the CF-conventions</a><a href="#_ftn17" name="_ftnref17" title=""><span
-class=MsoFootnoteReference><span class=MsoFootnoteReference><span
-style='font-size:12.0pt;font-family:"Times New Roman"'>[17]</span></span></span></a>
-for more information.</p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.25in'><span style='font-family:"Courier New"'>→ </span>If the variable
-contains a time-mean, then the �cell_methods� attribute must be defined with
-the value �time: mean� or if you want to indicate that the interval between
-samples contributing to the mean is 3 hours, then cell_methods='time: mean
-(interval: 3 hours)'.� If the variable is accumulated across an ocean basin
-then the cell_methods attribute must include the string �longitude: sum�.� If
-the variable is both a time-mean and zonally accumulated, then cell_methods =
-'time: mean� longitude: sum').</p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.25in'><span style='font-family:"Courier New"'>→ </span>When a field is
-stored by ocean basin (e.g., northward ocean heat transport in the Atlantic,
-Indian, and Pacific basins, as well as the global transport), a
-"coordinates" attribute must be defined with the value
-"geo_region". See<a href="#example_4"> example 4</a> below and <a
-href="http://www.cgd.ucar.edu/cms/eaton/cf-metadata/CF-1.0.html#region">section
-6.1.1 of the CF-conventions</a><a href="#_ftn18" name="_ftnref18" title=""><span
-class=MsoFootnoteReference><span class=MsoFootnoteReference><span
-style='font-size:12.0pt;font-family:"Times New Roman"'>[18]</span></span></span></a>
-for more information.</p>
-
-<p class=MsoNormal style='margin-left:.75in;text-align:justify'> </p>
-
-<p class=MsoNormal style='margin-left:.55in;text-align:justify;text-indent:
--.3in'><span style='font-family:"Courier New"'>▪ </span>Recommended attributes:</p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.25in'><span style='font-family:"Courier New"'>→ </span>If the variable
-has any "missing values", then define missing_value = 1.e20� Note
-that although this attribute seems to be redundant with _FillValue, some
-software that reads netCDF files expects the missing_value attribute, while
-other software expects the _FillValue attribute, so including both is
-recommended.</p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.25in'><span style='font-family:"Courier New"'>→ </span>original_name =
-the name of the variable as it is commonly known at the user's modeling
-institute.� If the variable being written was computed in some simple way from
-two or more original fields (e.g., subtracting the upwelling and downwelling
-fluxes to get a net flux, or multiplying by a scalar or changing the sign),
-then it is recommended that this be indicated in the "original_name"
-(e.g., "irup � irdown", where "irup" and "irdown"
-are the names of the original fields that were subtracted).� If more
-complicated processing is required, attribute would likely be omitted and the information
-would more naturally be included in a "history" attribute for this
-variable, described next.</p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.25in'><span style='font-family:"Courier New"'>→ </span>history = how
-the variable was processed before outputting (e.g., give name(s) of the file(s)
-from which the data were read and indicate what calculations were performed,
-such as interpolating to standard pressure levels or changing the unit).� This
-information should allow someone at the user's institute to reproduce the
-procedure that created the output.� Note that this history attribute is
-variable-specific, whereas the global history attribute defined below (see
-"Recommended attributes" under "Requirements for global
-attributes") provides information concerning the model simulation itself
-or refers to processing procedures common to all variables.� </p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.25in'><span style='font-family:"Courier New"'>→ </span>original_units =
-a character string indicating the original units of the data before it has been
-processed to be consistent with the units appearing in the <a
-href="http://www-pcmdi.llnl.gov/ipcc/standard_output.html">IPCC Standard Output</a><a
-href="#_ftn19" name="_ftnref19" title=""><sup><sup><span style='font-size:12.0pt;
-font-family:"Times New Roman"'>[19]</span></sup></sup></a> tables. </p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.25in'><span style='font-family:"Courier New"'>→ </span>long_name = a
-character string that might serve as a title for the variable on plots (e.g.,
-"Surface Air Temperature").</p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.25in'><span style='font-family:"Courier New"'>→ </span>comment = a
-character string providing further information concerning the variable (e.g.,
-if the variable is mrso � soil_moisture_content �, the comment might read
-"includes subsurface frozen water but not surface snow and ice").</p>
-
-<p class=MsoNormal style='text-align:justify'> </p>
-
-<p class=MsoNormal style='text-align:justify;page-break-after:avoid'><b><span
-style='font-size:14.0pt'>Requirements for coordinate variables:</span></b></p>
-
-<p class=MsoNormal style='text-align:justify;page-break-after:avoid'><b><span
-style='font-size:14.0pt'> </span></b></p>
-
-<p class=MsoNormal style='margin-left:.55in;text-align:justify;text-indent:
--.3in'><span style='font-family:"Courier New"'>▪ </span>All coordinate
-variables must be written as double precision floating point numbers (netCDF
-type "double").</p>
-
-<p class=MsoNormal style='margin-left:.55in;text-align:justify;text-indent:
--.3in'><span style='font-family:"Courier New"'>▪ </span>A longitude
-coordinate must be named either "longitude" or, �preferably, "lon",
-its CF standard name is "longitude", and its units must be
-"degrees_east".� The values should be store west to east starting
-with the first longitude greater than or equal to 0 degrees.</p>
-
-<p class=MsoNormal style='margin-left:.55in;text-align:justify;text-indent:
--.3in'><span style='font-family:"Courier New"'>▪ </span>A latitude
-coordinate must be named either "latitude" or, preferably,
-"lat", its CF standard name is "latitude", and its units
-must be "degrees_north".� The values should be stored south to north.</p>
-
-<p class=MsoNormal style='margin-left:.55in;text-align:justify;text-indent:
--.3in'><span style='font-family:"Courier New"'>▪ </span>A time coordinate
-must be named "time", its CF standard name is "time", and
-its units must be "days since [basetime]", where [basetime] can be
-specified by the user, typically in the form year-month-day� (e.g., "days
-since 1800-1-1").� The same 'base time' should apply to all time samples
-in a single simulation (i.e., when creating a series of files containing model
-output for a single run, don't change the units or basetime from one file to
-the next; in the above example 1800-1-1 is the 'base time').� For time-mean
-data, it is recommended that the coordinate value be defined as the mid-point
-of the interval over which the average is computed.� (More generally, this same
-recommendation applies whenever time-bounds are included: the time coordinate
-value should be the mean of the two time bounds.)</p>
-
-<p class=MsoNormal style='margin-left:.55in;text-align:justify;text-indent:
--.3in'><span style='font-family:"Courier New"'>▪ </span>An atmospheric
-pressure coordinate must be named "plev", its CF standard name is
-"air_pressure" and its units must be "Pa" (Pascal).� The values
-should be stored in order of decreasing pressure.</p>
-
-<p class=MsoNormal style='margin-left:.55in;text-align:justify;text-indent:
--.3in'><span style='font-family:"Courier New"'>▪ </span>An atmospheric
-height coordinate must be named "height", its CF standard name is
-"height" and its units must be "m" (meters).� The values
-should be stored in order of increasing height. </p>
-
-<p class=MsoNormal style='margin-left:.55in;text-align:justify;text-indent:
--.3in'><span style='font-family:"Courier New"'>▪ </span>An atmospheric or
-ocean dimensionless vertical coordinate (indicating model level) must be named
-"lev" and its CF standard name can be found in <a
-href="http://www.cgd.ucar.edu/cms/eaton/cf-metadata/CF-1.0.html#vrt_app">Appendix
-D</a><a href="#_ftn20" name="_ftnref20" title=""><sup><sup><span
-style='font-size:12.0pt;font-family:"Times New Roman"'>[20]</span></sup></sup></a>
-of the CF-conventions.� The values should be stored starting with the
-coordinate nearest the earth's surface.</p>
-
-<p class=MsoNormal style='margin-left:.55in;text-align:justify;text-indent:
--.3in'><span style='font-family:"Courier New"'>▪ </span>An ocean depth
-coordinate must be named "depth", its CF standard name is
-"depth", its units must be "m" (meters), and it must
-increase with increasing depth (i.e., positive-down). �The values should be
-stored in order of increasing depth (surface down). </p>
-
-<p class=MsoNormal style='margin-left:.55in;text-align:justify;text-indent:
--.3in'><span style='font-family:"Courier New"'>▪ </span>With some
-exceptions (indicated immediately below), the bounds on coordinate variables
-must be included in the file.� For longitude and latitude, the bounds must
-always be included.� For time, the bounds must be included if the data
-represent a time-mean (e.g., monthly mean).� For model-level data, the cell
-bounds should be included, indicating the interfaces between model levels (see <a
-href="#example_5">example 5</a> below).� For data that has been interpolated to
-pressure surfaces, there should be no �bounds� attribute attached to the
-pressure coordinate (see <a href="#example_2">example 2</a> below). The same is
-true for ocean depth coordinate data that has been interpolated from model
-levels. For data that represent a �snap-shot� in time (e.g., the values at a
-single model time-step), the time coordinate should have no �bounds�
-attribute.� A "region" dimension will not require bounds (see <a
-href="#example_5">example 5</a> below).� Note that CF requires cell bounds for
-1-dimensional coordinates be stored in 2-dimensional arrays as described in <a
-href="http://www.cgd.ucar.edu/cms/eaton/cf-metadata/CF-1.0.html#bnds">section
-7.1 of the CF-conventions</a><a href="#_ftn21" name="_ftnref21" title=""><sup><sup><span
-style='font-size:12.0pt;font-family:"Times New Roman"'>[21]</span></sup></sup></a>
-and as shown in the examples below.</p>
-
-<p class=MsoNormal style='margin-left:.55in;text-align:justify;text-indent:
--.3in'><span style='font-family:"Courier New"'>▪ </span>For dimensionless
-vertical coordinates, the user must include in the file all the information
-needed to positively and uniquely indicate the location of the data.� In this
-case the "formula_terms" attribute must be defined and additional
-variables or parameters will need to be stored in the file (e.g., surface
-pressure and pressure at the top of the model for an atmospheric-sigma
-coordinate system).� See� <a href="#example_5">example 5</a> below, and <a
-href="http://www.cgd.ucar.edu/cms/eaton/cf-metadata/CF-1.0.html#vdim">section
-4.3.2 of the CF-conventions</a><a href="#_ftn22" name="_ftnref22" title=""><sup><sup><span
-style='font-size:12.0pt;font-family:"Times New Roman"'>[22]</span></sup></sup></a>
-and <a href="http://www.cgd.ucar.edu/cms/eaton/cf-metadata/CF-1.0.html#vrt_app">Appendix
-D</a><a href="#_ftn23" name="_ftnref23" title=""><sup><sup><span
-style='font-size:12.0pt;font-family:"Times New Roman"'>[23]</span></sup></sup></a>
-of the CF-conventions.</p>
-
-<p class=MsoNormal style='margin-left:.55in;text-align:justify;text-indent:
--.3in'><span style='font-family:"Courier New"'>▪ </span>Variables that
-are stored by basin must include a dimension corresponding with the geographic
-region.� The "region" dimension is a simple index (no coordinate
-values) with the name "region".� A character variable (netCDF type
-"char") by the name of "geo_region" must also be defined
-with dimensions (region, strlen), where region is again the simple index and�
-strlen is the maximum string length.� A "standard_name" attribute
-with the value "region" must be attached to "geo_region".�
-The values of the labels stored in geo_region which identify the basins, are
-taken from the list of <a
-href="http://www.cgd.ucar.edu/cms/eaton/cf-metadata/region.html">valid region names</a><a
-href="#_ftn24" name="_ftnref24" title=""><sup><sup><span style='font-size:12.0pt;
-font-family:"Times New Roman"'>[24]</span></sup></sup></a> (e.g.,
-"atlantic_ocean", "indian_ocean",
-"pacific_ocean", and "global_ocean").� See <a
-href="#example_4">example 4</a> below and <a
-href="http://www.cgd.ucar.edu/cms/eaton/cf-metadata/CF-1.0.html#region">section
-6.1.1 of the CF-conventions</a><a href="#_ftn25" name="_ftnref25" title=""><sup><sup><span
-style='font-size:12.0pt;font-family:"Times New Roman"'>[25]</span></sup></sup></a>
-for more information.</p>
-
-<p class=MsoNormal style='margin-left:.55in;text-align:justify;text-indent:
--.3in'><span style='font-family:"Courier New"'>▪ </span>Required
-attributes:</p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.25in'><span style='font-family:"Courier New"'>→ </span>standard_name =
-a character string containing the standard name (see coordinate standard names
-given above).</p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.25in'><span style='font-family:"Courier New"'>→ </span>units = a
-character string containing the units (see allowable coordinate units given
-above).�� Note that in the case of a dimensionless vertical coordinate, this
-attribute may be omitted.</p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.25in'><span style='font-family:"Courier New"'>→ </span>axis =
-"X", "Y", "Z", or "T" as appropriate
-(see <a href="http://www.cgd.ucar.edu/cms/eaton/cf-metadata/CF-1.0.html#ctype">section
-4 of the CF-conventions</a><a href="#_ftn26" name="_ftnref26" title=""><span
-class=MsoFootnoteReference><span class=MsoFootnoteReference><span
-style='font-size:12.0pt;font-family:"Times New Roman"'>[26]</span></span></span></a>).�
-In the few cases where an additional dimension is required (e.g., the
-"region" dimension used to distinguish different ocean basins), this
-attribute should be omitted (for this additional dimension).</p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.25in'><span style='font-family:"Courier New"'>→ </span>bounds = a
-character string containing the name of the variable where the cell bounds are
-stored.� </p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.25in'><span style='font-family:"Courier New"'>→ </span>For time
-coordinates, the �calendar� attribute must be included as described in <a
-href="http://www.cgd.ucar.edu/cms/eaton/cf-metadata/CF-1.0.html#cal">section
-4.4.1 of the CF-conventions</a><a href="#_ftn27" name="_ftnref27" title=""><span
-class=MsoFootnoteReference><span class=MsoFootnoteReference><span
-style='font-size:12.0pt;font-family:"Times New Roman"'>[27]</span></span></span></a>.�
-Note that if a model has a gregorian calendar and the base time is defined to
-be prior to 1582, then the user should specify 'proleptic_gregorian', rather
-than 'gregorian' for the calendar attribute.</p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.25in'><span style='font-family:"Courier New"'>→ </span>For
-dimensionless vertical coordinates the �positive� attribute must be included
-and should be set to either �down� or �up�, as appropriate.</p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.25in'><span style='font-family:"Courier New"'>→ </span>For
-dimensionless vertical coordinates, the �formula_terms� attribute must be
-defined as described in <a
-href="http://www.cgd.ucar.edu/cms/eaton/cf-metadata/CF-1.0.html#vnum">section
-4.3.2 of the CF-conventions</a><a href="#_ftn28" name="_ftnref28" title=""><span
-class=MsoFootnoteReference><span class=MsoFootnoteReference><span
-style='font-size:12.0pt;font-family:"Times New Roman"'>[28]</span></span></span></a>
-and as illustrated in <a href="#example_5">example 5</a> below. Further
-information can be found in <a
-href="http://www.cgd.ucar.edu/cms/eaton/cf-metadata/CF-1.0.html#vrt_app">Appendix
-D</a><a href="#_ftn29" name="_ftnref29" title=""><span
-class=MsoFootnoteReference><span class=MsoFootnoteReference><span
-style='font-size:12.0pt;font-family:"Times New Roman"'>[29]</span></span></span></a>
-of the CF-conventions.</p>
-
-<p class=MsoNormal style='margin-left:.55in;text-align:justify;text-indent:
--.3in'><span style='font-family:"Courier New"'>▪ </span>Recommended
-attributes:</p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.25in'><span style='font-family:"Courier New"'>→ </span>For dimensionless
-vertical coordinates the �positive� attribute is required, and for all other
-vertical coordinates it is recommended that it be defined.</p>
-
-<p class=MsoNormal style='text-align:justify'> </p>
-
-<p class=MsoNormal style='text-align:justify;page-break-after:avoid'><b><span
-style='font-size:14.0pt'>Requirements for global attributes:</span></b></p>
-
-<p class=MsoNormal style='text-align:justify;page-break-after:avoid'><b><span
-style='font-size:14.0pt'> </span></b></p>
-
-<p class=MsoNormal style='margin-left:.55in;text-align:justify;text-indent:
--.3in'><span style='font-family:"Courier New"'>▪ </span>Required
-attributes:</p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.25in'><span style='font-family:"Courier New"'>→ </span>institution = a
-character string containing an abbreviated name or acronym of the institution
-that performed the model simulation, followed in parentheses by the fully
-spelled-out name and location (e.g., 'GFDL (Geophysical Fluid Dynamics
-Laboratory, Princeton, NJ, USA)')</p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.25in'><span style='font-family:"Courier New"'>→ </span>source = a
-character string identifying the model version as it should be identified by
-the IPCC (although the IPCC may in many cases choose to identify models only by
-the institution's acronym).� Additionally, this attribute must include the year
-(i.e., model vintage) when this model version was first used in a scientific
-application.� Finally it should include information concerning the component
-models.� The following template should be used in constructing this string: '<i>[coupled_model_name]
-</i>(<i>[year]</i>):<i> </i>atmosphere: <i>[model_name] </i>(<i>[technical_name],
-[resolution_and_levels]</i>); ocean: <i>[model_name] </i>(<i>[technical_name], [resolution_and_levels]</i>);
-sea ice: <i>[model_name] </i>(<i>[technical_name])</i>; land: <i>[model_name] </i>(<i>[technical_name])'</i>'�
-As an example, "source" might contain the string: 'CCSM2 (2002):
-atmosphere: CAM2 (cam2_0_brnchT_itea_2, T42L26); ocean: �POP (pop2_0_ver_1.4.3,
-2x3L15); sea ice: CSIM4; land: CLM2.0'.� Additional explanatory information may
-follow the required information.</p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.25in'><span style='font-family:"Courier New"'>→ </span>project_id = "IPCC
-Fourth Assessment"</p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.25in'><span style='font-family:"Courier New"'>→ </span>table_id =
-should be assigned a character string identifying the <a
-href="http://www-pcmdi.llnl.gov/ipcc/standard_output.html">IPCC Standard Output</a><a
-href="#_ftn30" name="_ftnref30" title=""><sup><sup><span style='font-size:12.0pt;
-font-family:"Times New Roman"'>[30]</span></sup></sup></a> table where this variable
-appears (e.g., Table A1).� The trailing lower case letter may be omitted (e.g.,
-'Table A1a' may be written 'Table A1').</p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.25in'><span style='font-family:"Courier New"'>→ </span>realization = an
-integer identifying the ensemble member from which the data were obtained
-(e.g., 1, 2, 3, etc.; this attribute should be set to 1 if only a single
-simulation was performed).</p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.25in'><span style='font-family:"Courier New"'>→ </span>experiment_id =
-the appropriate character string, identifying the experiment, �taken from the
-following list:</p>
-
-<p class=MsoNormal style='margin-left:1.25in;text-align:justify'>'pre-industrial
-control experiment' </p>
-
-<p class=MsoNormal style='margin-left:1.25in;text-align:justify'>'present-day
-control experiment' </p>
-
-<p class=MsoNormal style='margin-left:1.25in;text-align:justify'>'climate of
-the 20th Century experiment (20C3M)' </p>
-
-<p class=MsoNormal style='margin-left:1.25in;text-align:justify'>'committed
-climate change experiment' </p>
-
-<p class=MsoNormal style='margin-left:1.25in;text-align:justify'>'SRES A2
-experiment' </p>
-
-<p class=MsoNormal style='margin-left:1.25in;text-align:justify'>'720 ppm
-stabilization experiment (SRES A1B)' </p>
-
-<p class=MsoNormal style='margin-left:1.25in;text-align:justify'>'550 ppm
-stabilization experiment (SRES B1)' </p>
-
-<p class=MsoNormal style='margin-left:1.25in;text-align:justify'>'1%/year CO2
-increase experiment (to doubling)' </p>
-
-<p class=MsoNormal style='margin-left:1.25in;text-align:justify'>'1%/year CO2
-increase experiment (to quadrupling)' </p>
-
-<p class=MsoNormal style='margin-left:1.25in;text-align:justify'>'slab ocean
-control experiment' </p>
-
-<p class=MsoNormal style='margin-left:1.25in;text-align:justify'>'2xCO2
-equilibrium experiment' </p>
-
-<p class=MsoNormal style='margin-left:1.25in;text-align:justify'>'AMIP
-experiment' </p>
-
-<p class=MsoNormal style='text-align:justify'> </p>
-
-<p class=MsoNormal style='margin-left:.55in;text-align:justify;text-indent:
--.3in'><span style='font-family:"Courier New"'>▪ </span>Recommended
-attributes:</p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.25in'><span style='font-family:"Courier New"'>→ </span>Conventions =
-'CF-1.0'</p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.25in'><span style='font-family:"Courier New"'>→ </span>contact = name
-and contact information (e.g., email, address, phone number) of person who
-should be contacted for more information about the data.</p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.25in'><span style='font-family:"Courier New"'>→ </span>history = A
-character string containing an audit trail for modifications to the original
-data.� Each modification is typically preceded by a "timestamp".��
-The "history" attribute provided here will be a global one that
-should not depend on which variable is contained in the file.� A
-variable-specific "history" can also be included as an attribute
-attached to the output variable.</p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.25in'><span style='font-family:"Courier New"'>→ </span>comment = A
-character string containing additional information about the data or methods
-used to produce it.� The user may include, for example, a description of how
-the initial conditions for a simulation were specified and how the model was
-spun-up (including the length of the spin-up period).� If the run was initiated
-from a "control" run, it would be appropriate to indicate which
-control run was used and what time in that run provided the initial conditions
-(e.g. "This simulation was initiated from the end of control run
-eulT42cntrl").� Also please specify which forcing agents are included in
-the historical runs (e.g., greenhouse gases, sulfate aerosol direct effects,
-volcanoes, solar forcing, etc.)</p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.25in'><span style='font-family:"Courier New"'>→ </span>references = A
-character string containing a list of published or web-based references that
-describe the data or the methods used to produce it.� Typically, the user
-should provide references describing the model formulation here.</p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.25in'><span style='font-family:"Courier New"'>→ </span>title = "<i>[institute_name]</i>
-model output prepared for IPCC Fourth Assessment Report <i>[experiment_id]</i>"
-where <i>[institute_name]</i> should be replaced by the contributing
-institution's acronym or name (e.g., "GFDL", "CCCma",
-"Hadley Centre",� etc.) and <i>[experiment_id]</i> should be replaced
-by one of the following strings:</p>
-
-<p class=MsoNormal style='margin-left:1.25in;text-align:justify'>'pre-industrial
-control experiment' </p>
-
-<p class=MsoNormal style='margin-left:1.25in;text-align:justify'>'present-day
-control experiment' </p>
-
-<p class=MsoNormal style='margin-left:1.25in;text-align:justify'>'climate of
-the 20th Century experiment (20C3M)' </p>
-
-<p class=MsoNormal style='margin-left:1.25in;text-align:justify'>'committed
-climate change experiment' </p>
-
-<p class=MsoNormal style='margin-left:1.25in;text-align:justify'>'SRES A2
-experiment' </p>
-
-<p class=MsoNormal style='margin-left:1.25in;text-align:justify'>'720 ppm
-stabilization experiment (SRES A1B)' </p>
-
-<p class=MsoNormal style='margin-left:1.25in;text-align:justify'>'550 ppm
-stabilization experiment (SRES B1)' </p>
-
-<p class=MsoNormal style='margin-left:1.25in;text-align:justify'>'1%/year CO2
-increase experiment (to doubling)' </p>
-
-<p class=MsoNormal style='margin-left:1.25in;text-align:justify'>'1%/year CO2
-increase experiment (to quadrupling)' </p>
-
-<p class=MsoNormal style='margin-left:1.25in;text-align:justify'>'slab ocean
-control experiment' </p>
-
-<p class=MsoNormal style='margin-left:1.25in;text-align:justify'>'2xCO2
-equilibrium experiment' </p>
-
-<p class=MsoNormal style='margin-left:1.25in;text-align:justify'>'AMIP
-experiment' </p>
-
-<p class=MsoNormal style='text-align:justify'> </p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify'>A sample title
-is: 'GFDL model output prepared for IPCC Fourth Assessment 1%/year CO2 increase
-experiment'</p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify'> </p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify'> </p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify'> </p>
-
-<p class=MsoNormal style='page-break-after:avoid'><a name=updates><b><span
-style='font-size:14.0pt'>Recent Changes to this Document:</span></b></a></p>
-
-<p class=MsoNormal style='page-break-after:avoid'><b><span style='font-size:
-14.0pt'> </span></b></p>
-
-<p><b>15 September 2005</b><b>:</b></p>
-
-<p class=MsoNormal style='margin-left:.55in;text-align:justify;text-indent:
--.3in'><span style='font-family:"Courier New"'>▪ </span>Edited in minor
-ways for increased clarity.</p>
-
-<p><b>25 January 2005</b><b>:</b></p>
-
-<p class=MsoNormal style='margin-left:.55in;text-align:justify;text-indent:
--.3in'><span style='font-family:"Courier New"'>▪ </span>Corrected
-specified order of "region" coordinate to be: Atlantic, Indian,
-Pacific, global (was Atlantic, Pacific, Indian, global).</p>
-
-<p class=MsoNormal style='margin-left:.25in;text-align:justify'> </p>
-
-<p class=MsoNormal style='margin-left:.5in;text-align:justify;text-indent:-.5in'><b>17�
-November 2004:</b></p>
-
-<p class=MsoNormal style='margin-left:.55in;text-align:justify;text-indent:
--.3in'><span style='font-family:"Courier New"'>▪ </span>Recommended that
-long time-series not be subdivided into too many files; within the 2 gigabyte
-limit, store relatively few large files.</p>
-
-<p class=MsoNormal style='margin-left:.25in;text-align:justify'><b>�</b></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-align:justify;text-indent:-.5in'><b>15 September 2004</b><b>: </b></p>
-
-<p class=MsoNormal style='margin-left:.55in;text-align:justify;text-indent:
--.3in'><span style='font-family:"Courier New"'>▪ </span>Noted that ocean
-data data may be reported on depth levels that are not standard.</p>
-
-<p class=MsoNormal style='margin-left:.55in;text-align:justify;text-indent:
--.3in'><span style='font-family:"Courier New"'>▪ </span>The recommended
-directory structure for storing output fields was altered.� </p>
-
-<p class=MsoNormal style='margin-left:.55in;text-align:justify;text-indent:
--.3in'><span style='font-family:"Courier New"'>▪ </span>Noted that unique
-longitudes should be stored (i.e., don't duplicate, for example, a grid cell
-located at 0 degree with one stored at 360 degree longitude).� </p>
-
-<p class=MsoNormal style='margin-left:.55in;text-align:justify;text-indent:
--.3in'><span style='font-family:"Courier New"'>▪ </span>Noted that the
-'base time' in the time units attribute should be the same for all files for a
-single model run.� </p>
-
-<p class=MsoNormal style='margin-left:.55in;text-align:justify;text-indent:
--.3in'><span style='font-family:"Courier New"'>▪ </span>Noted that when a
-model uses a gregorian calendar and the "base time" preceeds
-year1582, then 'proleptic_gregorian', rather than 'gregorian' should be
-specified as the calendar attribute.</p>
-
-<p class=MsoNormal style='margin-left:.55in;text-align:justify;text-indent:
--.3in'><span style='font-family:"Courier New"'>▪ </span>Provided further
-explanation of the table_id global attribute.</p>
-
-<p class=MsoNormal style='margin-left:.55in;text-align:justify;text-indent:
--.3in'><span style='font-family:"Courier New"'>▪ </span>Removed option of
-not specifying the "realization" global attribute.� (It should be set
-to the integer 1, if only a single realization was performed).</p>
-
-<p class=MsoNormal style='margin-left:.55in;text-align:justify;text-indent:
--.3in'><span style='font-family:"Courier New"'>▪ </span>Noted that
-cell_bounds attribute should be omitted if ocean data has been interpolated to
-standard depth levels.</p>
-
-<p class=MsoNormal style='margin-left:.55in;text-align:justify;text-indent:
--.3in'><span style='font-family:"Courier New"'>▪ </span>Several web page
-links were corrected.</p>
-
-<p class=MsoNormal style='margin-left:.5in;text-align:justify;text-indent:-.5in'> </p>
-
-<p class=MsoNormal style='margin-left:.5in;text-align:justify;text-indent:-.5in'><b>4 September 2004</b><b>: </b>Web addresses changed to be consistent with the new PCMDI
-web site.</p>
-
-<p class=MsoNormal style='margin-left:.5in;text-align:justify;text-indent:-.5in'><b> </b></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-align:justify;text-indent:-.5in'><b>29 July 2004</b><b>: </b>A recommendation was added to specify in the global
-"comment" attribute which forcing agents are included in the 20C3M
-simulations. </p>
-
-<p class=MsoNormal style='margin-left:.5in;text-align:justify;text-indent:-.5in'> </p>
-
-<p class=MsoNormal style='margin-left:.5in;text-align:justify;text-indent:-.5in'><b>20 July 2004</b><b>: </b>A recommendation was added that when time-bounds are included
-in the file, the time-coordinate values should always be the mean of the two
-associated time-bounds.� For example, it is recommended that the time
-coordinate value of a time-mean should be defined as the mid-point of the
-averaging interval.</p>
-
-<p class=MsoNormal style='margin-left:.5in;text-align:justify;text-indent:-.5in'> </p>
-
-<p class=MsoNormal style='margin-left:.5in;text-align:justify;text-indent:-.5in'><b>19 July 2004</b><b>: </b>�One more official experiment name was changed to be more
-consistent with the others: 'climate of the 20th Century experiment (20C3M)'
-was previously referred to as 'climate of the 20th Century (20C3M)' </p>
-
-<p class=MsoNormal style='margin-left:.5in;text-align:justify;text-indent:-.5in'><b> </b></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-align:justify;text-indent:-.5in'><b>15 July 2004</b><b>: </b>�Three of the official experiment names were changed; these
-were the names of the control experiments, which now read: 1) 'pre-industrial
-control experiment', 'present-day control experiment', and 'slab ocean control
-experiment'.� Also, 'AMIP experiment' was added as an official IPCC experiment.</p>
-
-<p class=MsoNormal style='margin-left:.5in;text-align:justify;text-indent:-.5in'> </p>
-
-<p class=MsoNormal style='margin-left:.5in;text-align:justify;text-indent:-.5in'><b>6 June 2004</b><b>:</b>� Initial document version released.</p>
-
-<p class=MsoNormal style='text-align:justify'> </p>
-
-<p class=MsoNormal style='page-break-after:avoid'> </p>
-
-<span style='font-size:12.0pt;font-family:"Times New Roman"'><br clear=all
-style='page-break-before:always'>
-</span>
-
-<p class=MsoNormal align=center style='text-align:center'><a name="example_1"><span
-style='font-size:14.0pt'>Example 1</span></a><span style='font-size:14.0pt'>:
-Surface latent heat flux</span></p>
-
-<p class=MsoNormal align=center style='text-align:center'><span
-style='font-size:14.0pt'>(a function of longitude, latitude, month)</span></p>
-
-<p class=MsoNormal style='text-align:justify'> </p>
-
-<p class=MsoNormal style='text-align:justify'> </p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>netcdf hfls_A1 {</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>dimensions:</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����� lon = 4 ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����� lat = 3 ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����� time = UNLIMITED ; // (2 currently)</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����� bnds = 2 ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>variables:</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����� double lon(lon) ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����������� lon:standard_name =
-"longitude" ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����������� lon:long_name = "longitude" ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����������� lon:units = "degrees_east" ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����������� lon:axis = "X" ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����������� lon:bounds = "lon_bnds" ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����� double lon_bnds(lon, bnds) ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����� double lat(lat) ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����������� lat:standard_name = "latitude"
-;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����������� lat:long_name = "latitude" ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����������� lat:units = "degrees_north" ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����������� lat:axis = "Y" ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����������� lat:bounds = "lat_bnds" ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����� double lat_bnds(lat, bnds) ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����� double time(time) ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����������� time:standard_name = "time" ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����������� time:long_name = "time" ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����������� time:units = "days since
-2030-1-1" ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����������� time:axis = "T" ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����������� time:calendar = "360_day" ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����������� time:bounds = "time_bnds" ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����� double time_bnds(time, bnds) ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����� float hfls(time, lat, lon) ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����������� hfls:standard_name =
-"surface_upward_latent_heat_flux" ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����������� hfls:long_name = "Surface Latent
-Heat Flux" ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����������� hfls:units = "W m-2" ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����������� hfls:cell_methods = "time: mean
-(interval: 20 minutes)" ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����������� hfls:_FillValue = 1.e+20f ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����������� hfls:missing_value = 1.e+20f ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����������� hfls:original_name = "LATENT"
-;</span></p>
-
-<p class=MsoNormal style='margin-left:1.3in;text-indent:-.3in;text-autospace:
-none'><span style='font-size:10.0pt;font-family:"Courier New"'>hfls:history =
-" At�� 17:54:19 on 06/07/2004: CMOR altered the data in the following
-ways: replaced missing value flag (1.00000E+28) with standard missing value
-(1.00000E+20); multiplied by -1.00000E+00 to yield output units;" ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'> </span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>// global attributes:</span></p>
-
-<p class=MsoNormal style='margin-left:1.3in;text-indent:-.3in;text-autospace:
-none'><span style='font-size:10.0pt;font-family:"Courier New"'>:title =
-"GICC� model output prepared for IPCC Fourth Assessment 2xCO2 equilibrium
-experiment" ;</span></p>
-
-<p class=MsoNormal style='margin-left:1.3in;text-indent:-.3in;text-autospace:
-none'><span style='font-size:10.0pt;font-family:"Courier New"'>:institution =
-"GICC (</span><span style='font-size:10.0pt;font-family:"Courier New"'>Generic</span><span
- style='font-size:10.0pt;font-family:"Courier New"'> </span><span
-  style='font-size:10.0pt;font-family:"Courier New"'>International</span><span
- style='font-size:10.0pt;font-family:"Courier New"'> </span><span
-  style='font-size:10.0pt;font-family:"Courier New"'>Climate</span><span
- style='font-size:10.0pt;font-family:"Courier New"'> </span><span
-  style='font-size:10.0pt;font-family:"Courier New"'>Center</span><span
-style='font-size:10.0pt;font-family:"Courier New"'>, </span><span
-  style='font-size:10.0pt;font-family:"Courier New"'>Geneva</span><span
- style='font-size:10.0pt;font-family:"Courier New"'>, </span><span
-  style='font-size:10.0pt;font-family:"Courier New"'>Switzerland</span><span
-style='font-size:10.0pt;font-family:"Courier New"'>)" ;</span></p>
-
-<p class=MsoNormal style='margin-left:1.3in;text-indent:-.3in;text-autospace:
-none'><span style='font-size:10.0pt;font-family:"Courier New"'>:source =
-"GICCM1 (2002): atmosphere:� GICAM3 (gicam_0_brnchT_itea_2, T63L32);
-ocean: MOM (mom3_ver_3.5.2, 2x3L15); sea ice: GISIM4; land: GILSM2.5" ;</span></p>
-
-<p class=MsoNormal style='margin-left:1.3in;text-indent:-.3in;text-autospace:
-none'><span style='font-size:10.0pt;font-family:"Courier New"'>:contact =
-"Rusty Koder (koder at middle_earth.net)" ;</span></p>
-
-<p class=MsoNormal style='margin-left:1.3in;text-indent:-.3in;text-autospace:
-none'><span style='font-size:10.0pt;font-family:"Courier New"'>:project_id =
-"IPCC Fourth Assessment" ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����������� :table_id = "Table A1 (</span><span style='font-size:10.0pt;font-family:"Courier New"'>7 April 2004</span><span
-style='font-size:10.0pt;font-family:"Courier New"'>)" ;</span></p>
-
-<p class=MsoNormal style='margin-left:1.3in;text-indent:-.3in;text-autospace:
-none'><span style='font-size:10.0pt;font-family:"Courier New"'>:experiment_id =
-"2xCO2 equilibrium experiment" ;</span></p>
-
-<p class=MsoNormal style='margin-left:1.3in;text-indent:-.3in;text-autospace:
-none'><span style='font-size:10.0pt;font-family:"Courier New"'>:realization = 1
-;</span></p>
-
-<p class=MsoNormal style='margin-left:1.3in;text-indent:-.3in;text-autospace:
-none'><span style='font-size:10.0pt;font-family:"Courier New"'>:Conventions =
-"CF-1.0" ;</span></p>
-
-<p class=MsoNormal style='margin-left:1.3in;text-indent:-.3in;text-autospace:
-none'><span style='font-size:10.0pt;font-family:"Courier New"'>:history =
-"Output from archive/giccm_03_std_2xCO2_2256.� At </span><span style='font-size:10.0pt;font-family:"Courier New"'>17:54:19</span><span
-style='font-size:10.0pt;font-family:"Courier New"'> on </span><span style='font-size:10.0pt;font-family:"Courier New"'>06/07/2004</span><span
-style='font-size:10.0pt;font-family:"Courier New"'>, CMOR rewrote data to
-comply with CF standards and IPCC Fourth Assessment requirements" ;</span></p>
-
-<p class=MsoNormal style='margin-left:1.3in;text-indent:-.3in;text-autospace:
-none'><span style='font-size:10.0pt;font-family:"Courier New"'>:references =
-"Model described by Koder and Tolkien (J. Geophys. Res., 2001, 576-591).�
-Also see http://www.GICC.su/giccm/doc/index.html� 2XCO2 simulation described in
-Dorkey et al. (Clim. Dyn., 2003, 323-357.)" ;</span></p>
-
-<p class=MsoNormal style='margin-left:1.3in;text-indent:-.3in;text-autospace:
-none'><span style='font-size:10.0pt;font-family:"Courier New"'>:comment =
-"Equilibrium reached after 30-year spin-up after which data were output
-starting with nominal date of January 2030" ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>data:</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'> </span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>�lon = 0, 90, 180, 270 ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'> </span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>�lon_bnds =</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>� -45, 45,</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>� 45, 135,</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>� 135, 225,</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>� 225, 315 ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'> </span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>�lat = 10, 20, 30 ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'> </span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>�lat_bnds =</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>� 5, 15,</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>� 15, 25,</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>� 25, 35 ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'> </span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>�time = 15, 45 ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'> </span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>�time_bnds =</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>� 0, 30,</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>� 30, 60 ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'> </span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>�hfls =</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>� 19, 15, 11, 7,</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>� 3, -1, -5, -9,</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>� -13, -17, -21, -25,</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>� 18, 14, 10, 6,</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>� 2, -2, -6, -10,</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>� -14, -18, -22, -26 ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>}</span></p>
-
-<span style='font-size:10.0pt;font-family:"Courier New"'><br clear=all
-style='page-break-before:always'>
-</span>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'> </span></p>
-
-<p class=MsoNormal align=center style='text-align:center'><a name="example_2"><span
-style='font-size:14.0pt'>Example 2</span></a><span style='font-size:14.0pt'>: Air
-temperature</span></p>
-
-<p class=MsoNormal align=center style='text-align:center'><span
-style='font-size:14.0pt'>(a function of longitude, latitude, pressure, month)</span></p>
-
-<p class=MsoNormal style='text-align:justify'> </p>
-
-<p class=MsoNormal style='text-align:justify'> </p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>netcdf ta_A1 {</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>dimensions:</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����� lon = 4 ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����� lat = 3 ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����� plev = 5 ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����� time = UNLIMITED ; // (2 currently)</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����� bnds = 2 ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>variables:</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����� double lon(lon) ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����������� lon:standard_name = "longitude"
-;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����������� lon:long_name = "longitude" ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����������� lon:units = "degrees_east" ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����������� lon:axis = "X" ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����������� lon:bounds = "lon_bnds" ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����� double lon_bnds(lon, bnds) ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����� double lat(lat) ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����������� lat:standard_name = "latitude"
-;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����������� lat:long_name = "latitude" ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����������� lat:units = "degrees_north" ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����������� lat:axis = "Y" ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����������� lat:bounds = "lat_bnds" ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����� double lat_bnds(lat, bnds) ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����� double plev(plev) ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����������� plev:standard_name =
-"air_pressure" ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����������� plev:long_name = "pressure" ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����������� plev:units = "Pa" ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����������� plev:axis = "Z" ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����������� plev:positive = "down" ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����� double time(time) ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����������� time:standard_name = "time" ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����������� time:long_name = "time" ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����������� time:units = "days since
-2030-1-1" ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����������� time:axis = "T" ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����������� time:calendar = "360_day" ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����������� time:bounds = "time_bnds" ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����� double time_bnds(time, bnds) ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����� float ta(time, plev, lat, lon) ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����������� ta:standard_name =
-"air_temperature" ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����������� ta:long_name = "Temperature" ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����������� ta:units = "K" ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����������� ta:cell_methods = "time: mean
-(interval: 20 minutes)" ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����������� ta:_FillValue = 1.e+20f ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����������� ta:missing_value = 1.e+20f ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����������� ta:original_name = "T" ;</span></p>
-
-<p class=MsoNormal style='margin-left:1.3in;text-indent:-.3in;text-autospace:
-none'><span style='font-size:10.0pt;font-family:"Courier New"'>ta:history =
-" At�� </span><span style='font-size:10.0pt;font-family:"Courier New"'>17:54:19</span><span
-style='font-size:10.0pt;font-family:"Courier New"'> on </span><span style='font-size:10.0pt;font-family:"Courier New"'>06/07/2004</span><span
-style='font-size:10.0pt;font-family:"Courier New"'>: CMOR altered the data in
-the following ways: replaced missing value flag (1.00000E+28) with standard
-missing value (1.00000E+20);" ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'> </span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>// global attributes:</span></p>
-
-<p class=MsoNormal style='margin-left:1.3in;text-indent:-.3in;text-autospace:
-none'><span style='font-size:10.0pt;font-family:"Courier New"'>:title =
-"GICC� model output prepared for IPCC Fourth Assessment 2xCO2 equilibrium
-experiment" ;</span></p>
-
-<p class=MsoNormal style='margin-left:1.3in;text-indent:-.3in;text-autospace:
-none'><span style='font-size:10.0pt;font-family:"Courier New"'>:institution =
-"GICC (</span><span style='font-size:10.0pt;font-family:"Courier New"'>Generic</span><span
- style='font-size:10.0pt;font-family:"Courier New"'> </span><span
-  style='font-size:10.0pt;font-family:"Courier New"'>International</span><span
- style='font-size:10.0pt;font-family:"Courier New"'> </span><span
-  style='font-size:10.0pt;font-family:"Courier New"'>Climate</span><span
- style='font-size:10.0pt;font-family:"Courier New"'> </span><span
-  style='font-size:10.0pt;font-family:"Courier New"'>Center</span><span
-style='font-size:10.0pt;font-family:"Courier New"'>, </span><span
-  style='font-size:10.0pt;font-family:"Courier New"'>Geneva</span><span
- style='font-size:10.0pt;font-family:"Courier New"'>, </span><span
-  style='font-size:10.0pt;font-family:"Courier New"'>Switzerland</span><span
-style='font-size:10.0pt;font-family:"Courier New"'>)" ;</span></p>
-
-<p class=MsoNormal style='margin-left:1.3in;text-indent:-.3in;text-autospace:
-none'><span style='font-size:10.0pt;font-family:"Courier New"'>:source =
-"GICCM1 (2002): atmosphere:� GICAM3 (gicam_0_brnchT_itea_2, T63L32);
-ocean: MOM (mom3_ver_3.5.2, 2x3L15); sea ice: GISIM4; land: GILSM2.5" ;</span></p>
-
-<p class=MsoNormal style='margin-left:1.3in;text-indent:-.3in;text-autospace:
-none'><span style='font-size:10.0pt;font-family:"Courier New"'>:contact =
-"Rusty Koder (koder at middle_earth.net)" ;</span></p>
-
-<p class=MsoNormal style='margin-left:1.3in;text-indent:-.3in;text-autospace:
-none'><span style='font-size:10.0pt;font-family:"Courier New"'>:project_id =
-"IPCC Fourth Assessment" ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����������� :table_id = "Table A1 (</span><span style='font-size:10.0pt;font-family:"Courier New"'>7 April 2004</span><span
-style='font-size:10.0pt;font-family:"Courier New"'>)" ;</span></p>
-
-<p class=MsoNormal style='margin-left:1.3in;text-indent:-.3in;text-autospace:
-none'><span style='font-size:10.0pt;font-family:"Courier New"'>:experiment_id =
-"2xCO2 equilibrium experiment" ;</span></p>
-
-<p class=MsoNormal style='margin-left:1.3in;text-indent:-.3in;text-autospace:
-none'><span style='font-size:10.0pt;font-family:"Courier New"'>:realization = 1
-;</span></p>
-
-<p class=MsoNormal style='margin-left:1.3in;text-indent:-.3in;text-autospace:
-none'><span style='font-size:10.0pt;font-family:"Courier New"'>:Conventions =
-"CF-1.0" ;</span></p>
-
-<p class=MsoNormal style='margin-left:1.3in;text-indent:-.3in;text-autospace:
-none'><span style='font-size:10.0pt;font-family:"Courier New"'>:history =
-"Output from archive/giccm_03_std_2xCO2_2256.� At </span><span style='font-size:10.0pt;font-family:"Courier New"'>17:54:19</span><span
-style='font-size:10.0pt;font-family:"Courier New"'> on </span><span style='font-size:10.0pt;font-family:"Courier New"'>06/07/2004</span><span
-style='font-size:10.0pt;font-family:"Courier New"'>, CMOR rewrote data to
-comply with CF standards and IPCC Fourth Assessment requirements" ;</span></p>
-
-<p class=MsoNormal style='margin-left:1.3in;text-indent:-.3in;text-autospace:
-none'><span style='font-size:10.0pt;font-family:"Courier New"'>:references =
-"Model described by Koder and Tolkien (J. Geophys. Res., 2001, 576-591).�
-Also see http://www.GICC.su/giccm/doc/index.html� 2XCO2 simulation described in
-Dorkey et al. (Clim. Dyn., 2003, 323-357.)" ;</span></p>
-
-<p class=MsoNormal style='margin-left:1.3in;text-indent:-.3in;text-autospace:
-none'><span style='font-size:10.0pt;font-family:"Courier New"'>:comment =
-"Equilibrium reached after 30-year spin-up after which data were output
-starting with nominal date of January 2030" ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>data:</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'> </span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>�lon = 0, 90, 180, 270 ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'> </span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>�lon_bnds =</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>� -45, 45,</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>� 45, 135,</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>� 135, 225,</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>� 225, 315 ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'> </span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>�lat = 10, 20, 30 ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'> </span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>�lat_bnds =</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>� 5, 15,</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>� 15, 25,</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>� 25, 35 ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'> </span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>�plev = 10000, 20000, 30000, 40000, 50000 ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'> </span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>�time = 15, 45 ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'> </span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>�time_bnds =</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>� 0, 30,</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>� 30, 60 ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'> </span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>�ta =</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>� 150.5, 152.5, 154.5, 156.5,</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>� 158.5, 160.5, 162.5, 164.5,</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>� 166.5, 168.5, 170.5, 172.5,</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>� 182.5, 184.5, 186.5, 188.5,</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>� 190.5, 192.5, 194.5, 196.5,</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>� 198.5, 200.5, 202.5, 204.5,</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>� 214.5, 216.5, 218.5, 220.5,</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>� 222.5, 224.5, 226.5, 228.5,</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>� 230.5, 232.5, 234.5, 236.5,</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>� 246.5, 248.5, 250.5, 252.5,</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>� 254.5, 256.5, 258.5, 260.5,</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>� 262.5, 264.5, 266.5, 268.5,</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>� 278.5, 280.5, 282.5, 284.5,</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>� 286.5, 288.5, 290.5, 292.5,</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>� 294.5, 296.5, 298.5, 300.5,</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>� 151, 153, 155, 157,</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>� 159, 161, 163, 165,</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>� 167, 169, 171, 173,</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>� 183, 185, 187, 189,</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>� 191, 193, 195, 197,</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>� 199, 201, 203, 205,</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>� 215, 217, 219, 221,</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>� 223, 225, 227, 229,</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>� 231, 233, 235, 237,</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>� 247, 249, 251, 253,</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>� 255, 257, 259, 261,</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>� 263, 265, 267, 269,</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>� 279, 281, 283, 285,</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>� 287, 289, 291, 293,</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>� 295, 297, 299, 301 ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>}</span></p>
-
-<span style='font-size:10.0pt;font-family:"Courier New"'><br clear=all
-style='page-break-before:always'>
-</span>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'> </span></p>
-
-<p class=MsoNormal align=center style='text-align:center'><a name="example_3"><span
-style='font-size:14.0pt'>Example 3</span></a><span style='font-size:14.0pt'>: Treatment
-of a scalar (i.e., singleton) dimension</span></p>
-
-<p class=MsoNormal align=center style='text-align:center'><span
-style='font-size:14.0pt'>Moisture in upper 0.1 m of soil column</span></p>
-
-<p class=MsoNormal align=center style='text-align:center'><span
-style='font-size:14.0pt'>(a function of longitude, latitude, month)</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'> </span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'> </span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>netcdf mrsos_A1 {</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>dimensions:</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����� lon = 4 ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����� lat = 3 ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����� time = UNLIMITED ; // (2 currently)</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����� bnds = 2 ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>variables:</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����� double lon(lon) ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����������� lon:standard_name =
-"longitude" ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����������� lon:long_name = "longitude" ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����������� lon:units = "degrees_east" ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����������� lon:axis = "X" ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����������� lon:bounds = "lon_bnds" ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����� double lon_bnds(lon, bnds) ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����� double lat(lat) ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����������� lat:standard_name = "latitude"
-;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����������� lat:long_name = "latitude" ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����������� lat:units = "degrees_north" ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����������� lat:axis = "Y" ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����������� lat:bounds = "lat_bnds" ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����� double lat_bnds(lat, bnds) ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����� double time(time) ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����������� time:standard_name = "time" ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����������� time:long_name = "time" ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����������� time:units = "days since 2030-1-1"
-;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����������� time:axis = "T" ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����������� time:calendar = "360_day" ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����������� time:bounds = "time_bnds" ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����� double time_bnds(time, bnds) ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����� double depth ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����������� depth:standard_name = "depth"
-;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����������� depth:long_name = "depth" ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����������� depth:units = "m" ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����������� depth:axis = "Z" ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����������� depth:positive = "down" ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����������� depth:bounds = "depth_bnds" ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����� double depth_bnds(bnds) ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����� float mrsos(time, lat, lon) ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����������� mrsos:standard_name =
-"moisture_content_of_soil_layer" ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����������� mrsos:long_name = "Moisture in
-Upper 0.1 m of Soil Column" ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����������� mrsos:units = "kg m-2" ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����������� mrsos:cell_methods = "time: mean
-(interval: 20 minutes)" ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����������� mrsos:coordinates = "depth" ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����������� mrsos:_FillValue = 1.e+20f ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����������� mrsos:missing_value = 1.e+20f ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����������� mrsos:original_name =
-"SOIL_WET" ;</span></p>
-
-<p class=MsoNormal style='margin-left:1.3in;text-indent:-.3in;text-autospace:
-none'><span style='font-size:10.0pt;font-family:"Courier New"'>mrsos:comment =
-"includes subsurface frozen water but not surface snow and ice" ;</span></p>
-
-<p class=MsoNormal style='margin-left:1.3in;text-indent:-.3in;text-autospace:
-none'><span style='font-size:10.0pt;font-family:"Courier New"'>mrsos:history =
-" At�� </span><span style='font-size:10.0pt;font-family:"Courier New"'>17:54:19</span><span
-style='font-size:10.0pt;font-family:"Courier New"'> on </span><span style='font-size:10.0pt;font-family:"Courier New"'>06/07/2004</span><span
-style='font-size:10.0pt;font-family:"Courier New"'>: CMOR altered the data in
-the following ways: replaced missing value flag (1.00000E+28) with standard
-missing value (1.00000E+20);" ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'> </span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>// global attributes:</span></p>
-
-<p class=MsoNormal style='margin-left:1.3in;text-indent:-.3in;text-autospace:
-none'><span style='font-size:10.0pt;font-family:"Courier New"'>:title =
-"GICC� model output prepared for IPCC Fourth Assessment 2xCO2 equilibrium
-experiment" ;</span></p>
-
-<p class=MsoNormal style='margin-left:1.3in;text-indent:-.3in;text-autospace:
-none'><span style='font-size:10.0pt;font-family:"Courier New"'>:institution =
-"GICC (</span><span style='font-size:10.0pt;font-family:"Courier New"'>Generic</span><span
- style='font-size:10.0pt;font-family:"Courier New"'> </span><span
-  style='font-size:10.0pt;font-family:"Courier New"'>International</span><span
- style='font-size:10.0pt;font-family:"Courier New"'> </span><span
-  style='font-size:10.0pt;font-family:"Courier New"'>Climate</span><span
- style='font-size:10.0pt;font-family:"Courier New"'> </span><span
-  style='font-size:10.0pt;font-family:"Courier New"'>Center</span><span
-style='font-size:10.0pt;font-family:"Courier New"'>, </span><span
-  style='font-size:10.0pt;font-family:"Courier New"'>Geneva</span><span
- style='font-size:10.0pt;font-family:"Courier New"'>, </span><span
-  style='font-size:10.0pt;font-family:"Courier New"'>Switzerland</span><span
-style='font-size:10.0pt;font-family:"Courier New"'>)" ;</span></p>
-
-<p class=MsoNormal style='margin-left:1.3in;text-indent:-.3in;text-autospace:
-none'><span style='font-size:10.0pt;font-family:"Courier New"'>:source =
-"GICCM1 (2002): atmosphere:� GICAM3 (gicam_0_brnchT_itea_2, T63L32);
-ocean: MOM (mom3_ver_3.5.2, 2x3L15); sea ice: GISIM4; land: GILSM2.5" ;</span></p>
-
-<p class=MsoNormal style='margin-left:1.3in;text-indent:-.3in;text-autospace:
-none'><span style='font-size:10.0pt;font-family:"Courier New"'>:contact =
-"Rusty Koder (koder at middle_earth.net)" ;</span></p>
-
-<p class=MsoNormal style='margin-left:1.3in;text-indent:-.3in;text-autospace:
-none'><span style='font-size:10.0pt;font-family:"Courier New"'>:project_id =
-"IPCC Fourth Assessment" ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����������� :table_id = "Table A1 (</span><span style='font-size:10.0pt;font-family:"Courier New"'>7 April 2004</span><span
-style='font-size:10.0pt;font-family:"Courier New"'>)" ;</span></p>
-
-<p class=MsoNormal style='margin-left:1.3in;text-indent:-.3in;text-autospace:
-none'><span style='font-size:10.0pt;font-family:"Courier New"'>:experiment_id =
-"2xCO2 equilibrium experiment" ;</span></p>
-
-<p class=MsoNormal style='margin-left:1.3in;text-indent:-.3in;text-autospace:
-none'><span style='font-size:10.0pt;font-family:"Courier New"'>:realization = 1
-;</span></p>
-
-<p class=MsoNormal style='margin-left:1.3in;text-indent:-.3in;text-autospace:
-none'><span style='font-size:10.0pt;font-family:"Courier New"'>:Conventions =
-"CF-1.0" ;</span></p>
-
-<p class=MsoNormal style='margin-left:1.3in;text-indent:-.3in;text-autospace:
-none'><span style='font-size:10.0pt;font-family:"Courier New"'>:history =
-"Output from archive/giccm_03_std_2xCO2_2256.� At </span><span style='font-size:10.0pt;font-family:"Courier New"'>17:54:19</span><span
-style='font-size:10.0pt;font-family:"Courier New"'> on </span><span style='font-size:10.0pt;font-family:"Courier New"'>06/07/2004</span><span
-style='font-size:10.0pt;font-family:"Courier New"'>, CMOR rewrote data to
-comply with CF standards and IPCC Fourth Assessment requirements" ;</span></p>
-
-<p class=MsoNormal style='margin-left:1.3in;text-indent:-.3in;text-autospace:
-none'><span style='font-size:10.0pt;font-family:"Courier New"'>:references =
-"Model described by Koder and Tolkien (J. Geophys. Res., 2001, 576-591).�
-Also see http://www.GICC.su/giccm/doc/index.html� 2XCO2 simulation described in
-Dorkey et al. (Clim. Dyn., 2003, 323-357.)" ;</span></p>
-
-<p class=MsoNormal style='margin-left:1.3in;text-indent:-.3in;text-autospace:
-none'><span style='font-size:10.0pt;font-family:"Courier New"'>:comment =
-"Equilibrium reached after 30-year spin-up after which data were output
-starting with nominal date of January 2030" ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>data:</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'> </span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>�lon = 0, 90, 180, 270 ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'> </span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>�lon_bnds =</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>� -45, 45,</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>� 45, 135,</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>� 135, 225,</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>� 225, 315 ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'> </span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>�lat = 10, 20, 30 ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'> </span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>�lat_bnds =</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>� 5, 15,</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>� 15, 25,</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>� 25, 35 ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'> </span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>�time = 15, 45 ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'> </span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>�time_bnds =</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>� 0, 30,</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>� 30, 60 ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'> </span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>�depth = 0.05 ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'> </span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>�depth_bnds = 0, 0.1 ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'> </span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>�mrsos =</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>� 10, 50, 90, 130,</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>� 170, 210, 250, 290,</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>� 330, 370, 410, 450,</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>� 20, 60, 100, 140,</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>� 180, 220, 260, 300,</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>� 340, 380, 420, 460 ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>}</span></p>
-
-<span style='font-size:10.0pt;font-family:"Courier New"'><br clear=all
-style='page-break-before:always'>
-</span>
-
-<p class=MsoNormal align=center style='text-align:center;text-autospace:none'><a
-name="example_4"><span style='font-size:14.0pt'>Example 4</span></a><span
-style='font-size:14.0pt'>: Treatment of a ocean basin labels</span></p>
-
-<p class=MsoNormal align=center style='text-align:center'><span
-style='font-size:14.0pt'>Northward ocean heat transport</span></p>
-
-<p class=MsoNormal align=center style='text-align:center'><span
-style='font-size:14.0pt'>(a function of latitude, ocean basin, month)</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'> </span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'> </span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>netcdf hfogo_O1 {</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>dimensions:</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����� lat = 3 ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����� region = 4 ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����� time = UNLIMITED ; // (2 currently)</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����� bnds = 2 ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����� strlen = 14 ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>variables:</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����� double lat(lat) ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����������� lat:standard_name = "latitude"
-;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����������� lat:long_name = "latitude" ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����������� lat:units = "degrees_north" ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����������� lat:axis = "Y" ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����������� lat:bounds = "lat_bnds" ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����� double lat_bnds(lat, bnds) ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����� char geo_region(region, strlen) ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����������� geo_region:standard_name = "region"
-;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����������� geo_region:long_name = "</span><span
-  style='font-size:10.0pt;font-family:"Courier New"'>Ocean</span><span
- style='font-size:10.0pt;font-family:"Courier New"'> </span><span
-  style='font-size:10.0pt;font-family:"Courier New"'>Basin</span><span
-style='font-size:10.0pt;font-family:"Courier New"'>" ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����� double time(time) ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����������� time:standard_name = "time" ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����������� time:long_name = "time" ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����������� time:units = "days since
-2030-1-1" ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����������� time:axis = "T" ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����������� time:calendar = "360_day" ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����������� time:bounds = "time_bnds" ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����� double time_bnds(time, bnds) ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����� float hfogo(time, region, lat) ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����������� hfogo:standard_name =
-"northward_ocean_heat_transport" ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����������� hfogo:long_name = "Northward Ocean
-Heat Transport" ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����������� hfogo:units = "W" ;</span></p>
-
-<p class=MsoNormal style='margin-left:1.3in;text-indent:-.3in;text-autospace:
-none'><span style='font-size:10.0pt;font-family:"Courier New"'>hfogo:cell_methods
-= "time: mean (interval: 20 minutes)�� longitude: sum" ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����������� hfogo:coordinates =
-"geo_region" ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����������� hfogo:_FillValue = 1.e+20f ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����������� hfogo:missing_value = 1.e+20f ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����������� hfogo:original_name = "OFLUX"
-;</span></p>
-
-<p class=MsoNormal style='margin-left:1.3in;text-indent:-.3in;text-autospace:
-none'><span style='font-size:10.0pt;font-family:"Courier New"'>hfogo:history =
-" At�� </span><span style='font-size:10.0pt;font-family:"Courier New"'>18:06:56</span><span
-style='font-size:10.0pt;font-family:"Courier New"'> on </span><span style='font-size:10.0pt;font-family:"Courier New"'>06/07/2004</span><span
-style='font-size:10.0pt;font-family:"Courier New"'>: CMOR altered the data in
-the following ways: replaced missing value flag (1.00000E+28) with standard
-missing value (1.00000E+20);" ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'> </span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>// global attributes:</span></p>
-
-<p class=MsoNormal style='margin-left:1.3in;text-indent:-.3in;text-autospace:
-none'><span style='font-size:10.0pt;font-family:"Courier New"'>:title =
-"GICC� model output prepared for IPCC Fourth Assessment 2xCO2 equilibrium
-experiment" ;</span></p>
-
-<p class=MsoNormal style='margin-left:1.3in;text-indent:-.3in;text-autospace:
-none'><span style='font-size:10.0pt;font-family:"Courier New"'>:institution =
-"GICC (</span><span style='font-size:10.0pt;font-family:"Courier New"'>Generic</span><span
- style='font-size:10.0pt;font-family:"Courier New"'> </span><span
-  style='font-size:10.0pt;font-family:"Courier New"'>International</span><span
- style='font-size:10.0pt;font-family:"Courier New"'> </span><span
-  style='font-size:10.0pt;font-family:"Courier New"'>Climate</span><span
- style='font-size:10.0pt;font-family:"Courier New"'> </span><span
-  style='font-size:10.0pt;font-family:"Courier New"'>Center</span><span
-style='font-size:10.0pt;font-family:"Courier New"'>, </span><span
-  style='font-size:10.0pt;font-family:"Courier New"'>Geneva</span><span
- style='font-size:10.0pt;font-family:"Courier New"'>, </span><span
-  style='font-size:10.0pt;font-family:"Courier New"'>Switzerland</span><span
-style='font-size:10.0pt;font-family:"Courier New"'>)" ;</span></p>
-
-<p class=MsoNormal style='margin-left:1.3in;text-indent:-.3in;text-autospace:
-none'><span style='font-size:10.0pt;font-family:"Courier New"'>:source =
-"GICCM1 (2002): atmosphere:� GICAM3 (gicam_0_brnchT_itea_2, T63L32);
-ocean: MOM (mom3_ver_3.5.2, 2x3L15); sea ice: GISIM4; land: GILSM2.5" ;</span></p>
-
-<p class=MsoNormal style='margin-left:1.3in;text-indent:-.3in;text-autospace:
-none'><span style='font-size:10.0pt;font-family:"Courier New"'>:contact =
-"Rusty Koder (koder at middle_earth.net)" ;</span></p>
-
-<p class=MsoNormal style='margin-left:1.3in;text-indent:-.3in;text-autospace:
-none'><span style='font-size:10.0pt;font-family:"Courier New"'>:project_id =
-"IPCC Fourth Assessment" ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����������� :table_id = "Table O1 (</span><span style='font-size:10.0pt;font-family:"Courier New"'>4 June 2004</span><span
-style='font-size:10.0pt;font-family:"Courier New"'>)" ;</span></p>
-
-<p class=MsoNormal style='margin-left:1.3in;text-indent:-.3in;text-autospace:
-none'><span style='font-size:10.0pt;font-family:"Courier New"'>:experiment_id =
-"2xCO2 equilibrium experiment" ;</span></p>
-
-<p class=MsoNormal style='margin-left:1.3in;text-indent:-.3in;text-autospace:
-none'><span style='font-size:10.0pt;font-family:"Courier New"'>:realization = 1
-;</span></p>
-
-<p class=MsoNormal style='margin-left:1.3in;text-indent:-.3in;text-autospace:
-none'><span style='font-size:10.0pt;font-family:"Courier New"'>:Conventions =
-"CF-1.0" ;</span></p>
-
-<p class=MsoNormal style='margin-left:1.3in;text-indent:-.3in;text-autospace:
-none'><span style='font-size:10.0pt;font-family:"Courier New"'>:history =
-"Output from archive/giccm_03_std_2xCO2_2256.� At </span><span style='font-size:10.0pt;font-family:"Courier New"'>18:06:56</span><span
-style='font-size:10.0pt;font-family:"Courier New"'> on </span><span style='font-size:10.0pt;font-family:"Courier New"'>06/07/2004</span><span
-style='font-size:10.0pt;font-family:"Courier New"'>, CMOR rewrote data to
-comply with CF standards and IPCC Fourth Assessment requirements" ;</span></p>
-
-<p class=MsoNormal style='margin-left:1.3in;text-indent:-.3in;text-autospace:
-none'><span style='font-size:10.0pt;font-family:"Courier New"'>:references =
-"Model described by Koder and Tolkien (J. Geophys. Res., 2001, 576-591).�
-Also see http://www.GICC.su/giccm/doc/index.html� 2XCO2 simulation described in
-Dorkey et al. (Clim. Dyn., 2003, 323-357.)" ;</span></p>
-
-<p class=MsoNormal style='margin-left:1.3in;text-indent:-.3in;text-autospace:
-none'><span style='font-size:10.0pt;font-family:"Courier New"'>:comment =
-"Equilibrium reached after 30-year spin-up after which data were output
-starting with nominal date of January 2030" ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>data:</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'> </span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>�lat = 10, 20, 30 ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'> </span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>�lat_bnds =</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>� 5, 15,</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>� 15, 25,</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>� 25, 35 ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'> </span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>�geo_region =</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>� "atlantic_ocean",</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>� "indian_ocean� ",</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>� "pacific_ocean ",</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>� "global_ocean� " ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'> </span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>�time = 15, 45 ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'> </span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>�time_bnds =</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>� 0, 30,</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>� 30, 60 ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'> </span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>�hfogo =</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>� -1.9e+15, -1.5e+15, -1.1e+15,</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>� -3e+14, 1e+14, 5e+14,</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>� 1.3e+15, 1.7e+15, 2.1e+15,</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>� 2.9e+15, 3.3e+15, 3.7e+15,</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>� -1.8e+15, -1.4e+15, -1e+15,</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>� -2e+14, 2e+14, 6e+14,</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>� 1.4e+15, 1.8e+15, 2.2e+15,</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>� 3e+15, 3.4e+15, 3.8e+15 ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>}</span></p>
-
-<span style='font-size:14.0pt;font-family:"Times New Roman"'><br clear=all
-style='page-break-before:always'>
-</span>
-
-<p class=MsoNormal align=center style='text-align:center;text-autospace:none'><a
-name="example_5"><span style='font-size:14.0pt'>Example 5</span></a><span
-style='font-size:14.0pt'>: Treatment of model level data</span></p>
-
-<p class=MsoNormal align=center style='text-align:center'><span
-style='font-size:14.0pt'>Cloud fraction</span></p>
-
-<p class=MsoNormal align=center style='text-align:center'><span
-style='font-size:14.0pt'>(a function of longitude, latitude, model level, month)</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'> </span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'> </span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>netcdf cl_A1 {</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>dimensions:</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����� lon = 4 ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����� lat = 3 ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����� lev = 5 ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����� time = UNLIMITED ; // (2 currently)</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����� bnds = 2 ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>variables:</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����� double lon(lon) ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����������� lon:standard_name =
-"longitude" ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����������� lon:long_name = "longitude" ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����������� lon:units = "degrees_east" ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����������� lon:axis = "X" ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����������� lon:bounds = "lon_bnds" ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����� double lon_bnds(lon, bnds) ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����� double lat(lat) ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����������� lat:standard_name = "latitude"
-;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����������� lat:long_name = "latitude" ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����������� lat:units = "degrees_north" ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����������� lat:axis = "Y" ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����������� lat:bounds = "lat_bnds" ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����� double lat_bnds(lat, bnds) ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����� double lev(lev) ;</span></p>
-
-<p class=MsoNormal style='margin-left:1.3in;text-indent:-.3in;text-autospace:
-none'><span style='font-size:10.0pt;font-family:"Courier New"'>lev:standard_name
-= "atmosphere_hybrid_sigma_pressure_coordinate" ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����������� lev:long_name = "hybrid sigma
-pressure coordinate" ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����������� lev:units = "1" ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����������� lev:axis = "Z" ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����������� lev:positive = "down" ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����������� lev:bounds = "lev_bnds" ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����������� lev:formula = "p(n,k,j,i) = a(k)*p0
-+ b(k)*ps(n,j,i)" ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����������� lev:formula_terms = "p0: p0 a: a b:
-b ps: ps" ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����� double lev_bnds(lev, bnds) ;</span></p>
-
-<p class=MsoNormal style='margin-left:1.3in;text-indent:-.3in;text-autospace:
-none'><span style='font-size:10.0pt;font-family:"Courier New"'>lev_bnds:standard_name
-= "atmosphere_hybrid_sigma_pressure_coordinate" ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����������� lev_bnds:formula = "p(n,k,j,i) =
-a(k)*p0 + b(k)*ps(n,j,i)" ;</span></p>
-
-<p class=MsoNormal style='margin-left:1.3in;text-indent:-.3in;text-autospace:
-none'><span style='font-size:10.0pt;font-family:"Courier New"'>lev_bnds:formula_terms
-= "p0: p0 a: a_bnds b: b_bnds ps: ps" ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����� double time(time) ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����������� time:standard_name = "time" ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����������� time:long_name = "time" ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����������� time:units = "days since
-2030-1-1" ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����������� time:axis = "T" ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����������� time:calendar = "360_day" ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����������� time:bounds = "time_bnds" ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����� double time_bnds(time, bnds) ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����� double a_bnds(lev, bnds) ;</span></p>
-
-<p class=MsoNormal style='margin-left:1.3in;text-indent:-.3in;text-autospace:
-none'><span style='font-size:10.0pt;font-family:"Courier New"'>a_bnds:long_name
-= "hybrid sigma coordinate A coefficient for layer bounds" ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����� double b_bnds(lev, bnds) ;</span></p>
-
-<p class=MsoNormal style='margin-left:1.3in;text-indent:-.3in;text-autospace:
-none'><span style='font-size:10.0pt;font-family:"Courier New"'>b_bnds:long_name
-= "hybrid sigma coordinate B coefficient for layer bounds" ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����� float p0 ;</span></p>
-
-<p class=MsoNormal style='margin-left:1.3in;text-indent:-.3in;text-autospace:
-none'><span style='font-size:10.0pt;font-family:"Courier New"'>p0:long_name =
-"reference pressure for hybrid sigma coordinate" ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����������� p0:units = "Pa" ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����� double a(lev) ;</span></p>
-
-<p class=MsoNormal style='margin-left:1.3in;text-indent:-.3in;text-autospace:
-none'><span style='font-size:10.0pt;font-family:"Courier New"'>a:long_name =
-"hybrid sigma coordinate A coefficient for layer" ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����� double b(lev) ;</span></p>
-
-<p class=MsoNormal style='margin-left:1.3in;text-indent:-.3in;text-autospace:
-none'><span style='font-size:10.0pt;font-family:"Courier New"'>b:long_name =
-"hybrid sigma coordinate B coefficient for layer" ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����� float ps(time, lat, lon) ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����������� ps:long_name = "Surface
-Pressure" ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����������� ps:units = "Pa" ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����� float cl(time, lev, lat, lon) ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����������� cl:standard_name = "cloud_area_fraction"
-;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����������� cl:long_name = "Total Cloud
-Fraction" ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����������� cl:units = "%" ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����������� cl:cell_methods = "time: mean
-(interval: 20 minutes)" ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����������� cl:_FillValue = 1.e+20f ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����������� cl:missing_value = 1.e+20f ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����������� cl:original_name = "CLOUD" ;</span></p>
-
-<p class=MsoNormal style='margin-left:1.3in;text-indent:-.3in;text-autospace:
-none'><span style='font-size:10.0pt;font-family:"Courier New"'>cl:history =
-" At�� </span><span style='font-size:10.0pt;font-family:"Courier New"'>17:54:19</span><span
-style='font-size:10.0pt;font-family:"Courier New"'> on </span><span style='font-size:10.0pt;font-family:"Courier New"'>06/07/2004</span><span
-style='font-size:10.0pt;font-family:"Courier New"'>: CMOR altered the data in
-the following ways: replaced missing value flag (1.00000E+28) with standard
-missing value (1.00000E+20);" ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'> </span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>// global attributes:</span></p>
-
-<p class=MsoNormal style='margin-left:1.3in;text-indent:-.3in;text-autospace:
-none'><span style='font-size:10.0pt;font-family:"Courier New"'>:title =
-"GICC� model output prepared for IPCC Fourth Assessment 2xCO2 equilibrium
-experiment" ;</span></p>
-
-<p class=MsoNormal style='margin-left:1.3in;text-indent:-.3in;text-autospace:
-none'><span style='font-size:10.0pt;font-family:"Courier New"'>:institution =
-"GICC (</span><span style='font-size:10.0pt;font-family:"Courier New"'>Generic</span><span
- style='font-size:10.0pt;font-family:"Courier New"'> </span><span
-  style='font-size:10.0pt;font-family:"Courier New"'>International</span><span
- style='font-size:10.0pt;font-family:"Courier New"'> </span><span
-  style='font-size:10.0pt;font-family:"Courier New"'>Climate</span><span
- style='font-size:10.0pt;font-family:"Courier New"'> </span><span
-  style='font-size:10.0pt;font-family:"Courier New"'>Center</span><span
-style='font-size:10.0pt;font-family:"Courier New"'>, </span><span
-  style='font-size:10.0pt;font-family:"Courier New"'>Geneva</span><span
- style='font-size:10.0pt;font-family:"Courier New"'>, </span><span
-  style='font-size:10.0pt;font-family:"Courier New"'>Switzerland</span><span
-style='font-size:10.0pt;font-family:"Courier New"'>)" ;</span></p>
-
-<p class=MsoNormal style='margin-left:1.3in;text-indent:-.3in;text-autospace:
-none'><span style='font-size:10.0pt;font-family:"Courier New"'>:source =
-"GICCM1 (2002): atmosphere:� GICAM3 (gicam_0_brnchT_itea_2, T63L32);
-ocean: MOM (mom3_ver_3.5.2, 2x3L15); sea ice: GISIM4; land: GILSM2.5" ;</span></p>
-
-<p class=MsoNormal style='margin-left:1.3in;text-indent:-.3in;text-autospace:
-none'><span style='font-size:10.0pt;font-family:"Courier New"'>:contact =
-"Rusty Koder (koder at middle_earth.net)" ;</span></p>
-
-<p class=MsoNormal style='margin-left:1.3in;text-indent:-.3in;text-autospace:
-none'><span style='font-size:10.0pt;font-family:"Courier New"'>:project_id =
-"IPCC Fourth Assessment" ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>����������� :table_id = "Table A1 (</span><span style='font-size:10.0pt;font-family:"Courier New"'>7 April 2004</span><span
-style='font-size:10.0pt;font-family:"Courier New"'>)" ;</span></p>
-
-<p class=MsoNormal style='margin-left:1.3in;text-indent:-.3in;text-autospace:
-none'><span style='font-size:10.0pt;font-family:"Courier New"'>:experiment_id =
-"2xCO2 equilibrium experiment" ;</span></p>
-
-<p class=MsoNormal style='margin-left:1.3in;text-indent:-.3in;text-autospace:
-none'><span style='font-size:10.0pt;font-family:"Courier New"'>:realization = 1
-;</span></p>
-
-<p class=MsoNormal style='margin-left:1.3in;text-indent:-.3in;text-autospace:
-none'><span style='font-size:10.0pt;font-family:"Courier New"'>:Conventions =
-"CF-1.0" ;</span></p>
-
-<p class=MsoNormal style='margin-left:1.3in;text-indent:-.3in;text-autospace:
-none'><span style='font-size:10.0pt;font-family:"Courier New"'>:history =
-"Output from archive/giccm_03_std_2xCO2_2256.� At </span><span style='font-size:10.0pt;font-family:"Courier New"'>17:54:19</span><span
-style='font-size:10.0pt;font-family:"Courier New"'> on </span><span style='font-size:10.0pt;font-family:"Courier New"'>06/07/2004</span><span
-style='font-size:10.0pt;font-family:"Courier New"'>, CMOR rewrote data to
-comply with CF standards and IPCC Fourth Assessment requirements" ;</span></p>
-
-<p class=MsoNormal style='margin-left:1.3in;text-indent:-.3in;text-autospace:
-none'><span style='font-size:10.0pt;font-family:"Courier New"'>:references =
-"Model described by Koder and Tolkien (J. Geophys. Res., 2001, 576-591).�
-Also see http://www.GICC.su/giccm/doc/index.html� 2XCO2 simulation described in
-Dorkey et al. (Clim. Dyn., 2003, 323-357.)" ;</span></p>
-
-<p class=MsoNormal style='margin-left:1.3in;text-indent:-.3in;text-autospace:
-none'><span style='font-size:10.0pt;font-family:"Courier New"'>:comment =
-"Equilibrium reached after 30-year spin-up after which data were output
-starting with nominal date of January 2030" ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>data:</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'> </span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>�lon = 0, 90, 180, 270 ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'> </span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>�lon_bnds =</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>� -45, 45,</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>� 45, 135,</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>� 135, 225,</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>� 225, 315 ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'> </span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>�lat = 10, 20, 30 ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'> </span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>�lat_bnds =</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>� 5, 15,</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>� 15, 25,</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>� 25, 35 ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'> </span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>�lev = 0.100000001490116, 0.300000004470348,
-0.500000014901161, </span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>��� 0.700000002980232, 0.900000013411045 ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'> </span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>�lev_bnds =</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>� 0, 0.200000006705523,</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>� 0.200000006705523, 0.400000005960464,</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>� 0.400000005960464, 0.599999994039536,</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>� 0.599999994039536, 0.799999982118607,</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>� 0.799999982118607, 1 ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'> </span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>�time = 15, 45 ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'> </span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>�time_bnds =</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>� 0, 30,</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>� 30, 60 ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'> </span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>�a_bnds =</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>� 0, 0.150000005960464,</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>� 0.150000005960464, 0.25,</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>� 0.25, 0.25,</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>� 0.25, 0.150000005960464,</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>� 0.150000005960464, 0 ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'> </span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>�b_bnds =</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>� 0, 0.0500000007450581,</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>� 0.0500000007450581, 0.150000005960464,</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>� 0.150000005960464, 0.349999994039536,</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>� 0.349999994039536, 0.649999976158142,</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>� 0.649999976158142, 1 ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'> </span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>�p0 = 100000 ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'> </span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>�a = 0.100000001490116, 0.200000002980232,
-0.300000011920929, </span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>��� 0.200000002980232, 0.100000001490116 ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'> </span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>�b = 0, 0.100000001490116, 0.200000002980232, 0.5, 0.800000011920929
-;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'> </span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>�ps =</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>� 97100, 97500, 97900, 98300,</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>� 98700, 99100, 99500, 99900,</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>� 100300, 100700, 101100, 101500,</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>� 97200, 97600, 98000, 98400,</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>� 98800, 99200, 99600, 100000,</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>� 100400, 100800, 101200, 101600 ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'> </span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>�cl =</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>� 50.1, 50.5, 50.9, 51.3,</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>� 51.7, 52.1, 52.5, 52.9,</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>� 53.3, 53.7, 54.1, 54.5,</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>� 56.5, 56.9, 57.3, 57.7,</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>��58.1, 58.5, 58.9, 59.3,</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>� 59.7, 60.1, 60.5, 60.9,</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>� 62.9, 63.3, 63.7, 64.1,</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>� 64.5, 64.9, 65.3, 65.7,</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>� 66.1, 66.5, 66.9, 67.3,</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>� 69.3, 69.7, 70.1, 70.5,</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>� 70.9, 71.3, 71.7, 72.1,</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>� 72.5, 72.9, 73.3, 73.7,</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>� 75.7, 76.1, 76.5, 76.9,</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>� 77.3, 77.7, 78.1, 78.5,</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>� 78.9, 79.3, 79.7, 80.1,</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>� 50.2, 50.6, 51, 51.4,</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>� 51.8, 52.2, 52.6, 53,</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>� 53.4, 53.8, 54.2, 54.6,</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>� 56.6, 57, 57.4, 57.8,</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>� 58.2, 58.6, 59, 59.4,</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>� 59.8, 60.2, 60.6, 61,</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>� 63, 63.4, 63.8, 64.2,</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>� 64.6, 65, 65.4, 65.8,</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>� 66.2, 66.6, 67, 67.4,</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>� 69.4, 69.8, 70.2, 70.6,</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>� 71, 71.4, 71.8, 72.2,</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>� 72.6, 73, 73.4, 73.8,</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>� 75.8, 76.2, 76.6, 77,</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>� 77.4, 77.8, 78.2, 78.6,</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>� 79, 79.4, 79.8, 80.2 ;</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'>}</span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'> </span></p>
-
-<p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;
-font-family:"Courier New"'> </span></p>
-
-</div>
-
-<div><br clear=all>
-
-<hr align=left size=1 width="33%">
-
-<div id=ftn1>
-
-<p class=MsoFootnoteText><a href="#_ftnref1" name="_ftn1" title=""><span
-class=MsoFootnoteReference><span class=MsoFootnoteReference><span
-style='font-size:10.0pt;font-family:"Times New Roman"'>[1]</span></span></span></a>
-See <a href="http://www-pcmdi.llnl.gov/software-portal/cmor">http://www-pcmdi.llnl.gov/software-portal/cmor</a></p>
-
-</div>
-
-<div id=ftn2>
-
-<p class=MsoFootnoteText><a href="#_ftnref2" name="_ftn2" title=""><span
-class=MsoFootnoteReference><span class=MsoFootnoteReference><span
-style='font-size:10.0pt;font-family:"Times New Roman"'>[2]</span></span></span></a>
-See <a href="http://www-pcmdi.llnl.gov/software/cmor/cmor_users_guide.pdf">�http://www-pcmdi.llnl.gov/software/cmor/cmor_users_guide.pdf</a></p>
-
-</div>
-
-<div id=ftn3>
-
-<p class=MsoFootnoteText><a href="#_ftnref3" name="_ftn3" title=""><span
-class=MsoFootnoteReference><span class=MsoFootnoteReference><span
-style='font-size:10.0pt;font-family:"Times New Roman"'>[3]</span></span></span></a>
-See <a href="http://esg.llnl.gov/portal">�http://esg.llnl.gov/portal</a></p>
-
-</div>
-
-<div id=ftn4>
-
-<p class=MsoFootnoteText><a href="#_ftnref4" name="_ftn4" title=""><span
-class=FootnoteCharacters><span class=FootnoteCharacters><span style='font-size:
-10.0pt;font-family:"Times New Roman"'>[4]</span></span></span></a> See<a
-href="http://my.unidata.ucar.edu/content/software/netcdf">http://my.unidata.ucar.edu/content/software/netcdf</a></p>
-
-</div>
-
-<div id=ftn5>
-
-<p class=MsoFootnoteText><a href="#_ftnref5" name="_ftn5" title=""><span
-class=FootnoteCharacters><span class=FootnoteCharacters><span style='font-size:
-10.0pt;font-family:"Times New Roman"'>[5]</span></span></span></a> See <span
-class=MsoHyperlink><span style='color:blue'><a
-href="http://www.cgd.ucar.edu/cms/eaton/cf-metadata">http://www.cgd.ucar.edu/cms/eaton/cf-metadata</a></span></span>
-</p>
-
-</div>
-
-<div id=ftn6>
-
-<p class=MsoFootnoteText><a href="#_ftnref6" name="_ftn6" title=""><span
-class=MsoFootnoteReference><span class=MsoFootnoteReference><span
-style='font-size:10.0pt;font-family:"Times New Roman"'>[6]</span></span></span></a>
-See <a href="http://www-pcmdi.llnl.gov/ipcc/standard_output.html">http://www-pcmdi.llnl.gov/ipcc/standard_output.html</a></p>
-
-</div>
-
-<div id=ftn7>
-
-<p class=MsoFootnoteText><a href="#_ftnref7" name="_ftn7" title=""><span
-class=MsoFootnoteReference><span class=MsoFootnoteReference><span
-style='font-size:10.0pt;font-family:"Times New Roman"'>[7]</span></span></span></a>
-See <a href="http://www-pcmdi.llnl.gov/ipcc/standard_output.html">http://www-pcmdi.llnl.gov/ipcc/standard_output.html</a></p>
-
-</div>
-
-<div id=ftn8>
-
-<p class=MsoFootnoteText><a href="#_ftnref8" name="_ftn8" title=""><span
-class=MsoFootnoteReference><span class=MsoFootnoteReference><span
-style='font-size:10.0pt;font-family:"Times New Roman"'>[8]</span></span></span></a>
-See <a href="http://www-pcmdi.llnl.gov/ipcc/standard_output.html">http://www-pcmdi.llnl.gov/ipcc/standard_output.html</a></p>
-
-</div>
-
-<div id=ftn9>
-
-<p class=MsoFootnoteText><a href="#_ftnref9" name="_ftn9" title=""><span
-class=MsoFootnoteReference><span class=MsoFootnoteReference><span
-style='font-size:10.0pt;font-family:"Times New Roman"'>[9]</span></span></span></a>
-See <a href="http://www-pcmdi.llnl.gov/ipcc/standard_output.html">http://www-pcmdi.llnl.gov/ipcc/standard_output.html</a></p>
-
-</div>
-
-<div id=ftn10>
-
-<p class=MsoFootnoteText><a href="#_ftnref10" name="_ftn10" title=""><span
-class=MsoFootnoteReference><span class=MsoFootnoteReference><span
-style='font-size:10.0pt;font-family:"Times New Roman"'>[10]</span></span></span></a>
-See <a href="http://www-pcmdi.llnl.gov/ipcc/standard_output.html">http://www-pcmdi.llnl.gov/ipcc/standard_output.html</a></p>
-
-</div>
-
-<div id=ftn11>
-
-<p class=MsoFootnoteText><a href="#_ftnref11" name="_ftn11" title=""><span
-class=MsoFootnoteReference><span class=MsoFootnoteReference><span
-style='font-size:10.0pt;font-family:"Times New Roman"'>[11]</span></span></span></a>
-See <a href="http://www-pcmdi.llnl.gov/ipcc/standard_output.html">http://www-pcmdi.llnl.gov/ipcc/standard_output.html</a></p>
-
-</div>
-
-<div id=ftn12>
-
-<p class=MsoFootnoteText style='text-align:justify'><a href="#_ftnref12"
-name="_ftn12" title=""><span class=FootnoteCharacters><span
-class=FootnoteCharacters><span style='font-size:10.0pt;font-family:"Times New Roman"'>[12]</span></span></span></a>
-As an example of "missing data",� consider a globally gridded dataset
-of ocean surface salinity.� The data representing land points on this data set
-would be missing.� Likewise, atmospheric data on portions of pressure surfaces
-that are underground are usually considered missing. </p>
-
-</div>
-
-<div id=ftn13>
-
-<p class=MsoFootnoteText><a href="#_ftnref13" name="_ftn13" title=""><span
-class=MsoFootnoteReference><span class=MsoFootnoteReference><span
-style='font-size:10.0pt;font-family:"Times New Roman"'>[13]</span></span></span></a>
-See <a href="http://www-pcmdi.llnl.gov/ipcc/standard_output.html">http://www-pcmdi.llnl.gov/ipcc/standard_output.html</a></p>
-
-</div>
-
-<div id=ftn14>
-
-<p class=MsoFootnoteText><a href="#_ftnref14" name="_ftn14" title=""><span
-class=MsoFootnoteReference><span class=MsoFootnoteReference><span
-style='font-size:10.0pt;font-family:"Times New Roman"'>[14]</span></span></span></a>
-See <a href="http://www-pcmdi.llnl.gov/ipcc/standard_output.html">http://www-pcmdi.llnl.gov/ipcc/standard_output.html</a></p>
-
-</div>
-
-<div id=ftn15>
-
-<p class=MsoFootnoteText><a href="#_ftnref15" name="_ftn15" title=""><span
-class=MsoFootnoteReference><span class=MsoFootnoteReference><span
-style='font-size:10.0pt;font-family:"Times New Roman"'>[15]</span></span></span></a>
-See <a href="http://my.unidata.ucar.edu/content/software/udunits/">http://my.unidata.ucar.edu/content/software/udunits/</a></p>
-
-</div>
-
-<div id=ftn16>
-
-<p class=MsoFootnoteText><a href="#_ftnref16" name="_ftn16" title=""><span
-class=MsoFootnoteReference><span class=MsoFootnoteReference><span
-style='font-size:10.0pt;font-family:"Times New Roman"'>[16]</span></span></span></a>
-See <a href="http://www-pcmdi.llnl.gov/ipcc/standard_output.html">http://www-pcmdi.llnl.gov/ipcc/standard_output.html</a></p>
-
-</div>
-
-<div id=ftn17>
-
-<p class=MsoFootnoteText><a href="#_ftnref17" name="_ftn17" title=""><span
-class=MsoFootnoteReference><span class=MsoFootnoteReference><span
-style='font-size:10.0pt;font-family:"Times New Roman"'>[17]</span></span></span></a>
-<a
-href="http://www.cgd.ucar.edu/cms/eaton/cf-metadata/CF-1.0.html#scalar_coords">http://www.cgd.ucar.edu/cms/eaton/cf-metadata/CF-1.0.html#scalar_coords</a></p>
-
-</div>
-
-<div id=ftn18>
-
-<p class=MsoFootnoteText><a href="#_ftnref18" name="_ftn18" title=""><span
-class=MsoFootnoteReference><span class=MsoFootnoteReference><span
-style='font-size:10.0pt;font-family:"Times New Roman"'>[18]</span></span></span></a>
-<a href="http://www.cgd.ucar.edu/cms/eaton/cf-metadata/CF-1.0.html#region">http://www.cgd.ucar.edu/cms/eaton/cf-metadata/CF-1.0.html#region</a></p>
-
-</div>
-
-<div id=ftn19>
-
-<p class=MsoFootnoteText><a href="#_ftnref19" name="_ftn19" title=""><span
-class=MsoFootnoteReference><span class=MsoFootnoteReference><span
-style='font-size:10.0pt;font-family:"Times New Roman"'>[19]</span></span></span></a>
-See <a href="http://www-pcmdi.llnl.gov/ipcc/standard_output.html">http://www-pcmdi.llnl.gov/ipcc/standard_output.html</a></p>
-
-</div>
-
-<div id=ftn20>
-
-<p class=MsoFootnoteText><a href="#_ftnref20" name="_ftn20" title=""><span
-class=MsoFootnoteReference><span class=MsoFootnoteReference><span
-style='font-size:10.0pt;font-family:"Times New Roman"'>[20]</span></span></span></a>
-<a href="http://www.cgd.ucar.edu/cms/eaton/cf-metadata/CF-1.0.html#vrt_app">http://www.cgd.ucar.edu/cms/eaton/cf-metadata/CF-1.0.html#vrt_app</a></p>
-
-</div>
-
-<div id=ftn21>
-
-<p class=MsoFootnoteText><a href="#_ftnref21" name="_ftn21" title=""><span
-class=MsoFootnoteReference><span class=MsoFootnoteReference><span
-style='font-size:10.0pt;font-family:"Times New Roman"'>[21]</span></span></span></a>
-<a href="http://www.cgd.ucar.edu/cms/eaton/cf-metadata/CF-1.0.html#bnds">http://www.cgd.ucar.edu/cms/eaton/cf-metadata/CF-1.0.html#bnds</a></p>
-
-</div>
-
-<div id=ftn22>
-
-<p class=MsoFootnoteText><a href="#_ftnref22" name="_ftn22" title=""><span
-class=MsoFootnoteReference><span class=MsoFootnoteReference><span
-style='font-size:10.0pt;font-family:"Times New Roman"'>[22]</span></span></span></a><a
-href="http://www.cgd.ucar.edu/cms/eaton/cf-metadata/CF-1.0.html#vdim">
-http://www.cgd.ucar.edu/cms/eaton/cf-metadata/CF-1.0.html#vdim</a></p>
-
-</div>
-
-<div id=ftn23>
-
-<p class=MsoFootnoteText><a href="#_ftnref23" name="_ftn23" title=""><span
-class=MsoFootnoteReference><span class=MsoFootnoteReference><span
-style='font-size:10.0pt;font-family:"Times New Roman"'>[23]</span></span></span></a>
-<a href="http://www.cgd.ucar.edu/cms/eaton/cf-metadata/CF-1.0.html#vrt_app">http://www.cgd.ucar.edu/cms/eaton/cf-metadata/CF-1.0.html#vrt_app</a></p>
-
-</div>
-
-<div id=ftn24>
-
-<p class=MsoFootnoteText><a href="#_ftnref24" name="_ftn24" title=""><span
-class=MsoFootnoteReference><span class=MsoFootnoteReference><span
-style='font-size:10.0pt;font-family:"Times New Roman"'>[24]</span></span></span></a><a
-href="http://www.cgd.ucar.edu/cms/eaton/cf-metadata/region.html">
-http://www.cgd.ucar.edu/cms/eaton/cf-metadata/region.html</a></p>
-
-</div>
-
-<div id=ftn25>
-
-<p class=MsoFootnoteText><a href="#_ftnref25" name="_ftn25" title=""><span
-class=MsoFootnoteReference><span class=MsoFootnoteReference><span
-style='font-size:10.0pt;font-family:"Times New Roman"'>[25]</span></span></span></a>
-<a href="http://www.cgd.ucar.edu/cms/eaton/cf-metadata/CF-1.0.html#region">http://www.cgd.ucar.edu/cms/eaton/cf-metadata/CF-1.0.html#region</a></p>
-
-</div>
-
-<div id=ftn26>
-
-<p class=MsoFootnoteText><a href="#_ftnref26" name="_ftn26" title=""><span
-class=MsoFootnoteReference><span class=MsoFootnoteReference><span
-style='font-size:10.0pt;font-family:"Times New Roman"'>[26]</span></span></span></a>
-<a href="http://www.cgd.ucar.edu/cms/eaton/cf-metadata/CF-1.0.html#ctype">http://www.cgd.ucar.edu/cms/eaton/cf-metadata/CF-1.0.html#ctype</a></p>
-
-</div>
-
-<div id=ftn27>
-
-<p class=MsoFootnoteText><a href="#_ftnref27" name="_ftn27" title=""><span
-class=MsoFootnoteReference><span class=MsoFootnoteReference><span
-style='font-size:10.0pt;font-family:"Times New Roman"'>[27]</span></span></span></a>
-<a href="http://www.cgd.ucar.edu/cms/eaton/cf-metadata/CF-1.0.html#cal">http://www.cgd.ucar.edu/cms/eaton/cf-metadata/CF-1.0.html#cal</a></p>
-
-</div>
-
-<div id=ftn28>
-
-<p class=MsoFootnoteText><a href="#_ftnref28" name="_ftn28" title=""><span
-class=MsoFootnoteReference><span class=MsoFootnoteReference><span
-style='font-size:10.0pt;font-family:"Times New Roman"'>[28]</span></span></span></a>
-<a href="http://www.cgd.ucar.edu/cms/eaton/cf-metadata/CF-1.0.html#vnum">http://www.cgd.ucar.edu/cms/eaton/cf-metadata/CF-1.0.html#vnum</a></p>
-
-</div>
-
-<div id=ftn29>
-
-<p class=MsoFootnoteText><a href="#_ftnref29" name="_ftn29" title=""><span
-class=MsoFootnoteReference><span class=MsoFootnoteReference><span
-style='font-size:10.0pt;font-family:"Times New Roman"'>[29]</span></span></span></a>
-<a href="http://www.cgd.ucar.edu/cms/eaton/cf-metadata/CF-1.0.html#vrt_app">http://www.cgd.ucar.edu/cms/eaton/cf-metadata/CF-1.0.html#vrt_app</a></p>
-
-</div>
-
-<div id=ftn30>
-
-<p class=MsoFootnoteText><a href="#_ftnref30" name="_ftn30" title=""><span
-class=MsoFootnoteReference><span class=MsoFootnoteReference><span
-style='font-size:10.0pt;font-family:"Times New Roman"'>[30]</span></span></span></a>
-See <a href="http://www-pcmdi.llnl.gov/ipcc/standard_output.html">http://www-pcmdi.llnl.gov/ipcc/standard_output.html</a></p>
-
-</div>
-
-</div>
-
-</body>
-
-</html>
\ No newline at end of file
diff --git a/Doc/IPCC_output_requirements.pdf b/Doc/IPCC_output_requirements.pdf
deleted file mode 100644
index 8ced249..0000000
Binary files a/Doc/IPCC_output_requirements.pdf and /dev/null differ
diff --git a/Doc/cmor_users_guide.doc b/Doc/cmor_users_guide.doc
deleted file mode 100644
index 6a21a6a..0000000
Binary files a/Doc/cmor_users_guide.doc and /dev/null differ
diff --git a/Doc/cmor_users_guide.htm b/Doc/cmor_users_guide.htm
deleted file mode 100644
index 913df6c..0000000
--- a/Doc/cmor_users_guide.htm
+++ /dev/null
@@ -1,16650 +0,0 @@
-<html xmlns:v="urn:schemas-microsoft-com:vml"
-xmlns:o="urn:schemas-microsoft-com:office:office"
-xmlns:w="urn:schemas-microsoft-com:office:word"
-xmlns:m="http://schemas.microsoft.com/office/2004/12/omml"
-xmlns:css="http://macVmlSchemaUri" xmlns="http://www.w3.org/TR/REC-html40">
-
-<head>
-<meta name=Title content="Climate Model Output Rewriter (CMOR)">
-<meta name=Keywords content="">
-<meta http-equiv=Content-Type content="text/html; charset=utf-8">
-<meta name=ProgId content=Word.Document>
-<meta name=Generator content="Microsoft Word 2008">
-<meta name=Originator content="Microsoft Word 2008">
-<link rel=File-List href="cmor_users_guide_files/filelist.xml">
-<title>Climate Model Output Rewriter (CMOR)</title>
-<!--[if gte mso 9]><xml>
- <o:DocumentProperties>
-  <o:Author>Karl Taylor</o:Author>
-  <o:Template>Normal.dotm</o:Template>
-  <o:LastAuthor>Default</o:LastAuthor>
-  <o:Revision>2</o:Revision>
-  <o:TotalTime>0</o:TotalTime>
-  <o:LastPrinted>2010-11-12T16:22:00Z</o:LastPrinted>
-  <o:Created>2010-11-12T16:22:00Z</o:Created>
-  <o:LastSaved>2010-11-12T16:22:00Z</o:LastSaved>
-  <o:Pages>13</o:Pages>
-  <o:Words>24932</o:Words>
-  <o:Characters>142117</o:Characters>
-  <o:Company>PCMDI</o:Company>
-  <o:Lines>1184</o:Lines>
-  <o:Paragraphs>284</o:Paragraphs>
-  <o:CharactersWithSpaces>174529</o:CharactersWithSpaces>
-  <o:Version>12.0</o:Version>
- </o:DocumentProperties>
- <o:OfficeDocumentSettings>
-  <o:PixelsPerInch>96</o:PixelsPerInch>
-  <o:TargetScreenSize>800x600</o:TargetScreenSize>
- </o:OfficeDocumentSettings>
-</xml><![endif]--><!--[if gte mso 9]><xml>
- <w:WordDocument>
-  <w:HideSpellingErrors/>
-  <w:TrackMoves>false</w:TrackMoves>
-  <w:TrackFormatting/>
-  <w:ValidateAgainstSchemas/>
-  <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
-  <w:IgnoreMixedContent>false</w:IgnoreMixedContent>
-  <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
-  <w:Compatibility>
-   <w:BreakWrappedTables/>
-   <w:UseNormalStyleForList/>
-   <w:DontUseIndentAsNumberingTabStop/>
-   <w:FELineBreak11/>
-   <w:WW11IndentRules/>
-   <w:DontAutofitConstrainedTables/>
-   <w:AutofitLikeWW11/>
-   <w:HangulWidthLikeWW11/>
-  </w:Compatibility>
- </w:WordDocument>
-</xml><![endif]--><!--[if gte mso 9]><xml>
- <w:LatentStyles DefLockedState="false" LatentStyleCount="276">
- </w:LatentStyles>
-</xml><![endif]-->
-<style>
-<!--
- /* Font Definitions */
- at font-face
-	{font-family:Arial;
-	panose-1:2 11 6 4 2 2 2 2 2 4;
-	mso-font-charset:0;
-	mso-generic-font-family:auto;
-	mso-font-pitch:variable;
-	mso-font-signature:3 0 0 0 1 0;}
- at font-face
-	{font-family:"Courier New";
-	panose-1:2 7 3 9 2 2 5 2 4 4;
-	mso-font-charset:0;
-	mso-generic-font-family:auto;
-	mso-font-pitch:variable;
-	mso-font-signature:3 0 0 0 1 0;}
- at font-face
-	{font-family:Wingdings;
-	panose-1:5 2 1 2 1 8 4 8 7 8;
-	mso-font-charset:2;
-	mso-generic-font-family:auto;
-	mso-font-format:other;
-	mso-font-pitch:variable;
-	mso-font-signature:0 0 65536 0 -2147483648 0;}
- at font-face
-	{font-family:Cambria;
-	panose-1:2 4 5 3 5 4 6 3 2 4;
-	mso-font-charset:0;
-	mso-generic-font-family:auto;
-	mso-font-pitch:variable;
-	mso-font-signature:3 0 0 0 1 0;}
- at font-face
-	{font-family:Tahoma;
-	panose-1:2 11 6 4 3 5 4 4 2 4;
-	mso-font-charset:0;
-	mso-generic-font-family:auto;
-	mso-font-pitch:variable;
-	mso-font-signature:3 0 0 0 1 0;}
- /* Style Definitions */
-p.MsoNormal, li.MsoNormal, div.MsoNormal
-	{mso-style-parent:"";
-	margin:0in;
-	margin-bottom:.0001pt;
-	mso-pagination:widow-orphan;
-	font-size:12.0pt;
-	font-family:"Times New Roman";
-	mso-fareast-font-family:"Times New Roman";
-	mso-bidi-font-family:"Times New Roman";}
-h1
-	{mso-style-next:Normal;
-	margin-top:12.0pt;
-	margin-right:0in;
-	margin-bottom:3.0pt;
-	margin-left:0in;
-	mso-pagination:widow-orphan;
-	page-break-after:avoid;
-	mso-outline-level:1;
-	font-size:16.0pt;
-	font-family:Arial;
-	mso-bidi-font-family:Arial;
-	mso-font-kerning:16.0pt;
-	mso-bidi-font-weight:bold;}
-h2
-	{mso-style-next:Normal;
-	margin-top:12.0pt;
-	margin-right:0in;
-	margin-bottom:3.0pt;
-	margin-left:0in;
-	mso-pagination:widow-orphan;
-	page-break-after:avoid;
-	mso-outline-level:2;
-	font-size:14.0pt;
-	font-family:Arial;
-	mso-bidi-font-family:Arial;
-	mso-bidi-font-weight:bold;
-	font-style:italic;}
-h3
-	{mso-style-next:Normal;
-	margin-top:12.0pt;
-	margin-right:0in;
-	margin-bottom:3.0pt;
-	margin-left:0in;
-	mso-pagination:widow-orphan;
-	page-break-after:avoid;
-	mso-outline-level:3;
-	font-size:13.0pt;
-	font-family:Arial;
-	mso-bidi-font-family:Arial;
-	mso-bidi-font-weight:bold;}
-h4
-	{mso-style-next:Normal;
-	margin-top:12.0pt;
-	margin-right:0in;
-	margin-bottom:3.0pt;
-	margin-left:0in;
-	mso-pagination:widow-orphan;
-	page-break-after:avoid;
-	mso-outline-level:4;
-	font-size:14.0pt;
-	font-family:"Times New Roman";
-	mso-bidi-font-weight:bold;}
-h5
-	{mso-style-next:Normal;
-	margin-top:12.0pt;
-	margin-right:0in;
-	margin-bottom:3.0pt;
-	margin-left:0in;
-	mso-pagination:widow-orphan;
-	mso-outline-level:5;
-	font-size:13.0pt;
-	font-family:"Times New Roman";
-	mso-bidi-font-weight:bold;
-	font-style:italic;}
-h6
-	{mso-style-next:Normal;
-	margin-top:12.0pt;
-	margin-right:0in;
-	margin-bottom:3.0pt;
-	margin-left:0in;
-	mso-pagination:widow-orphan;
-	mso-outline-level:6;
-	font-size:11.0pt;
-	font-family:"Times New Roman";
-	mso-bidi-font-weight:bold;}
-p.MsoHeading7, li.MsoHeading7, div.MsoHeading7
-	{mso-style-next:Normal;
-	margin-top:12.0pt;
-	margin-right:0in;
-	margin-bottom:3.0pt;
-	margin-left:0in;
-	mso-pagination:widow-orphan;
-	mso-outline-level:7;
-	font-size:12.0pt;
-	font-family:"Times New Roman";
-	mso-fareast-font-family:"Times New Roman";
-	mso-bidi-font-family:"Times New Roman";}
-p.MsoToc1, li.MsoToc1, div.MsoToc1
-	{mso-style-update:auto;
-	mso-style-noshow:yes;
-	mso-style-next:Normal;
-	margin-top:6.0pt;
-	margin-right:0in;
-	margin-bottom:0in;
-	margin-left:0in;
-	margin-bottom:.0001pt;
-	mso-pagination:widow-orphan;
-	font-size:12.0pt;
-	font-family:"Times New Roman";
-	mso-ascii-font-family:Cambria;
-	mso-fareast-font-family:"Times New Roman";
-	mso-hansi-font-family:Cambria;
-	mso-bidi-font-family:"Times New Roman";
-	font-weight:bold;
-	mso-bidi-font-weight:normal;}
-p.MsoToc2, li.MsoToc2, div.MsoToc2
-	{mso-style-update:auto;
-	mso-style-noshow:yes;
-	mso-style-next:Normal;
-	margin-top:0in;
-	margin-right:0in;
-	margin-bottom:0in;
-	margin-left:12.0pt;
-	margin-bottom:.0001pt;
-	mso-pagination:widow-orphan;
-	font-size:11.0pt;
-	font-family:"Times New Roman";
-	mso-ascii-font-family:Cambria;
-	mso-fareast-font-family:"Times New Roman";
-	mso-hansi-font-family:Cambria;
-	mso-bidi-font-family:"Times New Roman";
-	font-weight:bold;
-	mso-bidi-font-weight:normal;}
-p.MsoToc3, li.MsoToc3, div.MsoToc3
-	{mso-style-update:auto;
-	mso-style-noshow:yes;
-	mso-style-next:Normal;
-	margin-top:0in;
-	margin-right:0in;
-	margin-bottom:0in;
-	margin-left:24.0pt;
-	margin-bottom:.0001pt;
-	mso-pagination:widow-orphan;
-	font-size:11.0pt;
-	font-family:"Times New Roman";
-	mso-ascii-font-family:Cambria;
-	mso-fareast-font-family:"Times New Roman";
-	mso-hansi-font-family:Cambria;
-	mso-bidi-font-family:"Times New Roman";}
-p.MsoToc4, li.MsoToc4, div.MsoToc4
-	{mso-style-update:auto;
-	mso-style-noshow:yes;
-	mso-style-next:Normal;
-	margin-top:0in;
-	margin-right:0in;
-	margin-bottom:0in;
-	margin-left:.5in;
-	margin-bottom:.0001pt;
-	mso-pagination:widow-orphan;
-	font-size:10.0pt;
-	font-family:"Times New Roman";
-	mso-ascii-font-family:Cambria;
-	mso-fareast-font-family:"Times New Roman";
-	mso-hansi-font-family:Cambria;
-	mso-bidi-font-family:"Times New Roman";}
-p.MsoToc5, li.MsoToc5, div.MsoToc5
-	{mso-style-update:auto;
-	mso-style-noshow:yes;
-	mso-style-next:Normal;
-	margin-top:0in;
-	margin-right:0in;
-	margin-bottom:0in;
-	margin-left:48.0pt;
-	margin-bottom:.0001pt;
-	mso-pagination:widow-orphan;
-	font-size:10.0pt;
-	font-family:"Times New Roman";
-	mso-ascii-font-family:Cambria;
-	mso-fareast-font-family:"Times New Roman";
-	mso-hansi-font-family:Cambria;
-	mso-bidi-font-family:"Times New Roman";}
-p.MsoToc6, li.MsoToc6, div.MsoToc6
-	{mso-style-update:auto;
-	mso-style-noshow:yes;
-	mso-style-next:Normal;
-	margin-top:0in;
-	margin-right:0in;
-	margin-bottom:0in;
-	margin-left:60.0pt;
-	margin-bottom:.0001pt;
-	mso-pagination:widow-orphan;
-	font-size:10.0pt;
-	font-family:"Times New Roman";
-	mso-ascii-font-family:Cambria;
-	mso-fareast-font-family:"Times New Roman";
-	mso-hansi-font-family:Cambria;
-	mso-bidi-font-family:"Times New Roman";}
-p.MsoToc7, li.MsoToc7, div.MsoToc7
-	{mso-style-update:auto;
-	mso-style-noshow:yes;
-	mso-style-next:Normal;
-	margin-top:0in;
-	margin-right:0in;
-	margin-bottom:0in;
-	margin-left:1.0in;
-	margin-bottom:.0001pt;
-	mso-pagination:widow-orphan;
-	font-size:10.0pt;
-	font-family:"Times New Roman";
-	mso-ascii-font-family:Cambria;
-	mso-fareast-font-family:"Times New Roman";
-	mso-hansi-font-family:Cambria;
-	mso-bidi-font-family:"Times New Roman";}
-p.MsoToc8, li.MsoToc8, div.MsoToc8
-	{mso-style-update:auto;
-	mso-style-noshow:yes;
-	mso-style-next:Normal;
-	margin-top:0in;
-	margin-right:0in;
-	margin-bottom:0in;
-	margin-left:84.0pt;
-	margin-bottom:.0001pt;
-	mso-pagination:widow-orphan;
-	font-size:10.0pt;
-	font-family:"Times New Roman";
-	mso-ascii-font-family:Cambria;
-	mso-fareast-font-family:"Times New Roman";
-	mso-hansi-font-family:Cambria;
-	mso-bidi-font-family:"Times New Roman";}
-p.MsoToc9, li.MsoToc9, div.MsoToc9
-	{mso-style-update:auto;
-	mso-style-noshow:yes;
-	mso-style-next:Normal;
-	margin-top:0in;
-	margin-right:0in;
-	margin-bottom:0in;
-	margin-left:96.0pt;
-	margin-bottom:.0001pt;
-	mso-pagination:widow-orphan;
-	font-size:10.0pt;
-	font-family:"Times New Roman";
-	mso-ascii-font-family:Cambria;
-	mso-fareast-font-family:"Times New Roman";
-	mso-hansi-font-family:Cambria;
-	mso-bidi-font-family:"Times New Roman";}
-p.MsoNormalIndent, li.MsoNormalIndent, div.MsoNormalIndent
-	{margin-top:0in;
-	margin-right:0in;
-	margin-bottom:0in;
-	margin-left:.5in;
-	margin-bottom:.0001pt;
-	mso-pagination:widow-orphan;
-	font-size:12.0pt;
-	font-family:"Times New Roman";
-	mso-fareast-font-family:"Times New Roman";
-	mso-bidi-font-family:"Times New Roman";}
-p.MsoFootnoteText, li.MsoFootnoteText, div.MsoFootnoteText
-	{mso-style-noshow:yes;
-	margin:0in;
-	margin-bottom:.0001pt;
-	mso-pagination:widow-orphan;
-	font-size:10.0pt;
-	font-family:"Times New Roman";
-	mso-fareast-font-family:"Times New Roman";
-	mso-bidi-font-family:"Times New Roman";}
-p.MsoCommentText, li.MsoCommentText, div.MsoCommentText
-	{mso-style-link:"Comment Text Char";
-	margin:0in;
-	margin-bottom:.0001pt;
-	mso-pagination:widow-orphan;
-	font-size:10.0pt;
-	font-family:"Times New Roman";
-	mso-fareast-font-family:"Times New Roman";
-	mso-bidi-font-family:"Times New Roman";}
-p.MsoHeader, li.MsoHeader, div.MsoHeader
-	{margin:0in;
-	margin-bottom:.0001pt;
-	mso-pagination:widow-orphan;
-	tab-stops:center 3.0in right 6.0in;
-	font-size:12.0pt;
-	font-family:"Times New Roman";
-	mso-fareast-font-family:"Times New Roman";
-	mso-bidi-font-family:"Times New Roman";}
-p.MsoFooter, li.MsoFooter, div.MsoFooter
-	{margin:0in;
-	margin-bottom:.0001pt;
-	mso-pagination:widow-orphan;
-	tab-stops:center 3.0in right 6.0in;
-	font-size:12.0pt;
-	font-family:"Times New Roman";
-	mso-fareast-font-family:"Times New Roman";
-	mso-bidi-font-family:"Times New Roman";}
-span.MsoFootnoteReference
-	{mso-style-noshow:yes;
-	vertical-align:super;}
-span.MsoCommentReference
-	{mso-ansi-font-size:8.0pt;
-	mso-bidi-font-size:8.0pt;}
-span.MsoEndnoteReference
-	{vertical-align:super;}
-p.MsoEndnoteText, li.MsoEndnoteText, div.MsoEndnoteText
-	{mso-style-link:"Endnote Text Char";
-	margin:0in;
-	margin-bottom:.0001pt;
-	mso-pagination:widow-orphan;
-	font-size:10.0pt;
-	font-family:"Times New Roman";
-	mso-fareast-font-family:"Times New Roman";
-	mso-bidi-font-family:"Times New Roman";}
-p.MsoList, li.MsoList, div.MsoList
-	{margin-top:0in;
-	margin-right:0in;
-	margin-bottom:0in;
-	margin-left:.25in;
-	margin-bottom:.0001pt;
-	text-indent:-.25in;
-	mso-pagination:widow-orphan;
-	font-size:12.0pt;
-	font-family:"Times New Roman";
-	mso-fareast-font-family:"Times New Roman";
-	mso-bidi-font-family:"Times New Roman";}
-p.MsoList2, li.MsoList2, div.MsoList2
-	{margin-top:0in;
-	margin-right:0in;
-	margin-bottom:0in;
-	margin-left:.5in;
-	margin-bottom:.0001pt;
-	text-indent:-.25in;
-	mso-pagination:widow-orphan;
-	font-size:12.0pt;
-	font-family:"Times New Roman";
-	mso-fareast-font-family:"Times New Roman";
-	mso-bidi-font-family:"Times New Roman";}
-p.MsoListBullet2, li.MsoListBullet2, div.MsoListBullet2
-	{mso-style-update:auto;
-	margin-top:0in;
-	margin-right:0in;
-	margin-bottom:0in;
-	margin-left:.5in;
-	margin-bottom:.0001pt;
-	text-indent:-.25in;
-	mso-pagination:widow-orphan;
-	mso-list:l1 level1 lfo22;
-	tab-stops:list .5in;
-	font-size:12.0pt;
-	font-family:"Times New Roman";
-	mso-fareast-font-family:"Times New Roman";
-	mso-bidi-font-family:"Times New Roman";}
-p.MsoListBullet3, li.MsoListBullet3, div.MsoListBullet3
-	{mso-style-update:auto;
-	margin-top:0in;
-	margin-right:0in;
-	margin-bottom:0in;
-	margin-left:.75in;
-	margin-bottom:.0001pt;
-	text-indent:-.25in;
-	mso-pagination:widow-orphan;
-	mso-list:l0 level1 lfo23;
-	tab-stops:list .75in;
-	font-size:12.0pt;
-	font-family:"Times New Roman";
-	mso-fareast-font-family:"Times New Roman";
-	mso-bidi-font-family:"Times New Roman";}
-p.MsoTitle, li.MsoTitle, div.MsoTitle
-	{margin-top:12.0pt;
-	margin-right:0in;
-	margin-bottom:3.0pt;
-	margin-left:0in;
-	text-align:center;
-	mso-pagination:widow-orphan;
-	mso-outline-level:1;
-	font-size:16.0pt;
-	font-family:Arial;
-	mso-fareast-font-family:"Times New Roman";
-	mso-bidi-font-family:Arial;
-	mso-font-kerning:14.0pt;
-	font-weight:bold;}
-p.MsoSignature, li.MsoSignature, div.MsoSignature
-	{margin-top:0in;
-	margin-right:0in;
-	margin-bottom:0in;
-	margin-left:3.0in;
-	margin-bottom:.0001pt;
-	mso-pagination:widow-orphan;
-	font-size:12.0pt;
-	font-family:"Times New Roman";
-	mso-fareast-font-family:"Times New Roman";
-	mso-bidi-font-family:"Times New Roman";}
-p.MsoBodyText, li.MsoBodyText, div.MsoBodyText
-	{margin-top:0in;
-	margin-right:0in;
-	margin-bottom:6.0pt;
-	margin-left:0in;
-	mso-pagination:widow-orphan;
-	font-size:12.0pt;
-	font-family:"Times New Roman";
-	mso-fareast-font-family:"Times New Roman";
-	mso-bidi-font-family:"Times New Roman";}
-p.MsoBodyTextIndent, li.MsoBodyTextIndent, div.MsoBodyTextIndent
-	{margin-top:0in;
-	margin-right:0in;
-	margin-bottom:6.0pt;
-	margin-left:.25in;
-	mso-pagination:widow-orphan;
-	font-size:12.0pt;
-	font-family:"Times New Roman";
-	mso-fareast-font-family:"Times New Roman";
-	mso-bidi-font-family:"Times New Roman";}
-p.MsoSubtitle, li.MsoSubtitle, div.MsoSubtitle
-	{margin-top:0in;
-	margin-right:0in;
-	margin-bottom:3.0pt;
-	margin-left:0in;
-	text-align:center;
-	mso-pagination:widow-orphan;
-	mso-outline-level:2;
-	font-size:12.0pt;
-	font-family:Arial;
-	mso-fareast-font-family:"Times New Roman";
-	mso-bidi-font-family:Arial;}
-p.MsoDate, li.MsoDate, div.MsoDate
-	{mso-style-next:Normal;
-	margin:0in;
-	margin-bottom:.0001pt;
-	mso-pagination:widow-orphan;
-	font-size:12.0pt;
-	font-family:"Times New Roman";
-	mso-fareast-font-family:"Times New Roman";
-	mso-bidi-font-family:"Times New Roman";}
-a:link, span.MsoHyperlink
-	{color:blue;
-	text-decoration:underline;
-	text-underline:single;}
-a:visited, span.MsoHyperlinkFollowed
-	{color:purple;
-	text-decoration:underline;
-	text-underline:single;}
-strong
-	{mso-bidi-font-weight:bold;}
-em
-	{mso-bidi-font-style:italic;}
-p.MsoCommentSubject, li.MsoCommentSubject, div.MsoCommentSubject
-	{mso-style-parent:"Comment Text";
-	mso-style-link:"Comment Subject Char";
-	mso-style-next:"Comment Text";
-	margin:0in;
-	margin-bottom:.0001pt;
-	mso-pagination:widow-orphan;
-	font-size:10.0pt;
-	font-family:"Times New Roman";
-	mso-fareast-font-family:"Times New Roman";
-	mso-bidi-font-family:"Times New Roman";
-	font-weight:bold;}
-p.MsoAcetate, li.MsoAcetate, div.MsoAcetate
-	{mso-style-noshow:yes;
-	mso-style-link:"Balloon Text Char";
-	margin:0in;
-	margin-bottom:.0001pt;
-	mso-pagination:widow-orphan;
-	font-size:8.0pt;
-	font-family:Tahoma;
-	mso-fareast-font-family:"Times New Roman";
-	mso-bidi-font-family:Tahoma;}
-p.MsoRMPane, li.MsoRMPane, div.MsoRMPane
-	{mso-style-parent:"";
-	margin:0in;
-	margin-bottom:.0001pt;
-	mso-pagination:widow-orphan;
-	font-size:12.0pt;
-	font-family:"Times New Roman";
-	mso-fareast-font-family:"Times New Roman";
-	mso-bidi-font-family:"Times New Roman";}
-p.ShortReturnAddress, li.ShortReturnAddress, div.ShortReturnAddress
-	{mso-style-name:"Short Return Address";
-	margin:0in;
-	margin-bottom:.0001pt;
-	mso-pagination:widow-orphan;
-	font-size:12.0pt;
-	font-family:"Times New Roman";
-	mso-fareast-font-family:"Times New Roman";
-	mso-bidi-font-family:"Times New Roman";}
-p.PPLine, li.PPLine, div.PPLine
-	{mso-style-name:"PP Line";
-	mso-style-parent:Signature;
-	margin-top:0in;
-	margin-right:0in;
-	margin-bottom:0in;
-	margin-left:3.0in;
-	margin-bottom:.0001pt;
-	mso-pagination:widow-orphan;
-	font-size:12.0pt;
-	font-family:"Times New Roman";
-	mso-fareast-font-family:"Times New Roman";
-	mso-bidi-font-family:"Times New Roman";}
-p.InsideAddressName, li.InsideAddressName, div.InsideAddressName
-	{mso-style-name:"Inside Address Name";
-	margin:0in;
-	margin-bottom:.0001pt;
-	mso-pagination:widow-orphan;
-	font-size:12.0pt;
-	font-family:"Times New Roman";
-	mso-fareast-font-family:"Times New Roman";
-	mso-bidi-font-family:"Times New Roman";}
-span.CommentTextChar
-	{mso-style-name:"Comment Text Char";
-	mso-style-locked:yes;
-	mso-style-link:"Comment Text";}
-span.CommentSubjectChar
-	{mso-style-name:"Comment Subject Char";
-	mso-style-locked:yes;
-	mso-style-parent:"Comment Text Char";
-	mso-style-link:"Comment Subject";
-	font-weight:bold;}
-span.EndnoteTextChar
-	{mso-style-name:"Endnote Text Char";
-	mso-style-locked:yes;
-	mso-style-link:"Endnote Text";}
-p.MediumList2-Accent21, li.MediumList2-Accent21, div.MediumList2-Accent21
-	{mso-style-name:"Medium List 2 - Accent 21";
-	mso-style-parent:"";
-	margin:0in;
-	margin-bottom:.0001pt;
-	mso-pagination:widow-orphan;
-	font-size:12.0pt;
-	font-family:"Times New Roman";
-	mso-fareast-font-family:"Times New Roman";
-	mso-bidi-font-family:"Times New Roman";}
-span.tag
-	{mso-style-name:tag;
-	mso-style-parent:Emphasis;
-	mso-ansi-font-size:12.0pt;
-	font-family:Cambria;
-	mso-ascii-font-family:Cambria;
-	mso-hansi-font-family:Cambria;
-	color:#002060;
-	font-style:normal;
-	mso-bidi-font-style:italic;}
-span.componentChar
-	{mso-style-name:"component Char";
-	mso-ansi-font-size:14.0pt;
-	mso-bidi-font-size:12.0pt;
-	color:#C00000;
-	mso-ansi-language:EN-US;
-	font-weight:bold;
-	mso-bidi-font-weight:normal;}
-span.BalloonTextChar
-	{mso-style-name:"Balloon Text Char";
-	mso-style-noshow:yes;
-	mso-style-locked:yes;
-	mso-style-link:"Balloon Text";
-	mso-ansi-font-size:8.0pt;
-	mso-bidi-font-size:8.0pt;
-	font-family:Tahoma;
-	mso-ascii-font-family:Tahoma;
-	mso-hansi-font-family:Tahoma;
-	mso-bidi-font-family:Tahoma;}
- /* Page Definitions */
- at page
-	{mso-footnote-separator:url(":cmor_users_guide_files:header.htm") fs;
-	mso-footnote-continuation-separator:url(":cmor_users_guide_files:header.htm") fcs;
-	mso-endnote-separator:url(":cmor_users_guide_files:header.htm") es;
-	mso-endnote-continuation-separator:url(":cmor_users_guide_files:header.htm") ecs;}
- at page Section1
-	{size:8.5in 11.0in;
-	margin:1.0in 1.2in 1.0in 1.2in;
-	mso-header-margin:.5in;
-	mso-footer-margin:.5in;
-	mso-header:url(":cmor_users_guide_files:header.htm") h1;
-	mso-even-footer:url(":cmor_users_guide_files:header.htm") ef1;
-	mso-footer:url(":cmor_users_guide_files:header.htm") f1;
-	mso-paper-source:0;}
-div.Section1
-	{page:Section1;}
- /* List Definitions */
- at list l0
-	{mso-list-id:-126;
-	mso-list-type:simple;
-	mso-list-template-ids:1856698860;}
- at list l0:level1
-	{mso-level-number-format:bullet;
-	mso-level-style-link:"List Bullet 3";
-	mso-level-text:;
-	mso-level-tab-stop:.75in;
-	mso-level-number-position:left;
-	margin-left:.75in;
-	text-indent:-.25in;
-	font-family:Symbol;}
- at list l1
-	{mso-list-id:-125;
-	mso-list-type:simple;
-	mso-list-template-ids:-818792322;}
- at list l1:level1
-	{mso-level-number-format:bullet;
-	mso-level-style-link:"List Bullet 2";
-	mso-level-text:;
-	mso-level-tab-stop:.5in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	font-family:Symbol;}
- at list l2
-	{mso-list-id:45883531;
-	mso-list-type:hybrid;
-	mso-list-template-ids:1448904216 67698705 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
- at list l2:level1
-	{mso-level-text:"%1\)";
-	mso-level-tab-stop:none;
-	mso-level-number-position:left;
-	margin-left:1.25in;
-	text-indent:-.25in;}
- at list l3
-	{mso-list-id:55669800;
-	mso-list-type:hybrid;
-	mso-list-template-ids:-2088049960 120734710 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
- at list l3:level1
-	{mso-level-start-at:5;
-	mso-level-text:%1;
-	mso-level-tab-stop:65.25pt;
-	mso-level-number-position:left;
-	margin-left:65.25pt;
-	text-indent:-43.5pt;}
- at list l4
-	{mso-list-id:105347917;
-	mso-list-type:hybrid;
-	mso-list-template-ids:-13210420 -295509542 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
- at list l4:level1
-	{mso-level-start-at:5;
-	mso-level-text:%1;
-	mso-level-tab-stop:42.0pt;
-	mso-level-number-position:left;
-	margin-left:42.0pt;
-	text-indent:-24.0pt;}
- at list l5
-	{mso-list-id:139344800;
-	mso-list-type:hybrid;
-	mso-list-template-ids:-1427087294 67698705 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
- at list l5:level1
-	{mso-level-text:"%1\)";
-	mso-level-tab-stop:none;
-	mso-level-number-position:left;
-	margin-left:1.75in;
-	text-indent:-.25in;}
- at list l6
-	{mso-list-id:212010887;
-	mso-list-type:hybrid;
-	mso-list-template-ids:14208904 67698689 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
- at list l6:level1
-	{mso-level-number-format:bullet;
-	mso-level-text:;
-	mso-level-tab-stop:.5in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	font-family:Symbol;}
- at list l7
-	{mso-list-id:219905945;
-	mso-list-type:hybrid;
-	mso-list-template-ids:-631860122 67698689 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
- at list l7:level1
-	{mso-level-number-format:bullet;
-	mso-level-text:;
-	mso-level-tab-stop:.5in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	font-family:Symbol;}
- at list l8
-	{mso-list-id:321469250;
-	mso-list-type:hybrid;
-	mso-list-template-ids:750938280 639925018 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
- at list l8:level1
-	{mso-level-start-at:5;
-	mso-level-text:%1;
-	mso-level-tab-stop:.75in;
-	mso-level-number-position:left;
-	margin-left:.75in;
-	text-indent:-.5in;}
- at list l9
-	{mso-list-id:376588931;
-	mso-list-type:hybrid;
-	mso-list-template-ids:1780916262 67698705 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
- at list l9:level1
-	{mso-level-text:"%1\)";
-	mso-level-tab-stop:none;
-	mso-level-number-position:left;
-	margin-left:1.5in;
-	text-indent:-.25in;}
- at list l10
-	{mso-list-id:391277258;
-	mso-list-type:hybrid;
-	mso-list-template-ids:1350083534 67698689 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
- at list l10:level1
-	{mso-level-number-format:bullet;
-	mso-level-text:;
-	mso-level-tab-stop:.5in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	font-family:Symbol;}
- at list l11
-	{mso-list-id:579409007;
-	mso-list-type:hybrid;
-	mso-list-template-ids:1269599870 67698689 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
- at list l11:level1
-	{mso-level-number-format:bullet;
-	mso-level-text:;
-	mso-level-tab-stop:.5in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	font-family:Symbol;}
- at list l12
-	{mso-list-id:607471321;
-	mso-list-type:hybrid;
-	mso-list-template-ids:17607110 -1613584814 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
- at list l12:level1
-	{mso-level-start-at:7;
-	mso-level-text:%1;
-	mso-level-tab-stop:48.0pt;
-	mso-level-number-position:left;
-	margin-left:48.0pt;
-	text-indent:-30.0pt;}
- at list l13
-	{mso-list-id:646059410;
-	mso-list-type:hybrid;
-	mso-list-template-ids:2033859298 67698689 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
- at list l13:level1
-	{mso-level-number-format:bullet;
-	mso-level-text:;
-	mso-level-tab-stop:.5in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	font-family:Symbol;}
- at list l14
-	{mso-list-id:672683485;
-	mso-list-type:hybrid;
-	mso-list-template-ids:1711471104 1817609782 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
- at list l14:level1
-	{mso-level-start-at:6;
-	mso-level-text:%1;
-	mso-level-tab-stop:39.75pt;
-	mso-level-number-position:left;
-	margin-left:39.75pt;
-	text-indent:-.25in;}
- at list l15
-	{mso-list-id:827478285;
-	mso-list-type:hybrid;
-	mso-list-template-ids:657648686 67698705 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
- at list l15:level1
-	{mso-level-text:"%1\)";
-	mso-level-tab-stop:none;
-	mso-level-number-position:left;
-	text-indent:-.25in;}
- at list l16
-	{mso-list-id:943460177;
-	mso-list-type:hybrid;
-	mso-list-template-ids:859328410 67698705 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
- at list l16:level1
-	{mso-level-text:"%1\)";
-	mso-level-tab-stop:none;
-	mso-level-number-position:left;
-	margin-left:1.5in;
-	text-indent:-.25in;}
- at list l17
-	{mso-list-id:956909574;
-	mso-list-type:hybrid;
-	mso-list-template-ids:-790340492 67698689 66569 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
- at list l17:level1
-	{mso-level-number-format:bullet;
-	mso-level-text:;
-	mso-level-tab-stop:.5in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	font-family:Symbol;}
- at list l17:level2
-	{mso-level-number-format:bullet;
-	mso-level-text:;
-	mso-level-tab-stop:1.0in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	font-family:Symbol;}
- at list l18
-	{mso-list-id:988361926;
-	mso-list-type:hybrid;
-	mso-list-template-ids:-1059935788 67698689 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
- at list l18:level1
-	{mso-level-number-format:bullet;
-	mso-level-text:;
-	mso-level-tab-stop:.5in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	font-family:Symbol;}
- at list l19
-	{mso-list-id:1091197613;
-	mso-list-type:hybrid;
-	mso-list-template-ids:-1358942726 67698689 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
- at list l19:level1
-	{mso-level-number-format:bullet;
-	mso-level-text:;
-	mso-level-tab-stop:.5in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	font-family:Symbol;}
- at list l20
-	{mso-list-id:1100566653;
-	mso-list-type:hybrid;
-	mso-list-template-ids:283172748 67698689 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
- at list l20:level1
-	{mso-level-number-format:bullet;
-	mso-level-text:;
-	mso-level-tab-stop:.5in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	font-family:Symbol;}
- at list l21
-	{mso-list-id:1181312500;
-	mso-list-type:hybrid;
-	mso-list-template-ids:260442326 67698689 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
- at list l21:level1
-	{mso-level-number-format:bullet;
-	mso-level-text:;
-	mso-level-tab-stop:.5in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	font-family:Symbol;}
- at list l22
-	{mso-list-id:1274365608;
-	mso-list-template-ids:-540359662;}
- at list l22:level1
-	{mso-level-text:"%1\)";
-	mso-level-tab-stop:none;
-	mso-level-number-position:left;
-	margin-left:.25in;
-	text-indent:-.25in;}
- at list l22:level2
-	{mso-level-number-format:alpha-lower;
-	mso-level-text:"%2\)";
-	mso-level-tab-stop:none;
-	mso-level-number-position:left;
-	margin-left:.5in;
-	text-indent:-.25in;}
- at list l22:level3
-	{mso-level-number-format:roman-lower;
-	mso-level-text:"%3\)";
-	mso-level-tab-stop:none;
-	mso-level-number-position:left;
-	margin-left:.75in;
-	text-indent:-.25in;}
- at list l22:level4
-	{mso-level-text:"\(%4\)";
-	mso-level-tab-stop:none;
-	mso-level-number-position:left;
-	margin-left:1.0in;
-	text-indent:-.25in;}
- at list l22:level5
-	{mso-level-text:"%5\)";
-	mso-level-tab-stop:none;
-	mso-level-number-position:left;
-	margin-left:1.25in;
-	text-indent:-.25in;}
- at list l22:level6
-	{mso-level-number-format:roman-lower;
-	mso-level-text:"\(%6\)";
-	mso-level-tab-stop:none;
-	mso-level-number-position:left;
-	margin-left:1.5in;
-	text-indent:-.25in;}
- at list l22:level7
-	{mso-level-tab-stop:none;
-	mso-level-number-position:left;
-	margin-left:1.75in;
-	text-indent:-.25in;}
- at list l22:level8
-	{mso-level-number-format:alpha-lower;
-	mso-level-tab-stop:none;
-	mso-level-number-position:left;
-	margin-left:2.0in;
-	text-indent:-.25in;}
- at list l22:level9
-	{mso-level-number-format:roman-lower;
-	mso-level-tab-stop:none;
-	mso-level-number-position:left;
-	margin-left:2.25in;
-	text-indent:-.25in;}
- at list l23
-	{mso-list-id:1314213867;
-	mso-list-type:hybrid;
-	mso-list-template-ids:1043500168 67698689 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
- at list l23:level1
-	{mso-level-number-format:bullet;
-	mso-level-text:;
-	mso-level-tab-stop:.5in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	font-family:Symbol;}
- at list l24
-	{mso-list-id:1326470646;
-	mso-list-type:hybrid;
-	mso-list-template-ids:-1551748782 294664098 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
- at list l24:level1
-	{mso-level-start-at:4;
-	mso-level-text:%1;
-	mso-level-tab-stop:65.25pt;
-	mso-level-number-position:left;
-	margin-left:65.25pt;
-	text-indent:-43.5pt;}
- at list l25
-	{mso-list-id:1380133840;
-	mso-list-type:hybrid;
-	mso-list-template-ids:689969892 67698705 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
- at list l25:level1
-	{mso-level-text:"%1\)";
-	mso-level-tab-stop:none;
-	mso-level-number-position:left;
-	margin-left:1.5in;
-	text-indent:-.25in;}
- at list l26
-	{mso-list-id:1381784092;
-	mso-list-template-ids:-2088049960;}
- at list l26:level1
-	{mso-level-start-at:5;
-	mso-level-text:%1;
-	mso-level-tab-stop:65.25pt;
-	mso-level-number-position:left;
-	margin-left:65.25pt;
-	text-indent:-43.5pt;}
- at list l26:level2
-	{mso-level-number-format:alpha-lower;
-	mso-level-tab-stop:75.75pt;
-	mso-level-number-position:left;
-	margin-left:75.75pt;
-	text-indent:-.25in;}
- at list l26:level3
-	{mso-level-number-format:roman-lower;
-	mso-level-tab-stop:111.75pt;
-	mso-level-number-position:right;
-	margin-left:111.75pt;
-	text-indent:-9.0pt;}
- at list l26:level4
-	{mso-level-tab-stop:147.75pt;
-	mso-level-number-position:left;
-	margin-left:147.75pt;
-	text-indent:-.25in;}
- at list l26:level5
-	{mso-level-number-format:alpha-lower;
-	mso-level-tab-stop:183.75pt;
-	mso-level-number-position:left;
-	margin-left:183.75pt;
-	text-indent:-.25in;}
- at list l26:level6
-	{mso-level-number-format:roman-lower;
-	mso-level-tab-stop:219.75pt;
-	mso-level-number-position:right;
-	margin-left:219.75pt;
-	text-indent:-9.0pt;}
- at list l26:level7
-	{mso-level-tab-stop:255.75pt;
-	mso-level-number-position:left;
-	margin-left:255.75pt;
-	text-indent:-.25in;}
- at list l26:level8
-	{mso-level-number-format:alpha-lower;
-	mso-level-tab-stop:291.75pt;
-	mso-level-number-position:left;
-	margin-left:291.75pt;
-	text-indent:-.25in;}
- at list l26:level9
-	{mso-level-number-format:roman-lower;
-	mso-level-tab-stop:327.75pt;
-	mso-level-number-position:right;
-	margin-left:327.75pt;
-	text-indent:-9.0pt;}
- at list l27
-	{mso-list-id:1403912280;
-	mso-list-type:hybrid;
-	mso-list-template-ids:-709174628 67698705 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
- at list l27:level1
-	{mso-level-text:"%1\)";
-	mso-level-tab-stop:none;
-	mso-level-number-position:left;
-	text-indent:-.25in;}
- at list l28
-	{mso-list-id:1479883753;
-	mso-list-type:hybrid;
-	mso-list-template-ids:352386170 -2036413258 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
- at list l28:level1
-	{mso-level-start-at:7;
-	mso-level-text:%1;
-	mso-level-tab-stop:.5in;
-	mso-level-number-position:left;
-	text-indent:-.25in;}
- at list l29
-	{mso-list-id:1510365485;
-	mso-list-type:hybrid;
-	mso-list-template-ids:905736748 -312474040 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
- at list l29:level1
-	{mso-level-text:%1;
-	mso-level-tab-stop:.75in;
-	mso-level-number-position:left;
-	margin-left:.75in;
-	text-indent:-45.0pt;}
- at list l30
-	{mso-list-id:1525896057;
-	mso-list-type:hybrid;
-	mso-list-template-ids:1071933926 67698703 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
- at list l30:level1
-	{mso-level-tab-stop:none;
-	mso-level-number-position:left;
-	text-indent:-.25in;}
- at list l31
-	{mso-list-id:1710298830;
-	mso-list-template-ids:123122150;
-	mso-list-name:WW8Num1882;}
- at list l31:level1
-	{mso-level-number-format:bullet;
-	mso-level-suffix:space;
-	mso-level-text:▪;
-	mso-level-tab-stop:none;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	font-family:"Courier New";}
- at list l31:level2
-	{mso-level-number-format:bullet;
-	mso-level-suffix:space;
-	mso-level-text:→;
-	mso-level-tab-stop:none;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	font-family:"Courier New";}
- at list l31:level3
-	{mso-level-number-format:bullet;
-	mso-level-suffix:none;
-	mso-level-text:;
-	mso-level-tab-stop:none;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	font-family:Wingdings;}
- at list l31:level4
-	{mso-level-number-format:bullet;
-	mso-level-suffix:none;
-	mso-level-text:;
-	mso-level-tab-stop:none;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	font-family:Symbol;}
- at list l31:level5
-	{mso-level-number-format:bullet;
-	mso-level-suffix:none;
-	mso-level-text:o;
-	mso-level-tab-stop:none;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	font-family:"Courier New";}
- at list l31:level6
-	{mso-level-number-format:bullet;
-	mso-level-suffix:none;
-	mso-level-text:;
-	mso-level-tab-stop:none;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	font-family:Wingdings;}
- at list l31:level7
-	{mso-level-number-format:bullet;
-	mso-level-suffix:none;
-	mso-level-text:;
-	mso-level-tab-stop:none;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	font-family:Symbol;}
- at list l31:level8
-	{mso-level-number-format:bullet;
-	mso-level-suffix:none;
-	mso-level-text:o;
-	mso-level-tab-stop:none;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	font-family:"Courier New";}
- at list l31:level9
-	{mso-level-number-format:bullet;
-	mso-level-suffix:none;
-	mso-level-text:;
-	mso-level-tab-stop:none;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	font-family:Wingdings;}
- at list l32
-	{mso-list-id:1783185823;
-	mso-list-type:hybrid;
-	mso-list-template-ids:1219109978 67698689 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
- at list l32:level1
-	{mso-level-number-format:bullet;
-	mso-level-text:;
-	mso-level-tab-stop:.5in;
-	mso-level-number-position:left;
-	text-indent:-.25in;
-	font-family:Symbol;}
- at list l33
-	{mso-list-id:1867713661;
-	mso-list-template-ids:67698717;}
- at list l33:level1
-	{mso-level-text:"%1\)";
-	mso-level-tab-stop:none;
-	mso-level-number-position:left;
-	margin-left:.25in;
-	text-indent:-.25in;}
- at list l33:level2
-	{mso-level-number-format:alpha-lower;
-	mso-level-text:"%2\)";
-	mso-level-tab-stop:none;
-	mso-level-number-position:left;
-	margin-left:.5in;
-	text-indent:-.25in;}
- at list l33:level3
-	{mso-level-number-format:roman-lower;
-	mso-level-text:"%3\)";
-	mso-level-tab-stop:none;
-	mso-level-number-position:left;
-	margin-left:.75in;
-	text-indent:-.25in;}
- at list l33:level4
-	{mso-level-text:"\(%4\)";
-	mso-level-tab-stop:none;
-	mso-level-number-position:left;
-	margin-left:1.0in;
-	text-indent:-.25in;}
- at list l33:level5
-	{mso-level-number-format:alpha-lower;
-	mso-level-text:"\(%5\)";
-	mso-level-tab-stop:none;
-	mso-level-number-position:left;
-	margin-left:1.25in;
-	text-indent:-.25in;}
- at list l33:level6
-	{mso-level-number-format:roman-lower;
-	mso-level-text:"\(%6\)";
-	mso-level-tab-stop:none;
-	mso-level-number-position:left;
-	margin-left:1.5in;
-	text-indent:-.25in;}
- at list l33:level7
-	{mso-level-tab-stop:none;
-	mso-level-number-position:left;
-	margin-left:1.75in;
-	text-indent:-.25in;}
- at list l33:level8
-	{mso-level-number-format:alpha-lower;
-	mso-level-tab-stop:none;
-	mso-level-number-position:left;
-	margin-left:2.0in;
-	text-indent:-.25in;}
- at list l33:level9
-	{mso-level-number-format:roman-lower;
-	mso-level-tab-stop:none;
-	mso-level-number-position:left;
-	margin-left:2.25in;
-	text-indent:-.25in;}
- at list l34
-	{mso-list-id:1945920541;
-	mso-list-type:hybrid;
-	mso-list-template-ids:-835531592 67698705 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
- at list l34:level1
-	{mso-level-text:"%1\)";
-	mso-level-tab-stop:none;
-	mso-level-number-position:left;
-	margin-left:1.5in;
-	text-indent:-.25in;}
- at list l35
-	{mso-list-id:1969622602;
-	mso-list-type:hybrid;
-	mso-list-template-ids:-737529962 67698705 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
- at list l35:level1
-	{mso-level-text:"%1\)";
-	mso-level-tab-stop:none;
-	mso-level-number-position:left;
-	margin-left:1.5in;
-	text-indent:-.25in;}
- at list l36
-	{mso-list-id:2107723004;
-	mso-list-type:hybrid;
-	mso-list-template-ids:-1790176916 67698705 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
- at list l36:level1
-	{mso-level-text:"%1\)";
-	mso-level-tab-stop:none;
-	mso-level-number-position:left;
-	margin-left:1.25in;
-	text-indent:-.25in;}
- at list l37
-	{mso-list-id:2144539126;
-	mso-list-type:hybrid;
-	mso-list-template-ids:1847211504 67698703 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
- at list l37:level1
-	{mso-level-tab-stop:none;
-	mso-level-number-position:left;
-	text-indent:-.25in;}
-ol
-	{margin-bottom:0in;}
-ul
-	{margin-bottom:0in;}
--->
-</style>
-<!--[if gte mso 10]>
-<style>
- /* Style Definitions */
-table.MsoNormalTable
-	{mso-style-name:"Table Normal";
-	mso-tstyle-rowband-size:0;
-	mso-tstyle-colband-size:0;
-	mso-style-noshow:yes;
-	mso-style-parent:"";
-	mso-padding-alt:0in 5.4pt 0in 5.4pt;
-	mso-para-margin:0in;
-	mso-para-margin-bottom:.0001pt;
-	mso-pagination:widow-orphan;
-	font-size:10.0pt;
-	font-family:"Times New Roman";}
-table.MsoTableSimple1
-	{mso-style-name:"Table Simple 1";
-	mso-tstyle-rowband-size:0;
-	mso-tstyle-colband-size:0;
-	border-top:solid green 1.5pt;
-	border-left:none;
-	border-bottom:solid green 1.5pt;
-	border-right:none;
-	mso-padding-alt:0in 5.4pt 0in 5.4pt;
-	mso-para-margin:0in;
-	mso-para-margin-bottom:.0001pt;
-	mso-pagination:widow-orphan;
-	font-size:10.0pt;
-	font-family:"Times New Roman";}
-table.MsoTableSimple1FirstRow
-	{mso-style-name:"Table Simple 1";
-	mso-table-condition:first-row;
-	mso-tstyle-border-bottom:.75pt solid green;
-	mso-tstyle-diagonal-down:0in none windowtext;
-	mso-tstyle-diagonal-up:0in none windowtext;}
-table.MsoTableSimple1LastRow
-	{mso-style-name:"Table Simple 1";
-	mso-table-condition:last-row;
-	mso-tstyle-border-top:.75pt solid green;
-	mso-tstyle-diagonal-down:0in none windowtext;
-	mso-tstyle-diagonal-up:0in none windowtext;}
-table.MsoTableColumns1
-	{mso-style-name:"Table Columns 1";
-	mso-tstyle-rowband-size:0;
-	mso-tstyle-colband-size:1;
-	border:solid black 1.5pt;
-	mso-padding-alt:0in 5.4pt 0in 5.4pt;
-	mso-para-margin:0in;
-	mso-para-margin-bottom:.0001pt;
-	mso-pagination:widow-orphan;
-	font-size:10.0pt;
-	font-family:"Times New Roman";
-	font-weight:bold;}
-table.MsoTableColumns1FirstRow
-	{mso-style-name:"Table Columns 1";
-	mso-table-condition:first-row;
-	mso-tstyle-border-bottom:2.25pt double black;
-	mso-tstyle-diagonal-down:0in none windowtext;
-	mso-tstyle-diagonal-up:0in none windowtext;
-	mso-ansi-font-weight:normal;
-	mso-bidi-font-weight:normal;}
-table.MsoTableColumns1LastRow
-	{mso-style-name:"Table Columns 1";
-	mso-table-condition:last-row;
-	mso-tstyle-diagonal-down:0in none windowtext;
-	mso-tstyle-diagonal-up:0in none windowtext;
-	mso-ansi-font-weight:normal;
-	mso-bidi-font-weight:normal;}
-table.MsoTableColumns1FirstCol
-	{mso-style-name:"Table Columns 1";
-	mso-table-condition:first-column;
-	mso-tstyle-diagonal-down:0in none windowtext;
-	mso-tstyle-diagonal-up:0in none windowtext;
-	mso-ansi-font-weight:normal;
-	mso-bidi-font-weight:normal;}
-table.MsoTableColumns1LastCol
-	{mso-style-name:"Table Columns 1";
-	mso-table-condition:last-column;
-	mso-tstyle-diagonal-down:0in none windowtext;
-	mso-tstyle-diagonal-up:0in none windowtext;
-	mso-ansi-font-weight:normal;
-	mso-bidi-font-weight:normal;}
-table.MsoTableColumns1OddColumn
-	{mso-style-name:"Table Columns 1";
-	mso-table-condition:odd-column;
-	mso-tstyle-shading:white;
-	mso-tstyle-pattern:gray-25 black;
-	color:windowtext;}
-table.MsoTableColumns1EvenColumn
-	{mso-style-name:"Table Columns 1";
-	mso-table-condition:even-column;
-	mso-tstyle-shading:white;
-	mso-tstyle-pattern:gray-25 yellow;
-	color:windowtext;}
-table.MsoTableColumns1NECell
-	{mso-style-name:"Table Columns 1";
-	mso-table-condition:ne-cell;
-	mso-tstyle-diagonal-down:0in none windowtext;
-	mso-tstyle-diagonal-up:0in none windowtext;
-	mso-ansi-font-weight:bold;
-	mso-bidi-font-weight:bold;}
-table.MsoTableColumns1SWCell
-	{mso-style-name:"Table Columns 1";
-	mso-table-condition:sw-cell;
-	mso-tstyle-diagonal-down:0in none windowtext;
-	mso-tstyle-diagonal-up:0in none windowtext;
-	mso-ansi-font-weight:bold;
-	mso-bidi-font-weight:bold;}
-table.MsoTableGrid
-	{mso-style-name:"Table Grid";
-	mso-tstyle-rowband-size:0;
-	mso-tstyle-colband-size:0;
-	border:solid windowtext 1.0pt;
-	mso-border-alt:solid windowtext .5pt;
-	mso-padding-alt:0in 5.4pt 0in 5.4pt;
-	mso-border-insideh:.5pt solid windowtext;
-	mso-border-insidev:.5pt solid windowtext;
-	mso-para-margin:0in;
-	mso-para-margin-bottom:.0001pt;
-	mso-pagination:widow-orphan;
-	font-size:10.0pt;
-	font-family:"Times New Roman";}
-</style>
-<![endif]--><!--[if gte mso 9]><xml>
- <o:shapedefaults v:ext="edit" spidmax="4098"/>
-</xml><![endif]--><!--[if gte mso 9]><xml>
- <o:shapelayout v:ext="edit">
-  <o:idmap v:ext="edit" data="1"/>
- </o:shapelayout></xml><![endif]-->
-</head>
-
-<body lang=EN-US link=blue vlink=purple style='tab-interval:.5in'>
-
-<div class=Section1>
-
-<p class=MsoNormal align=center style='text-align:center'><b style='mso-bidi-font-weight:
-normal'><span style='font-size:16.0pt'><o:p> </o:p></span></b></p>
-
-<p class=MsoNormal align=center style='text-align:center'><b style='mso-bidi-font-weight:
-normal'><span style='font-size:16.0pt'><o:p> </o:p></span></b></p>
-
-<p class=MsoNormal align=center style='text-align:center'><b style='mso-bidi-font-weight:
-normal'><span style='font-size:16.0pt'><o:p> </o:p></span></b></p>
-
-<p class=MsoNormal align=center style='text-align:center'><b style='mso-bidi-font-weight:
-normal'><span style='font-size:16.0pt'><o:p> </o:p></span></b></p>
-
-<p class=MsoNormal align=center style='text-align:center'><b style='mso-bidi-font-weight:
-normal'><span style='font-size:16.0pt'>Climate Model Output Rewriter (CMOR)<o:p></o:p></span></b></p>
-
-<p class=MsoNormal><b style='mso-bidi-font-weight:normal'><span
-style='font-size:14.0pt'><o:p> </o:p></span></b></p>
-
-<p class=MsoNormal><b style='mso-bidi-font-weight:normal'><span
-style='font-size:14.0pt'><o:p> </o:p></span></b></p>
-
-<p class=MsoNormal><b style='mso-bidi-font-weight:normal'><span
-style='font-size:14.0pt'><o:p> </o:p></span></b></p>
-
-<p class=MsoNormal><b style='mso-bidi-font-weight:normal'><span
-style='font-size:14.0pt'><o:p> </o:p></span></b></p>
-
-<p class=MsoNormal align=center style='text-align:center'><b style='mso-bidi-font-weight:
-normal'><span style='font-size:14.0pt'>Version 2.0 (CMOR2)<o:p></o:p></span></b></p>
-
-<p class=MsoNormal align=center style='text-align:center'><span
-style='font-size:14.0pt'>Charles Doutriaux, Karl E. Taylor<o:p></o:p></span></p>
-
-<p class=MsoNormal><span style='font-size:14.0pt'><o:p> </o:p></span></p>
-
-<p class=MsoNormal align=center style='text-align:center;tab-stops:272.25pt'><!--[if supportFields]><span
-style='font-size:14.0pt'><span style='mso-element:field-begin'></span><span
-style="mso-spacerun: yes"> </span>TIME \@ "MMMM d, yyyy" <span
-style='mso-element:field-separator'></span></span><![endif]--><span
-style='font-size:14.0pt'><span style='mso-no-proof:yes'>November 12, 2010</span></span><!--[if supportFields]><span
-style='font-size:14.0pt'><span style='mso-element:field-end'></span></span><![endif]--><span
-style='font-size:14.0pt'><o:p></o:p></span></p>
-
-<p class=MsoNormal align=center style='text-align:center;tab-stops:272.25pt'><span
-style='font-size:14.0pt'><o:p> </o:p></span></p>
-
-<p class=MsoNormal align=center style='text-align:center;tab-stops:272.25pt'><span
-style='font-size:14.0pt'><o:p> </o:p></span></p>
-
-<p class=MsoNormal align=center style='text-align:center;tab-stops:272.25pt'><span
-style='font-size:14.0pt'><o:p> </o:p></span></p>
-
-<p class=MsoNormal align=center style='text-align:center;tab-stops:272.25pt'><span
-style='font-size:14.0pt'><o:p> </o:p></span></p>
-
-<p class=MsoNormal align=center style='text-align:center;tab-stops:272.25pt'><span
-style='font-size:14.0pt'><o:p> </o:p></span></p>
-
-<p class=MsoNormal align=center style='text-align:center;tab-stops:272.25pt'><span
-style='font-size:14.0pt'><o:p> </o:p></span></p>
-
-<p class=MsoNormal align=center style='text-align:center;tab-stops:272.25pt'><span
-style='font-size:14.0pt'><o:p> </o:p></span></p>
-
-<p class=MsoNormal><b style='mso-bidi-font-weight:normal'><span
-style='font-size:14.0pt'><o:p> </o:p></span></b></p>
-
-<p class=MsoNormal align=center style='text-align:center'><b style='mso-bidi-font-weight:
-normal'><span style='font-size:14.0pt;mso-bidi-font-size:12.0pt;background:
-silver;mso-highlight:silver'>A Revision of </span></b><b style='mso-bidi-font-weight:
-normal'><span style='font-size:14.0pt'>Version 1.0 (CMOR1)</span></b><span
-style='font-size:14.0pt'><o:p></o:p></span></p>
-
-<p class=MsoNormal align=center style='text-align:center'><span
-style='font-size:14.0pt'>Karl E. Taylor, Charles Doutriaux, and Jean-Yves Peterschmitt<o:p></o:p></span></p>
-
-<p class=MsoNormal align=center style='text-align:center'><span
-style='font-size:14.0pt'><o:p> </o:p></span></p>
-
-<p class=MsoNormal align=center style='text-align:center'><span
-style='font-size:14.0pt'>July 14, 2006<o:p></o:p></span></p>
-
-<p class=MsoNormal align=center style='text-align:center'><span
-style='font-size:14.0pt'><o:p> </o:p></span></p>
-
-<b><span style='font-size:14.0pt;font-family:Arial;mso-fareast-font-family:
-"Times New Roman";mso-bidi-font-family:Arial;mso-font-kerning:16.0pt;
-mso-ansi-language:EN-US;mso-fareast-language:EN-US'><br clear=ALL
-style='page-break-before:always'>
-</span></b>
-
-<h1><a name="_Toc129421995"></a><!--[if supportFields]><span style='mso-bookmark:
-_Toc129421995'></span><span style='mso-element:field-begin'></span><span
-style='mso-bookmark:_Toc129421995'><span style='font-size:14.0pt'><span
-style="mso-spacerun: yes"> </span>TOC \o "1-3" <span
-style='mso-element:field-separator'></span></span></span><![endif]--><span
-style='mso-bookmark:_Toc129421995'><span style='mso-no-proof:yes'><o:p></o:p></span></span></h1>
-
-<p class=MsoToc1 style='tab-stops:right dotted 438.7pt'><span style='mso-bookmark:
-_Toc129421995'><span style='mso-no-proof:yes'>Design Considerations and
-Overview<span style='mso-tab-count:1 dotted'>............................................................................ </span></span></span><!--[if supportFields]><span
-style='mso-bookmark:_Toc129421995'></span><span style='mso-element:field-begin'></span><span
-style='mso-bookmark:_Toc129421995'><span style='mso-no-proof:yes'> PAGEREF
-_Toc149385708 \h <span style='mso-element:field-separator'></span></span></span><![endif]--><span
-style='mso-bookmark:_Toc129421995'><span style='mso-no-proof:yes'>4<!--[if gte mso 9]><xml>
- <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003100340039003300380035003700300038000000</w:data>
-</xml><![endif]--></span></span><!--[if supportFields]><span style='mso-bookmark:
-_Toc129421995'></span><span style='mso-element:field-end'></span><![endif]--><span
-style='mso-bookmark:_Toc129421995'></span><span style='mso-bookmark:_Toc129421995'><span
-style='font-weight:normal;mso-no-proof:yes'><o:p></o:p></span></span></p>
-
-<p class=MsoToc1 style='tab-stops:right dotted 438.7pt'><span style='mso-bookmark:
-_Toc129421995'><span style='mso-no-proof:yes'>Acknowledgements<span
-style='mso-tab-count:1 dotted'>......................................................................................................... </span></span></span><!--[if supportFields]><span
-style='mso-bookmark:_Toc129421995'></span><span style='mso-element:field-begin'></span><span
-style='mso-bookmark:_Toc129421995'><span style='mso-no-proof:yes'> PAGEREF
-_Toc149385709 \h <span style='mso-element:field-separator'></span></span></span><![endif]--><span
-style='mso-bookmark:_Toc129421995'><span style='mso-no-proof:yes'>10<!--[if gte mso 9]><xml>
- <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003100340039003300380035003700300039000000</w:data>
-</xml><![endif]--></span></span><!--[if supportFields]><span style='mso-bookmark:
-_Toc129421995'></span><span style='mso-element:field-end'></span><![endif]--><span
-style='mso-bookmark:_Toc129421995'></span><span style='mso-bookmark:_Toc129421995'><span
-style='font-weight:normal;mso-no-proof:yes'><o:p></o:p></span></span></p>
-
-<p class=MsoToc1 style='tab-stops:right dotted 438.7pt'><span style='mso-bookmark:
-_Toc129421995'><span style='mso-no-proof:yes'>Description of CMOR Functions<span
-style='mso-tab-count:1 dotted'>................................................................................... </span></span></span><!--[if supportFields]><span
-style='mso-bookmark:_Toc129421995'></span><span style='mso-element:field-begin'></span><span
-style='mso-bookmark:_Toc129421995'><span style='mso-no-proof:yes'> PAGEREF
-_Toc149385710 \h <span style='mso-element:field-separator'></span></span></span><![endif]--><span
-style='mso-bookmark:_Toc129421995'><span style='mso-no-proof:yes'>12<!--[if gte mso 9]><xml>
- <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003100340039003300380035003700310030000000</w:data>
-</xml><![endif]--></span></span><!--[if supportFields]><span style='mso-bookmark:
-_Toc129421995'></span><span style='mso-element:field-end'></span><![endif]--><span
-style='mso-bookmark:_Toc129421995'></span><span style='mso-bookmark:_Toc129421995'><span
-style='font-weight:normal;mso-no-proof:yes'><o:p></o:p></span></span></p>
-
-<p class=MsoToc2 style='tab-stops:right dotted 438.7pt'><span style='mso-bookmark:
-_Toc129421995'><span style='mso-no-proof:yes'>Preliminary notes:<span
-style='mso-tab-count:1 dotted'>.......................................................................................................... </span></span></span><!--[if supportFields]><span
-style='mso-bookmark:_Toc129421995'></span><span style='mso-element:field-begin'></span><span
-style='mso-bookmark:_Toc129421995'><span style='mso-no-proof:yes'> PAGEREF
-_Toc149385711 \h <span style='mso-element:field-separator'></span></span></span><![endif]--><span
-style='mso-bookmark:_Toc129421995'><span style='mso-no-proof:yes'>12<!--[if gte mso 9]><xml>
- <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003100340039003300380035003700310031000000</w:data>
-</xml><![endif]--></span></span><!--[if supportFields]><span style='mso-bookmark:
-_Toc129421995'></span><span style='mso-element:field-end'></span><![endif]--><span
-style='mso-bookmark:_Toc129421995'></span><span style='mso-bookmark:_Toc129421995'><span
-style='font-size:12.0pt;font-weight:normal;mso-no-proof:yes'><o:p></o:p></span></span></p>
-
-<p class=MsoToc2 style='tab-stops:right dotted 438.7pt'><span style='mso-bookmark:
-_Toc129421995'><span style='mso-no-proof:yes'>Setting up CMOR<span
-style='mso-tab-count:1 dotted'>............................................................................................................. </span></span></span><!--[if supportFields]><span
-style='mso-bookmark:_Toc129421995'></span><span style='mso-element:field-begin'></span><span
-style='mso-bookmark:_Toc129421995'><span style='mso-no-proof:yes'> PAGEREF
-_Toc149385712 \h <span style='mso-element:field-separator'></span></span></span><![endif]--><span
-style='mso-bookmark:_Toc129421995'><span style='mso-no-proof:yes'>13<!--[if gte mso 9]><xml>
- <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003100340039003300380035003700310032000000</w:data>
-</xml><![endif]--></span></span><!--[if supportFields]><span style='mso-bookmark:
-_Toc129421995'></span><span style='mso-element:field-end'></span><![endif]--><span
-style='mso-bookmark:_Toc129421995'></span><span style='mso-bookmark:_Toc129421995'><span
-style='font-size:12.0pt;font-weight:normal;mso-no-proof:yes'><o:p></o:p></span></span></p>
-
-<p class=MsoToc3 style='tab-stops:right dotted 438.7pt'><span style='mso-bookmark:
-_Toc129421995'><span style='mso-no-proof:yes'>Initialize CMOR: cmor_setup<span
-style='mso-tab-count:1 dotted'>....................................................................................................................................... </span></span></span><!--[if supportFields]><span
-style='mso-bookmark:_Toc129421995'></span><span style='mso-element:field-begin'></span><span
-style='mso-bookmark:_Toc129421995'><span style='mso-no-proof:yes'> PAGEREF
-_Toc149385713 \h <span style='mso-element:field-separator'></span></span></span><![endif]--><span
-style='mso-bookmark:_Toc129421995'><span style='mso-no-proof:yes'>13<!--[if gte mso 9]><xml>
- <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003100340039003300380035003700310033000000</w:data>
-</xml><![endif]--></span></span><!--[if supportFields]><span style='mso-bookmark:
-_Toc129421995'></span><span style='mso-element:field-end'></span><![endif]--><span
-style='mso-bookmark:_Toc129421995'></span><span style='mso-bookmark:_Toc129421995'><span
-style='font-size:12.0pt;mso-no-proof:yes'><o:p></o:p></span></span></p>
-
-<p class=MsoToc2 style='tab-stops:right dotted 438.7pt'><span style='mso-bookmark:
-_Toc129421995'><span style='mso-no-proof:yes'>Dealing with Dataset<span
-style='mso-tab-count:1 dotted'>...................................................................................................... </span></span></span><!--[if supportFields]><span
-style='mso-bookmark:_Toc129421995'></span><span style='mso-element:field-begin'></span><span
-style='mso-bookmark:_Toc129421995'><span style='mso-no-proof:yes'> PAGEREF
-_Toc149385714 \h <span style='mso-element:field-separator'></span></span></span><![endif]--><span
-style='mso-bookmark:_Toc129421995'><span style='mso-no-proof:yes'>14<!--[if gte mso 9]><xml>
- <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003100340039003300380035003700310034000000</w:data>
-</xml><![endif]--></span></span><!--[if supportFields]><span style='mso-bookmark:
-_Toc129421995'></span><span style='mso-element:field-end'></span><![endif]--><span
-style='mso-bookmark:_Toc129421995'></span><span style='mso-bookmark:_Toc129421995'><span
-style='font-size:12.0pt;font-weight:normal;mso-no-proof:yes'><o:p></o:p></span></span></p>
-
-<p class=MsoToc3 style='tab-stops:right dotted 438.7pt'><span style='mso-bookmark:
-_Toc129421995'><span style='mso-no-proof:yes'>Define a Dataset: cmor_dataset<span
-style='mso-tab-count:1 dotted'>.................................................................................................................................. </span></span></span><!--[if supportFields]><span
-style='mso-bookmark:_Toc129421995'></span><span style='mso-element:field-begin'></span><span
-style='mso-bookmark:_Toc129421995'><span style='mso-no-proof:yes'> PAGEREF
-_Toc149385715 \h <span style='mso-element:field-separator'></span></span></span><![endif]--><span
-style='mso-bookmark:_Toc129421995'><span style='mso-no-proof:yes'>14<!--[if gte mso 9]><xml>
- <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003100340039003300380035003700310035000000</w:data>
-</xml><![endif]--></span></span><!--[if supportFields]><span style='mso-bookmark:
-_Toc129421995'></span><span style='mso-element:field-end'></span><![endif]--><span
-style='mso-bookmark:_Toc129421995'></span><span style='mso-bookmark:_Toc129421995'><span
-style='font-size:12.0pt;mso-no-proof:yes'><o:p></o:p></span></span></p>
-
-<p class=MsoToc3 style='tab-stops:right dotted 438.7pt'><span style='mso-bookmark:
-_Toc129421995'><span style='mso-no-proof:yes'>Define a Dataset Attribute:
-cmor_set_cur_dataset_attribute<span style='mso-tab-count:1 dotted'>................................................................. </span></span></span><!--[if supportFields]><span
-style='mso-bookmark:_Toc129421995'></span><span style='mso-element:field-begin'></span><span
-style='mso-bookmark:_Toc129421995'><span style='mso-no-proof:yes'> PAGEREF
-_Toc149385716 \h <span style='mso-element:field-separator'></span></span></span><![endif]--><span
-style='mso-bookmark:_Toc129421995'><span style='mso-no-proof:yes'>19<!--[if gte mso 9]><xml>
- <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003100340039003300380035003700310036000000</w:data>
-</xml><![endif]--></span></span><!--[if supportFields]><span style='mso-bookmark:
-_Toc129421995'></span><span style='mso-element:field-end'></span><![endif]--><span
-style='mso-bookmark:_Toc129421995'></span><span style='mso-bookmark:_Toc129421995'><span
-style='font-size:12.0pt;mso-no-proof:yes'><o:p></o:p></span></span></p>
-
-<p class=MsoToc3 style='tab-stops:right dotted 438.7pt'><span style='mso-bookmark:
-_Toc129421995'><span style='mso-no-proof:yes'>Retrieve<span
-style="mso-spacerun: yes">  </span>a Dataset Attribute:
-cmor_get_cur_dataset_attribute<span style='mso-tab-count:1 dotted'>........................................................... </span></span></span><!--[if supportFields]><span
-style='mso-bookmark:_Toc129421995'></span><span style='mso-element:field-begin'></span><span
-style='mso-bookmark:_Toc129421995'><span style='mso-no-proof:yes'> PAGEREF
-_Toc149385717 \h <span style='mso-element:field-separator'></span></span></span><![endif]--><span
-style='mso-bookmark:_Toc129421995'><span style='mso-no-proof:yes'>19<!--[if gte mso 9]><xml>
- <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003100340039003300380035003700310037000000</w:data>
-</xml><![endif]--></span></span><!--[if supportFields]><span style='mso-bookmark:
-_Toc129421995'></span><span style='mso-element:field-end'></span><![endif]--><span
-style='mso-bookmark:_Toc129421995'></span><span style='mso-bookmark:_Toc129421995'><span
-style='font-size:12.0pt;mso-no-proof:yes'><o:p></o:p></span></span></p>
-
-<p class=MsoToc3 style='tab-stops:right dotted 438.7pt'><span style='mso-bookmark:
-_Toc129421995'><span style='mso-no-proof:yes'>Inquire whether a Dataset
-Attribute Exists: cmor_has_cur_dataset_attribute<span style='mso-tab-count:
-1 dotted'>......................... </span></span></span><!--[if supportFields]><span
-style='mso-bookmark:_Toc129421995'></span><span style='mso-element:field-begin'></span><span
-style='mso-bookmark:_Toc129421995'><span style='mso-no-proof:yes'> PAGEREF
-_Toc149385718 \h <span style='mso-element:field-separator'></span></span></span><![endif]--><span
-style='mso-bookmark:_Toc129421995'><span style='mso-no-proof:yes'>20<!--[if gte mso 9]><xml>
- <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003100340039003300380035003700310038000000</w:data>
-</xml><![endif]--></span></span><!--[if supportFields]><span style='mso-bookmark:
-_Toc129421995'></span><span style='mso-element:field-end'></span><![endif]--><span
-style='mso-bookmark:_Toc129421995'></span><span style='mso-bookmark:_Toc129421995'><span
-style='font-size:12.0pt;mso-no-proof:yes'><o:p></o:p></span></span></p>
-
-<p class=MsoToc2 style='tab-stops:right dotted 438.7pt'><span style='mso-bookmark:
-_Toc129421995'><span style='mso-no-proof:yes'>Dealing with tables<span
-style='mso-tab-count:1 dotted'>......................................................................................................... </span></span></span><!--[if supportFields]><span
-style='mso-bookmark:_Toc129421995'></span><span style='mso-element:field-begin'></span><span
-style='mso-bookmark:_Toc129421995'><span style='mso-no-proof:yes'> PAGEREF
-_Toc149385719 \h <span style='mso-element:field-separator'></span></span></span><![endif]--><span
-style='mso-bookmark:_Toc129421995'><span style='mso-no-proof:yes'>20<!--[if gte mso 9]><xml>
- <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003100340039003300380035003700310039000000</w:data>
-</xml><![endif]--></span></span><!--[if supportFields]><span style='mso-bookmark:
-_Toc129421995'></span><span style='mso-element:field-end'></span><![endif]--><span
-style='mso-bookmark:_Toc129421995'></span><span style='mso-bookmark:_Toc129421995'><span
-style='font-size:12.0pt;font-weight:normal;mso-no-proof:yes'><o:p></o:p></span></span></p>
-
-<p class=MsoToc3 style='tab-stops:right dotted 438.7pt'><span style='mso-bookmark:
-_Toc129421995'><span style='mso-no-proof:yes'>Loading a Table in Memory from
-File:cmor_load_table<span style='mso-tab-count:1 dotted'>............................................................................. </span></span></span><!--[if supportFields]><span
-style='mso-bookmark:_Toc129421995'></span><span style='mso-element:field-begin'></span><span
-style='mso-bookmark:_Toc129421995'><span style='mso-no-proof:yes'> PAGEREF
-_Toc149385720 \h <span style='mso-element:field-separator'></span></span></span><![endif]--><span
-style='mso-bookmark:_Toc129421995'><span style='mso-no-proof:yes'>20<!--[if gte mso 9]><xml>
- <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003100340039003300380035003700320030000000</w:data>
-</xml><![endif]--></span></span><!--[if supportFields]><span style='mso-bookmark:
-_Toc129421995'></span><span style='mso-element:field-end'></span><![endif]--><span
-style='mso-bookmark:_Toc129421995'></span><span style='mso-bookmark:_Toc129421995'><span
-style='font-size:12.0pt;mso-no-proof:yes'><o:p></o:p></span></span></p>
-
-<p class=MsoToc3 style='tab-stops:right dotted 438.7pt'><span style='mso-bookmark:
-_Toc129421995'><span style='mso-no-proof:yes'>Loading a Table from
-Memory:cmor_set_table<span style='mso-tab-count:1 dotted'>............................................................................................... </span></span></span><!--[if supportFields]><span
-style='mso-bookmark:_Toc129421995'></span><span style='mso-element:field-begin'></span><span
-style='mso-bookmark:_Toc129421995'><span style='mso-no-proof:yes'> PAGEREF
-_Toc149385721 \h <span style='mso-element:field-separator'></span></span></span><![endif]--><span
-style='mso-bookmark:_Toc129421995'><span style='mso-no-proof:yes'>21<!--[if gte mso 9]><xml>
- <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003100340039003300380035003700320031000000</w:data>
-</xml><![endif]--></span></span><!--[if supportFields]><span style='mso-bookmark:
-_Toc129421995'></span><span style='mso-element:field-end'></span><![endif]--><span
-style='mso-bookmark:_Toc129421995'></span><span style='mso-bookmark:_Toc129421995'><span
-style='font-size:12.0pt;mso-no-proof:yes'><o:p></o:p></span></span></p>
-
-<p class=MsoToc2 style='tab-stops:right dotted 438.7pt'><span style='mso-bookmark:
-_Toc129421995'><span style='mso-no-proof:yes'>Dealing with Axes<span
-style='mso-tab-count:1 dotted'>........................................................................................................... </span></span></span><!--[if supportFields]><span
-style='mso-bookmark:_Toc129421995'></span><span style='mso-element:field-begin'></span><span
-style='mso-bookmark:_Toc129421995'><span style='mso-no-proof:yes'> PAGEREF
-_Toc149385722 \h <span style='mso-element:field-separator'></span></span></span><![endif]--><span
-style='mso-bookmark:_Toc129421995'><span style='mso-no-proof:yes'>21<!--[if gte mso 9]><xml>
- <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003100340039003300380035003700320032000000</w:data>
-</xml><![endif]--></span></span><!--[if supportFields]><span style='mso-bookmark:
-_Toc129421995'></span><span style='mso-element:field-end'></span><![endif]--><span
-style='mso-bookmark:_Toc129421995'></span><span style='mso-bookmark:_Toc129421995'><span
-style='font-size:12.0pt;font-weight:normal;mso-no-proof:yes'><o:p></o:p></span></span></p>
-
-<p class=MsoToc3 style='tab-stops:right dotted 438.7pt'><span style='mso-bookmark:
-_Toc129421995'><span style='mso-no-proof:yes'>Define an Axis: cmor_axis<span
-style='mso-tab-count:1 dotted'>............................................................................................................................................... </span></span></span><!--[if supportFields]><span
-style='mso-bookmark:_Toc129421995'></span><span style='mso-element:field-begin'></span><span
-style='mso-bookmark:_Toc129421995'><span style='mso-no-proof:yes'> PAGEREF
-_Toc149385723 \h <span style='mso-element:field-separator'></span></span></span><![endif]--><span
-style='mso-bookmark:_Toc129421995'><span style='mso-no-proof:yes'>21<!--[if gte mso 9]><xml>
- <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003100340039003300380035003700320033000000</w:data>
-</xml><![endif]--></span></span><!--[if supportFields]><span style='mso-bookmark:
-_Toc129421995'></span><span style='mso-element:field-end'></span><![endif]--><span
-style='mso-bookmark:_Toc129421995'></span><span style='mso-bookmark:_Toc129421995'><span
-style='font-size:12.0pt;mso-no-proof:yes'><o:p></o:p></span></span></p>
-
-<p class=MsoToc3 style='tab-stops:right dotted 438.7pt'><span style='mso-bookmark:
-_Toc129421995'><span style='mso-no-proof:yes'>Define an Axis Attribute:
-cmor_set_axis_attribute<span style='mso-tab-count:1 dotted'>........................................................................................ </span></span></span><!--[if supportFields]><span
-style='mso-bookmark:_Toc129421995'></span><span style='mso-element:field-begin'></span><span
-style='mso-bookmark:_Toc129421995'><span style='mso-no-proof:yes'> PAGEREF
-_Toc149385724 \h <span style='mso-element:field-separator'></span></span></span><![endif]--><span
-style='mso-bookmark:_Toc129421995'><span style='mso-no-proof:yes'>23<!--[if gte mso 9]><xml>
- <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003100340039003300380035003700320034000000</w:data>
-</xml><![endif]--></span></span><!--[if supportFields]><span style='mso-bookmark:
-_Toc129421995'></span><span style='mso-element:field-end'></span><![endif]--><span
-style='mso-bookmark:_Toc129421995'></span><span style='mso-bookmark:_Toc129421995'><span
-style='font-size:12.0pt;mso-no-proof:yes'><o:p></o:p></span></span></p>
-
-<p class=MsoToc3 style='tab-stops:right dotted 438.7pt'><span style='mso-bookmark:
-_Toc129421995'><span style='mso-no-proof:yes'>Retrieve an Axis Attribute:
-cmor_get_axis_attribute<span style='mso-tab-count:1 dotted'>.................................................................................. </span></span></span><!--[if supportFields]><span
-style='mso-bookmark:_Toc129421995'></span><span style='mso-element:field-begin'></span><span
-style='mso-bookmark:_Toc129421995'><span style='mso-no-proof:yes'> PAGEREF
-_Toc149385725 \h <span style='mso-element:field-separator'></span></span></span><![endif]--><span
-style='mso-bookmark:_Toc129421995'><span style='mso-no-proof:yes'>24<!--[if gte mso 9]><xml>
- <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003100340039003300380035003700320035000000</w:data>
-</xml><![endif]--></span></span><!--[if supportFields]><span style='mso-bookmark:
-_Toc129421995'></span><span style='mso-element:field-end'></span><![endif]--><span
-style='mso-bookmark:_Toc129421995'></span><span style='mso-bookmark:_Toc129421995'><span
-style='font-size:12.0pt;mso-no-proof:yes'><o:p></o:p></span></span></p>
-
-<p class=MsoToc3 style='tab-stops:right dotted 438.7pt'><span style='mso-bookmark:
-_Toc129421995'><span style='mso-no-proof:yes'>Inquire whether an Axis Attribute
-Exists: cmor_has_axis_attribute<span style='mso-tab-count:1 dotted'>................................................ </span></span></span><!--[if supportFields]><span
-style='mso-bookmark:_Toc129421995'></span><span style='mso-element:field-begin'></span><span
-style='mso-bookmark:_Toc129421995'><span style='mso-no-proof:yes'> PAGEREF
-_Toc149385726 \h <span style='mso-element:field-separator'></span></span></span><![endif]--><span
-style='mso-bookmark:_Toc129421995'><span style='mso-no-proof:yes'>24<!--[if gte mso 9]><xml>
- <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003100340039003300380035003700320036000000</w:data>
-</xml><![endif]--></span></span><!--[if supportFields]><span style='mso-bookmark:
-_Toc129421995'></span><span style='mso-element:field-end'></span><![endif]--><span
-style='mso-bookmark:_Toc129421995'></span><span style='mso-bookmark:_Toc129421995'><span
-style='font-size:12.0pt;mso-no-proof:yes'><o:p></o:p></span></span></p>
-
-<p class=MsoToc2 style='tab-stops:right dotted 438.7pt'><span style='mso-bookmark:
-_Toc129421995'><span style='mso-no-proof:yes'>Dealing with Grids<span
-style='mso-tab-count:1 dotted'>.......................................................................................................... </span></span></span><!--[if supportFields]><span
-style='mso-bookmark:_Toc129421995'></span><span style='mso-element:field-begin'></span><span
-style='mso-bookmark:_Toc129421995'><span style='mso-no-proof:yes'> PAGEREF
-_Toc149385727 \h <span style='mso-element:field-separator'></span></span></span><![endif]--><span
-style='mso-bookmark:_Toc129421995'><span style='mso-no-proof:yes'>25<!--[if gte mso 9]><xml>
- <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003100340039003300380035003700320037000000</w:data>
-</xml><![endif]--></span></span><!--[if supportFields]><span style='mso-bookmark:
-_Toc129421995'></span><span style='mso-element:field-end'></span><![endif]--><span
-style='mso-bookmark:_Toc129421995'></span><span style='mso-bookmark:_Toc129421995'><span
-style='font-size:12.0pt;font-weight:normal;mso-no-proof:yes'><o:p></o:p></span></span></p>
-
-<p class=MsoToc3 style='tab-stops:right dotted 438.7pt'><span style='mso-bookmark:
-_Toc129421995'><span style='mso-no-proof:yes'>Define a Grid: cmor_grid<span
-style='mso-tab-count:1 dotted'>................................................................................................................................................. </span></span></span><!--[if supportFields]><span
-style='mso-bookmark:_Toc129421995'></span><span style='mso-element:field-begin'></span><span
-style='mso-bookmark:_Toc129421995'><span style='mso-no-proof:yes'> PAGEREF
-_Toc149385728 \h <span style='mso-element:field-separator'></span></span></span><![endif]--><span
-style='mso-bookmark:_Toc129421995'><span style='mso-no-proof:yes'>25<!--[if gte mso 9]><xml>
- <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003100340039003300380035003700320038000000</w:data>
-</xml><![endif]--></span></span><!--[if supportFields]><span style='mso-bookmark:
-_Toc129421995'></span><span style='mso-element:field-end'></span><![endif]--><span
-style='mso-bookmark:_Toc129421995'></span><span style='mso-bookmark:_Toc129421995'><span
-style='font-size:12.0pt;mso-no-proof:yes'><o:p></o:p></span></span></p>
-
-<p class=MsoToc3 style='tab-stops:right dotted 438.7pt'><span style='mso-bookmark:
-_Toc129421995'><span style='mso-no-proof:yes'>Define Grid Mapping Parameters:
-cmor_set_grid_mapping<span style='mso-tab-count:1 dotted'>.................................................................... </span></span></span><!--[if supportFields]><span
-style='mso-bookmark:_Toc129421995'></span><span style='mso-element:field-begin'></span><span
-style='mso-bookmark:_Toc129421995'><span style='mso-no-proof:yes'> PAGEREF
-_Toc149385729 \h <span style='mso-element:field-separator'></span></span></span><![endif]--><span
-style='mso-bookmark:_Toc129421995'><span style='mso-no-proof:yes'>26<!--[if gte mso 9]><xml>
- <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003100340039003300380035003700320039000000</w:data>
-</xml><![endif]--></span></span><!--[if supportFields]><span style='mso-bookmark:
-_Toc129421995'></span><span style='mso-element:field-end'></span><![endif]--><span
-style='mso-bookmark:_Toc129421995'></span><span style='mso-bookmark:_Toc129421995'><span
-style='font-size:12.0pt;mso-no-proof:yes'><o:p></o:p></span></span></p>
-
-<p class=MsoToc3 style='tab-stops:right dotted 438.7pt'><span style='mso-bookmark:
-_Toc129421995'><span style='mso-no-proof:yes'>Define a Coordinate Variable for
-a Time Varying Grid: cmor_time_varying_grid_coordinate<span style='mso-tab-count:
-1'>               </span></span></span><!--[if supportFields]><span
-style='mso-bookmark:_Toc129421995'></span><span style='mso-element:field-begin'></span><span
-style='mso-bookmark:_Toc129421995'><span style='mso-no-proof:yes'> PAGEREF
-_Toc149385730 \h <span style='mso-element:field-separator'></span></span></span><![endif]--><span
-style='mso-bookmark:_Toc129421995'><span style='mso-no-proof:yes'>28<!--[if gte mso 9]><xml>
- <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003100340039003300380035003700330030000000</w:data>
-</xml><![endif]--></span></span><!--[if supportFields]><span style='mso-bookmark:
-_Toc129421995'></span><span style='mso-element:field-end'></span><![endif]--><span
-style='mso-bookmark:_Toc129421995'></span><span style='mso-bookmark:_Toc129421995'><span
-style='font-size:12.0pt;mso-no-proof:yes'><o:p></o:p></span></span></p>
-
-<p class=MsoToc2 style='tab-stops:right dotted 438.7pt'><span style='mso-bookmark:
-_Toc129421995'><span style='mso-no-proof:yes'>Vertical Dimensions<span
-style='mso-tab-count:1 dotted'>....................................................................................................... </span></span></span><!--[if supportFields]><span
-style='mso-bookmark:_Toc129421995'></span><span style='mso-element:field-begin'></span><span
-style='mso-bookmark:_Toc129421995'><span style='mso-no-proof:yes'> PAGEREF
-_Toc149385731 \h <span style='mso-element:field-separator'></span></span></span><![endif]--><span
-style='mso-bookmark:_Toc129421995'><span style='mso-no-proof:yes'>29<!--[if gte mso 9]><xml>
- <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003100340039003300380035003700330031000000</w:data>
-</xml><![endif]--></span></span><!--[if supportFields]><span style='mso-bookmark:
-_Toc129421995'></span><span style='mso-element:field-end'></span><![endif]--><span
-style='mso-bookmark:_Toc129421995'></span><span style='mso-bookmark:_Toc129421995'><span
-style='font-size:12.0pt;font-weight:normal;mso-no-proof:yes'><o:p></o:p></span></span></p>
-
-<p class=MsoToc3 style='tab-stops:right dotted 438.7pt'><span style='mso-bookmark:
-_Toc129421995'><span style='mso-no-proof:yes'>Provide Non-Dimensional Vertical Coordinate
-Information: cmor_zfactor<span style='mso-tab-count:1 dotted'>............................... </span></span></span><!--[if supportFields]><span
-style='mso-bookmark:_Toc129421995'></span><span style='mso-element:field-begin'></span><span
-style='mso-bookmark:_Toc129421995'><span style='mso-no-proof:yes'> PAGEREF
-_Toc149385732 \h <span style='mso-element:field-separator'></span></span></span><![endif]--><span
-style='mso-bookmark:_Toc129421995'><span style='mso-no-proof:yes'>29<!--[if gte mso 9]><xml>
- <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003100340039003300380035003700330032000000</w:data>
-</xml><![endif]--></span></span><!--[if supportFields]><span style='mso-bookmark:
-_Toc129421995'></span><span style='mso-element:field-end'></span><![endif]--><span
-style='mso-bookmark:_Toc129421995'></span><span style='mso-bookmark:_Toc129421995'><span
-style='font-size:12.0pt;mso-no-proof:yes'><o:p></o:p></span></span></p>
-
-<p class=MsoToc2 style='tab-stops:right dotted 438.7pt'><span style='mso-bookmark:
-_Toc129421995'><span style='mso-no-proof:yes'>Variables<span style='mso-tab-count:
-1 dotted'>......................................................................................................................... </span></span></span><!--[if supportFields]><span
-style='mso-bookmark:_Toc129421995'></span><span style='mso-element:field-begin'></span><span
-style='mso-bookmark:_Toc129421995'><span style='mso-no-proof:yes'> PAGEREF
-_Toc149385733 \h <span style='mso-element:field-separator'></span></span></span><![endif]--><span
-style='mso-bookmark:_Toc129421995'><span style='mso-no-proof:yes'>31<!--[if gte mso 9]><xml>
- <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003100340039003300380035003700330033000000</w:data>
-</xml><![endif]--></span></span><!--[if supportFields]><span style='mso-bookmark:
-_Toc129421995'></span><span style='mso-element:field-end'></span><![endif]--><span
-style='mso-bookmark:_Toc129421995'></span><span style='mso-bookmark:_Toc129421995'><span
-style='font-size:12.0pt;font-weight:normal;mso-no-proof:yes'><o:p></o:p></span></span></p>
-
-<p class=MsoToc3 style='tab-stops:right dotted 438.7pt'><span style='mso-bookmark:
-_Toc129421995'><span style='mso-no-proof:yes'>Define a Variable: cmor_variable<span
-style='mso-tab-count:1 dotted'>.............................................................................................................................. </span></span></span><!--[if supportFields]><span
-style='mso-bookmark:_Toc129421995'></span><span style='mso-element:field-begin'></span><span
-style='mso-bookmark:_Toc129421995'><span style='mso-no-proof:yes'> PAGEREF
-_Toc149385734 \h <span style='mso-element:field-separator'></span></span></span><![endif]--><span
-style='mso-bookmark:_Toc129421995'><span style='mso-no-proof:yes'>31<!--[if gte mso 9]><xml>
- <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003100340039003300380035003700330034000000</w:data>
-</xml><![endif]--></span></span><!--[if supportFields]><span style='mso-bookmark:
-_Toc129421995'></span><span style='mso-element:field-end'></span><![endif]--><span
-style='mso-bookmark:_Toc129421995'></span><span style='mso-bookmark:_Toc129421995'><span
-style='font-size:12.0pt;mso-no-proof:yes'><o:p></o:p></span></span></p>
-
-<p class=MsoToc3 style='tab-stops:right dotted 438.7pt'><span style='mso-bookmark:
-_Toc129421995'><span style='mso-no-proof:yes'>Define a Variable Attribute:
-cmor_set_variable_attribute<span style='mso-tab-count:1 dotted'>....................................................................... </span></span></span><!--[if supportFields]><span
-style='mso-bookmark:_Toc129421995'></span><span style='mso-element:field-begin'></span><span
-style='mso-bookmark:_Toc129421995'><span style='mso-no-proof:yes'> PAGEREF
-_Toc149385735 \h <span style='mso-element:field-separator'></span></span></span><![endif]--><span
-style='mso-bookmark:_Toc129421995'><span style='mso-no-proof:yes'>33<!--[if gte mso 9]><xml>
- <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003100340039003300380035003700330035000000</w:data>
-</xml><![endif]--></span></span><!--[if supportFields]><span style='mso-bookmark:
-_Toc129421995'></span><span style='mso-element:field-end'></span><![endif]--><span
-style='mso-bookmark:_Toc129421995'></span><span style='mso-bookmark:_Toc129421995'><span
-style='font-size:12.0pt;mso-no-proof:yes'><o:p></o:p></span></span></p>
-
-<p class=MsoToc3 style='tab-stops:right dotted 438.7pt'><span style='mso-bookmark:
-_Toc129421995'><span style='mso-no-proof:yes'>Retrieve a Variable Attribute:
-cmor_get_variable_attribute<span style='mso-tab-count:1 dotted'>.................................................................. </span></span></span><!--[if supportFields]><span
-style='mso-bookmark:_Toc129421995'></span><span style='mso-element:field-begin'></span><span
-style='mso-bookmark:_Toc129421995'><span style='mso-no-proof:yes'> PAGEREF
-_Toc149385736 \h <span style='mso-element:field-separator'></span></span></span><![endif]--><span
-style='mso-bookmark:_Toc129421995'><span style='mso-no-proof:yes'>34<!--[if gte mso 9]><xml>
- <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003100340039003300380035003700330036000000</w:data>
-</xml><![endif]--></span></span><!--[if supportFields]><span style='mso-bookmark:
-_Toc129421995'></span><span style='mso-element:field-end'></span><![endif]--><span
-style='mso-bookmark:_Toc129421995'></span><span style='mso-bookmark:_Toc129421995'><span
-style='font-size:12.0pt;mso-no-proof:yes'><o:p></o:p></span></span></p>
-
-<p class=MsoToc3 style='tab-stops:right dotted 438.7pt'><span style='mso-bookmark:
-_Toc129421995'><span style='mso-no-proof:yes'>Inquire Whether a Variable
-Attribute Exists: cmor_has_variable_attribute<span style='mso-tab-count:1 dotted'>............................... </span></span></span><!--[if supportFields]><span
-style='mso-bookmark:_Toc129421995'></span><span style='mso-element:field-begin'></span><span
-style='mso-bookmark:_Toc129421995'><span style='mso-no-proof:yes'> PAGEREF
-_Toc149385737 \h <span style='mso-element:field-separator'></span></span></span><![endif]--><span
-style='mso-bookmark:_Toc129421995'><span style='mso-no-proof:yes'>35<!--[if gte mso 9]><xml>
- <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003100340039003300380035003700330037000000</w:data>
-</xml><![endif]--></span></span><!--[if supportFields]><span style='mso-bookmark:
-_Toc129421995'></span><span style='mso-element:field-end'></span><![endif]--><span
-style='mso-bookmark:_Toc129421995'></span><span style='mso-bookmark:_Toc129421995'><span
-style='font-size:12.0pt;mso-no-proof:yes'><o:p></o:p></span></span></p>
-
-<p class=MsoToc2 style='tab-stops:right dotted 438.7pt'><span style='mso-bookmark:
-_Toc129421995'><span style='mso-no-proof:yes'>Writing Data<span
-style='mso-tab-count:1 dotted'>................................................................................................................... </span></span></span><!--[if supportFields]><span
-style='mso-bookmark:_Toc129421995'></span><span style='mso-element:field-begin'></span><span
-style='mso-bookmark:_Toc129421995'><span style='mso-no-proof:yes'> PAGEREF
-_Toc149385738 \h <span style='mso-element:field-separator'></span></span></span><![endif]--><span
-style='mso-bookmark:_Toc129421995'><span style='mso-no-proof:yes'>35<!--[if gte mso 9]><xml>
- <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003100340039003300380035003700330038000000</w:data>
-</xml><![endif]--></span></span><!--[if supportFields]><span style='mso-bookmark:
-_Toc129421995'></span><span style='mso-element:field-end'></span><![endif]--><span
-style='mso-bookmark:_Toc129421995'></span><span style='mso-bookmark:_Toc129421995'><span
-style='font-size:12.0pt;font-weight:normal;mso-no-proof:yes'><o:p></o:p></span></span></p>
-
-<p class=MsoToc3 style='tab-stops:right dotted 438.7pt'><span style='mso-bookmark:
-_Toc129421995'><span style='mso-no-proof:yes'>Generate Output Path:
-cmor_create_output_path<span style='mso-tab-count:1 dotted'>......................................................................................... </span></span></span><!--[if supportFields]><span
-style='mso-bookmark:_Toc129421995'></span><span style='mso-element:field-begin'></span><span
-style='mso-bookmark:_Toc129421995'><span style='mso-no-proof:yes'> PAGEREF
-_Toc149385739 \h <span style='mso-element:field-separator'></span></span></span><![endif]--><span
-style='mso-bookmark:_Toc129421995'><span style='mso-no-proof:yes'>35<!--[if gte mso 9]><xml>
- <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003100340039003300380035003700330039000000</w:data>
-</xml><![endif]--></span></span><!--[if supportFields]><span style='mso-bookmark:
-_Toc129421995'></span><span style='mso-element:field-end'></span><![endif]--><span
-style='mso-bookmark:_Toc129421995'></span><span style='mso-bookmark:_Toc129421995'><span
-style='font-size:12.0pt;mso-no-proof:yes'><o:p></o:p></span></span></p>
-
-<p class=MsoToc3 style='tab-stops:right dotted 438.7pt'><span style='mso-bookmark:
-_Toc129421995'><span style='mso-no-proof:yes'>Write Data to File: cmor_write<span
-style='mso-tab-count:1 dotted'>.................................................................................................................................. </span></span></span><!--[if supportFields]><span
-style='mso-bookmark:_Toc129421995'></span><span style='mso-element:field-begin'></span><span
-style='mso-bookmark:_Toc129421995'><span style='mso-no-proof:yes'> PAGEREF
-_Toc149385740 \h <span style='mso-element:field-separator'></span></span></span><![endif]--><span
-style='mso-bookmark:_Toc129421995'><span style='mso-no-proof:yes'>36<!--[if gte mso 9]><xml>
- <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003100340039003300380035003700340030000000</w:data>
-</xml><![endif]--></span></span><!--[if supportFields]><span style='mso-bookmark:
-_Toc129421995'></span><span style='mso-element:field-end'></span><![endif]--><span
-style='mso-bookmark:_Toc129421995'></span><span style='mso-bookmark:_Toc129421995'><span
-style='font-size:12.0pt;mso-no-proof:yes'><o:p></o:p></span></span></p>
-
-<p class=MsoToc3 style='tab-stops:right dotted 438.7pt'><span style='mso-bookmark:
-_Toc129421995'><span style='mso-no-proof:yes'>Close File(s): cmor_close<span
-style='mso-tab-count:1 dotted'>............................................................................................................................................... </span></span></span><!--[if supportFields]><span
-style='mso-bookmark:_Toc129421995'></span><span style='mso-element:field-begin'></span><span
-style='mso-bookmark:_Toc129421995'><span style='mso-no-proof:yes'> PAGEREF
-_Toc149385741 \h <span style='mso-element:field-separator'></span></span></span><![endif]--><span
-style='mso-bookmark:_Toc129421995'><span style='mso-no-proof:yes'>38<!--[if gte mso 9]><xml>
- <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003100340039003300380035003700340031000000</w:data>
-</xml><![endif]--></span></span><!--[if supportFields]><span style='mso-bookmark:
-_Toc129421995'></span><span style='mso-element:field-end'></span><![endif]--><span
-style='mso-bookmark:_Toc129421995'></span><span style='mso-bookmark:_Toc129421995'><span
-style='font-size:12.0pt;mso-no-proof:yes'><o:p></o:p></span></span></p>
-
-<p class=MsoToc1 style='tab-stops:right dotted 438.7pt'><span style='mso-bookmark:
-_Toc129421995'><span style='mso-no-proof:yes'>Appendix A: Errors in CMOR<span
-style='mso-tab-count:1 dotted'>........................................................................................ </span></span></span><!--[if supportFields]><span
-style='mso-bookmark:_Toc129421995'></span><span style='mso-element:field-begin'></span><span
-style='mso-bookmark:_Toc129421995'><span style='mso-no-proof:yes'> PAGEREF
-_Toc149385742 \h <span style='mso-element:field-separator'></span></span></span><![endif]--><span
-style='mso-bookmark:_Toc129421995'><span style='mso-no-proof:yes'>39<!--[if gte mso 9]><xml>
- <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003100340039003300380035003700340032000000</w:data>
-</xml><![endif]--></span></span><!--[if supportFields]><span style='mso-bookmark:
-_Toc129421995'></span><span style='mso-element:field-end'></span><![endif]--><span
-style='mso-bookmark:_Toc129421995'></span><span style='mso-bookmark:_Toc129421995'><span
-style='font-weight:normal;mso-no-proof:yes'><o:p></o:p></span></span></p>
-
-<p class=MsoToc2 style='tab-stops:right dotted 438.7pt'><span style='mso-bookmark:
-_Toc129421995'><span style='mso-no-proof:yes'>Critical Errors<span
-style='mso-tab-count:1 dotted'>.................................................................................................................. </span></span></span><!--[if supportFields]><span
-style='mso-bookmark:_Toc129421995'></span><span style='mso-element:field-begin'></span><span
-style='mso-bookmark:_Toc129421995'><span style='mso-no-proof:yes'> PAGEREF
-_Toc149385743 \h <span style='mso-element:field-separator'></span></span></span><![endif]--><span
-style='mso-bookmark:_Toc129421995'><span style='mso-no-proof:yes'>39<!--[if gte mso 9]><xml>
- <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003100340039003300380035003700340033000000</w:data>
-</xml><![endif]--></span></span><!--[if supportFields]><span style='mso-bookmark:
-_Toc129421995'></span><span style='mso-element:field-end'></span><![endif]--><span
-style='mso-bookmark:_Toc129421995'></span><span style='mso-bookmark:_Toc129421995'><span
-style='font-size:12.0pt;font-weight:normal;mso-no-proof:yes'><o:p></o:p></span></span></p>
-
-<p class=MsoToc1 style='tab-stops:right dotted 438.7pt'><span style='mso-bookmark:
-_Toc129421995'><span style='mso-no-proof:yes'>Appendix B: Limits in cmor<span
-style='mso-tab-count:1 dotted'>.......................................................................................... </span></span></span><!--[if supportFields]><span
-style='mso-bookmark:_Toc129421995'></span><span style='mso-element:field-begin'></span><span
-style='mso-bookmark:_Toc129421995'><span style='mso-no-proof:yes'> PAGEREF
-_Toc149385744 \h <span style='mso-element:field-separator'></span></span></span><![endif]--><span
-style='mso-bookmark:_Toc129421995'><span style='mso-no-proof:yes'>42<!--[if gte mso 9]><xml>
- <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003100340039003300380035003700340034000000</w:data>
-</xml><![endif]--></span></span><!--[if supportFields]><span style='mso-bookmark:
-_Toc129421995'></span><span style='mso-element:field-end'></span><![endif]--><span
-style='mso-bookmark:_Toc129421995'></span><span style='mso-bookmark:_Toc129421995'><span
-style='font-weight:normal;mso-no-proof:yes'><o:p></o:p></span></span></p>
-
-<p class=MsoToc1 style='tab-stops:right dotted 438.7pt'><span style='mso-bookmark:
-_Toc129421995'><span style='mso-no-proof:yes'>Appendix C: Sample Codes<span
-style='mso-tab-count:1 dotted'>............................................................................................. </span></span></span><!--[if supportFields]><span
-style='mso-bookmark:_Toc129421995'></span><span style='mso-element:field-begin'></span><span
-style='mso-bookmark:_Toc129421995'><span style='mso-no-proof:yes'> PAGEREF
-_Toc149385745 \h <span style='mso-element:field-separator'></span></span></span><![endif]--><span
-style='mso-bookmark:_Toc129421995'><span style='mso-no-proof:yes'>43<!--[if gte mso 9]><xml>
- <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003100340039003300380035003700340035000000</w:data>
-</xml><![endif]--></span></span><!--[if supportFields]><span style='mso-bookmark:
-_Toc129421995'></span><span style='mso-element:field-end'></span><![endif]--><span
-style='mso-bookmark:_Toc129421995'></span><span style='mso-bookmark:_Toc129421995'><span
-style='font-weight:normal;mso-no-proof:yes'><o:p></o:p></span></span></p>
-
-<p class=MsoToc2 style='tab-stops:right dotted 438.7pt'><span style='mso-bookmark:
-_Toc129421995'><span style='mso-no-proof:yes'>FORTRAN<span style='mso-tab-count:
-1 dotted'>......................................................................................................................... </span></span></span><!--[if supportFields]><span
-style='mso-bookmark:_Toc129421995'></span><span style='mso-element:field-begin'></span><span
-style='mso-bookmark:_Toc129421995'><span style='mso-no-proof:yes'> PAGEREF
-_Toc149385746 \h <span style='mso-element:field-separator'></span></span></span><![endif]--><span
-style='mso-bookmark:_Toc129421995'><span style='mso-no-proof:yes'>43<!--[if gte mso 9]><xml>
- <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003100340039003300380035003700340036000000</w:data>
-</xml><![endif]--></span></span><!--[if supportFields]><span style='mso-bookmark:
-_Toc129421995'></span><span style='mso-element:field-end'></span><![endif]--><span
-style='mso-bookmark:_Toc129421995'></span><span style='mso-bookmark:_Toc129421995'><span
-style='font-size:12.0pt;font-weight:normal;mso-no-proof:yes'><o:p></o:p></span></span></p>
-
-<p class=MsoToc3 style='tab-stops:right dotted 438.7pt'><span style='mso-bookmark:
-_Toc129421995'><span style='mso-no-proof:yes'>Sample Program 1<span
-style='mso-tab-count:1 dotted'>............................................................................................................................................................... </span></span></span><!--[if supportFields]><span
-style='mso-bookmark:_Toc129421995'></span><span style='mso-element:field-begin'></span><span
-style='mso-bookmark:_Toc129421995'><span style='mso-no-proof:yes'> PAGEREF
-_Toc149385747 \h <span style='mso-element:field-separator'></span></span></span><![endif]--><span
-style='mso-bookmark:_Toc129421995'><span style='mso-no-proof:yes'>43<!--[if gte mso 9]><xml>
- <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003100340039003300380035003700340037000000</w:data>
-</xml><![endif]--></span></span><!--[if supportFields]><span style='mso-bookmark:
-_Toc129421995'></span><span style='mso-element:field-end'></span><![endif]--><span
-style='mso-bookmark:_Toc129421995'></span><span style='mso-bookmark:_Toc129421995'><span
-style='font-size:12.0pt;mso-no-proof:yes'><o:p></o:p></span></span></p>
-
-<p class=MsoToc2 style='tab-stops:right dotted 438.7pt'><span style='mso-bookmark:
-_Toc129421995'><span style='mso-no-proof:yes'>C<span style='mso-tab-count:1 dotted'>....................................................................................................................................... </span></span></span><!--[if supportFields]><span
-style='mso-bookmark:_Toc129421995'></span><span style='mso-element:field-begin'></span><span
-style='mso-bookmark:_Toc129421995'><span style='mso-no-proof:yes'> PAGEREF
-_Toc149385748 \h <span style='mso-element:field-separator'></span></span></span><![endif]--><span
-style='mso-bookmark:_Toc129421995'><span style='mso-no-proof:yes'>52<!--[if gte mso 9]><xml>
- <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003100340039003300380035003700340038000000</w:data>
-</xml><![endif]--></span></span><!--[if supportFields]><span style='mso-bookmark:
-_Toc129421995'></span><span style='mso-element:field-end'></span><![endif]--><span
-style='mso-bookmark:_Toc129421995'></span><span style='mso-bookmark:_Toc129421995'><span
-style='font-size:12.0pt;font-weight:normal;mso-no-proof:yes'><o:p></o:p></span></span></p>
-
-<p class=MsoToc3 style='tab-stops:right dotted 438.7pt'><span style='mso-bookmark:
-_Toc129421995'><span style='mso-no-proof:yes'>Sample Program 1: grids<span
-style='mso-tab-count:1 dotted'>................................................................................................................................................ </span></span></span><!--[if supportFields]><span
-style='mso-bookmark:_Toc129421995'></span><span style='mso-element:field-begin'></span><span
-style='mso-bookmark:_Toc129421995'><span style='mso-no-proof:yes'> PAGEREF
-_Toc149385749 \h <span style='mso-element:field-separator'></span></span></span><![endif]--><span
-style='mso-bookmark:_Toc129421995'><span style='mso-no-proof:yes'>52<!--[if gte mso 9]><xml>
- <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003100340039003300380035003700340039000000</w:data>
-</xml><![endif]--></span></span><!--[if supportFields]><span style='mso-bookmark:
-_Toc129421995'></span><span style='mso-element:field-end'></span><![endif]--><span
-style='mso-bookmark:_Toc129421995'></span><span style='mso-bookmark:_Toc129421995'><span
-style='font-size:12.0pt;mso-no-proof:yes'><o:p></o:p></span></span></p>
-
-<p class=MsoToc2 style='tab-stops:right dotted 438.7pt'><span style='mso-bookmark:
-_Toc129421995'><span style='mso-no-proof:yes'>PYTHON<span style='mso-tab-count:
-1 dotted'>.......................................................................................................................... </span></span></span><!--[if supportFields]><span
-style='mso-bookmark:_Toc129421995'></span><span style='mso-element:field-begin'></span><span
-style='mso-bookmark:_Toc129421995'><span style='mso-no-proof:yes'> PAGEREF
-_Toc149385750 \h <span style='mso-element:field-separator'></span></span></span><![endif]--><span
-style='mso-bookmark:_Toc129421995'><span style='mso-no-proof:yes'>56<!--[if gte mso 9]><xml>
- <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003100340039003300380035003700350030000000</w:data>
-</xml><![endif]--></span></span><!--[if supportFields]><span style='mso-bookmark:
-_Toc129421995'></span><span style='mso-element:field-end'></span><![endif]--><span
-style='mso-bookmark:_Toc129421995'></span><span style='mso-bookmark:_Toc129421995'><span
-style='font-size:12.0pt;font-weight:normal;mso-no-proof:yes'><o:p></o:p></span></span></p>
-
-<p class=MsoToc3 style='tab-stops:right dotted 438.7pt'><span style='mso-bookmark:
-_Toc129421995'><span style='mso-no-proof:yes'>Sample Program 1<span
-style='mso-tab-count:1 dotted'>............................................................................................................................................................... </span></span></span><!--[if supportFields]><span
-style='mso-bookmark:_Toc129421995'></span><span style='mso-element:field-begin'></span><span
-style='mso-bookmark:_Toc129421995'><span style='mso-no-proof:yes'> PAGEREF
-_Toc149385751 \h <span style='mso-element:field-separator'></span></span></span><![endif]--><span
-style='mso-bookmark:_Toc129421995'><span style='mso-no-proof:yes'>56<!--[if gte mso 9]><xml>
- <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003100340039003300380035003700350031000000</w:data>
-</xml><![endif]--></span></span><!--[if supportFields]><span style='mso-bookmark:
-_Toc129421995'></span><span style='mso-element:field-end'></span><![endif]--><span
-style='mso-bookmark:_Toc129421995'></span><span style='mso-bookmark:_Toc129421995'><span
-style='font-size:12.0pt;mso-no-proof:yes'><o:p></o:p></span></span></p>
-
-<p class=MsoToc3 style='tab-stops:right dotted 438.7pt'><span style='mso-bookmark:
-_Toc129421995'><span style='mso-no-proof:yes'>Sample Program 2: grids<span
-style='mso-tab-count:1 dotted'>................................................................................................................................................ </span></span></span><!--[if supportFields]><span
-style='mso-bookmark:_Toc129421995'></span><span style='mso-element:field-begin'></span><span
-style='mso-bookmark:_Toc129421995'><span style='mso-no-proof:yes'> PAGEREF
-_Toc149385752 \h <span style='mso-element:field-separator'></span></span></span><![endif]--><span
-style='mso-bookmark:_Toc129421995'><span style='mso-no-proof:yes'>57<!--[if gte mso 9]><xml>
- <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003100340039003300380035003700350032000000</w:data>
-</xml><![endif]--></span></span><!--[if supportFields]><span style='mso-bookmark:
-_Toc129421995'></span><span style='mso-element:field-end'></span><![endif]--><span
-style='mso-bookmark:_Toc129421995'></span><span style='mso-bookmark:_Toc129421995'><span
-style='font-size:12.0pt;mso-no-proof:yes'><o:p></o:p></span></span></p>
-
-<p class=MsoToc1 style='tab-stops:right dotted 438.7pt'><span style='mso-bookmark:
-_Toc129421995'><span style='mso-no-proof:yes'>Appendix D: MIP Tables<span
-style='mso-tab-count:1 dotted'>................................................................................................. </span></span></span><!--[if supportFields]><span
-style='mso-bookmark:_Toc129421995'></span><span style='mso-element:field-begin'></span><span
-style='mso-bookmark:_Toc129421995'><span style='mso-no-proof:yes'> PAGEREF
-_Toc149385753 \h <span style='mso-element:field-separator'></span></span></span><![endif]--><span
-style='mso-bookmark:_Toc129421995'><span style='mso-no-proof:yes'>60<!--[if gte mso 9]><xml>
- <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003100340039003300380035003700350033000000</w:data>
-</xml><![endif]--></span></span><!--[if supportFields]><span style='mso-bookmark:
-_Toc129421995'></span><span style='mso-element:field-end'></span><![endif]--><span
-style='mso-bookmark:_Toc129421995'></span><span style='mso-bookmark:_Toc129421995'><span
-style='font-weight:normal;mso-no-proof:yes'><o:p></o:p></span></span></p>
-
-<p class=MsoToc2 style='tab-stops:right dotted 438.7pt'><span style='mso-bookmark:
-_Toc129421995'><span style='mso-no-proof:yes'>CMOR 1 sample<span
-style='mso-tab-count:1 dotted'>............................................................................................................... </span></span></span><!--[if supportFields]><span
-style='mso-bookmark:_Toc129421995'></span><span style='mso-element:field-begin'></span><span
-style='mso-bookmark:_Toc129421995'><span style='mso-no-proof:yes'> PAGEREF
-_Toc149385754 \h <span style='mso-element:field-separator'></span></span></span><![endif]--><span
-style='mso-bookmark:_Toc129421995'><span style='mso-no-proof:yes'>60<!--[if gte mso 9]><xml>
- <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003100340039003300380035003700350034000000</w:data>
-</xml><![endif]--></span></span><!--[if supportFields]><span style='mso-bookmark:
-_Toc129421995'></span><span style='mso-element:field-end'></span><![endif]--><span
-style='mso-bookmark:_Toc129421995'></span><span style='mso-bookmark:_Toc129421995'><span
-style='font-size:12.0pt;font-weight:normal;mso-no-proof:yes'><o:p></o:p></span></span></p>
-
-<p class=MsoToc2 style='tab-stops:right dotted 438.7pt'><span style='mso-bookmark:
-_Toc129421995'><span style='mso-no-proof:yes'>CMOR 2 (table excerpts)<span
-style='mso-tab-count:1 dotted'>................................................................................................. </span></span></span><!--[if supportFields]><span
-style='mso-bookmark:_Toc129421995'></span><span style='mso-element:field-begin'></span><span
-style='mso-bookmark:_Toc129421995'><span style='mso-no-proof:yes'> PAGEREF
-_Toc149385755 \h <span style='mso-element:field-separator'></span></span></span><![endif]--><span
-style='mso-bookmark:_Toc129421995'><span style='mso-no-proof:yes'>68<!--[if gte mso 9]><xml>
- <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003100340039003300380035003700350035000000</w:data>
-</xml><![endif]--></span></span><!--[if supportFields]><span style='mso-bookmark:
-_Toc129421995'></span><span style='mso-element:field-end'></span><![endif]--><span
-style='mso-bookmark:_Toc129421995'></span><span style='mso-bookmark:_Toc129421995'><span
-style='font-size:12.0pt;font-weight:normal;mso-no-proof:yes'><o:p></o:p></span></span></p>
-
-<h1><span style='mso-bookmark:_Toc129421995'></span><!--[if supportFields]><span
-style='mso-bookmark:_Toc129421995'></span><span style='mso-element:field-end'></span><![endif]--><span
-style='mso-bookmark:_Toc129421995'><br clear=ALL style='page-break-before:always'>
-<a name="_Toc149385708">Design Considerations and Overview</a></span><span
-style='mso-bookmark:_Toc149385708'></span><span style='mso-bookmark:_Toc129421995'></span><span
-style='font-size:14.0pt'><o:p></o:p></span></h1>
-
-<p class=MsoNormal><o:p> </o:p></p>
-
-<p class=MsoNormal style='text-align:justify'>This document describes Version 2
-of a software library called "Climate Model Output Rewriter" (CMOR2),<a
-style='mso-footnote-id:ftn' href="#_ftn1" name="_ftnref" title=""><span
-class=MsoFootnoteReference><span style='mso-special-character:footnote'><![if !supportFootnotes]>[1]<![endif]></span></span></a>
-written in C with access also provided via Fortran 90 and through Python<a
-style='mso-footnote-id:ftn' href="#_ftn2" name="_ftnref" title=""><span
-class=MsoFootnoteReference><span style='mso-special-character:footnote'><![if !supportFootnotes]>[2]<![endif]></span></span></a>.
-<span style="mso-spacerun: yes"> </span>CMOR is used to produce
-CF-compliant<a style='mso-footnote-id:ftn' href="#_ftn3" name="_ftnref" title=""><span
-class=MsoFootnoteReference><span style='mso-special-character:footnote'><![if !supportFootnotes]>[3]<![endif]></span></span></a>
-netCDF<a style='mso-footnote-id:ftn' href="#_ftn4" name="_ftnref" title=""><span
-class=MsoFootnoteReference><span style='mso-special-character:footnote'><![if !supportFootnotes]>[4]<![endif]></span></span></a>
-files.<span style="mso-spacerun: yes">  </span>The structure of the files
-created by CMOR and the metadata they contain fulfill the requirements of many
-of the climate community's standard model experiments (which are referred to
-here as "MIPs"<a style='mso-footnote-id:ftn' href="#_ftn5"
-name="_ftnref" title=""><span class=MsoFootnoteReference><span
-style='mso-special-character:footnote'><![if !supportFootnotes]>[5]<![endif]></span></span></a>
-and include, for example, AMIP, CMIP, CFMIP, PMIP, APE, and IPCC scenario
-runs).<span style="mso-spacerun: yes">   </span><o:p></o:p></p>
-
-<p class=MsoNormal style='text-align:justify'><o:p> </o:p></p>
-
-<p class=MsoNormal style='text-align:justify'>CMOR was not designed to serve as
-an all-purpose writer of CF-compliant netCDF files, but simply to reduce the
-effort required to prepare and manage MIP model output.<span
-style="mso-spacerun: yes">  </span>Although MIPs encourage systematic
-analysis of results across models, this is only easy to do if the model output
-is written in a common format with files structured similarly and with
-sufficient metadata uniformly stored according to a common standard.<span
-style="mso-spacerun: yes">  </span>Individual modeling groups store their
-data in different ways, but if a group can read its own data, then it should
-easily be able to transform the data, using CMOR, into the common format
-required by the MIPs.<span style="mso-spacerun: yes">   </span>The
-adoption of CMOR as a standard code for exchanging climate data will facilitate
-participation in MIPs because after learning how to satisfy the output
-requirements of one MIP, it will be easy to prepare output for other MIPs.<o:p></o:p></p>
-
-<p class=MsoNormal style='text-align:justify'><o:p> </o:p></p>
-
-<p class=MsoNormal style='text-align:justify'>CMOR output has the following
-characteristics:<o:p></o:p></p>
-
-<p class=MsoNormal style='text-align:justify'><o:p> </o:p></p>
-
-<ul style='margin-top:0in' type=disc>
- <li class=MsoNormal style='text-align:justify;mso-list:l21 level1 lfo3;
-     tab-stops:list .5in'>Each file contains a single primary output variable
-     (along with coordinate/grid variables, attributes and other metadata) from
-     a single model and a single simulation (i.e., from a single ensemble
-     member of a single climate experiment).<span style="mso-spacerun:
-     yes">  </span>This method of structuring model output best serves the
-     needs of most researchers who are typically interested in only a few of
-     the many variables in the MIP databases.<span style="mso-spacerun:
-     yes">  </span>Data requests can be satisfied by simply sending the
-     appropriate file(s) without first extracting the individual field(s) of
-     interest.<o:p></o:p></li>
- <li class=MsoNormal style='text-align:justify;mso-list:l21 level1 lfo3;
-     tab-stops:list .5in'>There is flexibility in specifying how many time
-     slices (samples) are stored in a single file. A single file can contain
-     all the time-samples for a given variable and climate experiment, or the
-     samples can be distributed in a sequence of files. <o:p></o:p></li>
- <li class=MsoNormal style='text-align:justify;mso-list:l21 level1 lfo3;
-     tab-stops:list .5in'>Much of the metadata written to the output files is
-     defined in MIP-specific tables of information, which in this document are
-     referred to simply as "MIP tables".<span style="mso-spacerun:
-     yes">  </span>These tables are ASCII files that can be read by CMOR
-     and are typically made available from MIP web sites.<span
-     style="mso-spacerun: yes">  </span>Because these tables contain much
-     of the metadata that is useful in the MIP context, they are the key to
-     reducing the programming burden imposed on the individual users
-     contributing data to a MIP.<span style="mso-spacerun: yes"> 
-     </span>Additional tables can be created as new MIPs are born.<o:p></o:p></li>
- <li class=MsoNormal style='text-align:justify;mso-list:l21 level1 lfo3;
-     tab-stops:list .5in'>For metadata, different MIPs may have different
-     requirements, but these are accommodated by CMOR, within the constraints
-     of the CF convention and as specified in the MIP tables.<o:p></o:p></li>
- <li class=MsoNormal style='text-align:justify;mso-list:l21 level1 lfo3;
-     tab-stops:list .5in'><span style='background:silver;mso-highlight:silver'>CMOR
-     can rely on NetCDF4 (see </span><a
-     href="http://www.unidata.ucar.edu/software/netcdf"><span style='background:
-     silver;mso-highlight:silver'>http://www.unidata.ucar.edu/software/netcdf</span></a><span
-     style='background:silver;mso-highlight:silver'> ) to write the output files
-     and can take advantage of its compression and chunking capabilities. In
-     that case, compression is controlled with the MIP tables using the
-     shuffle, deflate and deflate_level attributes, default values are
-     respectively 1, 1 and 6. It is worth noting that even when using NetCDF4,
-     CMOR2 still produces NETCDF_CLASSIC formatted output. This allows the file
-     generated to be readable by any application that can read NetCDF3 provided
-     they are re-linked against NetCDF4. <span style="mso-spacerun:
-     yes"> </span>When using the NetCDF4 library it is also still possible
-     to write files that can be read through the NetCDF3 library by adding “_3”
-     to the appropriate cmor_setup argument (see below). Either way, CMOR2
-     output NetCDF3 files by default.<span style="mso-spacerun: yes"> 
-     </span>For CMIP5, the NetCDF3/NC_CLASSIC_Model mode is used (and
-     chunking/compression/shuffling is not invoked).<o:p></o:p></span></li>
- <li class=MsoNormal style='text-align:justify;mso-list:l21 level1 lfo3;
-     tab-stops:list .5in'><span style='background:silver;mso-highlight:silver'>CMOR
-     also must be linked against the udunits2 library (see<span
-     class=MsoHyperlink> </span></span><a
-     href="http://my.unidata.ucar.edu/content/%20software/udunits/"><span
-     style='background:silver;mso-highlight:silver'>http://my.unidata.ucar.edu/content/
-     software/udunits/</span></a><span style='background:silver;mso-highlight:
-     silver'>), which enables CMOR to check that the units attribute is correct<a
-     style='mso-footnote-id:ftn' href="#_ftn6" name="_ftnref" title=""><span
-     class=MsoFootnoteReference><span style='mso-special-character:footnote'><![if !supportFootnotes]>[6]<![endif]></span></span></a>.
-     Finally CMOR2 must also be linked against the uuid library (see </span><a
-     href="http://www.ossp.org/pkg/lib/uuid"><span style='background:silver;
-     mso-highlight:silver'>http://www.ossp.org/pkg/lib/uuid</span></a><span
-     style='background:silver;mso-highlight:silver'>) in order to produce a
-     unique tracking number for each file</span>.<span style='background:silver;
-     mso-highlight:silver'> <span style="mso-spacerun: yes"> </span><span
-     style="mso-spacerun: yes"> </span><o:p></o:p></span></li>
-</ul>
-
-<p class=MsoNormal style='text-align:justify'><o:p> </o:p></p>
-
-<p class=MsoNormal style='text-align:justify'>Although the CMOR output adheres
-to a fairly rigid structure, there is considerable flexibility allowed in the
-design of codes that write data through the CMOR functions.<span
-style="mso-spacerun: yes">  </span>Depending on how the source data are
-stored, one might want to structure a code to read and rewrite the data through
-CMOR in several different ways.<span style="mso-spacerun: yes">  </span>Consider,
-for example, a case where data are originally stored in "history"
-files that contain many different fields, but a single time sample.<span
-style="mso-spacerun: yes">   </span>If one were to process several
-different fields through CMOR and one wanted to include many time samples per file,
-then it would usually be more efficient to read all the fields from the single
-input file at the same time, and then distribute them to the appropriate CMOR
-output files, rather than to process all the time-samples for a single field
-and then move on to the next field.<span style="mso-spacerun: yes"> 
-</span>If, however, the original data were stored already by field (i.e., one
-variable per file), then it would make more sense to simply loop through the
-fields, one at a time.<span style="mso-spacerun: yes">  </span>The user is
-free to structure the conversion program in either of these ways (among
-others).<o:p></o:p></p>
-
-<p class=MsoNormal style='text-align:justify'><o:p> </o:p></p>
-
-<p class=MsoNormal style='text-align:justify'>Converting data with CMOR
-typically involves the following steps (with the CMOR function names given in
-parentheses):<o:p></o:p></p>
-
-<p class=MsoNormal style='text-align:justify'><o:p> </o:p></p>
-
-<ul style='margin-top:0in' type=disc>
- <li class=MsoNormal style='text-align:justify;mso-list:l13 level1 lfo5;
-     tab-stops:list .5in'>Initialize CMOR and specify where output will be
-     written and how error messages will be handled (cmor_setup).<o:p></o:p></li>
- <li class=MsoNormal style='text-align:justify;mso-list:l13 level1 lfo5;
-     tab-stops:list .5in'>Provide information directing where output should be
-     placed and identifying the data source, project name, experiment, etc.
-     (cmor_dataset).<o:p></o:p></li>
- <li class=MsoNormal style='text-align:justify;mso-list:l13 level1 lfo5;
-     tab-stops:list .5in'><span style='background:silver;mso-highlight:silver'>Set
-     any additional “dataset” (i.e. global) attributes (cmor_set_cur_dataset
-     function).<span style="mso-spacerun: yes">  </span>Note that for
-     CMIP5 all the required global attributes are normally set by calling other
-     CMOR subroutines, but this subroutine makes it possible for the user to
-     define additional global attributes.<o:p></o:p></span></li>
- <li class=MsoNormal style='text-align:justify;mso-list:l13 level1 lfo5;
-     tab-stops:list .5in'>Define the axes (i.e., the coordinate values)
-     associated with each of the dimensions of the data to be written and
-     obtain "handles", to be used in the next step, which uniquely
-     identify the axes (cmor_axis).<span style="mso-spacerun: yes"> 
-     </span><o:p></o:p></li>
- <li class=MsoNormal style='text-align:justify;mso-list:l13 level1 lfo5;
-     tab-stops:list .5in'><span style='background:silver;mso-highlight:silver'>In
-     the case of non-Cartesian longitude-latitude grids or for “station data”,
-     define the grid and its mapping parameters (cmor_grid and
-     cmor_set_grid_mapping)<o:p></o:p></span></li>
- <li class=MsoNormal style='text-align:justify;mso-list:l13 level1 lfo5;
-     tab-stops:list .5in'>Define the variables to be written by CMOR, indicate
-     which axes are associated with each variable, and obtain
-     "handles", to be used in the next step, which uniquely identify
-     each variable (cmor_variable).<span style="mso-spacerun: yes"> 
-     </span>For each variable defined, this function fills internal table
-     entries containing file attributes passed by the user or obtained from a
-     MIP table, along with coordinate variables and other related information.
-     Thus, nearly all of the file's metadata is collected during this step.<o:p></o:p></li>
- <li class=MsoNormal style='text-align:justify;mso-list:l13 level1 lfo5;
-     tab-stops:list .5in'>Write an array of data that includes one or more time
-     samples for a defined variable (cmor_write).<span style="mso-spacerun:
-     yes">  </span>This step will typically be repeated to output
-     additional variables or to append additional time samples of data.<o:p></o:p></li>
- <li class=MsoNormal style='text-align:justify;mso-list:l13 level1 lfo5;
-     tab-stops:list .5in'>Close one or all files created by CMOR (cmor_close)<o:p></o:p></li>
-</ul>
-
-<p class=MsoNormal style='text-align:justify'><o:p> </o:p></p>
-
-<p class=MsoNormal style='text-align:justify'>There is an additional function
-(cmor_zfactor), which enables one to define metadata associated with
-dimensionless vertical coordinates.<o:p></o:p></p>
-
-<p class=MsoNormal style='text-align:justify'><o:p> </o:p></p>
-
-<p class=MsoNormal style='text-align:justify'>CMOR was designed to reduce the
-effort required of those contributing data to various MIPs.<span
-style="mso-spacerun: yes">  </span>An important aim was to minimize any
-transformations that the user would have to perform on their original data
-structures to meet the MIP requirements.<span style="mso-spacerun: yes"> 
-</span>Toward this end, the code allows the following flexibility (with the MIP
-requirements obtained by CMOR from the appropriate MIP table and automatically
-applied):<o:p></o:p></p>
-
-<p class=MsoNormal style='text-align:justify'><o:p> </o:p></p>
-
-<ul style='margin-top:0in' type=disc>
- <li class=MsoNormal style='text-align:justify;mso-list:l19 level1 lfo14;
-     tab-stops:list .5in'>The input data can be structured with dimensions in
-     any order and with coordinate values either increasing or decreasing
-     monotonically; CMOR will rearrange them to meet the MIP's requirements
-     before writing out the data.<o:p></o:p></li>
- <li class=MsoNormal style='text-align:justify;mso-list:l19 level1 lfo14;
-     tab-stops:list .5in'>The input data and coordinate values can be provided
-     in an array declared to be whatever "type" is convenient for the
-     user (e.g., in the case of coordinate data, the user might pass type
-     “real” values (32-bit floating-point numbers on most platforms) even
-     though the output will be written type double (64-bit IEEE
-     floating-point); CMOR will transform the data to the required type before
-     writing.<o:p></o:p></li>
- <li class=MsoNormal style='text-align:justify;mso-list:l19 level1 lfo14;
-     tab-stops:list .5in'>The input data can be provided in units different
-     from what is required by a MIP.<span style="mso-spacerun: yes"> 
-     </span>If those units can be transformed to the correct units using the
-     udunits (version 2) software (see<span class=MsoHyperlink> </span><a
-     href="http://my.unidata.ucar.edu/content/software/udunits/">http://my.unidata.ucar.edu/content/software/udunits/</a>),
-     then CMOR performs the transformation before writing the data.<span
-     style="mso-spacerun: yes">  </span>Otherwise, CMOR will return an
-     error. <span style='background:silver;mso-highlight:silver'>Time units are
-     handled via the built-in cdtime interface<a style='mso-footnote-id:ftn'
-     href="#_ftn7" name="_ftnref" title=""><span class=MsoFootnoteReference><span
-     style='mso-special-character:footnote'><![if !supportFootnotes]>[7]<![endif]></span></span></a>
-     <o:p></o:p></span></li>
- <li class=MsoNormal style='text-align:justify;mso-list:l19 level1 lfo14;
-     tab-stops:list .5in'>So-called "scalar dimensions" (sometimes
-     referred to as "singleton dimensions") are automatically
-     inserted by CMOR. Thus, for example, the user can provide surface air
-     temperature (at 2 meters) as a function of longitude, latitude, and time,
-     and CMOR adds as a "coordinate" attribute the "height"
-     dimension, consistent with the metadata requirements of CF.<span
-     style="mso-spacerun: yes">  </span>If the model output does not
-     conform to the MIP requirements (e.g., carries temperature at 1.5 m
-     instead of 2 m), then the user can override the MIP table specifications.<o:p></o:p></li>
-</ul>
-
-<p class=MsoNormal style='text-align:justify'><o:p> </o:p></p>
-
-<p class=MsoNormal style='text-align:justify'>The code does not, however,
-include a capability to interpolate data, either in the vertical or
-horizontally.<span style="mso-spacerun: yes">  </span>If data originally
-stored on model levels, is supposed to be stored on standard pressure levels,
-according to MIP specifications, then the user must interpolate before passing
-the data to CMOR.<span style="mso-spacerun: yes">  </span><o:p></o:p></p>
-
-<p class=MsoNormal style='text-align:justify;tab-stops:273.75pt'><o:p> </o:p></p>
-
-<p class=MsoNormal style='text-align:justify;tab-stops:273.75pt'>The output
-resulting from CMOR is "self-describing" and includes metadata summarized
-below, organized by attribute type (global, coordinate, or variable attributes)
-and by its source (specified by the user or in a MIP table, or generated by
-CMOR).<o:p></o:p></p>
-
-<p class=MsoNormal style='text-align:justify;tab-stops:273.75pt'><o:p> </o:p></p>
-
-<p class=MsoNormal style='text-align:justify;tab-stops:273.75pt'><i
-style='mso-bidi-font-style:normal'>Global attributes typically provided by the
-MIP table or generated by CMOR:<o:p></o:p></i></p>
-
-<p class=MsoNormal style='text-align:justify;tab-stops:273.75pt'><o:p> </o:p></p>
-
-<ul style='margin-top:0in' type=disc>
- <li class=MsoNormal style='text-align:justify;mso-list:l23 level1 lfo16;
-     tab-stops:list .5in left 273.75pt'><span style='font-family:"Courier New"'>title,</span>
-     identification of the project, experiment, and table.<o:p></o:p></li>
-</ul>
-
-<ul style='margin-top:0in' type=disc>
- <li class=MsoNormal style='text-align:justify;mso-list:l17 level1 lfo15;
-     tab-stops:list .5in left 273.75pt'><span style='font-family:"Courier New"'>Conventions,</span>
-     (<span style='background:silver;mso-highlight:silver'>'CF-1.4'</span>)<o:p></o:p></li>
- <li class=MsoNormal style='text-align:justify;mso-list:l17 level1 lfo15;
-     tab-stops:list .5in left 273.75pt'><span style='font-family:"Courier New"'>history,</span>
-     any user-provided history along with a "timestamp" generated by
-     CMOR and a statement that the data conform to both the CF standards and
-     those of a particular MIP.<o:p></o:p></li>
- <li class=MsoNormal style='text-align:justify;mso-list:l17 level1 lfo15;
-     tab-stops:list .5in left 273.75pt'><span style='font-family:"Courier New";
-     background:silver;mso-highlight:silver'>project_id</span><span
-     style='background:silver;mso-highlight:silver'>, scientific project that inspired
-     this simulation (e.g., CMIP5)<o:p></o:p></span></li>
- <li class=MsoNormal style='text-align:justify;mso-list:l17 level1 lfo15;
-     tab-stops:list .5in left 273.75pt'><span style='font-family:"Courier New";
-     background:silver;mso-highlight:silver'>table_id</span><span
-     style='background:silver;mso-highlight:silver'>, MIP table used to define
-     variable.<o:p></o:p></span></li>
- <li class=MsoNormal style='text-align:justify;mso-list:l17 level1 lfo15;
-     tab-stops:list .5in left 273.75pt'><span style='font-family:"Courier New"'>experiment</span>,
-     a long name title for the experiment.<span style='font-family:"Courier New"'><o:p></o:p></span></li>
- <li class=MsoNormal style='text-align:justify;mso-list:l17 level1 lfo15;
-     tab-stops:list .5in left 273.75pt'><span style='font-family:"Courier New";
-     background:silver;mso-highlight:silver'>modeling_</span><span
-     style='background:silver;mso-highlight:silver'>realm(s) to which the
-     variable belongs (e.g., ocean, land, atmosphere, etc.).<o:p></o:p></span></li>
- <li class=MsoNormal style='text-align:justify;mso-list:l17 level1 lfo15;
-     tab-stops:list .5in left 273.75pt'><span style='font-family:"Courier New";
-     background:silver;mso-highlight:silver'>tracking_id</span><span
-     style='background:silver;mso-highlight:silver'>, <span
-     style="mso-spacerun: yes"> </span>a unique identification string
-     generated by uuid, which is useful at least within the ESG distributed
-     data archive.<o:p></o:p></span></li>
- <li class=MsoNormal style='text-align:justify;mso-list:l17 level1 lfo15;
-     tab-stops:list .5in left 273.75pt'><span style='font-family:"Courier New";
-     background:silver;mso-highlight:silver'>cmor_version</span><span
-     style='background:silver;mso-highlight:silver'>, version of the library
-     used to generate the files.<o:p></o:p></span></li>
- <li class=MsoNormal style='text-align:justify;mso-list:l17 level1 lfo15;
-     tab-stops:list .5in left 273.75pt'><span style='font-family:"Courier New";
-     background:silver;mso-highlight:silver'>frequency, </span><span
-     style='background:silver;mso-highlight:silver'>the approximate
-     time-sampling interval for a time-series of data.</span><span
-     style='font-family:"Courier New";background:silver;mso-highlight:silver'><o:p></o:p></span></li>
- <li class=MsoNormal style='text-align:justify;mso-list:l17 level1 lfo15;
-     tab-stops:list .5in left 273.75pt'><span style='font-family:"Courier New";
-     background:silver;mso-highlight:silver'>creation_date, </span><span
-     style='background:silver;mso-highlight:silver'>the date and time (UTZ) that
-     the file was created.<o:p></o:p></span></li>
- <li class=MsoNormal style='text-align:justify;mso-list:l17 level1 lfo15;
-     tab-stops:list .5in left 273.75pt'><span style='font-family:"Courier New";
-     mso-bidi-font-family:"Courier New";background:silver;mso-highlight:silver'>product,</span><span
-     style='background:silver;mso-highlight:silver'> a descriptive string that
-     distinguishes among various model data products.</span><span
-     style='font-family:"Courier New";mso-bidi-font-family:"Courier New";
-     background:silver;mso-highlight:silver'><o:p></o:p></span></li>
-</ul>
-
-<p class=MsoNormal style='text-align:justify;tab-stops:273.75pt'><span
-style="mso-spacerun: yes"> </span><o:p></o:p></p>
-
-<p class=MsoNormal style='text-align:justify;tab-stops:273.75pt'><i
-style='mso-bidi-font-style:normal'>Global attributes typically provided by the
-user in a call to a CMOR function:<o:p></o:p></i></p>
-
-<p class=MsoNormal style='text-align:justify;tab-stops:273.75pt'><o:p> </o:p></p>
-
-<ul style='margin-top:0in' type=disc>
- <li class=MsoNormal style='text-align:justify;mso-list:l17 level1 lfo15;
-     tab-stops:list .5in left 273.75pt'><span style='font-family:"Courier New"'>institution</span>,
-     identifying the modeling center contributing the output.<o:p></o:p></li>
- <li class=MsoNormal style='text-align:justify;mso-list:l17 level1 lfo15;
-     tab-stops:list .5in left 273.75pt'><span style='font-family:"Courier New"'>institute_id</span>,
-     a shorter identifying name of the modeling center (which would be
-     appropriate for labeling plots in which results from many models might
-     appear).<o:p></o:p></li>
- <li class=MsoNormal style='text-align:justify;mso-list:l17 level1 lfo15;
-     tab-stops:list .5in left 273.75pt'><span style='font-family:"Courier New"'>source</span>,
-     identifying the model version that generated the output.<o:p></o:p></li>
- <li class=MsoNormal style='text-align:justify;mso-list:l17 level1 lfo15;
-     tab-stops:list .5in left 273.75pt'><span style='font-family:"Courier New"'>contact,</span>
-     providing the name and email of someone responsible for the data<o:p></o:p></li>
- <li class=MsoNormal style='text-align:justify;mso-list:l17 level1 lfo15;
-     tab-stops:list .5in left 273.75pt'><span style='font-family:"Courier New";
-     background:silver;mso-highlight:silver'>model_id</span><span
-     style='background:silver;mso-highlight:silver'>, an acronym that
-     identifies the model used to generate the output.<o:p></o:p></span></li>
- <li class=MsoNormal style='text-align:justify;mso-list:l17 level1 lfo15;
-     tab-stops:list .5in left 273.75pt'><span style='font-family:"Courier New"'>experiment_id</span>,
-     a short name for the experiment.<span style='font-family:"Courier New"'><o:p></o:p></span></li>
- <li class=MsoNormal style='text-align:justify;mso-list:l17 level1 lfo15;
-     tab-stops:list .5in left 273.75pt'><span style='font-family:"Courier New";
-     background:silver;mso-highlight:silver'>forcing</span><span
-     style='background:silver;mso-highlight:silver'>, a list of the “forcing”
-     agents that could cause the climate to change in the experiment.<o:p></o:p></span></li>
- <li class=MsoNormal style='text-align:justify;mso-list:l17 level1 lfo15;
-     tab-stops:list .5in left 273.75pt'><span style='font-family:"Courier New"'>history</span>,
-     providing an "audit trail" for the data, which will be
-     supplemented with CMOR-generated information described above.<o:p></o:p></li>
- <li class=MsoNormal style='text-align:justify;mso-list:l17 level1 lfo15;
-     tab-stops:list .5in left 273.75pt'><span style='font-family:"Courier New"'>references</span>,
-     typically containing documentation of the model and the model simulation.<o:p></o:p></li>
- <li class=MsoNormal style='text-align:justify;mso-list:l17 level1 lfo15;
-     tab-stops:list .5in left 273.75pt'><span style='font-family:"Courier New"'>comment</span>,
-     typically including initialization and spin-up information for the
-     simulation.<o:p></o:p></li>
- <li class=MsoNormal style='text-align:justify;mso-list:l17 level1 lfo15;
-     tab-stops:list .5in left 273.75pt'><span style='font-family:"Courier New"'>realization</span>,
-     an integer distinguishing among simulations that differ only from
-     different equally reasonable initial conditions.<span style="mso-spacerun:
-     yes">  </span>This number should be greater than or equal to 1. <span
-     style='background:silver;mso-highlight:silver'>CMOR will reset this to 0
-     automatically for “fixed” frequency (i.e. time-independent fields)</span><o:p></o:p></li>
- <li class=MsoNormal style='text-align:justify;mso-list:l17 level1 lfo15;
-     tab-stops:list .5in left 273.75pt'><span style='font-family:"Courier New"'>initialization</span>_<span
-     style='font-family:"Courier New"'>method</span>, an integer distinguishing
-     among simulations that differ only in the <i style='mso-bidi-font-style:
-     normal'>method</i> of initialization.<span style="mso-spacerun:
-     yes">  </span>This number should be greater than or equal to 1.<o:p></o:p></li>
- <li class=MsoNormal style='text-align:justify;mso-list:l17 level1 lfo15;
-     tab-stops:list .5in left 273.75pt'><span style='font-family:"Courier New"'>physics</span>_<span
-     style='font-family:"Courier New"'>version</span>, an integer indicating
-     which of several closely related physics versions of a model produced the
-     simulation. <span style='font-family:"Courier New"'><o:p></o:p></span></li>
- <li class=MsoNormal style='text-align:justify;mso-list:l17 level1 lfo15;
-     tab-stops:list .5in left 273.75pt'><span style='font-family:"Courier New";
-     background:silver;mso-highlight:silver'>parent_experiment_id, </span><span
-     style='background:silver;mso-highlight:silver'>a string indicating which
-     experiment this branches from. For CMIP5 this should match the short name
-     of the parent experiment id.<o:p></o:p></span></li>
- <li class=MsoNormal style='text-align:justify;mso-list:l17 level1 lfo15;
-     tab-stops:list .5in left 273.75pt'><span style='font-family:"Courier New";
-     background:silver;mso-highlight:silver'>parent_experiment_rip</span><span
-     style='background:silver;mso-highlight:silver'>, a string </span><span
-     style='color:red'>indicating which member of an ensemble of parent
-     experiment runs this simulation branched from.</span><span
-     style='background:silver;mso-highlight:silver'><o:p></o:p></span></li>
- <li class=MsoNormal style='text-align:justify;mso-list:l17 level1 lfo15;
-     tab-stops:list .5in left 273.75pt'><span style='font-family:"Courier New";
-     mso-bidi-font-family:"Courier New";background:silver;mso-highlight:silver'>branch_time,</span><span
-     style='background:silver;mso-highlight:silver'> time in parent experiment
-     when this simulation started (in the units of the parent experiment). <o:p></o:p></span></li>
-</ul>
-
-<p class=MsoNormal style='text-align:justify;tab-stops:273.75pt'><o:p> </o:p></p>
-
-<p class=MsoNormal style='text-align:justify;tab-stops:273.75pt'><span
-style='background:silver;mso-highlight:silver'>Note: additional global
-attributes can be added by the user via the cmor_set_cur_dataset_attribute
-function (see below).<o:p></o:p></span></p>
-
-<p class=MsoNormal style='text-align:justify;tab-stops:273.75pt'><o:p> </o:p></p>
-
-<p class=MsoNormal style='text-align:justify;tab-stops:273.75pt'><i
-style='mso-bidi-font-style:normal'>Coordinate attributes typically provided by
-a MIP table or generated by CMOR:<o:p></o:p></i></p>
-
-<p class=MsoNormal style='text-align:justify;tab-stops:273.75pt'><o:p> </o:p></p>
-
-<ul style='margin-top:0in' type=disc>
- <li class=MsoNormal style='text-align:justify;mso-list:l6 level1 lfo17;
-     tab-stops:list .5in left 273.75pt'><span style='font-family:"Courier New"'>standard</span>_<span
-     style='font-family:"Courier New"'>name</span>, as defined in the CF
-     standard name table.<o:p></o:p></li>
- <li class=MsoNormal style='text-align:justify;mso-list:l6 level1 lfo17;
-     tab-stops:list .5in left 273.75pt'><span style='font-family:"Courier New"'>units</span>,
-     specifying the units for the coordinate variable.<o:p></o:p></li>
- <li class=MsoNormal style='text-align:justify;mso-list:l6 level1 lfo17;
-     tab-stops:list .5in left 273.75pt'><span style='font-family:"Courier New"'>axis</span>,
-     indicating whether axis is of type x, y, z, t, or none of these.<o:p></o:p></li>
- <li class=MsoNormal style='text-align:justify;mso-list:l6 level1 lfo17;
-     tab-stops:list .5in left 273.75pt'><span style='font-family:"Courier New"'>bounds</span>,
-     (when appropriate) indicating where the cell bounds are stored.<o:p></o:p></li>
- <li class=MsoNormal style='text-align:justify;mso-list:l6 level1 lfo17;
-     tab-stops:list .5in left 273.75pt'><span style='font-family:"Courier New"'>positive</span>,
-     (when appropriate) indicating whether a vertical coordinate increases
-     upward or downward.<o:p></o:p></li>
- <li class=MsoNormal style='text-align:justify;mso-list:l6 level1 lfo17;
-     tab-stops:list .5in left 273.75pt'><span style='font-family:"Courier New"'>formula</span>_<span
-     style='font-family:"Courier New"'>terms</span>, (when appropriate)
-     providing information needed to transform from a dimensionless vertical
-     coordinate to the actual location (e.g., from sigma-level to pressure).<o:p></o:p></li>
-</ul>
-
-<p class=MsoNormal style='text-align:justify;tab-stops:273.75pt'><o:p> </o:p></p>
-
-<p class=MsoNormal style='text-align:justify;page-break-after:avoid;tab-stops:
-273.75pt'><i style='mso-bidi-font-style:normal'>Coordinate or grid mapping
-attributes typically provided by the user in a call to a CMOR function:<o:p></o:p></i></p>
-
-<p class=MsoNormal style='text-align:justify;tab-stops:273.75pt'><o:p> </o:p></p>
-
-<ul style='margin-top:0in' type=disc>
- <li class=MsoNormal style='text-align:justify;mso-list:l17 level1 lfo15;
-     tab-stops:list .5in left 273.75pt'><span style='font-family:"Courier New"'>calendar</span>,
-     (when appropriate) indicating the calendar type assumed by the model.<o:p></o:p></li>
- <li class=MsoNormal style='text-align:justify;mso-list:l17 level1 lfo15;
-     tab-stops:list .5in left 273.75pt'><span style='font-family:"Courier New"'>grid_mapping_name</span><span
-     style='background:silver;mso-highlight:silver'> and the names of various
-     mapping parameters, when necessary to describe grids other than lat-lon.<span
-     style="mso-spacerun: yes">  </span>See CF conventions at: (</span><a
-     href="http://cf-pcmdi.llnl.gov/documents/cf-conventions/1.1/cf-conventions.html#grid-mappings-and-projections"><span
-     style='background:silver;mso-highlight:silver'>http://cf-pcmdi.llnl.gov/documents/cf-conventions/1.1/cf-conventions.html#grid-mappings-and-projections</span></a><span
-     style='background:silver;mso-highlight:silver'> )<o:p></o:p></span></li>
-</ul>
-
-<p class=MsoNormal style='text-align:justify;tab-stops:273.75pt'><o:p> </o:p></p>
-
-<p class=MsoNormal style='text-align:justify;tab-stops:273.75pt'><i
-style='mso-bidi-font-style:normal'>Variable attributes typically provided by a
-MIP table or generated by CMOR:<o:p></o:p></i></p>
-
-<p class=MsoNormal style='text-align:justify;tab-stops:273.75pt'><o:p> </o:p></p>
-
-<ul style='margin-top:0in' type=disc>
- <li class=MsoNormal style='text-align:justify;mso-list:l17 level1 lfo15;
-     tab-stops:list .5in left 273.75pt'><span style='font-family:"Courier New"'>standard</span>_<span
-     style='font-family:"Courier New"'>name</span> as defined in the CF
-     standard name table.<o:p></o:p></li>
- <li class=MsoNormal style='text-align:justify;mso-list:l17 level1 lfo15;
-     tab-stops:list .5in left 273.75pt'><span style='font-family:"Courier New"'>units</span>,
-     specifying the units for the variable.<o:p></o:p></li>
- <li class=MsoNormal style='text-align:justify;mso-list:l17 level1 lfo15;
-     tab-stops:list .5in left 273.75pt'><span style='font-family:"Courier New"'>long</span>_<span
-     style='font-family:"Courier New"'>name</span>, describing the variable and
-     useful as a title on plots.<o:p></o:p></li>
- <li class=MsoNormal style='text-align:justify;mso-list:l17 level1 lfo15;
-     tab-stops:list .5in left 273.75pt'><span style='font-family:"Courier New"'>missing</span>_<span
-     style='font-family:"Courier New"'>value and _FillValue</span>, specifying
-     how missing data will be identified.<o:p></o:p></li>
- <li class=MsoNormal style='text-align:justify;mso-list:l17 level1 lfo15;
-     tab-stops:list .5in left 273.75pt'><span style='font-family:"Courier New"'>cell</span>_<span
-     style='font-family:"Courier New"'>methods</span>, (when appropriate)
-     typically providing information concerning calculation of means or
-     climatologies, which may be supplemented by information provided by the
-     user.<o:p></o:p></li>
- <li class=MsoNormal style='text-align:justify;mso-list:l17 level1 lfo15;
-     tab-stops:list .5in left 273.75pt'><span style='font-family:"Courier New";
-     mso-bidi-font-family:"Courier New";background:silver;mso-highlight:silver'>cell_measures</span><span
-     style='background:silver;mso-highlight:silver'>, when appropriate,
-     indicates the names of the variables containing cell areas and volumes.<o:p></o:p></span></li>
- <li class=MsoNormal style='text-align:justify;mso-list:l17 level1 lfo15;
-     tab-stops:list .5in left 273.75pt'><span style='font-family:"Courier New"'>comment</span>,
-     providing clarifying information concerning the variable (e.g., whether
-     precipitation includes both liquid and solid forms of precipitation).<o:p></o:p></li>
- <li class=MsoNormal style='text-align:justify;mso-list:l17 level1 lfo15;
-     tab-stops:list .5in left 273.75pt'><span style='font-family:"Courier New"'>history</span>,
-     indicating what CMOR has done to the user supplied data (e.g.,
-     transforming its units or rearranging its order to be consistent with the
-     MIP requirements)<o:p></o:p></li>
- <li class=MsoNormal style='text-align:justify;mso-list:l17 level1 lfo15;
-     tab-stops:list .5in left 273.75pt'><span style='font-family:"Courier New"'>coordinates</span>,
-     (when appropriate) supplying either scalar (singleton) dimension
-     information or the name of the labels containing names of geographical
-     regions.<o:p></o:p></li>
- <li class=MsoNormal style='text-align:justify;mso-list:l17 level1 lfo15;
-     tab-stops:list .5in left 273.75pt'><span style='font-family:"Courier New"'>associated_files</span>,
-     files that contain metadata that applies to this variable. <span
-     style='background:silver;mso-highlight:silver'>Presently this attribute
-     points to the gridspec file and the files containing areacella, areacello,
-     and volcello if they’re referred to by the “cell_measures” attribute.<span
-     style="mso-spacerun: yes">  </span>It also includes a URL pointing to
-     the top directory structure where the data will be accessible online.<o:p></o:p></span></li>
- <li class=MsoNormal style='text-align:justify;mso-list:l17 level1 lfo15;
-     tab-stops:list .5in left 273.75pt'><span style='font-family:"Courier New";
-     mso-bidi-font-family:"Courier New";background:silver;mso-highlight:silver'>flag_values</span><span
-     style='background:silver;mso-highlight:silver'> and </span><span
-     style='font-family:"Courier New";mso-bidi-font-family:"Courier New";
-     background:silver;mso-highlight:silver'>flag_meanings</span><span
-     style='background:silver;mso-highlight:silver'><o:p></o:p></span></li>
-</ul>
-
-<p class=MsoNormal style='text-align:justify;tab-stops:273.75pt'><o:p> </o:p></p>
-
-<p class=MsoNormal style='text-align:justify;tab-stops:273.75pt'><i
-style='mso-bidi-font-style:normal'>Variable attributes typically provided by
-the user in a call to a CMOR function:<o:p></o:p></i></p>
-
-<p class=MsoNormal style='text-align:justify;tab-stops:273.75pt'><o:p> </o:p></p>
-
-<ul style='margin-top:0in' type=disc>
- <li class=MsoNormal style='text-align:justify;mso-list:l7 level1 lfo18;
-     tab-stops:list .5in left 273.75pt'><span style='font-family:"Courier New";
-     mso-bidi-font-family:"Courier New";background:silver;mso-highlight:silver'>grid_mapping<o:p></o:p></span></li>
- <li class=MsoNormal style='text-align:justify;mso-list:l7 level1 lfo18;
-     tab-stops:list .5in left 273.75pt'><span style='font-family:"Courier New"'>original</span>_<span
-     style='font-family:"Courier New"'>name</span>, containing the name of the
-     variable as it is known at the user's home institution.<o:p></o:p></li>
- <li class=MsoNormal style='text-align:justify;mso-list:l7 level1 lfo18;
-     tab-stops:list .5in left 273.75pt'><span style='font-family:"Courier New"'>original</span>_<span
-     style='font-family:"Courier New"'>units</span>, the units of the data
-     passed to CMOR.<o:p></o:p></li>
- <li class=MsoNormal style='text-align:justify;mso-list:l7 level1 lfo18;
-     tab-stops:list .5in left 273.75pt'><span style='font-family:"Courier New"'>history</span>,
-     (when appropriate) information concerning processing of the variable prior
-     to sending it to CMOR.<span style="mso-spacerun: yes">  </span>(This
-     information may be supplemented by further history information generated
-     by CMOR.)<o:p></o:p></li>
- <li class=MsoNormal style='text-align:justify;mso-list:l7 level1 lfo18;
-     tab-stops:list .5in left 273.75pt'><span style='font-family:"Courier New"'>comment</span>,
-     (when appropriate) providing miscellaneous information concerning the
-     variable, which will supplement any comment contained in the MIP table.<o:p></o:p></li>
-</ul>
-
-<p class=MsoNormal style='margin-left:.25in;text-align:justify;tab-stops:273.75pt'><o:p> </o:p></p>
-
-<p class=MsoNormal style='text-align:justify;tab-stops:273.75pt'>As is evident
-from the above summary of metadata, a substantial fraction of the information
-is defined in the MIP tables, which explains why writing MIP output through
-CMOR is much easier than writing data without the help of the MIP tables.<span
-style="mso-spacerun: yes">   </span>Besides the attribute
-information, the MIP tables also include information that controls the
-structure of the output and allows CMOR to apply some rudimentary quality
-assurance checks.<span style="mso-spacerun: yes">  </span>Among this
-ancillary information in the MIP tables is the following:<o:p></o:p></p>
-
-<p class=MsoNormal style='text-align:justify;tab-stops:273.75pt'><o:p> </o:p></p>
-
-<ul style='margin-top:0in' type=disc>
- <li class=MsoNormal style='text-align:justify;mso-list:l18 level1 lfo20;
-     tab-stops:list .5in left 273.75pt'>The direction each coordinate should be
-     stored when it is output (i.e., either in order of increasing or
-     decreasing values).<span style="mso-spacerun: yes">  </span>The user
-     need not be concerned with this since, if necessary, CMOR will reorder the
-     coordinate values and the data.<o:p></o:p></li>
- <li class=MsoNormal style='text-align:justify;mso-list:l18 level1 lfo20;
-     tab-stops:list .5in left 273.75pt'>The acceptable values for coordinates
-     (e.g., for a pressure coordinate axis, for example, perhaps the WCRP
-     standard pressure levels).<o:p></o:p></li>
- <li class=MsoNormal style='text-align:justify;mso-list:l18 level1 lfo20;
-     tab-stops:list .5in left 273.75pt'>The acceptable values for various
-     arguments passed to CMOR functions (e.g., acceptable calendars, experiment
-     i.d.'s, etc.)<o:p></o:p></li>
- <li class=MsoNormal style='text-align:justify;mso-list:l18 level1 lfo20;
-     tab-stops:list .5in left 273.75pt'>The "type" of each output
-     array (whether real, double precision, or integer).<span
-     style="mso-spacerun: yes">  </span>The user need not be concerned
-     with this since, if necessary, CMOR will convert the data to the specified
-     type.<o:p></o:p></li>
- <li class=MsoNormal style='text-align:justify;mso-list:l18 level1 lfo20;
-     tab-stops:list .5in left 273.75pt'>The order of the dimensions for output
-     arrays. The user need not be concerned with this since, if necessary, CMOR
-     will reorder the data consistent with the specified dimension order. <o:p></o:p></li>
- <li class=MsoNormal style='text-align:justify;mso-list:l18 level1 lfo20;
-     tab-stops:list .5in left 273.75pt'>The normally applied values for
-     "scalar dimensions" (i.e., "singleton dimensions").<o:p></o:p></li>
- <li class=MsoNormal style='text-align:justify;mso-list:l18 level1 lfo20;
-     tab-stops:list .5in left 273.75pt'>The range of acceptable values for
-     output arrays.<o:p></o:p></li>
- <li class=MsoNormal style='text-align:justify;mso-list:l18 level1 lfo20;
-     tab-stops:list .5in left 273.75pt'>The acceptable range for the spatial
-     mean of the absolute value of all elements in output arrays.<o:p></o:p></li>
- <li class=MsoNormal style='text-align:justify;mso-list:l18 level1 lfo20;
-     tab-stops:list .5in left 273.75pt'>The minimal global attributes required.<o:p></o:p></li>
-</ul>
-
-<p class=MsoNormal style='text-align:justify;tab-stops:273.75pt'><o:p> </o:p></p>
-
-<h1><a name="_Toc129421996"></a><a name="_Toc149385709"><span style='mso-bookmark:
-_Toc129421996'>Acknowledgements</span></a><o:p></o:p></h1>
-
-<p class=MsoNormal style='text-align:justify;tab-stops:273.75pt'><o:p> </o:p></p>
-
-<p class=MsoNormal style='tab-stops:273.75pt'>Several individuals have
-supported the development of the CMOR1 software and provided encouragement,
-including Dean Williams, Dave Bader, and Peter Gleckler.<span
-style="mso-spacerun: yes">  </span>Jonathan Gregory, Jim Boyle, and Bob
-Drach all provided valuable suggestions on how to simplify or in other ways
-improve the design of this software, and we particularly appreciate the time
-they spent reading and thinking about this problem.<span style="mso-spacerun:
-yes">  </span>Jim Boyle additionally helped in a number of other ways,
-including porting CMOR to various platforms.<span style="mso-spacerun:
-yes">  </span>Brian Eaton provided his usual careful and thoughtful responses
-to questions about CF compliance. Finally, we appreciate the encouragement
-expressed by the WGCM for developing CMOR.<o:p></o:p></p>
-
-<p class=MsoNormal style='tab-stops:273.75pt'><o:p> </o:p></p>
-
-<p class=MsoNormal style='tab-stops:273.75pt'>The complete rewrite of CMOR,
-along with the new capabilities added to version 2, was implemented by Charles
-Doutriaux.<span style="mso-spacerun: yes">  </span>We thank Dean Williams,
-Bob Drach, Renata McCoy, Jim Boyle, and the British Atmospheric Data Center
-(BADC). We also thank every one of the “early” adopters of CMOR2 who patiently
-helped us test and debug CMOR2. In particular we would like to thank Jamie
-Kettleborough from the UK Metoffice, Stephen Pascoe of the British Atmospheric
-Data Centre, Joerg Wegner of Zentrum für Marine und Atmosphärische
-Wissenschaften, Yana Malysheva of the Geophysical Fluid Dynamics Laboratory and
-Alejandro Bodas-Salcedo of UK Metoffice for the many lines of codes, bug fixes,
-and sample tests they sent our way.<b style='mso-bidi-font-weight:normal'><span
-style='font-size:14.0pt'> </span><o:p></o:p></b></p>
-
-<b><span style='font-size:16.0pt;font-family:Arial;mso-fareast-font-family:
-"Times New Roman";mso-bidi-font-family:Arial;mso-font-kerning:16.0pt;
-mso-ansi-language:EN-US;mso-fareast-language:EN-US'><br clear=ALL
-style='page-break-before:always'>
-</span></b>
-
-<h1><a name="_Toc129421997"></a><a name="_Toc149385710"><span style='mso-bookmark:
-_Toc129421997'>Description of CMOR Functions</span></a><o:p></o:p></h1>
-
-<p class=MsoNormal><b style='mso-bidi-font-weight:normal'><span
-style='font-size:14.0pt'><o:p> </o:p></span></b></p>
-
-<h2><a name="_Toc129421998"></a><a name="_Toc149385711"><span style='mso-bookmark:
-_Toc129421998'>Preliminary notes:</span></a><o:p></o:p></h2>
-
-<p class=MsoNormal style='text-align:justify'><span style="mso-spacerun:
-yes">  </span>In the following, all arguments should be passed using
-keywords (to improve readability and flexibility in ordering the arguments).<span
-style="mso-spacerun: yes">  </span>Those arguments appearing below that
-are followed by an equal sign may be optional and, if not passed by the user,
-are assigned the default value that follows the equal sign.<span
-style="mso-spacerun: yes">  </span>The information in a MIP-specific input
-table determines whether or not an argument shown in brackets is optional or
-required, and the table provides MIP-specific default values for some
-parameters.<span style="mso-spacerun: yes">  </span>All arguments not in
-brackets and not followed by an equal sign are always required. <o:p></o:p></p>
-
-<p class=MsoNormal style='text-align:justify'><o:p> </o:p></p>
-
-<p class=MsoNormal style='text-align:justify'>Three versions of each function
-are shown below.<span style="mso-spacerun: yes">  </span>The first one is
-for <b style='mso-bidi-font-weight:normal'><span style='color:#00B050'>Fortran</span></b><span
-style='color:#00B050'> (green text)</span><b style='mso-bidi-font-weight:normal'>
-</b>the second for <b style='mso-bidi-font-weight:normal'><span
-style='color:blue'>C</span></b><span style='color:blue'> (blue text)</span>, and
-the third for <b style='mso-bidi-font-weight:normal'><span style='color:#FF660A'>Python</span></b><span
-style='color:#FF660A'> </span><span style='color:#FF6600'>(orange text).<span
-style="mso-spacerun: yes">  </span><span style="mso-spacerun:
-yes"> </span></span>In the following, text that applies to only one of the
-coding languages appears in the appropriate color.<o:p></o:p></p>
-
-<p class=MsoNormal style='text-align:justify'><o:p> </o:p></p>
-
-<p class=MsoNormal style='text-align:justify'>Some of the arguments passed to
-CMOR (e.g., names of variables and axes are only unambiguously defined in the
-context of a specific CMOR table, and in the Fortran version of the functions
-this is specified by one of the function arguments, whereas in the C and Python
-versions it is specified through a call to cmor_load_table and cmor_set_table.<o:p></o:p></p>
-
-<p class=MsoNormal style='text-align:justify'><span style='color:#FF6600'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='text-align:justify'>All functions are type
-“integer”.<span style="mso-spacerun: yes">  </span>If a function results
-in an error,<span style='color:#FF6600'> an “exception” will be raised in the
-Python version (otherwise None will be returned), </span>and in either the
-Fortran or C versions, the error will be indicated by the integer returned by
-the function itself.<span style="mso-spacerun: yes">  </span><span
-style='color:blue'>In C an integer other than 0 will be returned,</span><span
-style='color:#FF6600'> </span><span style='color:#00B050'>and in Fortran errors
-will result in a negative integer (except in the case of cmor_grid, which will
-return a positive integer).<o:p></o:p></span></p>
-
-<p class=MsoNormal style='text-align:justify'><span style='color:#FF6600'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='text-align:justify'>If no error is encountered, some
-functions will return information needed by the user in subsequent calls to
-CMOR.<span style="mso-spacerun: yes">  </span>In almost all cases this
-information is indicated by the value of a single integer that in Fortran and
-Python is returned as the value of the function itself, whereas in C it is
-returned as an output argument).<span style="mso-spacerun: yes"> 
-</span>There are two cases in the Fortran version of CMOR, however, when a
-string argument may be set by CMOR (cmor_close and
-cmor_create_output_path).<span style="mso-spacerun: yes">  </span>These are
-the only cases when the value of any of the Fortran function’s arguments might
-be modified by CMOR.<span style="mso-spacerun: yes">    
-</span><o:p></o:p></p>
-
-<p class=MsoNormal style='text-align:justify'><o:p> </o:p></p>
-
-<h2><a name="_Toc129421999"></a><a name="_Toc149385712"><span style='mso-bookmark:
-_Toc129421999'>Setting up CMOR</span></a><o:p></o:p></h2>
-
-<h3><a name="_Toc129422000"></a><a name="_Toc149385713"><span style='mso-bookmark:
-_Toc129422000'>Initialize CMOR: cmor_setup</span></a><o:p></o:p></h3>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in;page-break-after:
-avoid'><o:p> </o:p></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in;page-break-after:
-avoid'><span style='color:#00B050'>Fortran: error_flag =
-cmor_setup(inpath='./', netcdf_file_action=CMOR_PRESERVE,
-set_verbosity=CMOR_NORMAL, exit_control=CMOR_NORMAL, logfile,
-create_subdirectories)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in;page-break-after:
-avoid'><span style='color:blue'>C: error_flag = cmor_setup(char *inpath, int
-*netcdf_file_action, int *set_verbosity, int *exit_control, char*logfile, int
-*create_subdirectories)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in;page-break-after:
-avoid'><span style='color:#FF6600'>Python: setup(inpath='.',
-netcdf_file_action=CMOR_PRESERVE, set_verbosity=CMOR_NORMAL,
-exit_control=CMOR_NORMAL, logfile=None, create_subdirectories=1)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='text-align:justify'><o:p> </o:p></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-align:justify'><i
-style='mso-bidi-font-style:normal'>Description</i>: Initialize CMOR, specify
-path to MIP table(s) that will be read by CMOR, specify whether existing output
-files will be overwritten, and specify how error messages will be handled<o:p></o:p></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-align:justify'><o:p> </o:p></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-align:justify'><i
-style='mso-bidi-font-style:normal'>Arguments</i>: <o:p></o:p></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'>[inpath] = a character string specifying the path to the directory where
-the needed MIP-specific tables reside.<o:p></o:p></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'>[netcdf_file_action] = controls handling of existing netCDF files.<span
-style="mso-spacerun: yes">  </span>If the value passed is CMOR_REPLACE, a
-new file will be created; any existing file with the same name as the one CMOR
-is trying to create will be overwritten.<span style="mso-spacerun: yes"> 
-</span>If the value is CMOR_APPEND, an existing file will be appended; if the
-file does not exist, it will be created.<span style="mso-spacerun: yes"> 
-</span>If the value is CMOR_PRESERVE, a new file will be created unless a file
-by the same name already exists, in which case the program will error exit.<a
-style='mso-footnote-id:ftn' href="#_ftn8" name="_ftnref" title=""><span
-class=MsoFootnoteReference><span style='color:#00B050'><span style='mso-special-character:
-footnote'><![if !supportFootnotes]>[8]<![endif]></span></span></span></a> <span
-style='background:silver;mso-highlight:silver'>To generate a NetCDF file in the
-“CLASSIC” NetCDF3 format, a “_3” should be appended to the above parameters
-(e.g., CMOR_APPEND would become CMOR_APPEND_3). To generate a NetCDF file in
-the “CLASSIC” NetCDF4 format, a “_4” should be appended to the above parameters
-(e.g., CMOR_APPEND would become CMOR_APPEND_4), this allows the user to take
-advantage of NetCDF4 compression and chunking capabilities. The default values (no
-underscore) are aliased to the _3 values (satisfying the requirements of CMIP5).</span>
-<o:p></o:p></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'>[set_verbosity] controls how informational messages and error messages
-generated by CMOR are handled.<span style="mso-spacerun: yes">  </span>If
-set_verbosity=CMOR_NORMAL, errors and warnings will be sent to the standard error
-device (typically the user's screen). If verbosity=CMOR_QUIET, then only error
-messages will be sent (and warnings will be suppressed).<span
-style="mso-spacerun: yes">  </span><o:p></o:p></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-indent:-.5in'>[exit_control]
-determines if errors will trigger program to exit: CMOR_EXIT_ON_MAJOR = stop
-only on critical error; CMOR_NORMAL = stop only if severe errors;
-CMOR_EXIT_ON_WARNING = stop even after minor errors detected.<o:p></o:p></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-indent:-.5in'><span
-style='background:silver;mso-highlight:silver'>[logfile] where CMOR will write
-its messages -- default is “standard error” (stderr).</span><span
-style="mso-spacerun: yes">  </span><o:p></o:p></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-indent:-.5in'><span
-style='background:silver;mso-highlight:silver'>[create_subdirectories] do we
-want to create the correct path subdirectory structure or simply dump the files
-wherever cmor_dataset will point to.</span><span style="mso-spacerun:
-yes">  </span><o:p></o:p></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'><o:p> </o:p></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'><i style='mso-bidi-font-style:normal'>\Returns upon success</i>: <o:p></o:p></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify'><span
-style='color:#00B050'>Fortran: 0 <o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify'><span
-style='color:blue'>C: 0 <o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify'><span
-style='color:#FF6600'>Python: None <o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify'><o:p> </o:p></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'><o:p> </o:p></p>
-
-<h2><a name="_Toc129422001"></a><a name="_Toc149385714"><span style='mso-bookmark:
-_Toc129422001'>Dealing with Dataset</span></a><o:p></o:p></h2>
-
-<h3><a name="_Toc129422002"></a><a name="_Toc149385715"><span style='mso-bookmark:
-_Toc129422002'>Define a Dataset: cmor_dataset</span></a><o:p></o:p></h3>
-
-<p class=MsoNormal style='text-align:justify;page-break-after:avoid'><o:p> </o:p></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in;page-break-after:
-avoid'><span style='color:#00B050'>Fortran: error_flag = cmor_dataset(outpath,
-experiment_id, institution, source, calendar, [realization=1], [contact],
-[history], [comment], [references], [leap_year], [leap_month], [month_lengths],
-[model_id], [forcing],<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;page-break-after:avoid'><span
-style='color:#00B050'>[initialization_method], [physics_version], [institute_id],
-[parent_experiment_id], [branch_time], [parent_experiment_rip])<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in;page-break-after:
-avoid'><span style='color:blue'>C: error_flag = cmor_dataset(char *outpath,
-char *experiment_id, char *institution, char *source,<span style="mso-spacerun:
-yes">   </span>char *calendar, int realization, char *contact,<span
-style="mso-spacerun: yes">  </span>char *history,<span
-style="mso-spacerun: yes">  </span>char *comment, char *references, int
-leap_year, int leap_month, int month_lengths[12], char *model_id, char *forcing,<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;page-break-after:avoid'><span
-style='color:blue'>int initialization_method, int physics_version, char
-*institute_id, char *parent_experiment_id, double *branch_time, char
-*parent_experiment_rip)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in;page-break-after:
-avoid'><span style='color:#FF6600'>Python: dataset(experiment_id, institution,
-source, calendar, outpath='.', realization=1, contact="",
-history="", comment="", references="",
-leap_year=None, leap_month=None, month_lengths=None, model_id=””, forcing=””,<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;page-break-after:avoid'><span
-style='color:#FF6600'>initialization_method=None, physics_version=None,
-institute_id=””, parent_experiment_id=””, branch_time=0.,
-parent_experiment_rip=””)</span><o:p></o:p></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-align:justify;text-indent:-.5in'><o:p> </o:p></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-align:justify'><i
-style='mso-bidi-font-style:normal'>Description</i>: This function provides
-information to CMOR that is common to all output files that will be
-written.<span style="mso-spacerun: yes">  </span>The "dataset"
-defined by this function refers to some or all of the output from a single
-model simulation (i.e., output from a single realization of a single experiment
-from a single model).<span style="mso-spacerun: yes">  </span>Only one
-dataset can be defined at any time, but the dataset can be closed (by calling
-cmor_close()), and then another dataset can be defined by calling cmor_dataset.
-<span style='background:silver;mso-highlight:silver'>Note that after a new
-dataset is defined, all axes and variables must be defined; axes and variables
-defined earlier are not associated with the new dataset. </span><o:p></o:p></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'><o:p> </o:p></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'><i style='mso-bidi-font-style:normal'>Arguments</i>:<o:p></o:p></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'>outpath = path where all output files in this dataset will be written
-(including both model output netCDF files and log and error files).<span
-style="mso-spacerun: yes">  </span>The log and error files will be placed
-in this directory, but the model output files will be placed in
-subdirectories.<span style="mso-spacerun: yes">  </span>By default the
-subdirectory tree will be generated by CMOR, if necessary, consistent with the
-following <span style='background:silver;mso-highlight:silver'>structure:
-<activity>/ <product>/<institute_id>/<model_id>/<experiment>/<frequency>/
-<modeling_realm>/<variable_name>/<ensemble member> <o:p></o:p></span></p>
-
-<p class=MsoNormal style='text-align:justify'><span style='background:silver;
-mso-highlight:silver'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'><span style='background:silver;mso-highlight:silver'><span
-style='mso-tab-count:1'>            </span>Notes:<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.25in;text-align:justify;text-indent:
--.25in;mso-list:l2 level1 lfo37'><![if !supportLists]><span style='background:
-silver;mso-highlight:silver'><span style='mso-list:Ignore'>1)<span
-style='font:7.0pt "Times New Roman"'>    </span></span></span><![endif]><span
-style='background:silver;mso-highlight:silver'>CMOR will check that the
-directory does exist, that it is a directory and that you do have read/write
-permissions.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.25in;text-align:justify;text-indent:
--.25in;mso-list:l2 level1 lfo37'><![if !supportLists]><span style='mso-list:
-Ignore'>2)<span style='font:7.0pt "Times New Roman"'>    </span></span><![endif]><span
-style='background:silver;mso-highlight:silver'>One can turn off the creation of
-the subdirectories via the keyword “create_subdirectories” in the cmor_setup
-call.</span> <o:p></o:p></p>
-
-<p class=MsoNormal style='margin-left:1.25in;text-align:justify;text-indent:
--.25in;mso-list:l2 level1 lfo37'><![if !supportLists]><span style='mso-list:
-Ignore'>3)<span style='font:7.0pt "Times New Roman"'>    </span></span><![endif]><span
-style='background:silver;mso-highlight:silver'>The necessary information is
-sent to CMOR as arguments of either cmor_dataset or cmor_variable Other
-attributes can also be set via the command: cmor_set_cur_dataset_attribute.</span><o:p></o:p></p>
-
-<p class=MsoNormal style='text-align:justify'><o:p> </o:p></p>
-
-<p class=MsoNormal style='margin-left:2.0in;text-align:justify;text-indent:
--.5in'><i style='mso-bidi-font-style:normal'><span style='background:silver;
-mso-highlight:silver'>frequency</span></i><span style='background:silver;
-mso-highlight:silver'> is determined from the “approximate_interval” defined in
-the MIP-specific table where the variable that will be written is found.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:2.0in;text-align:justify;text-indent:
--.5in'><i style='mso-bidi-font-style:normal'><span style='background:silver;
-mso-highlight:silver'>modeling_realm</span></i><span style='background:silver;
-mso-highlight:silver'> is read from the MIP-specific table where the variable
-that will be written is found, If there is no modeling_realm associated
-specifically with the variable, the default value defined for the table itself
-will be used. <o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'>experiment_id <span style="mso-spacerun: yes"> </span>= character
-string identifying the experiment within the project that generated the data
-(e.g., 'control', 'perturbation', etc.)<span style="mso-spacerun: yes"> 
-</span>See individual MIP home pages for the official experiment designations
-(or see the MIP-table list of "expt_id_ok" acceptable i.d.'s).<span
-style="mso-spacerun: yes">  </span>Either the short “experiment i.d.” or
-the longer “experiment name” may be passed to CMOR. [For CMIP5,<span
-style='color:red'> the experiment_id’s are specified in the controlled
-vocabulary found in the table column labeled “Short<span style="mso-spacerun:
-yes">  </span>Name of Experiment” in Appendix 1.1 of the </span><a
-href="http://cmip-pcmdi.llnl.gov/cmip5/docs/cmip5_data_reference_syntax.pdf">DRS
-document</a><span style='color:red'>.]</span><o:p></o:p></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'>institution = character string identifying the institution that
-generated the data [e.g., 'NCAR (National Center for Atmospheric Research,
-Boulder, CO, USA)']<o:p></o:p></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'>source = character string <span style='background:silver;mso-highlight:
-silver'>fully</span> identifying the model <span style='background:silver;
-mso-highlight:silver'>and</span> version <span style='background:silver;
-mso-highlight:silver'>used to generate the output.<span style="mso-spacerun:
-yes">  </span>The first portion of the string should be a copy of the
-global attribute “model_id”.</span><span style="mso-spacerun: yes"> 
-</span>Additionally, this attribute must include the year (i.e., model vintage)
-when this model version was first used in a scientific application.<span
-style="mso-spacerun: yes">  </span>Finally, it should include information
-concerning the component models.<span style="mso-spacerun: yes"> 
-</span>The following template should be <span style='background:silver;
-mso-highlight:silver'>followed</span> in constructing this string: '<i
-style='mso-bidi-font-style:normal'>[model<span style='background:silver;
-mso-highlight:silver'>_id</span>] [year] </i>atmosphere: <i style='mso-bidi-font-style:
-normal'>[model_name] </i>(<i style='mso-bidi-font-style:normal'>[technical_name],
-[resolution_and_levels]</i>); ocean: <i style='mso-bidi-font-style:normal'>[model_name]
-</i>(<i style='mso-bidi-font-style:normal'>[technical_name],
-[resolution_and_levels]</i>); sea ice: <i style='mso-bidi-font-style:normal'>[model_name]
-</i>(<i style='mso-bidi-font-style:normal'>[technical_name])</i>; land: <i
-style='mso-bidi-font-style:normal'>[model_name] </i>(<i style='mso-bidi-font-style:
-normal'>[technical_name])'</i>' <span style='background:silver;mso-highlight:
-silver'>For some models, it may not make much sense to include all these
-components, and nothing following “[year]” is absolutely mandatory.</span> As
-an example, "source" might contain the string: 'CCSM2 2002
-atmosphere: CAM2 (cam2_0_brnchT_itea_2, T42L26); ocean:<span
-style="mso-spacerun: yes">  </span>POP (pop2_0_ver_1.4.3, 2x3L15); sea
-ice: CSIM4; land: CLM2.0'.<span style="mso-spacerun: yes">  </span>For
-some models it might be appropriate to list only a single component, in which
-case the descriptor (e.g., 'atmosphere') may be omitted along with the other
-model components (e.g., for a CFMIP aquaplanet experiment,:'CAM2 2002
-(cam2_0_brnchT_itea_2, T42L26)'.<span style="mso-spacerun: yes"> 
-</span>Additional explanatory information may follow the required information.<o:p></o:p></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'>calendar = CF-compliant calendar specification (e.g., ‘gregorian’,
-'noleap', etc.)<span style="mso-spacerun: yes">  </span>This argument must
-be included even in the case of a non-standard calendar, in which case it must
-not be given one of the calendars currently defined by CF ('gregorian',
-'standard', 'proleptic_gregorian', 'noleap', '365_day', '360_day', 'julian',
-and 'none'), and it must not be completely blank or a null string. <span
-style='color:red'>For paleoclimate simulations, calendar might, for example, be
-given the value “21 kyr B.P.”<span style="mso-spacerun: yes">  </span>For
-non-standard calendars include the month_lengths, and, as needed, leap_year,
-and leap_month attributes.</span><o:p></o:p></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'>[realization] = <span style='color:red'>an integer (≥1) distinguishing
-among members of an ensemble of simulations (e.g., 1, 2, 3, etc.).<span
-style="mso-spacerun: yes">  </span>If only a single simulation was
-performed, then it is recommended that realization=1. </span><span
-style='background:silver;mso-highlight:silver'>CMOR will reset realization to 0
-automatically for “fixed” frequency (i.e. time-independent) fields</span>.<span
-style="mso-spacerun: yes">  </span>[<span style='color:red'>Note that in
-CMIP5 if two different simulations were started from the same initial
-conditions, the same realization number should be used for both
-simulations.<span style="mso-spacerun: yes">  </span>For example if a
-historical run with “natural forcing” only and another historical run that
-includes anthropogenic forcing were initiated from the same point in a control
-run, both should be assigned the same realization.<span style="mso-spacerun:
-yes">  </span>Also, each so-called RCP (future scenario) simulation should
-normally be assigned the same realization integer as the historical run from
-which it was initiated.<span style="mso-spacerun: yes">  </span>This will
-allow users to easily splice together the appropriate historical and future
-runs.<span style="mso-spacerun: yes">  </span>A similar convention should
-be followed, when appropriate, with other simulations (e.g., the decadal
-simulations).<span style="mso-spacerun: yes">  </span>Note that for the
-“Transpose AMIP” project, </span>the “realization” number is used to
-distinguish among the 16 members of each of 4 suites of runs (i.e., the 4
-“seasons”) generated from different observed conditions, spaced 30 hours
-apart.<span style="mso-spacerun: yes">  </span>So, for example, the
-16-member ensemble of runs initialized at 00Z on 15 Oct 2008, 06Z 16 Oct 2008,
-12Z 17 Oct 2008, and so-on, would be assigned “r1”, “r2”, “r3”, etc.]<o:p></o:p></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'>[contact] = name and contact information (e.g., email, address, phone
-number) of person who should be contacted for more information about the data.<o:p></o:p></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'>[history] = audit trail for modifications to the original data, each
-modification typically preceded by a "timestamp".<span
-style="mso-spacerun: yes">   </span>The "history" attribute
-provided here will be a global one and should not depend on which variable is
-contained in the file.<span style="mso-spacerun: yes">  </span>A
-variable-specific "history" can also be included in calling
-cmor_variable, described below.<o:p></o:p></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'>[comment] = miscellaneous information about the data or methods used to
-produce it.<span style="mso-spacerun: yes">  </span>Each MIP may encourage
-the user to provide different information here.<span style="mso-spacerun:
-yes">  </span>For example, the user may be asked to include a description
-of how the initial conditions for a simulation were specified and how the model
-was spun-up (including the length of the spin-up period).<o:p></o:p></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'>[references] = Published or web-based references that describe the data
-or methods used to produce it.<span style="mso-spacerun: yes"> 
-</span>Typically, the user should provide references describing the model
-formulation here.<o:p></o:p></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'>[leap_year] = for non-standard calendars (otherwise omit), an integer,
-indicating an example of a leap year.<o:p></o:p></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'>[leap_month] = for non-standard calendars (otherwise omit), an integer
-in the range 1-12, specifying which month is lengthened by a day in leap years
-(1=January).<o:p></o:p></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'>[month_lengths] = for non-standard calendars (otherwise omit), an
-integer vector of size 12, specifying the number of days in the months from
-January through December (in a non-leap year).<o:p></o:p></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'><span style='background:silver;mso-highlight:silver'>[model_id] = a
-string containing an acronym that identifies the model used to generate the
-output<a name="_Ref102799275">.</a><a style='mso-footnote-id:ftn' href="#_ftn9"
-name="_ftnref" title=""><span style='mso-bookmark:_Ref102799275'><span
-class=MsoFootnoteReference><span style='mso-special-character:footnote'><![if !supportFootnotes]>[9]<![endif]></span></span></span></a><span
-style='mso-bookmark:_Ref102799275'></span> For CMIP5, the model_id should be
-officially approved by the CMIP Panel (through PCMDI).<span
-style="mso-spacerun: yes">  </span>It should be as short as possible, so
-that it can be used, for example, in labeling curves on multi-model plots.<span
-style="mso-spacerun: yes">  </span>For examples of model_ids from CMIP3,
-see http://www-pcmdi.llnl.gov/ipcc/model_documentation/ipcc_model_documentation.php.<span
-style="mso-spacerun: yes">  </span>The acronym may include the acronym of
-the modeling center and the model name/version separated by a hyphen (e.g., “</span><span
-style='font-size:10.0pt;font-family:Arial;mso-bidi-font-family:Arial;
-background:silver;mso-highlight:silver'>IPSL-CM4”), </span><span
-style='background:silver;mso-highlight:silver'>but it may be o.k. to omit the
-modeling center.<span style="mso-spacerun: yes">  </span>Please note that
-you might in the future want to submit results from a successor to the present
-model, so if appropriate, you may want to indicate a model version, but please
-keep it simple e.g., CCSM4, not CCSM4.1.2.<span style="mso-spacerun:
-yes">  </span>Full version information will appear in the “source” global
-attribute described above.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'><span style='background:silver;mso-highlight:silver'>[forcing] = a
-string containing a list of the “forcing” agents that could cause the climate
-to change in the experiment.<sup>9</sup> A forcing agent will show some secular
-variation due to prescribed changes in concentration or emissions (or in the
-case of land-use, change in prescription of surface conditions).<span
-style="mso-spacerun: yes">  </span>Sometimes the change will be due to
-emissions of a precursor species that relatively quickly becomes transformed
-into the forcing agent itself (e.g., transformation of SO2 emissions to sulfate
-aerosol.<span style="mso-spacerun: yes">  </span>Changes in composition
-resulting from the simulated climate change itself should not be counted as
-“forcing”; they are regarded as feedbacks.<span style="mso-spacerun:
-yes">  </span>For a control run with no variation in radiative forcing or
-for any other experiment for which there are no externally imposed changes in
-radiative forcing agents, set this to “N/A”.<span style="mso-spacerun:
-yes">  </span>Otherwise, the forcing should be expressed as a comma
-separated list of identifying strings that are part of the so-called DRS controlled
-vocabulary described in Appendix 1.2 of the <a
-href="http://cmip-pcmdi.llnl.gov/cmip5/docs/cmip5_data_reference_syntax.pdf"><span
-style='color:windowtext;text-decoration:none;text-underline:none'>DRS document</span></a>.
-Within or following this machine-interpretable list may be text enclosed in
-parentheses providing further information. Use the terms in Appendix 1.2 that
-are most specific (i.e., avoid “Nat” and “Ant”).<span style="mso-spacerun:
-yes">  </span>If, for example, only CO2, methane, direct effects of
-sulfate aerosols, tropospheric and stratospheric ozone, and solar irradiance
-varied, then specify “GHG, SD, Oz, Sl (GHG includes only CO2 and methane)”.
-Valid forcings are enforced via the tables.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'><span style='background:silver;mso-highlight:silver'>[initialization_method]
-= an integer (≥1) referring to the initialization method used or different
-observational datasets used to initialize. If only a single method and dataset
-was used to initialize the model, then this argument should normally be given
-the value 1.<span style="mso-spacerun: yes">  </span>For fields appearing
-in table “fx” in the <a
-href="http://pcmdi-cmip.llnl.gov/cmip5/docs/standard_output.pdf"><span
-style='color:windowtext;text-decoration:none;text-underline:none'>CMIP5
-Requested Output</span></a>, set initialization_method=0 (violating the general
-rule that it should be a positive definite integer).<span style="mso-spacerun:
-yes">  </span>See the <a
-href="http://cmip-pcmdi.llnl.gov/cmip5/docs/cmip5_data_reference_syntax.pdf"><span
-style='color:windowtext;text-decoration:none;text-underline:none'>DRS document</span></a>
-for guidance on assigning initialization_method. In C passing 0 means omitting
-it.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'><span style='background:silver;mso-highlight:silver'>[physics_version] =
-an integer (≥1) referring to the physics version used by the model<span
-style="mso-spacerun: yes">  </span>If there is only one physics version of
-the model, then this argument should be normally given the value 1. Note that
-model versions that are substantially different should be given a different
-“model_id”; assigning a different “physics_version” should be reserved for
-closely-related model versions (e.g., as in a “perturbed physics” ensemble) or
-for the same model, but with different forcing or feedbacks active.<span
-style="mso-spacerun: yes">  </span>In CMIP5, one would distinguish, for
-example, among runs forced by different combinations of “forcing” agents (as
-called for under the “historicalMisc” experiment – experiment 7.3) by assigning
-different values to physics_version.</span><span style='color:red'> </span><span
-style='background:silver;mso-highlight:silver'><span style="mso-spacerun:
-yes"> </span>In C passing 0 means omitting it<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'><span style='background:silver;mso-highlight:silver'>[institute_id] = a
-short acronym describing “institution” (e.g., ‘GFDL’)<span style="mso-spacerun:
-yes">  </span>[For CMIP5, the institute_id should be officially approved
-by the CMIP Panel (through PCMDI).]</span><span style='color:red'><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'><span style='background:silver;mso-highlight:silver'>[parent_experiment_id]
-= experiment_id indicating which experiment this simulation branched from.<span
-style="mso-spacerun: yes">  </span>This should match the experiment_id of
-the parent unless the “parent” is irrelevant, in which case this should be set
-to “N/A”.<span style="mso-spacerun: yes">  </span>The experiment_id’s can
-be found in the table column labeled “Short Name of Experiment” in Appendix 1.1
-of the <a
-href="http://cmip-pcmdi.llnl.gov/cmip5/docs/cmip5_data_reference_syntax.pdf"><span
-style='color:windowtext;text-decoration:none;text-underline:none'>DRS document</span></a>.
-</span><span style="mso-spacerun: yes"> </span><span style='background:
-silver;mso-highlight:silver'>Please pass “N/A” if Not Applicable.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'><span style='background:silver;mso-highlight:silver'>[branch_time] = time
-in parent experiment when this simulation started (expressed in the units of
-the parent experiment). [See parent_experiment_id for more information about
-the “parent”.]<span style="mso-spacerun: yes">  </span>For example, if the
-child run were spun off from a control run at a time of “2000” in the control
-run, and the time units in the control run were “days since 500-01-01”, then
-regardless of the units in the child experiment, the user would store
-branch_time=2000 (i.e., this time should be relative to the basetime of the
-control, not relative to a basetime of 0-01-01 and not relative to the basetime
-of the child).<span style="mso-spacerun: yes">  </span>The branch_time
-should be set to 0.0 if not applicable (for example an AMIP run or a control
-run that was not initiated from another run). <o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'><span style='background:silver;mso-highlight:silver'>[parent_experiment_rip]
-= realization/initialization/physics identifier indicating which member of an
-ensemble of parent experiment runs this simulation branched from.<span
-style="mso-spacerun: yes">  </span>This identifier should be defined even
-when only a single parent experiment simulation was performed, but if
-parent_experiment_id=”N/A”, then parent_experiment_rip should also be set to
-“N/A”.<span style="mso-spacerun: yes">  </span>The “rip” value is
-constructed from the “realization”, “initialization_method”, and
-“physics_version” of the parent experiment, using the template
-“r<N>i<M>p<L>” to define the ensemble member.<span
-style="mso-spacerun: yes">  </span>This template is described under
-“ensemble member” in the <a
-href="http://cmip-pcmdi.llnl.gov/cmip5/docs/cmip5_data_reference_syntax.pdf"><span
-style='color:windowtext;text-decoration:none;text-underline:none'>DRS document</span></a>.<span
-style="mso-spacerun: yes">  </span>When possible and when not
-inappropriate, the child experiment should inherit the “rip” value from the
-parent.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='text-align:justify;text-indent:.5in'><o:p> </o:p></p>
-
-<p class=MsoNormal style='text-align:justify;text-indent:.5in'><i
-style='mso-bidi-font-style:normal'>Returns upon success</i>: <o:p></o:p></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify'><span
-style='color:#00B050'>Fortran: 0 <o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify'><span
-style='color:blue'>C: 0 <o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify'><span
-style='color:#FF6600'>Python: None <o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='color:#99CC00'><o:p> </o:p></span></p>
-
-<h3><a name="_Toc129422003"></a><a name="_Toc149385716"><span style='mso-bookmark:
-_Toc129422003'>Define a Dataset Attribute: cmor_set_cur_dataset_attribute</span></a><o:p></o:p></h3>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'><o:p> </o:p></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='color:#00B050;background:silver;mso-highlight:silver'>Fortran:
-error_flag = cmor_set_cur_dataset_attribute(name,value)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='color:blue;background:silver;mso-highlight:silver'>C: error_flag =
-cmor_set_cur_dataset_attribute(char *name, char *value, int optional) <o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='color:#FF6600;background:silver;mso-highlight:silver'>Python: set_cur_dataset_attribute(name,value)</span><span
-style='background:silver;mso-highlight:silver'> <o:p></o:p></span></p>
-
-<p class=MsoNormal style='text-align:justify'><span style='background:silver;
-mso-highlight:silver'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-align:justify'><i
-style='mso-bidi-font-style:normal'><span style='background:silver;mso-highlight:
-silver'>Description</span></i><span style='background:silver;mso-highlight:
-silver'>: Associate a global attribute with the current dataset.<span
-style="mso-spacerun: yes">  </span>In CMIP5, it should not normally be
-necessary to call this function <o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'><span style='background:silver;mso-highlight:silver'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'><i style='mso-bidi-font-style:normal'><span style='background:silver;
-mso-highlight:silver'>Arguments</span></i><span style='background:silver;
-mso-highlight:silver'>:<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'><span style='background:silver;mso-highlight:silver'>name = name of the global
-attribute to set.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'><span style='background:silver;mso-highlight:silver'>value = character
-string containing the value of this attribute.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-indent:-.5in'><span
-style='color:blue;background:silver;mso-highlight:silver'>optional = an
-argument that is ignored.<span style="mso-spacerun: yes"> 
-</span>(Internally, CMOR calls this function and needs this argument.)<o:p></o:p></span></p>
-
-<p class=MsoNormal><span style='color:blue;background:silver;mso-highlight:
-silver'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='text-align:justify;text-indent:.5in'><i
-style='mso-bidi-font-style:normal'><span style='background:silver;mso-highlight:
-silver'>Returns upon success</span></i><span style='background:silver;
-mso-highlight:silver'>: <o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify'><span
-style='color:#00B050;background:silver;mso-highlight:silver'>Fortran: 0 <o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify'><span
-style='color:blue;background:silver;mso-highlight:silver'>C: 0 <o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify'><span
-style='color:#FF6600;background:silver;mso-highlight:silver'>Python: None</span><span
-style='color:#FF6600'> <o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'><span style='color:#FF6600;background:silver;mso-highlight:silver'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'><span style='color:#FF6600;background:silver;mso-highlight:silver'><o:p> </o:p></span></p>
-
-<h3><a name="_Toc129422004"></a><a name="_Toc149385717"><span style='mso-bookmark:
-_Toc129422004'>Retrieve<span style="mso-spacerun: yes">  </span>a Dataset
-Attribute: cmor_get_cur_dataset_attribute</span></a><o:p></o:p></h3>
-
-<p class=MsoNormal><o:p> </o:p></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='color:#00B050;background:silver;mso-highlight:silver'>Fortran:
-error_flag = cmor_get_cur_dataset_attribute(name,result)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='color:blue;background:silver;mso-highlight:silver'>C: error_flag =
-cmor_get_cur_dataset_attribute(char *name, char *result) <o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='color:#FF6600;background:silver;mso-highlight:silver'>Python: result = get_cur_dataset_attribute(name)</span><span
-style='background:silver;mso-highlight:silver'> <o:p></o:p></span></p>
-
-<p class=MsoNormal style='text-align:justify'><span style='background:silver;
-mso-highlight:silver'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-align:justify'><i
-style='mso-bidi-font-style:normal'><span style='background:silver;mso-highlight:
-silver'>Description</span></i><span style='background:silver;mso-highlight:
-silver'>: Retrieves a global attribute associated with the current dataset.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'><span style='background:silver;mso-highlight:silver'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'><i style='mso-bidi-font-style:normal'><span style='background:silver;
-mso-highlight:silver'>Arguments</span></i><span style='background:silver;
-mso-highlight:silver'>:<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'><span style='background:silver;mso-highlight:silver'>name = name of the
-global attribute to retrieve.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'><span style='background:silver;mso-highlight:silver'>result = string<span
-style="mso-spacerun: yes">  </span>(or pointer to a string), which is
-returned by the function and contains the retrieved global attribute (not for
-Python).<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'><span style='background:silver;mso-highlight:silver'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='text-align:justify;text-indent:.5in'><i
-style='mso-bidi-font-style:normal'><span style='background:silver;mso-highlight:
-silver'>Returns upon success</span></i><span style='background:silver;
-mso-highlight:silver'>: <o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify'><span
-style='color:#00B050;background:silver;mso-highlight:silver'>Fortran: 0 <o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify'><span
-style='color:blue;background:silver;mso-highlight:silver'>C: 0 <o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify'><span
-style='color:#FF6600;background:silver;mso-highlight:silver'>Python: None</span><span
-style='color:#FF6600'> <o:p></o:p></span></p>
-
-<p class=MsoNormal style='text-align:justify'><span style='color:#FF6600;
-background:silver;mso-highlight:silver'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='text-align:justify'><span style='color:#FF6600;
-background:silver;mso-highlight:silver'><o:p> </o:p></span></p>
-
-<h3><a name="_Toc129422005"></a><a name="_Toc149385718"><span style='mso-bookmark:
-_Toc129422005'>Inquire whether a Dataset Attribute Exists: cmor_has_cur_dataset_attribute</span></a><o:p></o:p></h3>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in;page-break-after:avoid'><span style='color:#FF6600;background:silver;
-mso-highlight:silver'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='color:#00B050;background:silver;mso-highlight:silver'>Fortran:
-error_flag = cmor_has_cur_dataset_attribute(name)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='color:blue;background:silver;mso-highlight:silver'>C: error_flag =
-cmor_has_cur_dataset_attribute(char *name) <o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='color:#FF6600;background:silver;mso-highlight:silver'>Python: error_flag
-= has_cur_dataset_attribute(name)</span><span style='background:silver;
-mso-highlight:silver'> <o:p></o:p></span></p>
-
-<p class=MsoNormal style='text-align:justify'><span style='background:silver;
-mso-highlight:silver'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-align:justify'><i
-style='mso-bidi-font-style:normal'><span style='background:silver;mso-highlight:
-silver'>Description</span></i><span style='background:silver;mso-highlight:
-silver'>: Determines whether a global attribute is associated with the current
-dataset.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'><span style='background:silver;mso-highlight:silver'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'><i style='mso-bidi-font-style:normal'><span style='background:silver;
-mso-highlight:silver'>Arguments</span></i><span style='background:silver;
-mso-highlight:silver'>:<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'><span style='background:silver;mso-highlight:silver'>name = name of the
-global attribute of interest.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'><span style='background:silver;mso-highlight:silver'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'><i style='mso-bidi-font-style:normal'><span style='background:silver;
-mso-highlight:silver'>Returns</span></i><span style='background:silver;
-mso-highlight:silver'>: <o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify'><span
-style='color:#00B050;background:silver;mso-highlight:silver'>a negative integer
-if an error is encountered; otherwise returns 0.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify'><span
-style='color:blue;background:silver;mso-highlight:silver'>0 upon success<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'><span style='color:#FF6600;background:silver;mso-highlight:silver'><span
-style='mso-tab-count:1'>            </span>True
-if the attribute exists, False otherwise.</span><span style='color:#FF6600'><o:p></o:p></span></p>
-
-<p class=MsoNormal style='text-align:justify'><o:p> </o:p></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='color:#99CC00'><o:p> </o:p></span></p>
-
-<h2><a name="_Toc129422006"></a><a name="_Toc149385719"><span style='mso-bookmark:
-_Toc129422006'>Dealing with tables</span></a><o:p></o:p></h2>
-
-<h3><a name="_Toc129422007"></a><a name="_Toc149385720"><span style='mso-bookmark:
-_Toc129422007'>Loading a Table in Memory from File:cmor_load_table</span></a><o:p></o:p></h3>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in;page-break-after:
-avoid'><b style='mso-bidi-font-weight:normal'><u><span style='color:#99CC00'><o:p><span
- style='text-decoration:none'> </span></o:p></span></u></b></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='color:#00B050'>Fortran: table_id = cmor_load_table(table)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='color:blue'>C: error_flag = cmor_load_table(char *table, int *table_id)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='color:#FF6600'>Python: table_id = load_table(table)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-align:justify;text-indent:-.5in'><o:p> </o:p></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-align:justify'><i
-style='mso-bidi-font-style:normal'>Description</i>: Loads a table and returns a
-“handle” (table_id) to use later when defining CMOR components. CMOR will look
-for the table first followig the path as specified by the “table” argument
-passed to this function.<span style="mso-spacerun: yes">  </span>If it
-doesn’t find a file there it will prepend the outpath defined in calling
-cmor_dataset. If it still doesn’t find it, it will use the “prefix” where the
-library CMOR is to be installed (from configure time) followed by share (e.g
-/usr/local/cmor/share). If it stills fails an error will be raised.<o:p></o:p></p>
-
-<h3><a name="_Toc129422008"></a><a name="_Toc149385721"><span style='mso-bookmark:
-_Toc129422008'>Loading a Table from Memory:cmor_set_table</span></a><o:p></o:p></h3>
-
-<p class=MsoNormal style='margin-left:.5in;text-align:justify'><o:p> </o:p></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='color:#00B050'>Fortran: cmor_set_table(table_id)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='color:blue'>C: error_flag = cmor_set_table(int table_id)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='color:#FF6600'>Python: table_id = set_table(table_id)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-align:justify;text-indent:-.5in'><o:p> </o:p></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-align:justify'><i
-style='mso-bidi-font-style:normal'>Description</i>: Sets the table referred to
-by table_id as the table to obtain needed information when defining CMOR
-components (variables, axes, grids, etc…). <o:p></o:p></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-align:justify'><o:p> </o:p></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-align:justify'><o:p> </o:p></p>
-
-<h2><a name="_Toc129422009"></a><a name="_Toc149385722"><span style='mso-bookmark:
-_Toc129422009'>Dealing with Axes</span></a><o:p></o:p></h2>
-
-<p class=MsoNormal><o:p> </o:p></p>
-
-<h3><a name="_Toc129422010"></a><a name="_Toc149385723"><span style='mso-bookmark:
-_Toc129422010'>Define an Axis: cmor_axis</span></a><o:p></o:p></h3>
-
-<p class=MsoNormal><o:p> </o:p></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='color:#00B050'>Fortran: axis_id = cmor_axis([table], table_entry, units,
-[length], [coord_vals], [cell_bounds], [interval])<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='color:blue'>C: error_flag = cmor_axis(int *axis_id, char *table_entry,
-char *units, int length, void *coord_vals, char type, void *cell_bounds, int
-cell_bounds_ndim, char *interval)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='color:#FF6600'>Python: axis_id = axis(table_entry, units=None,
-length=None, coord_vals=None, cell_bounds=None, interval=None)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-align:justify;text-indent:-.5in'><o:p> </o:p></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-align:justify'><i
-style='mso-bidi-font-style:normal'>Description</i>: <span style="mso-spacerun:
-yes"> </span>Define an axis and pass the coordinate values associated with
-one of the dimensions of the data to be written. This function returns a
-"handle" (axis_id) that uniquely identifies the axis to be
-written.<span style="mso-spacerun: yes">  </span>The axis_id will
-subsequently be passed by the user to other CMOR functions.<span
-style="mso-spacerun: yes">  </span>The cmor_axis function will typically
-be repeatedly invoked to define all axes.<span style="mso-spacerun: yes"> 
-</span>The axis specified by the table_entry argument must be found in the
-currently “set” CMOR table, as specified by the cmor_load_table and
-cmor_set_table functions, <span style='color:#00B050'>or as an option, it can
-be provided in the Fortran version (for backward compatibility) by the now
-deprecated “table” keyword argument. </span><span style="mso-spacerun:
-yes"> </span>There normally is no need to call this function in the case
-of a singleton (scalar) dimension unless the MIP recommended (or required)
-coordinate value (or cell_bounds) are inconsistent with what the user can
-supply, or unless the user wants to define the "interval" attribute. <o:p></o:p></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-align:justify'><o:p> </o:p></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-align:justify'><i
-style='mso-bidi-font-style:normal'>Arguments</i>:<o:p></o:p></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'><span style='color:#00B050'>[table] = character string containing the
-filename of the MIP-specific table where the axis defined here appears (e.g.,
-‘CMIP5_table_Amon’, 'IPCC_table_A1', 'AMIP_table_1a', 'AMIP_table_2',
-'CMIP_table_2', etc.).<span style="mso-spacerun: yes">   </span>In
-CMOR2 this is an optional argument and is deprecated because the table can be
-specified through the cmor_load_table and cmor_set_table functions.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'><span style='color:blue'>axis_id = the “handle”: a positive integer
-returned by CMOR, which uniquely identifies the axis stored in this call to
-cmor_axis and subsequently can be used in calls to cmor_write. <o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'>table_entry = name of the axis (as it appears in the MIP table) that
-will be defined by this function.<o:p></o:p></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'>units = units associated with the coordinates passed in coord_vals and
-cell_bounds.<span style="mso-spacerun: yes">  </span>(These are the units
-of the user's coordinate values, which, if CMOR is built with udunits (as is
-required in version 2), may differ from the units of the coordinates written to
-the netCDF file by CMOR.<span style="mso-spacerun: yes">  </span>For
-non-standard calendars (e.g., models with no leap year), conversion of time
-values can be made only if CMOR is built with CDMS.) These units must be
-recognized by udunits or must be identical to the units specified in the MIP
-table.<span style="mso-spacerun: yes">  </span>In the case of a
-dimensionless vertical coordinate or in the case of a non-numerical axis (like
-geographical region), either set units=’’, or, optionally, set units='1'.<o:p></o:p></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'>[length] = integer specifying the number of elements that CMOR should
-extract from the coord_vals array (normally length will be the size of the
-array itself). For a simple “index axis” (i.e., an axis without coordinate
-values), this specifies the length of the dimension.<span style="mso-spacerun:
-yes">  </span>In the Fortran and Python versions of the function, this
-argument is not always required (except in the case of a simple index axis); if
-omitted “length” will be the size of the coord_vals array, <o:p></o:p></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'>[coord_vals] = 1-d array (single precision float, double precision
-float, or, for labels, character strings) containing coordinate values, ordered
-consistently with the data array that will be passed by the user to CMOR
-through function cmor_write (see documentation below).<span
-style="mso-spacerun: yes">  </span>This argument is required except if: 1)
-the axis is a simple “index axis” (i.e., an axis without coordinate values), or
-2) for a time coordinate, the user intends to pass the coordinate values when
-the cmor_write function is called.<span style="mso-spacerun: yes"> 
-</span>Note that the coordinate values must be ordered monotonically, so, for
-example, in the case of longitudes that might have the values, 0., 10., 20, ...
-170., 180., 190., 200.,<span style="mso-spacerun: yes">  </span>... 340.,
-350., passing the (equivalent) values, 0., 10., 20, ... 170., 180., -170.,
--160., ... -20., -10. is forbidden.<span style="mso-spacerun: yes"> 
-</span>In the case of time-coordinate values, if cell bounds are also passed,
-then CMOR will first check that each coordinate value is not outside its
-associated cell bounds; subsequently, however, the user-defined coordinate
-value will be replaced by the mid-point of the interval defined by its bounds,
-and it is this value that will be written to the netCDF file. <span
-style='color:blue'>In the case of character string coord_vals there are no
-cell_bounds, but for the C version of the function, the argument
-cell_bounds_ndim is used to specify the length of the strings in the coord_vals
-array (i.e., the array will be dimensioned [length][cell_bounds_ndim]). <o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'><span style='color:blue'>type = type of the coord_vals/bnds passed, which
-can be ‘d’ (double), ‘f’ (float), ‘l’ (long) or ‘i’ (int).<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'>[cell_bounds] = 1-d or 2-d array (of the same type as coord_vals) containing
-cell bounds, which should be in the same units as coord_vals (specified in the
-"units" argument above) and should be ordered in the same way as
-coord_vals.<span style="mso-spacerun: yes">  </span>In the case of a 1-d
-array, the size is one more than the size of coord_vals and the cells must be
-contiguous.<span style="mso-spacerun: yes">  </span>In the case of a 2-d
-array, it is dimensioned (2, n) where n is the size of coord_vals (see CF
-standard document, <a href="http://www.cgd.ucar.edu/cms/eaton/cf-metadata">http://www.cgd.ucar.edu/cms/eaton/cf-metadata</a>,
-for further information).<span style="mso-spacerun: yes">  </span>This
-argument may be omitted when cell bounds are not required.<span
-style="mso-spacerun: yes">  </span>It must be omitted if coord_vals is
-omitted.<o:p></o:p></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'><span style='color:blue'>cell_bounds_ndim = This argument only appears
-in the C version of this function.<span style="mso-spacerun: yes">  
-</span>With the exception of a character string axis, it specifies the rank of
-the cell_bounds array: if 1, the bounds array will contain n+1 elements, where
-n is length of coord_vals and the cells must be contiguous, whereas if 2, the
-dimension will be (n,2) in C order. <span style="mso-spacerun:
-yes"> </span>Pass 0 if no cell_bounds values have been passed. In the
-special case of a character string axis, this argument is used to specify the
-length of the strings in the coord_vals array (i.e., the array will be
-dimensioned [length][cell_bounds_ndim]). </span><o:p></o:p></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'>[interval] = Supplemental information that will be included in the
-cell_methods attribute, which is typically defined for the time axis in order
-to describe the sampling interval.<span style="mso-spacerun: yes"> 
-</span>This string should be of the form: "<i style='mso-bidi-font-style:
-normal'>value unit</i> comment: <i style='mso-bidi-font-style:normal'>anything</i>"
-(where "comment:" and <i style='mso-bidi-font-style:normal'>anything</i>
-may always be omitted).<span style="mso-spacerun: yes">  </span>For monthly
-mean data based on samples taken every 15 minutes, for example, interval =
-"15 minutes". <o:p></o:p></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'><span style="mso-spacerun: yes">  </span><o:p></o:p></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'><i style='mso-bidi-font-style:normal'>Returns</i>: <o:p></o:p></p>
-
-<p class=MsoNormal style='margin-left:1.5in;text-align:justify;text-indent:
--.5in'><span style='color:#00B050'>Fortran: a negative integer if an error is
-encountered; otherwise returns a positive integer (the “handle”) uniquely
-identifying the axis.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.5in;text-align:justify;text-indent:
--.5in'><span style='color:blue'>C: 0 upon success.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.5in;text-align:justify;text-indent:
--.5in'><span style='color:#FF6600'>Python: upon success, a positive integer
-(the “handle”) uniquely identifying the axis, or if an error is encountered an
-exception is raised.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'><o:p> </o:p></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-align:justify;text-indent:-.5in'><o:p> </o:p></p>
-
-<h3><a name="_Toc129422011"></a><a name="_Toc149385724"><span style='mso-bookmark:
-_Toc129422011'>Define an Axis Attribute: cmor_set_axis_attribute</span></a> <o:p></o:p></h3>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in;page-break-after:
-avoid'><b style='mso-bidi-font-weight:normal'><u><o:p><span style='text-decoration:
- none'> </span></o:p></u></b></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in;page-break-after:
-avoid'><span style='color:#00B050;background:silver;mso-highlight:silver'>Fortran:
-Not implemented because it is not needed for CMIP5.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='color:blue;background:silver;mso-highlight:silver'>C: error_flag =
-cmor_set_axis_attribute(int axis_id, char *attribute_name, char type, void
-*value)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='text-align:justify'><span style='color:#FF6600;
-background:silver;mso-highlight:silver'>Python: Not implemented because it is
-not needed for CMIP5.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='text-align:justify'><span style='color:#FF6600;
-background:silver;mso-highlight:silver'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-align:justify'><i
-style='mso-bidi-font-style:normal'><span style='color:blue;background:silver;
-mso-highlight:silver'>Description</span></i><span style='color:blue;background:
-silver;mso-highlight:silver'>:<span style="mso-spacerun: yes"> 
-</span>Defines an attribute to be associated with the axis specified by the axis_id.<span
-style="mso-spacerun: yes">  </span>This is not likely to be needed in
-preparing CMIP5 output.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-align:justify'><span
-style='color:blue;background:silver;mso-highlight:silver'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-align:justify'><i
-style='mso-bidi-font-style:normal'><span style='color:blue;background:silver;
-mso-highlight:silver'>Arguments</span></i><span style='color:blue;background:
-silver;mso-highlight:silver'>:<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'><span style='color:blue;background:silver;mso-highlight:silver'>axis_id
-= the “handle” returned by cmor_axis (when the axis was defined), which will
-become better described by the attribute defined in this function.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'><span style='color:blue;background:silver;mso-highlight:silver'>attribute_name
-= name of the attribute<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'><span style='color:blue;background:silver;mso-highlight:silver'>type =
-type of the attribute value passed.<span style="mso-spacerun: yes">  
-</span>This can be ‘d’ (double), ‘f’ (float), ‘l’ (long), ‘i’ (int), or ‘c’
-(char)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'><span style='color:blue;background:silver;mso-highlight:silver'>value =
-whatever value you wish to set the attribute to (type defined by type argument)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'><span style='color:blue;background:silver;mso-highlight:silver'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='text-align:justify;text-indent:.5in'><i
-style='mso-bidi-font-style:normal'><span style='color:blue;background:silver;
-mso-highlight:silver'>Return upon success</span></i><span style='color:blue;
-background:silver;mso-highlight:silver'>:</span><span style='color:blue'> <o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify'><span
-style='color:blue;background:silver;mso-highlight:silver'>C: 0 <o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-align:justify'><span
-style='background:silver;mso-highlight:silver'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-align:justify'><span
-style='background:silver;mso-highlight:silver'><o:p> </o:p></span></p>
-
-<h3><a name="_Toc129422012"></a><a name="_Toc149385725"><span style='mso-bookmark:
-_Toc129422012'>Retrieve an Axis Attribute: cmor_get_axis_attribute</span></a><o:p></o:p></h3>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in;page-break-after:
-avoid'><b style='mso-bidi-font-weight:normal'><u><o:p><span style='text-decoration:
- none'> </span></o:p></u></b></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in;page-break-after:
-avoid'><span style='color:#00B050;background:silver;mso-highlight:silver'>Fortran:
-Not implemented because it is not needed for CMIP5.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='color:blue;background:silver;mso-highlight:silver'>C: error_flag =
-cmor_get_axis_attribute(int axis_id, char *attribute_name, char type, void
-*value)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='text-align:justify'><span style='color:#FF6600;
-background:silver;mso-highlight:silver'>Python: Not implemented because it is
-not needed for CMIP5.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='text-align:justify'><span style='color:#FF6600;
-background:silver;mso-highlight:silver'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-align:justify'><i
-style='mso-bidi-font-style:normal'><span style='color:blue;background:silver;
-mso-highlight:silver'>Description</span></i><span style='color:blue;background:
-silver;mso-highlight:silver'>: retrieves an attribute value set for the axis
-specified by the axis_id. This is not likely to be needed in preparing CMIP5
-output.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-align:justify'><span
-style='color:blue;background:silver;mso-highlight:silver'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-align:justify'><i
-style='mso-bidi-font-style:normal'><span style='color:blue;background:silver;
-mso-highlight:silver'>Arguments</span></i><span style='color:blue;background:
-silver;mso-highlight:silver'>:<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'><span style='color:blue;background:silver;mso-highlight:silver'>axis_id
-= the “handle” returned by cmor_axis (when the axis was defined) with which the
-attribute requested is associated.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'><span style='color:blue;background:silver;mso-highlight:silver'>attribute_name
-= name of the attribute<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'><span style='color:blue;background:silver;mso-highlight:silver'>type =
-type of the attribute value to be retrieved.<span style="mso-spacerun:
-yes">  </span>This can be ‘d’ (double), ‘f’ (float), ‘l’ (long), ‘i’
-(int), or ‘c’ (char).<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'><span style='color:blue;background:silver;mso-highlight:silver'>value =
-the argument that will accept the retrieved attribute.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'><span style='color:blue;background:silver;mso-highlight:silver'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='text-align:justify;text-indent:.5in'><i
-style='mso-bidi-font-style:normal'><span style='color:blue;background:silver;
-mso-highlight:silver'>Return upon success</span></i><span style='color:blue;
-background:silver;mso-highlight:silver'>:</span><span style='color:blue'> <o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify'><span
-style='color:blue;background:silver;mso-highlight:silver'>C: 0 <o:p></o:p></span></p>
-
-<p class=MsoNormal style='text-align:justify'><span style='color:#FF6600'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='text-align:justify'><span style='background:silver;
-mso-highlight:silver'><o:p> </o:p></span></p>
-
-<h3><a name="_Toc129422013"></a><a name="_Toc149385726"><span style='mso-bookmark:
-_Toc129422013'>Inquire whether an Axis Attribute Exists:
-cmor_has_axis_attribute</span></a><o:p></o:p></h3>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in;page-break-after:
-avoid'><b style='mso-bidi-font-weight:normal'><u><o:p><span style='text-decoration:
- none'> </span></o:p></u></b></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in;page-break-after:
-avoid'><span style='color:#00B050;background:silver;mso-highlight:silver'><span
-style="mso-spacerun: yes"> </span>Fortran: Not implemented because it is
-not needed for CMIP5.<o:p></o:p></span></p>
-
-<p class=MsoNormal><span style='color:blue;background:silver;mso-highlight:
-silver'>C: error_flag = cmor_has_axis_attribute(int axis_id, char
-*attribute_name)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='text-align:justify'><span style='color:#FF6600;
-background:silver;mso-highlight:silver'>Python: Not implemented because it is
-not needed for CMIP5.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='text-align:justify'><span style='color:#FF6600;
-background:silver;mso-highlight:silver'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-align:justify'><i
-style='mso-bidi-font-style:normal'><span style='color:blue;background:silver;
-mso-highlight:silver'>Description</span></i><span style='color:blue;background:
-silver;mso-highlight:silver'>: Determines whether an attribute exists and is
-associated with the variable specified by variable_id, which is a handle
-returned to the user by a previous call to cmor_variable.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-align:justify'><span
-style='color:blue;background:silver;mso-highlight:silver'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-align:justify;page-break-after:
-avoid'><i style='mso-bidi-font-style:normal'><span style='color:blue;
-background:silver;mso-highlight:silver'>Arguments</span></i><span
-style='color:blue;background:silver;mso-highlight:silver'>:<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'><span style='color:blue;background:silver;mso-highlight:silver'>axis_id
-= the “handle” specifying which axis is of interest.<span style="mso-spacerun:
-yes">  </span>An axis_id is returned by cmor_variable each time a variable
-is defined).<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'><span style='color:blue;background:silver;mso-highlight:silver'>attribute_name
-= name of the attribute of interest.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'><span style='color:blue;background:silver;mso-highlight:silver'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-align:justify'><i
-style='mso-bidi-font-style:normal'><span style='color:blue;background:silver;
-mso-highlight:silver'>Returns upon success (i.e., the attribute was found):<o:p></o:p></span></i></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify'><span
-style='color:blue;background:silver;mso-highlight:silver'>C: 0 <o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-align:justify'><span
-style='color:blue;background:silver;mso-highlight:silver'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-align:justify'><span
-style='color:blue;background:silver;mso-highlight:silver'><o:p> </o:p></span></p>
-
-<h2><a name="_Toc129422014"></a><a name="_Toc149385727"><span style='mso-bookmark:
-_Toc129422014'>Dealing with Grids</span></a><o:p></o:p></h2>
-
-<h3><a name="_Toc129422015"></a><a name="_Toc149385728"><span style='mso-bookmark:
-_Toc129422015'>Define a Grid: cmor_grid</span></a><o:p></o:p></h3>
-
-<p class=MsoNormal style='margin-left:.5in;text-align:justify'><span
-style='color:blue;background:silver;mso-highlight:silver'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='color:#00B050;background:silver;mso-highlight:silver'>Fortran: grid_id =
-cmor_grid(axis_ids, latitude, longitude, [latitude_vertices],
-[longitude_vertices], [nvertices]) <o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='color:blue;background:silver;mso-highlight:silver'>C: error_flag =
-cmor_grid(int *grid_id, int ndims, int *axis_ids, char type, void *latitude,
-void *longitude, int nvertices, void *latitude_vertices, void
-*longitude_vertices)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='color:#FF6600;background:silver;mso-highlight:silver'>Python: grid_id =
-grid(axis_ids, latitude, longitude, latitude_vertices=None, longitude_vertices=None,
-nvertices=0)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='text-align:justify'><span style='color:#FF6600;
-background:silver;mso-highlight:silver'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-align:justify'><i
-style='mso-bidi-font-style:normal'><span style='background:silver;mso-highlight:
-silver'>Description</span></i><span style='background:silver;mso-highlight:
-silver'>: Define a grid to be associated with data, including the latitude and
-longitude locations of each grid point. The grid can be stored as a 1-d vector
-or structured with up to 6 dimensions. These dimensions, which may be simple
-“index” axes, must be defined via cmor_axis prior to calling cmor_grid. This function
-returns a "handle" (grid_id) that uniquely identifies the grid (and
-its data/metadata) to be written.<span style="mso-spacerun: yes"> 
-</span>The grid_id will subsequently be passed by the user to other CMOR
-functions.<span style="mso-spacerun: yes">  </span>The cmor_grid function
-will typically be invoked to define each grid necessary for the experiment (e.g.,
-ocean grid, vegetation grid, atmosphere grid, etc…).<span style="mso-spacerun:
-yes">  </span>There is no need to call this function in the case of a Cartesian
-lat/lon grid.<span style="mso-spacerun: yes">  </span>In this case, simply
-define the latitude and longitude axes and pass their id’s (“handles”) to
-cmor_variable. Grids can be time dependent as well (e.g., as called for in
-CMIP5 to write the variables in the cf3hr table).<span style="mso-spacerun:
-yes">  </span>In this case the latitudes, longitudes and their vertices
-must be defined separately via cmor_time_varying_grid_coordinate. Note also in
-this case that the number of vertices <i style='mso-bidi-font-style:normal'>must</i>
-be passed when calling cmor_grid.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-align:justify'><span
-style='background:silver;mso-highlight:silver'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-align:justify'><i
-style='mso-bidi-font-style:normal'><span style='background:silver;mso-highlight:
-silver'>Arguments</span></i><span style='background:silver;mso-highlight:silver'>:<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'><span style='color:blue;background:silver;mso-highlight:silver'>grid_id
-= the “handle”: a positive integer returned by CMOR, which uniquely identifies
-the grid defined in this call to CMOR and subsequently can be used in calls to other
-CMOR functions.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'><span style='color:blue;background:silver;mso-highlight:silver'>ndims =
-number of dimensions needed to define the grid (i.e., the number of elements
-from axis_ids that will be used).<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'><span style='background:silver;mso-highlight:silver'>axis_ids = array
-containing the axis_ids returned by cmor_axis when defining the axes constituting
-the grid.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'><span style='background:silver;mso-highlight:silver'>[latitude] = array
-containing the grid’s latitude locations, optional <i style='mso-bidi-font-style:
-normal'>only</i> in the case of time varying grids.<span style="mso-spacerun:
-yes">  </span>This array should be shaped the same as the grid itself. <o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'><span style='background:silver;mso-highlight:silver'>]longitude] = array
-containing the grid’s longitude location, optional <i style='mso-bidi-font-style:
-normal'>only</i> in the case of time varying grids.<span style="mso-spacerun:
-yes">  </span>This array should be shaped the same as the grid itself. <o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'><span style='background:silver;mso-highlight:silver'>[nvertices] =
-length of vertices axis.<span style="mso-spacerun: yes">  </span>Fortran
-and Python can figure this out if latitude_vertices is passed. But in case of
-time-varying grids this is necessary in order to prepare the “Vertices”
-variable correctly. If different cell have a different number of vertices, then
-nvertices should be the MAXIMUM number of vertices that can be found. The
-latitude_vertices and longitude_vertices arrays passed should then contain the
-missing_value for unused vertices of cell with less than nvertices vertices.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'><span style='background:silver;mso-highlight:silver'>[latitude_vertices]
-= array containing the locations of the the grid’s latitude vertices.<span
-style="mso-spacerun: yes">  </span>This array should be shaped the same as
-the grid except an additional dimension of length nvertices should be added,
-increasing its rank to ndims+1.<span style="mso-spacerun: yes">  </span>The
-vertices dimension must be the fastest varying dimension of the array (i.e., <span
-style='color:#00B050'>first one in Fortran</span>, <span style='color:blue'>last
-one in C</span>, <span style='color:#FF6600'>last one in Python</span>) <o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'><span style='background:silver;mso-highlight:silver'>[longitude_vertices]
-= array containing the locatioins of the grid’s longitude vertices. <span
-style="mso-spacerun: yes"> </span>This array should be shaped the same as
-the grid except an additional dimension of length nvertices should be added,
-increasing its rank to ndims+1.<span style="mso-spacerun: yes">  </span>The
-vertices dimension must be the fastest varying dimension of the array (i.e., <span
-style='color:#00B050'>first one in Fortran</span>, <span style='color:blue'>last
-one in C</span>, <span style='color:#FF6600'>last one in Python</span>) <o:p></o:p></span></p>
-
-<p class=MsoNormal style='text-align:justify'><span style='background:silver;
-mso-highlight:silver'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in;page-break-after:avoid'><i style='mso-bidi-font-style:normal'><span
-style='background:silver;mso-highlight:silver'>Returns</span></i><span
-style='background:silver;mso-highlight:silver'>: <o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.5in;text-align:justify;text-indent:
--.5in;page-break-after:avoid'><span style='color:#00B050;background:silver;
-mso-highlight:silver'>Fortran: a positive integer if an error is encountered;
-otherwise returns a negative integer (the “handle”) uniquely identifying the
-grid.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;page-break-after:
-avoid'><span style='color:blue;background:silver;mso-highlight:silver'>C: 0
-upon success.</span><span style='color:#00B050;background:silver;mso-highlight:
-silver'><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.5in;text-align:justify;text-indent:
--.5in;page-break-after:avoid'><span style='color:#FF6600;background:silver;
-mso-highlight:silver'>Python: upon success, a positive integer (the “handle”) uniquely
-identifying the axis, or if an error is encountered an exception is raised.</span><span
-style='color:#00B050'><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'><i style='mso-bidi-font-style:normal'><span style='background:silver;
-mso-highlight:silver'>Note:<o:p></o:p></span></i></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'><i style='mso-bidi-font-style:normal'><span style='background:silver;
-mso-highlight:silver'>This function used to take an optional extra argument (up
-to CMOR2.0rc4 included), it is now not needed anymore as cellArea and
-cellVolume files are written in a separate file.</span></i><span
-style='color:#FF6600;background:silver;mso-highlight:silver'><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'><span style='color:#FF6600;background:silver;mso-highlight:silver'><o:p> </o:p></span></p>
-
-<h3><a name="_Toc129422016"></a><a name="_Toc149385729"><span style='mso-bookmark:
-_Toc129422016'>Define Grid Mapping Parameters: cmor_set_grid_mapping</span></a><o:p></o:p></h3>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'><span style='background:silver;mso-highlight:silver'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='color:#00B050;background:silver;mso-highlight:silver'>Fortran:
-error_flag = cmor_set_grid_mapping(grid_id, mapping_name, parameter_names,
-parameter_values, parameter_units) <o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='color:blue;background:silver;mso-highlight:silver'>C: error_flag =
-cmor_set_grid_mapping(int grid_id, char *mapping_name, int nparameters, char
-**parameter_names, int lparameters, double parameter_values[], char
-**parameter_units, int lunits)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='color:#FF6600;background:silver;mso-highlight:silver'>Python: set_grid_mapping(grid_id,
-mapping_name, parameter_names, parameter_values=None, parameter_units=None)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='text-align:justify'><span style='color:#FF6600;
-background:silver;mso-highlight:silver'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-align:justify'><i
-style='mso-bidi-font-style:normal'><span style='background:silver;mso-highlight:
-silver'>Description</span></i><span style='background:silver;mso-highlight:
-silver'>: Define the grid mapping parameters associated with a grid (see CF
-conventions for more info on which parameters to set). Check validity of
-parameter names and units. Additional mapping names and parameter names can be
-defined via the MIP table. <o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-align:justify'><span
-style='background:silver;mso-highlight:silver'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-align:justify'><i
-style='mso-bidi-font-style:normal'><span style='background:silver;mso-highlight:
-silver'>Arguments</span></i><span style='background:silver;mso-highlight:silver'>:<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'><span style='background:silver;mso-highlight:silver'>grid_id = the
-“handle” returned by a previous call to cmor_grid, indicating which grid the
-mapping parameters should be associated with.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'><span style='background:silver;mso-highlight:silver'>mapping_name = name
-of the mapping (see CF conventions).<span style="mso-spacerun: yes"> 
-</span>This name dictates which parameters should be set and for some
-parameters restricts their possible values or range.<span style="mso-spacerun:
-yes">  </span>New mapping names can be added via MIP tables.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'><span style='color:blue;background:silver;mso-highlight:silver'>nparameters
-= number of parameters set.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'><span style='background:silver;mso-highlight:silver'>parameter_names =
-array (list for Python) of strings containing the names of the parameters to
-set. <span style="mso-spacerun: yes"> </span>In the case of
-“standard_parallel”, CF allows either 1 or 2 parallels to be specified (i.e.
-the attribute standard_parallel may be an array of length 2).<span
-style="mso-spacerun: yes">  </span>In the case of 2 parallels, CMOR
-requires the user to specify these as separate parameters, named standard_parallel_1
-and standard_parallel_2, but then the two parameters will be stored in an
-array, consistent with CF.<span style="mso-spacerun: yes">  </span>In the
-case of a single parallel, the name standard_parallel should be specified. <span
-style="mso-spacerun: yes"> </span><span style='color:blue'>In the C version
-of this function, parameter_names is declared of length
-[nparameters][lparameters], where lparameters in the length of each string
-array element (see below).</span> <span style='color:#FF6600'>In Python parameter_names
-can be defined as a dictionary containing the keys that represent the parameter_names.
-The value associated with each key can be either a list [float, str] (or [str, float])
-representing the value/units of each parameter, or another dictionary
-containing the keys “value” and “units”. If these conditions are fulfilled,
-then parameter_units and parameter_values are optional and would be ignored if
-passed.<o:p></o:p></span></span></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'><span style='color:blue;background:silver;mso-highlight:silver'>lparameters
-= length of each element of the string array. <span style="mso-spacerun:
-yes"> </span>If, for example, parameter_names includes 5 parameters, each
-24 characters long (i.e., it is declared [5][24]), you would pass lparameters=24.</span><span
-style='background:silver;mso-highlight:silver'><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'><span style='background:silver;mso-highlight:silver'>parameter_values =
-array containing the values associated with each parameter. <span
-style='color:#FF6600'>In Python this is optional if parameter_names is a
-dictionary containing the values and units.<o:p></o:p></span></span></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'><span style='background:silver;mso-highlight:silver'>parameter_units =
-array (list for Python) of string containing the units of the parameters to
-set. <span style='color:blue'>In C parameter_units is declared of length
-[nparameters][lunits]</span>. <span style='color:#FF6600'>In Python it is
-optional if parameter_names is a dictionary containing the value and units.<o:p></o:p></span></span></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'><span style='color:blue;background:silver;mso-highlight:silver'>lunits =
-length of each elements of the units string array (e.g., <span
-style="mso-spacerun: yes"> </span>if parameters_units is declared [5][24],
-you would pass 24 because each elements has 24 characters).<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'><span style='color:blue;background:silver;mso-highlight:silver'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'><i style='mso-bidi-font-style:normal'><span style='background:silver;
-mso-highlight:silver'>Returns upon success</span></i><span style='background:
-silver;mso-highlight:silver'>: <o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify'><span
-style='color:#00B050;background:silver;mso-highlight:silver'>Fortran: 0 <o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify'><span
-style='color:blue;background:silver;mso-highlight:silver'>C: 0 <o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;page-break-after:
-avoid'><span style='color:#FF6600;background:silver;mso-highlight:silver'>Python:
-None</span><span style='color:#FF6600'> <o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;page-break-after:
-avoid'><span style='color:#FF6600'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;page-break-after:
-avoid'><span style='color:#FF6600'><o:p> </o:p></span></p>
-
-<h3><a name="_Toc129422017"></a><a name="_Toc149385730"><span style='mso-bookmark:
-_Toc129422017'>Define a Coordinate Variable for a Time Varying Grid:
-cmor_time_varying_grid_coordinate</span></a><o:p></o:p></h3>
-
-<p class=MsoNormal style='margin-left:.5in;text-align:justify'><span
-style='color:blue;background:silver;mso-highlight:silver'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='color:#00B050;background:silver;mso-highlight:silver'>Fortran: coord_var_id
-= cmor_time_varying_grid_coordinate(grid_id, table_entry, units, missing_value)
-<o:p></o:p></span></p>
-
-<p class=MsoNormal><span style='color:blue;background:silver;mso-highlight:
-silver'>C: error_flag = cmor_time_varying_grid_coordinate(int *coord_var_id,
-int grid_id, char *table_entry, char *units, char type, void *missing, [int *coordinate_type])
-{</span><span style='color:blue'><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='color:#FF6600;background:silver;mso-highlight:silver'>Python:
-coord_var_id = time_varying_grid_coordinate(grid_id, table_entry, units,
-[missing_value])<o:p></o:p></span></p>
-
-<p class=MsoNormal style='text-align:justify'><span style='color:#FF6600;
-background:silver;mso-highlight:silver'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-align:justify'><i
-style='mso-bidi-font-style:normal'><span style='background:silver;mso-highlight:
-silver'>Description</span></i><span style='background:silver;mso-highlight:
-silver'>: Define a grid to be associated with data, including the latitude and
-longitude arrays. <span style="mso-spacerun: yes"> </span>Note that in
-CMIP5 this function must be called to store the variables called for in the cf3hr
-MIP table.<span style="mso-spacerun: yes">  </span>The grid can be
-structured with up to 6 dimensions. These dimensions, which may be simple
-“index” axes, must be defined via cmor_axis prior to calling cmor_grid. This
-function returns a "handle" (grid_id) that uniquely identifies the
-grid (and its data/metadata) to be written.<span style="mso-spacerun:
-yes">  </span>The grid_id will subsequently be passed by the user to other
-CMOR functions.<span style="mso-spacerun: yes">  </span>The cmor_grid
-function will typically be invoked to define each grid necessary for the
-experiment (e.g., ocean grid, vegetation grid, atmosphere grid, etc.).<span
-style="mso-spacerun: yes">  </span>There is no need to call this function
-in the case of a Cartesian lat/lon grid.<span style="mso-spacerun: yes"> 
-</span>In this case, simply define the latitude and longitude axes and pass
-their id’s (“handles”) to cmor_variable.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-align:justify'><span
-style='background:silver;mso-highlight:silver'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-align:justify'><i
-style='mso-bidi-font-style:normal'><span style='background:silver;mso-highlight:
-silver'>Arguments</span></i><span style='background:silver;mso-highlight:silver'>:<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'><span style='color:blue;background:silver;mso-highlight:silver'>coord_var_id
-= the “handle”: a positive integer returned by this function, which uniquely
-identifies the variable and can be used in subsequent calls to CMOR.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'><span style='background:silver;mso-highlight:silver'>grid_id =the value
-returned by cmor_grid when the grid was created. <o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'><span style='background:silver;mso-highlight:silver'>table_entry = name
-of the variable (as it appears in the MIP table) that this function defines. <o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'><span style='background:silver;mso-highlight:silver'>units = units of
-the data that will be passed to CMOR by function cmor_write.<span
-style="mso-spacerun: yes">  </span>These units may differ from the units
-of the data output by CMOR.<span style="mso-spacerun: yes">  
-</span>Whenever possible, this string should be interpretable by udunits (see </span><a
-href="http://my.unitdata.ucar.edu/content/software/udunits/"><span
-style='background:silver;mso-highlight:silver'>http://my.unitdata.ucar.edu/content/software/udunits/</span></a><span
-style='background:silver;mso-highlight:silver'>).<span style="mso-spacerun:
-yes">  </span>In the case of dimensionless quantities the units should be
-specified consistent with the CF conventions, so for example: percent,
-units='percent'; for a fraction, units='1'; for parts per million,
-units='1e-6', etc.).<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'><span style='color:blue;background:silver;mso-highlight:silver'>type =
-type of the missing_value, which must be the same as the type of the array that
-will be passed to cmor_write.<span style="mso-spacerun: yes">  </span>The
-options are: ‘d’ (double), ‘f’ (float), ‘l’ (long) or ‘i’ (int). <o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'><span style='background:silver;mso-highlight:silver'><span
-style="mso-spacerun: yes"> </span>[missing_value] = scalar that is used to
-indicate missing data for this variable.<span style="mso-spacerun: yes"> 
-</span>It must be the same type as the data that will be passed to cmor_write.<span
-style="mso-spacerun: yes">  </span>This missing_value will in general be
-replaced by a standard missing_value specified in the MIP table.<span
-style="mso-spacerun: yes">  </span>If there are no missing data, and the
-user chooses not to declare the missing value, then this argument may be
-omitted.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'><span style='color:blue;background:silver;mso-highlight:silver'>[coordinate_type]
-= place holder for future implementation, unused, pass NULL <o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-align:justify'><i
-style='mso-bidi-font-style:normal'><span style='background:silver;mso-highlight:
-silver'><o:p> </o:p></span></i></p>
-
-<p class=MsoNormal style='text-align:justify'><span style='background:silver;
-mso-highlight:silver'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in;page-break-after:avoid'><i style='mso-bidi-font-style:normal'><span
-style='background:silver;mso-highlight:silver'>Returns</span></i><span
-style='background:silver;mso-highlight:silver'>: <o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.5in;text-align:justify;text-indent:
--.5in;page-break-after:avoid'><span style='color:#00B050;background:silver;
-mso-highlight:silver'>Fortran: a positive integer if an error is encountered;
-otherwise returns a negative integer (the “handle”) uniquely identifying the
-grid.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;page-break-after:
-avoid'><span style='color:blue;background:silver;mso-highlight:silver'>C: 0
-upon success.</span><span style='color:#00B050;background:silver;mso-highlight:
-silver'><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.5in;text-align:justify;text-indent:
--.5in;page-break-after:avoid'><span style='color:#FF6600;background:silver;
-mso-highlight:silver'>Python: upon success, a positive integer (the “handle”) uniquely
-identifying the axis, or if an error is encountered an exception is raised.</span><span
-style='color:#00B050'><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in;page-break-after:
-avoid'><b style='mso-bidi-font-weight:normal'><u><o:p><span style='text-decoration:
- none'> </span></o:p></u></b></p>
-
-<h2><a name="_Toc129422018"></a><a name="_Toc149385731"><span style='mso-bookmark:
-_Toc129422018'>Vertical Dimensions</span></a><o:p></o:p></h2>
-
-<h3><a name="_Toc129422019"></a><a name="_Toc149385732"><span style='mso-bookmark:
-_Toc129422019'>Provide Additional Information for Non-Dimensional Vertical
-Coordinates: cmor_zfactor</span></a><o:p></o:p></h3>
-
-<p class=MsoNormal style='text-align:justify;page-break-after:avoid'><o:p> </o:p></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='color:#00B050'>Fortran: zfactor_id = cmor_zfactor(zaxis_id,
-zfactor_name, [axis_ids], [units], zfactor_values, zfactor_bounds) <o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='color:blue'>C: error_flag = cmor_zfactor (int *zfactor_id, int zaxis_id,
-char *zfactor_name, char *units, int ndims, int axis_ids[], char type, void
-*zfactor_values, void *zfactor_bounds)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='color:#FF6600'>Python: zfactor_id = zfactor(zaxis_id, zfactor_name,
-units, axis_ids, type, zfactor_values=None, zfactor_bounds=None)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='text-align:justify'><o:p> </o:p></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-align:justify'><i
-style='mso-bidi-font-style:normal'>Description</i>:<span style="mso-spacerun:
-yes">  </span>Define a factor needed to convert a non-dimensional vertical
-coordinate (model level) to a physical location.<span style="mso-spacerun:
-yes">   </span>For pressure, height, or depth, this function is
-unnecessary, but for dimensionless coordinates it is needed.<span
-style="mso-spacerun: yes">  </span>In the case of atmospheric sigma
-coordinates, for example, a scalar parameter must be defined indicating the top
-of the model, and the variable containing the surface pressure must be identified.<span
-style="mso-spacerun: yes">  </span>The parameters that must be defined for
-different vertical dimensionless coordinates are listed in Appendix D of the CF
-convention document (<a href="http://www.cgd.ucar.edu/cms/eaton/cf-metadata">http://www.cgd.ucar.edu/cms/eaton/cf-metadata</a>).<span
-style="mso-spacerun: yes">   </span>Often bounds for the zfactors
-will be needed (e.g., for hybrid sigma coordinates, "A's" and
-"B's" must be defined both for the layers and, often more
-importantly, for the layer interfaces).<span style="mso-spacerun: yes"> 
-</span>This function must be invoked for each z-factor required.<o:p></o:p></p>
-
-<p class=MsoNormal style='text-align:justify'><o:p> </o:p></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-align:justify'><i
-style='mso-bidi-font-style:normal'>Arguments</i>:<o:p></o:p></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'><span style='color:blue;background:silver;mso-highlight:silver'>zfactor_id
-= the “handle”: a positive integer returned by this function which uniquely
-identifies the grid defined in this call to CMOR and can subsequently be used
-in calls to CMOR.</span><o:p></o:p></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'>zaxis_id = an integer ("handle") returned by cmor_axis (which
-must have been previously called) indicating which axis requires this factor.<o:p></o:p></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'>zfactor_name = name of the z-factor that will be defined by this
-function.<span style="mso-spacerun: yes">  </span>This should correspond
-to an entry in the MIP table.<o:p></o:p></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'><span style="mso-spacerun: yes"> </span>[axis_ids] = an integer
-array containing the list of axis_id's (individually defined by calls to
-cmor_axis), which the z-factor defined here is a function of (e.g. for surface
-pressure, the array of i.d.'s would usually include the longitude, latitude,
-and time axes.)<span style="mso-spacerun: yes">  </span>The order of the
-axes must be consistent with the array passed as param_values.<span
-style="mso-spacerun: yes">  </span>If the z-factor parameter is a function
-of a single dimension (e.g., model level), the single axis_id should be passed
-as an array of rank one and length 1, not as a scalar. If the parameter is a
-scalar, then this parameter may be omitted<span style='background:silver;
-mso-highlight:silver'>.<span style="mso-spacerun: yes">  </span>If this
-parameter is carried on a non-cartesian latitude-longitude grid, then the
-grid_id should be passed instead of axis_ids, for latitude/longitude.<span
-style="mso-spacerun: yes">  </span>Again if axis_ids collapses to a
-scalar, it should be passed as an array of rank one and length 1, not as a
-scalar.</span><o:p></o:p></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'>[units] = units associated with the z-factor passed in zfactor_values
-and zfactor_bounds.<span style="mso-spacerun: yes">  </span>(These are the
-units of the user's z-factors, which may differ from the units of the z-factors
-written to the netCDF file by CMOR.) .<span style="mso-spacerun: yes"> 
-</span>These units must be recognized by udunits or must be identical to the
-units specified in the MIP table.<span style="mso-spacerun: yes"> 
-</span>In the case of a dimensionless z-factors, either omit this argument, or
-set units=’’, or set units='1'.<o:p></o:p></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'><span style='color:blue;background:silver;mso-highlight:silver'>type =
-type of the zfactor_values and zfactor_bounds (if present) passed to this
-function.<span style="mso-spacerun: yes">  </span>This can be ‘d’
-(double), ‘f’ (float), ‘l’ (long), ‘i’ (int), or ‘c’ (char). <o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'>[zfactor_values] = z-factor values associated with dimensionless
-vertical coordinate identified by zaxis_id. If this z-factor is a function of
-time (e.g., surface pressure for sigma coordinates), the user can omit this
-argument and instead store the z-factor values by calling cmor_write.<span
-style="mso-spacerun: yes">  </span>In that case the cmor_write argument,
-"var_id", should be set to zfactor_id (returned by this function) and
-the argument, "store_with", should be set to the variable id of the
-output field that requires zfactor as part of its metadata.<span
-style="mso-spacerun: yes">  </span>When many fields are a function of the
-(dimensionless) model level, cmor_write will have to be called several times,
-with the same zfactor_id, but with different variable ids.<span
-style="mso-spacerun: yes">  </span>If no values are passed, omit this
-argument.<o:p></o:p></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'>[zfactor_bounds] = z-factor values associated with the cell bounds of
-the vertical dimensionless coordinate.<span style="mso-spacerun: yes"> 
-</span>These values should be of the same type as the zfactor_values (e.g., if
-zfactor_values is double precision, then zfactor_bounds must also be double
-precision).<span style="mso-spacerun: yes">  </span>If no bounds values
-are passed, omit this argument or set zfactor = 'none'. <span style='background:
-silver;mso-highlight:silver'>This is a ONE dimensional array of length nlevs+1</span>.<o:p></o:p></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'><o:p> </o:p></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in;page-break-after:avoid'><i style='mso-bidi-font-style:normal'>Returns</i>:
-<o:p></o:p></p>
-
-<p class=MsoNormal style='margin-left:1.5in;text-align:justify;text-indent:
--.5in;page-break-after:avoid'><span style='color:#00B050'>Fortran: a negative
-integer if an error is encountered; otherwise returns a positive integer (the
-“handle”) uniquely identifying the z-factor.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.5in;text-align:justify;text-indent:
--.5in;page-break-after:avoid'><span style='color:blue'>C: 0 upon success.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.5in;text-align:justify;text-indent:
--.5in;page-break-after:avoid'><span style='color:#FF6600'>Python: upon success,
-a positive integer (the “handle”) uniquely identifying the z-factor, or if an
-error is encountered an exception is raised.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='text-align:justify'><o:p> </o:p></p>
-
-<p class=MsoNormal style='text-align:justify'><o:p> </o:p></p>
-
-<h2 style='mso-pagination:widow-orphan lines-together'><a name="_Toc129422020"></a><a
-name="_Toc149385733"><span style='mso-bookmark:_Toc129422020'>Variables</span></a><o:p></o:p></h2>
-
-<h3 style='mso-pagination:widow-orphan lines-together'><a name="_Toc129422021"></a><a
-name="_Toc149385734"><span style='mso-bookmark:_Toc129422021'>Define a
-Variable: cmor_variable</span></a><o:p></o:p></h3>
-
-<p class=MsoNormal style='text-align:justify;mso-pagination:widow-orphan lines-together;
-page-break-after:avoid'><o:p> </o:p></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in;mso-pagination:
-widow-orphan lines-together;page-break-after:avoid'><span style='color:#00B050'>Fortran:
-var_id = cmor_variable([table], table_entry, units, axis_ids, [missing_value],
-[tolerance], [positive], [original_name], [history], [comment])<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='color:blue'>C: error_flag = int cmor_variable(int *var_id, char
-*table_entry, char *units, int ndims, int axis_ids[], char type, void *missing,
-double *tolerance, char *positive, char*original_name, char *history, char
-*comment) <o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='color:#FF6600'>Python: var_id = variable(table_entry, units, axis_ids,
-type='f', missing_value=None, tolerance = 1.e-4, positive=None,
-original_name=None, history=None, comment=None)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='text-align:justify'><o:p> </o:p></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-align:justify'><i
-style='mso-bidi-font-style:normal'>Description</i>: Define a variable to be
-written by CMOR and indicate which axes are associated with it.<span
-style="mso-spacerun: yes">  </span>This function prepares CMOR to write
-the file that will contain the data for this variable. This function returns a
-"handle" (var_id), uniquely identifying the variable, which will
-subsequently be passed as an argument to the cmor_write function. The variable
-specified by the table_entry argument must be found in the currently “set” CMOR
-table, as specified by the cmor_load_table and cmor_set_table functions<span
-style='color:#00B050'>, or as an option, it can be provided in the Fortran
-version</span><span style='color:#99CC00'> </span><span style='color:#00B050'>(for
-backward compatibility) by the now deprecated “table” keyword argument</span><span
-style='color:#99CC00'>.</span><span style="mso-spacerun: yes">  
-</span>The cmor_variable function will typically be repeatedly invoked to
-define other variables. <span style='color:#00B050'>Note that backward
-compatibility was kept with the Fortran-only optional “table” keyword. But it
-is now recommended to use cmor_load_table and cmor_set_table instead </span>(and
-necessary for C/Python).<o:p></o:p></p>
-
-<p class=MsoNormal style='text-align:justify'><o:p> </o:p></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-align:justify'><i
-style='mso-bidi-font-style:normal'>Arguments</i>:<o:p></o:p></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'><span style='color:blue'>var_id = the “handle”: a positive integer
-returned by this function, which uniquely identifies the variable and can be
-used in subsequent calls to CMOR.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'><span style='color:#00B050'>[table] = character string containing the
-filename of the MIP-specific table where table_entry (described next) can be
-found (e.g., “CMIP5_table_amon”, 'IPCC_table_A1', 'AMIP_table_1a',
-'AMIP_table_2', 'CMIP_table_2', etc.)<span style="mso-spacerun: yes"> 
-</span>In CMOR2 this is an optional argument and is deprecated because the table
-can be specified through the cmor_load_table and cmor_set_table functions.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'>table_entry = name of the variable (as it appears in the MIP table) that
-this function defines. <o:p></o:p></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'>units = units of the data that will be passed to CMOR by function
-cmor_write.<span style="mso-spacerun: yes">  </span>These units may differ
-from the units of the data output by CMOR.<span style="mso-spacerun:
-yes">   </span>Whenever possible, this string should be interpretable
-by udunits (see <a href="http://my.unitdata.ucar.edu/content/software/udunits/">http://my.unitdata.ucar.edu/content/software/udunits/</a>).<span
-style="mso-spacerun: yes">  </span>In the case of dimensionless quantities
-the units should be specified consistent with the CF conventions, so for
-example: percent, units='percent'; for a fraction, units='1'; for parts per
-million, units='1e-6', etc.).<o:p></o:p></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'><span style='color:blue'>ndims = number of axes the variable contains
-(i.e., the rank of the array), which in fact is the number of elements in the axis_ids
-array that will be processed by CMOR.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'>axis_ids = 1-d array containing integers returned by cmor_axis, which
-specifies, via their “handles” (i.e., axis_ids), the axes associated with the
-variable that this function defines. These handles should be ordered
-consistently with the data that will be passed to CMOR through function
-cmor_write (see documentation below). If the size of the 1-d array is larger
-than the number of dimensions, the 'unused' dimension handles must be set to
-0.<span style="mso-spacerun: yes">  </span>Note that if the handle of a
-single axis is passed, it must not be passed as a scalar but as a rank 1 array
-of length 1.<span style="mso-spacerun: yes">  </span>Scalar
-("singleton") dimensions defined in the MIP table may be omitted from
-axis_ids unless they have been explicitly redefined by the user through calls
-to cmor_axis.<span style="mso-spacerun: yes">  </span>A
-"singleton" dimension that has been explicitly defined by the user
-should appear last in the list of axis_ids if the array of data passed to cmor_write
-for this variable actually omits this dimension; otherwise it should appear
-consistent with the position of the axis in the array of data passed to
-cmor_write. <span style='background:silver;mso-highlight:silver'>In the case of
-a non-Cartesian grid, replace the values of the grid specific axes (representing
-the lat/lon axes) with the single grid_id returned by cmor_grid</span>.<o:p></o:p></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'><span style='color:blue'>type = type of the missing_value, which must be
-the same as the type of the array that will be passed to cmor_write.<span
-style="mso-spacerun: yes">  </span>The options are: ‘d’ (double), ‘f’
-(float), ‘l’ (long) or ‘i’ (int). <o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'><span style="mso-spacerun: yes"> </span>[missing_value] = scalar
-that is used to indicate missing data for this variable.<span
-style="mso-spacerun: yes">  </span>It must be the same type as the data
-that will be passed to cmor_write.<span style="mso-spacerun: yes"> 
-</span>This missing_value will in general be replaced by a standard
-missing_value specified in the MIP table.<span style="mso-spacerun: yes"> 
-</span>If there are no missing data, and the user chooses not to declare the
-missing value, then this argument may be omitted <s><span style='background:
-silver;mso-highlight:silver'>or assigned the value 'none' (i.e.,
-missing_value='none'</span>).</s><o:p></o:p></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'>[tolerance] = scalar (type real) indicating fractional tolerance allowed
-in missing values found in the data.<span style="mso-spacerun: yes"> 
-</span>A value will be considered missing if it lies within
-±tolerance*missing_value of missing_value.<span style="mso-spacerun:
-yes">  </span>The default tolerance for real and double precision missing
-values is 1.0e-4 and for integers 0.<span style="mso-spacerun: yes"> 
-</span>This argument is ignored if the missing_value argument is not present.<o:p></o:p></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'>[positive] = 'up' or 'down' depending on whether a user-passed vertical
-energy (heat) flux or surface momentum flux (stress) input to CMOR is positive
-when it is directed upward or downward, respectively.<span style="mso-spacerun:
-yes">   </span>This information will be used by CMOR to determine
-whether a sign change is necessary to make the data consistent with the MIP
-requirements.<span style="mso-spacerun: yes">  </span>This argument is
-required for vertical energy and salt fluxes, for "flux correction"
-fields, and for surface stress; it is ignored for all other variables.<o:p></o:p></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'>[original_name] = the name of the variable as it is commonly known at
-the user's home institute.<span style="mso-spacerun: yes">  </span>If the
-variable passed to CMOR was computed in some simple way from two or more
-original fields (e.g., subtracting the upwelling and downwelling fluxes to get
-a net flux), then it is recommended that this be indicated in the
-"original_name" (e.g., "irup – irdown", where
-"irup" and "irdown" are the names of the original fields
-that were subtracted).<span style="mso-spacerun: yes">  </span>If more
-complicated processing was required, this information would more naturally be
-included in a "history" attribute for this variable, described next.<o:p></o:p></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'>[history] = how the variable was processed before outputting through
-CMOR (e.g., give name(s) of the file(s) from which the data were read and
-indicate what calculations were performed, such as interpolating to standard
-pressure levels or adding 2 fluxes together).<span style="mso-spacerun:
-yes">  </span>This information should allow someone at the user's
-institute to reproduce the procedure that created the CMOR output.<span
-style="mso-spacerun: yes">  </span>Note that this history attribute is
-variable-specific, whereas the history attribute defined by cmor_dataset
-provides information concerning the model simulation itself or refers to
-processing procedures common to all variables (for example, mapping model
-output from an irregular grid to a Cartesian coordinate grid).<span
-style="mso-spacerun: yes">  </span>Note that when appropriate, CMOR will
-also indicate in the "history" attribute any operations it performs
-on the data (e.g., scaling the data, changing the sign, changing its type,
-reordering the dimensions, reversing a coordinate's direction or offsetting
-longitude). Any user-defined history will precede the information generated by
-CMOR.<o:p></o:p></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'>[comment] = additional notes concerning this variable can be included
-here.<o:p></o:p></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'><o:p> </o:p></p>
-
-<p class=MsoNormal style='text-align:justify;text-indent:.5in'><i
-style='mso-bidi-font-style:normal'>Returns</i>: <o:p></o:p></p>
-
-<p class=MsoNormal style='margin-left:1.5in;text-align:justify;text-indent:
--.5in'><span style='color:#00B050'>Fortran: a negative integer if an error is
-encountered; otherwise returns a positive integer (the “handle”) uniquely
-identifying the variable.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.5in;text-align:justify;text-indent:
--.5in'><span style='color:blue'>C: 0 upon success.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.5in;text-align:justify;text-indent:
--.5in'><span style='color:#FF6600'>Python: upon success, a positive integer
-(the “handle”) uniquely identifying the variable, or if an error is encountered
-an exception is raised.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'><o:p> </o:p></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'><o:p> </o:p></p>
-
-<h3><a name="_Toc129422022"></a><a name="_Toc149385735"><span style='mso-bookmark:
-_Toc129422022'>Define a Variable Attribute: cmor_set_variable_attribute</span></a><o:p></o:p></h3>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in;page-break-after:avoid'><o:p> </o:p></p>
-
-<p class=MsoNormal style='page-break-after:avoid'><span style='color:#00B050;
-background:silver;mso-highlight:silver'>Fortran: error_flag =
-cmor_set_variable_attribute(integer var_id, character(*) name, character(*)
-value)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='color:blue;background:silver;mso-highlight:silver'>C: error_flag =
-cmor_set_variable_attribute(int variable_id, char *attribute_name, char type,
-void *value)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='text-align:justify'><span style='color:#FF6600;
-background:silver;mso-highlight:silver'>Python: set_variable_attribute(var_id,name,value)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='text-align:justify'><span style='color:#FF6600;
-background:silver;mso-highlight:silver'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-align:justify'><i
-style='mso-bidi-font-style:normal'><span style='color:blue;background:silver;
-mso-highlight:silver'>Description</span></i><span style='color:blue;background:
-silver;mso-highlight:silver'>:<span style="mso-spacerun: yes"> 
-</span>Defines an attribute to be associated with the variable specified by the
-variable_id.<span style="mso-spacerun: yes">  </span>This function is
-unlikely to be called in preparing CMIP5 output, except to delete the
-“ext_cell_measures” attribute (setting it to a empty string). For this reason
-you can only set character type attributes at the moment via Python and
-Fortran.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='text-align:justify'><span style='color:blue;
-background:silver;mso-highlight:silver'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-align:justify'><i
-style='mso-bidi-font-style:normal'><span style='color:blue;background:silver;
-mso-highlight:silver'>Arguments</span></i><span style='color:blue;background:
-silver;mso-highlight:silver'>:<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'><span style='color:blue;background:silver;mso-highlight:silver'>variable_id
-= the “handle” returned by cmor_variable (when the variable was defined), which
-will become better described by the attribute defined in this function.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'><span style='color:blue;background:silver;mso-highlight:silver'>attribute_name
-= name of the attribute<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'><span style='color:blue;background:silver;mso-highlight:silver'>type =
-type of the attribute value passed, which can be ‘d’ (double), ‘f’ (float), ‘l’
-(long), ‘i’ (int), or ‘c’ (char).<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'><span style='color:blue;background:silver;mso-highlight:silver'>value =
-whatever value you wish to set the attribute to (type defined by type
-argument).<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'><span style='color:blue;background:silver;mso-highlight:silver'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'><i style='mso-bidi-font-style:normal'><span style='color:blue;
-background:silver;mso-highlight:silver'>Returns upon success</span></i><span
-style='color:blue;background:silver;mso-highlight:silver'>: <o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify'><span
-style='color:#00B050;background:silver;mso-highlight:silver'>Fortran: 0 <o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify'><span
-style='color:blue;background:silver;mso-highlight:silver'>C: 0 <o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify'><span
-style='color:#FF6600;background:silver;mso-highlight:silver'>Python: 0<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-align:justify'><span
-style='background:silver;mso-highlight:silver'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-align:justify'><span
-style='background:silver;mso-highlight:silver'><o:p> </o:p></span></p>
-
-<h3><a name="_Toc129422023"></a><a name="_Toc149385736"><span style='mso-bookmark:
-_Toc129422023'>Retrieve a Variable Attribute: cmor_get_variable_attribute</span></a><o:p></o:p></h3>
-
-<p class=MsoNormal style='margin-left:.5in;text-align:justify;page-break-after:
-avoid'><span style='background:silver;mso-highlight:silver'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in;page-break-after:
-avoid'><span style='color:#00B050;background:silver;mso-highlight:silver'>Fortran:
-error_flag = cmor_get_variable_attribute(integer var_id, character(*) name,
-character *value)<o:p></o:p></span></p>
-
-<p class=MsoNormal><span style='color:blue;background:silver;mso-highlight:
-silver'>C: error_flag = cmor_get_variable_attribute(int variable_id, char
-*attribute_name, char type, void *value)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='text-align:justify'><span style='color:#FF6600;
-background:silver;mso-highlight:silver'>Python: get_variable_attribute(var_id,name)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='text-align:justify'><span style='color:#FF6600;
-background:silver;mso-highlight:silver'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-align:justify'><i
-style='mso-bidi-font-style:normal'><span style='color:blue;background:silver;
-mso-highlight:silver'>Description</span></i><span style='color:blue;background:
-silver;mso-highlight:silver'>: retrieves an attribute value set for the
-variable specified by the variable_id. This function is unlikely to be called
-in preparing CMIP5 output. The Python and Fortran version will only work on
-attribute of character (string) type, otherwise chaotic results should be expected<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-align:justify'><span
-style='color:blue;background:silver;mso-highlight:silver'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-align:justify'><i
-style='mso-bidi-font-style:normal'><span style='color:blue;background:silver;
-mso-highlight:silver'>Arguments</span></i><span style='color:blue;background:
-silver;mso-highlight:silver'>:<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'><span style='color:blue;background:silver;mso-highlight:silver'>variable_id
-= the “handle” returned by cmor_variable (when the variable was defined)
-identifying which variable the attribute is associated with.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'><span style='color:blue;background:silver;mso-highlight:silver'>attribute_name
-= name of the attribute<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'><span style='color:blue;background:silver;mso-highlight:silver'>type =
-type of the attribute value to be retrieved.<span style="mso-spacerun:
-yes">  </span>This can be ‘d’ (double), ‘f’ (float), ‘l’ (long), ‘i’
-(int), or ‘c’ (char)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'><span style='color:blue;background:silver;mso-highlight:silver'>value =
-the argument that will accept the retrieved attribute.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'><span style='color:blue;background:silver;mso-highlight:silver'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'><i style='mso-bidi-font-style:normal'><span style='color:blue;
-background:silver;mso-highlight:silver'>Returns upon success</span></i><span
-style='color:blue;background:silver;mso-highlight:silver'>: <o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify'><span
-style='color:#00B050;background:silver;mso-highlight:silver'>Fortran: 0 <o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify'><span
-style='color:blue;background:silver;mso-highlight:silver'>C: 0 <o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify'><span
-style='color:#FF6600;background:silver;mso-highlight:silver'>Python: The
-attribute value<o:p></o:p></span></p>
-
-<p class=MsoNormal style='text-align:justify'><span style='background:silver;
-mso-highlight:silver'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='text-align:justify'><span style='background:silver;
-mso-highlight:silver'><o:p> </o:p></span></p>
-
-<h3><a name="_Toc129422024"></a><a name="_Toc149385737"><span style='mso-bookmark:
-_Toc129422024'>Inquire Whether a Variable Attribute Exists:
-cmor_has_variable_attribute</span></a><o:p></o:p></h3>
-
-<p class=MsoNormal style='text-align:justify;page-break-after:avoid'><span
-style='background:silver;mso-highlight:silver'><o:p> </o:p></span></p>
-
-<p class=MsoNormal><span style='color:#00B050;background:silver;mso-highlight:
-silver'>Fortran: error_flag = cmor_has_variable_attribute(integer var_id,
-character(*) name)<o:p></o:p></span></p>
-
-<p class=MsoNormal><span style='color:blue;background:silver;mso-highlight:
-silver'>C: error_flag = cmor_has_variable_attribute(int variable_id, char
-*attribute_name)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='text-align:justify'><span style='color:#FF6600;
-background:silver;mso-highlight:silver'>Python: has_variable_attribute(var_id,name)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='text-align:justify'><span style='color:#FF6600;
-background:silver;mso-highlight:silver'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-align:justify'><i
-style='mso-bidi-font-style:normal'><span style='color:blue;background:silver;
-mso-highlight:silver'>Description</span></i><span style='color:blue;background:
-silver;mso-highlight:silver'>: Determines whether an attribute exists and is
-associated with the variable specified by variable_id, which is a handle
-returned to the user by a previous call to cmor_variable.<span
-style="mso-spacerun: yes">  </span>This function is unlikely to be called
-in preparing CMIP5 output.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-align:justify'><span
-style='color:blue;background:silver;mso-highlight:silver'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-align:justify'><i
-style='mso-bidi-font-style:normal'><span style='color:blue;background:silver;
-mso-highlight:silver'>Arguments</span></i><span style='color:blue;background:
-silver;mso-highlight:silver'>:<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'><span style='color:blue;background:silver;mso-highlight:silver'>variable_id
-= the “handle” specifying which variable is of interest.<span
-style="mso-spacerun: yes">  </span>A variable_id is returned by
-cmor_variable each time a variable is defined.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'><span style='color:blue;background:silver;mso-highlight:silver'>attribute_name
-= name of the attribute of interest.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'><span style='color:blue;background:silver;mso-highlight:silver'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in;page-break-after:avoid'><i style='mso-bidi-font-style:normal'><span
-style='color:blue;background:silver;mso-highlight:silver'>Returns upon success
-(i.e., if the attribute is found): </span></i><span style='color:blue;
-background:silver;mso-highlight:silver'><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify'><span
-style='color:#00B050;background:silver;mso-highlight:silver'>Fortran: 0 <o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify'><span
-style='color:blue;background:silver;mso-highlight:silver'>C: 0 <o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify'><span
-style='color:#FF6600;background:silver;mso-highlight:silver'>Python: True <o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><o:p> </o:p></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><o:p> </o:p></p>
-
-<h2><a name="_Toc129422025"></a><a name="_Toc149385738"><span style='mso-bookmark:
-_Toc129422025'>Writing Data</span></a><o:p></o:p></h2>
-
-<h3><a name="_Toc129422026"></a><a name="_Toc149385739"><span style='mso-bookmark:
-_Toc129422026'>Generate Output Path: cmor_create_output_path</span></a><o:p></o:p></h3>
-
-<p class=MsoNormal style='text-align:justify'><o:p> </o:p></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='color:#00B050;background:silver;mso-highlight:silver'>Fortran: call cmor_create_output_path(var_id,
-path)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='color:blue;background:silver;mso-highlight:silver'>C: isfixed =
-cmor_create_output_path(int var_id, char *path) <o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='color:#FF6600;background:silver;mso-highlight:silver'>Python: path =
-create_output_path(var_id)</span><span style='background:silver;mso-highlight:
-silver'> <o:p></o:p></span></p>
-
-<p class=MsoNormal style='text-align:justify'><span style='background:silver;
-mso-highlight:silver'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-align:justify'><i
-style='mso-bidi-font-style:normal'><span style='background:silver;mso-highlight:
-silver'>Description</span></i><span style='background:silver;mso-highlight:
-silver'>: construct the output path, consistent with CMIP5 specifications,
-where the file will be stored.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'><span style='background:silver;mso-highlight:silver'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'><i style='mso-bidi-font-style:normal'><span style='background:silver;
-mso-highlight:silver'>Arguments</span></i><span style='background:silver;
-mso-highlight:silver'>:<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'><span style='background:silver;mso-highlight:silver'>var_id = variable
-identification (as returned from cmor_variable) you wish to get the output path
-for.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'><span style='background:silver;mso-highlight:silver'>path = string (or pointer
-to a string), which is returned by the function and contains the output path.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'><span style='background:silver;mso-highlight:silver'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='text-align:justify;text-indent:.5in'><i
-style='mso-bidi-font-style:normal'><span style='background:silver;mso-highlight:
-silver'>Returns</span></i><span style='background:silver;mso-highlight:silver'>:
-<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify'><span
-style='color:#00B050;background:silver;mso-highlight:silver'>Fortran: nothing
-it is a subroutine <o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify'><span
-style='color:blue;background:silver;mso-highlight:silver'>C: 0 upon success or
-1 if the filed is a fixed field</span><span style='color:#00B050;background:
-silver;mso-highlight:silver'><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify'><span
-style='color:#FF6600;background:silver;mso-highlight:silver'>Python: the full
-path to the output file</span><span style='color:#00B050;background:silver;
-mso-highlight:silver'><o:p></o:p></span></p>
-
-<h3><a name="_Toc129422027"></a><a name="_Toc149385740"><span style='mso-bookmark:
-_Toc129422027'>Write Data to File: cmor_write</span></a> <o:p></o:p></h3>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><o:p> </o:p></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='color:#00B050'>Fortran: error_flag = cmor_write(var_id, data,
-[file_suffix], [ntimes_passed], [time_vals], [time_bnds], [store_with])<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='color:blue'>C: error_flag = cmor_write(int var_id, void *data, char
-type, char *file_suffix, int ntimes_passed, double *time_vals, double
-*time_bounds, int *store_with) <o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='color:#FF6600'>Python: write(var_id, data, ntimes_passed=None,
-file_suffix="", time_vals=None, time_bnds=None, store_with=None)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='text-align:justify'><o:p> </o:p></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-align:justify'><i
-style='mso-bidi-font-style:normal'>Description</i>:<span style="mso-spacerun:
-yes">  </span>For the variable identified by var_id, write an array of
-data that includes one or more time samples.<span style="mso-spacerun:
-yes">  </span>This function will typically be repeatedly invoked to write
-other variables or append additional time samples of data.<span
-style="mso-spacerun: yes">  </span>Note that time-slices of data must be
-written chronologically.<o:p></o:p></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'><o:p> </o:p></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in;page-break-after:avoid'><i style='mso-bidi-font-style:normal'>Arguments</i>:<o:p></o:p></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'>var_id = integer returned by cmor_variable identifying the variable that
-will be written by this function.<o:p></o:p></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'>data = array of data written by this function (of rank<8).<span
-style="mso-spacerun: yes">  </span>The rank of this array should either
-be: (a) consistent with the number of axes that were defined for it, or (b) it
-should be 1-dimensional, in which case the data must be stored contiguously in
-memory. In case (a), an exception is that for a variable that is a function of
-time and when only one "time-slice" is passed, then the array can
-optionally omit this dimension. Thus, for a variable that is a function of
-longitude, latitude, and time, for example, if only a single time-slice is
-passed to cmor_write, the rank of array "data" may be declared as
-either 2 or 3; when declared rank 3, the time-dimension will be size 1.<span
-style="mso-spacerun: yes">  </span>It is recommended (but not required)
-that the shape of data (i.e., the size of each dimension) be consistent with
-those expected for this variable (based on the axis definitions), but they are
-allowed to be larger (the extra values beyond the defined dimension domain will
-be ignored).<span style="mso-spacerun: yes">  </span>In any case the dimension
-sizes (lengths) must obviously not be smaller than those defined by the calls
-to cmor_axis.<o:p></o:p></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'><span style='color:blue'>type = type of variable array (“data”), which
-can be ‘d’ (double), ‘f’ (float), ‘l’ (long) or ‘i’ (int).<span
-style="mso-spacerun: yes">  </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'>[file_suffix] = string that will be concatenated with a string
-automatically generated by CMOR to form a unique filename where the output is
-written.<span style="mso-spacerun: yes">  </span>This suffix is only
-required when a time-sequence of output fields will not all be written into a
-single file (i.e., two or more files will contain the output for the
-variable).<span style="mso-spacerun: yes">  </span>The file prefix
-generated by CMOR is of the form variable_table, where variable is replaced by
-table_entry (i.e., the name of the variable), and table is replaced by the
-table number (e.g., tas_A1 refers to surface air temperature as specified in
-table A1).<span style="mso-spacerun: yes">  </span>Permitted characters
-will be: a-z, A-Z, 0-9, and “-”.<span style="mso-spacerun: yes">  </span>There
-are no restrictions on the suffix except that it must yield unique filenames
-and that it cannot contain any “_”.<span style="mso-spacerun: yes"> 
-</span>If the user supplies a suffix, the leading '_' should be omitted (e.g.,
-pass '1979-1988', not '_1979-1988').<span style="mso-spacerun: yes"> 
-</span>Note that the suffix passed through cmor_write remains in effect for the
-particular variable until (optionally) redefined by a subsequent call. In the
-case of CMOR “Append mode” (in case the file already existed before a call to
-cmor_setup), then file_suffix is to be used to point to the original file, this
-value should reflect the FULL path where the file can be found, not just the
-file name. CMOR2 will be smart enough to figure out if a suffix was used when
-creating that file. Note that this file will be first moved to a temporary file
-and eventually renamed to reflect the additional times written to it.<o:p></o:p></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'>[ntimes_passed] = integer number of time slices passed on this
-call.<span style="mso-spacerun: yes">  </span>If omitted, the number will
-be assumed to be the size of the time dimension of the data (if there is a time
-dimension).<o:p></o:p></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'>[time_vals] = 1-d array (must be double precision) time coordinate
-values associated with the data array.<span style="mso-spacerun: yes"> 
-</span>This argument should appear only if the time coordinate values were not
-passed in defining the time axis (i.e., in calling cmor_axis).<span
-style="mso-spacerun: yes">  </span>The units should be consistent with
-those passed as an argument to cmor_axis in defining the time axis.<span
-style="mso-spacerun: yes">  </span>If cell bounds are also passed (see
-next argument, '[time_bnds]'), then CMOR will first check that each coordinate
-value is not outside its associated cell bounds; subsequently, however, the
-user-defined coordinate value will be replaced by the mid-point of the interval
-defined by its bounds, and it is this value that will be written to the netCDF
-file.<o:p></o:p></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'><o:p> </o:p></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'>[time_bnds] = 2-d array (must be double precision) containing time
-bounds, which should be in the same units as time_vals.<span
-style="mso-spacerun: yes">  </span>If the time_vals argument is omitted,
-this argument should also be omitted.<span style="mso-spacerun:
-yes">    </span>The array should be dimensioned <span
-style='color:green'>(2, n) in Fortran, </span>and (n,2)<span style='color:green'>
-</span><span style='color:#3366FF'>in C</span><span style='color:#F79646'>/Python,</span>
-where n is the size of time_vals (see CF standard document, <a
-href="http://www.cgd.ucar.edu/cms/eaton/cf-metadata">http://www.cgd.ucar.edu/cms/eaton/cf-metadata</a>,
-for further information).<o:p></o:p></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'>[store_with] = integer returned by cmor_variable identifying the
-variable that the zfactor should be stored with.<span style="mso-spacerun:
-yes">  </span>This argument must be defined when and only when writing a
-z-factor.<span style="mso-spacerun: yes">  </span>(See description of the
-zfactor function above.)<o:p></o:p></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'><o:p> </o:p></p>
-
-<p class=MsoNormal style='text-align:justify;text-indent:.5in;page-break-after:
-avoid'><i style='mso-bidi-font-style:normal'>Returns upon success</i>: <o:p></o:p></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;page-break-after:
-avoid'><span style='color:#00B050'>Fortran: 0 <o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;page-break-after:
-avoid'><span style='color:blue'>C: 0 <o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify'><span
-style='color:#FF6600'>Python: None <o:p></o:p></span></p>
-
-<p class=MsoNormal><o:p> </o:p></p>
-
-<p class=MsoNormal><o:p> </o:p></p>
-
-<h3><a name="_Toc129422028"></a><a name="_Toc149385741"><span style='mso-bookmark:
-_Toc129422028'>Close File(s): cmor_close</span></a><o:p></o:p></h3>
-
-<p class=MsoNormal style='page-break-after:avoid'><o:p> </o:p></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in;page-break-after:
-avoid'><span style='color:#00B050'>Fortran: error_flag = cmor_close(var_id,
-file_name, preserve)</span><span style='color:blue'><span style="mso-spacerun:
-yes">  </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in;page-break-after:
-avoid'><span style='color:blue'>C: error_flag = cmor_close(void) <span
-style="mso-spacerun: yes"> </span>or<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in;page-break-after:
-avoid'><span style='color:blue'>C: error_flag = cmor_close_variable(int var_id,
-char *file_name, int *preserve)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in;page-break-after:
-avoid'><span style='color:#FF6600'>Python: error_flag (or if name=True, returns
-the name of the file) = close(var_id=None, file_name=False, preserve=False)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='text-align:justify'><i style='mso-bidi-font-style:
-normal'><o:p> </o:p></i></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'><i style='mso-bidi-font-style:normal'>Description</i>:<span
-style="mso-spacerun: yes">  </span>Close a single file specified by
-optional argument var_id, or if this argument is omitted, close all files
-created by CMOR (including log files). To be safe, before exiting any program
-that invokes CMOR, it is best to call this function with the argument omitted. In
-C to close a single variable, use: cmor_close_variable(var_id). <span
-style='background:silver;mso-highlight:silver'>When using this function to
-close a single file, an additional optional argument (of type “string”) can be included,
-into which will be returned the file name created by CMOR. [In python, the
-string is returned by the function.]<span style="mso-spacerun: yes"> 
-</span>Another additional optional argument can be passed specifying if the
-variable should be preserved for future use (e.g., if you want to write
-additional data but to a new file).<span style="mso-spacerun: yes"> 
-</span>Note that when preserve is true, <span style="mso-spacerun:
-yes"> </span>the original var_id is preserved.</span><o:p></o:p></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-align:justify;text-indent:-.5in'><o:p> </o:p></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in;page-break-after:avoid'><i style='mso-bidi-font-style:normal'>Arguments</i>:<o:p></o:p></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'><span style="mso-spacerun: yes"> </span>[var_id] = the “handle”
-identifying an individual variable and the associated output file that will be
-closed by this function. <o:p></o:p></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'><span style='background:silver;mso-highlight:silver'>[file_name] = a
-string where the output file name will be stored.<span style="mso-spacerun:
-yes">  </span>The file_name is returned only if its var_id has been included
-in the close_cmor argument list. This option provides a convenient method for
-the user to record the filename, which might be needed on a subsequent call to
-CMOR, for example, in order to append additional time samples to the file.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'><span style='background:silver;mso-highlight:silver'>[preserve] = Do you
-want to preserve the var definition? (0/1) <span style="mso-spacerun:
-yes"> </span>If true, the original var_id is preserved.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'><span style='color:#FF6600'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='text-align:justify;text-indent:.5in'><i
-style='mso-bidi-font-style:normal'>Returns</i>: <o:p></o:p></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify'><span
-style='color:#00B050'>Fortran: 0 upon success<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify'><span
-style='color:blue'>C: 0 upon success<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:1.0in;text-align:justify;text-indent:
--.5in'><span style='color:#FF6600'><span style='mso-tab-count:1'>            </span>Python:
-None if file_name=False, or the name of the file if file_name=True and a var_id
-is passed as an argument.</span><o:p></o:p></p>
-
-<b><span style='font-size:16.0pt;font-family:Arial;mso-fareast-font-family:
-"Times New Roman";mso-bidi-font-family:Arial;mso-font-kerning:16.0pt;
-mso-ansi-language:EN-US;mso-fareast-language:EN-US'><br clear=ALL
-style='page-break-before:always'>
-</span></b>
-
-<h1><a name="_Toc129422029"></a><a name="_Toc149385742"><span style='mso-bookmark:
-_Toc129422029'>Appendix A: Errors in CMOR</span></a><o:p></o:p></h1>
-
-<p class=MsoNormal style='tab-stops:123.0pt'><b style='mso-bidi-font-weight:
-normal'><span style='font-size:14.0pt'><o:p> </o:p></span></b></p>
-
-<h2><a name="_Toc129422030"></a><a name="_Toc149385743"><span style='mso-bookmark:
-_Toc129422030'>Critical Errors</span></a><o:p></o:p></h2>
-
-<p class=MsoNormal style='tab-stops:123.0pt'><span style='font-size:10.0pt;
-mso-bidi-font-size:14.0pt'>The following errors are considered as CRITICAL and
-will cause a CMOR code to stop.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='tab-stops:123.0pt'><span style='font-size:10.0pt;
-mso-bidi-font-size:14.0pt'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l37 level1 lfo25'><![if !supportLists]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'><span style='mso-list:Ignore'>1.<span
-style='font:7.0pt "Times New Roman"'>     </span></span></span><![endif]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'>Calling a CMOR function
-before running cmor_setup<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l37 level1 lfo25'><![if !supportLists]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'><span style='mso-list:Ignore'>2.<span
-style='font:7.0pt "Times New Roman"'>     </span></span></span><![endif]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'>NetCDF version is neither
-3.6.3 or 4.1 or greater<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l37 level1 lfo25'><![if !supportLists]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'><span style='mso-list:Ignore'>3.<span
-style='font:7.0pt "Times New Roman"'>     </span></span></span><![endif]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'>Udunits could not parse
-units<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l37 level1 lfo25'><![if !supportLists]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'><span style='mso-list:Ignore'>4.<span
-style='font:7.0pt "Times New Roman"'>     </span></span></span><![endif]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'>Incompatible units<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l37 level1 lfo25'><![if !supportLists]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'><span style='mso-list:Ignore'>5.<span
-style='font:7.0pt "Times New Roman"'>     </span></span></span><![endif]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'>Udunits could not create a
-converter<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l37 level1 lfo25'><![if !supportLists]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'><span style='mso-list:Ignore'>6.<span
-style='font:7.0pt "Times New Roman"'>     </span></span></span><![endif]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'>Logfile could not be open
-for writing<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l37 level1 lfo25'><![if !supportLists]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'><span style='mso-list:Ignore'>7.<span
-style='font:7.0pt "Times New Roman"'>     </span></span></span><![endif]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'>Output directory does not
-exist<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l37 level1 lfo25'><![if !supportLists]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'><span style='mso-list:Ignore'>8.<span
-style='font:7.0pt "Times New Roman"'>     </span></span></span><![endif]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'>Output directory is not a
-directory<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l37 level1 lfo25'><![if !supportLists]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'><span style='mso-list:Ignore'>9.<span
-style='font:7.0pt "Times New Roman"'>     </span></span></span><![endif]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'>User does not have
-read/write privileges on the output directory<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l37 level1 lfo25'><![if !supportLists]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'><span style='mso-list:Ignore'>10.<span
-style='font:7.0pt "Times New Roman"'>   </span></span></span><![endif]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'>Wrong value for error_mode<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l37 level1 lfo25'><![if !supportLists]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'><span style='mso-list:Ignore'>11.<span
-style='font:7.0pt "Times New Roman"'>   </span></span></span><![endif]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'>wrong value for netCDF mode<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l37 level1 lfo25'><![if !supportLists]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'><span style='mso-list:Ignore'>12.<span
-style='font:7.0pt "Times New Roman"'>   </span></span></span><![endif]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'>error reading udunits system<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l37 level1 lfo25'><![if !supportLists]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'><span style='mso-list:Ignore'>13.<span
-style='font:7.0pt "Times New Roman"'>   </span></span></span><![endif]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'>NetCDF could not set
-variable attribute<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l37 level1 lfo25'><![if !supportLists]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'><span style='mso-list:Ignore'>14.<span
-style='font:7.0pt "Times New Roman"'>   </span></span></span><![endif]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'>Dataset does not have one of
-the required attributes (required attributes can be defined in the MIP table)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l37 level1 lfo25'><![if !supportLists]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'><span style='mso-list:Ignore'>15.<span
-style='font:7.0pt "Times New Roman"'>   </span></span></span><![endif]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'>Required global attribute is
-missing<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l37 level1 lfo25'><![if !supportLists]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'><span style='mso-list:Ignore'>16.<span
-style='font:7.0pt "Times New Roman"'>   </span></span></span><![endif]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'>If CMIP5 project: source
-attributes does not start with model_id attribute.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l37 level1 lfo25'><![if !supportLists]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'><span style='mso-list:Ignore'>17.<span
-style='font:7.0pt "Times New Roman"'>   </span></span></span><![endif]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'>Forcing dataset attribute is
-not valid<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l37 level1 lfo25'><![if !supportLists]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'><span style='mso-list:Ignore'>18.<span
-style='font:7.0pt "Times New Roman"'>   </span></span></span><![endif]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'>Leap_year defined with
-invalid leap_month<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l37 level1 lfo25'><![if !supportLists]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'><span style='mso-list:Ignore'>19.<span
-style='font:7.0pt "Times New Roman"'>   </span></span></span><![endif]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'>Invalid leap month (<1 or
->12)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l37 level1 lfo25'><![if !supportLists]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'><span style='mso-list:Ignore'>20.<span
-style='font:7.0pt "Times New Roman"'>   </span></span></span><![endif]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'>Leap month defined but no
-leap year<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l37 level1 lfo25'><![if !supportLists]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'><span style='mso-list:Ignore'>21.<span
-style='font:7.0pt "Times New Roman"'>   </span></span></span><![endif]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'>Negative realization number<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l37 level1 lfo25'><![if !supportLists]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'><span style='mso-list:Ignore'>22.<span
-style='font:7.0pt "Times New Roman"'>   </span></span></span><![endif]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'>Zfactor variable not defined
-when needed<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l37 level1 lfo25'><![if !supportLists]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'><span style='mso-list:Ignore'>23.<span
-style='font:7.0pt "Times New Roman"'>   </span></span></span><![endif]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'>Zfactor defined w/o values
-and NOT time dependent.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l37 level1 lfo25'><![if !supportLists]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'><span style='mso-list:Ignore'>24.<span
-style='font:7.0pt "Times New Roman"'>   </span></span></span><![endif]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'>Variable has axis defined
-with formula terms depending on axis that are not part of the variable<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l37 level1 lfo25'><![if !supportLists]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'><span style='mso-list:Ignore'>25.<span
-style='font:7.0pt "Times New Roman"'>   </span></span></span><![endif]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'>NetCDF error<span
-style="mso-spacerun: yes">  </span>when creating zfactor variable<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l37 level1 lfo25'><![if !supportLists]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'><span style='mso-list:Ignore'>26.<span
-style='font:7.0pt "Times New Roman"'>   </span></span></span><![endif]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'>NetCDF Error defining
-compression parameters<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l37 level1 lfo25'><![if !supportLists]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'><span style='mso-list:Ignore'>27.<span
-style='font:7.0pt "Times New Roman"'>   </span></span></span><![endif]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'>Calling cmor_write with an
-invalid variable id<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l37 level1 lfo25'><![if !supportLists]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'><span style='mso-list:Ignore'>28.<span
-style='font:7.0pt "Times New Roman"'>   </span></span></span><![endif]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'>Could not create path
-structure<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l37 level1 lfo25'><![if !supportLists]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'><span style='mso-list:Ignore'>29.<span
-style='font:7.0pt "Times New Roman"'>   </span></span></span><![endif]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'>“variable id” contains a “_”
-or a ‘-‘ this means bad MIP table.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l37 level1 lfo25'><![if !supportLists]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'><span style='mso-list:Ignore'>30.<span
-style='font:7.0pt "Times New Roman"'>   </span></span></span><![endif]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'>“file_suffix” contains a “_”<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l37 level1 lfo25'><![if !supportLists]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'><span style='mso-list:Ignore'>31.<span
-style='font:7.0pt "Times New Roman"'>   </span></span></span><![endif]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'>Could not rename the file
-you’re trying to append to.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l37 level1 lfo25'><![if !supportLists]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'><span style='mso-list:Ignore'>32.<span
-style='font:7.0pt "Times New Roman"'>   </span></span></span><![endif]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'>Trying to write an
-“Associated variable” before the variable itself<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l37 level1 lfo25'><![if !supportLists]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'><span style='mso-list:Ignore'>33.<span
-style='font:7.0pt "Times New Roman"'>   </span></span></span><![endif]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'>Output file exists and
-you’re not in append/replace mode<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l37 level1 lfo25'><![if !supportLists]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'><span style='mso-list:Ignore'>34.<span
-style='font:7.0pt "Times New Roman"'>   </span></span></span><![endif]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'>NetCDF Error opening file
-for appending<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l37 level1 lfo25'><![if !supportLists]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'><span style='mso-list:Ignore'>35.<span
-style='font:7.0pt "Times New Roman"'>   </span></span></span><![endif]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'>NetCDF could not find time
-dimension in a file onto which you want to append<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l37 level1 lfo25'><![if !supportLists]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'><span style='mso-list:Ignore'>36.<span
-style='font:7.0pt "Times New Roman"'>   </span></span></span><![endif]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'>NetCDF could not figure out
-the length time dimension in a file onto which you want to append<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l37 level1 lfo25'><![if !supportLists]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'><span style='mso-list:Ignore'>37.<span
-style='font:7.0pt "Times New Roman"'>   </span></span></span><![endif]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'>NetCDF could not find your
-variable while appending to a file<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l37 level1 lfo25'><![if !supportLists]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'><span style='mso-list:Ignore'>38.<span
-style='font:7.0pt "Times New Roman"'>   </span></span></span><![endif]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'>NetCDF could not find time
-dimension in the variable onto which you’re trying to append<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l37 level1 lfo25'><![if !supportLists]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'><span style='mso-list:Ignore'>39.<span
-style='font:7.0pt "Times New Roman"'>   </span></span></span><![endif]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'>NetCDF could not find time
-bounds in the variable onto which you’re trying to append<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l37 level1 lfo25'><![if !supportLists]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'><span style='mso-list:Ignore'>40.<span
-style='font:7.0pt "Times New Roman"'>   </span></span></span><![endif]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'>NetCDF mode got corrupted.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l37 level1 lfo25'><![if !supportLists]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'><span style='mso-list:Ignore'>41.<span
-style='font:7.0pt "Times New Roman"'>   </span></span></span><![endif]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'>NetCDF error creating file<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l37 level1 lfo25'><![if !supportLists]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'><span style='mso-list:Ignore'>42.<span
-style='font:7.0pt "Times New Roman"'>   </span></span></span><![endif]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'>NetCDF error putting file in
-definition mode<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l37 level1 lfo25'><![if !supportLists]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'><span style='mso-list:Ignore'>43.<span
-style='font:7.0pt "Times New Roman"'>   </span></span></span><![endif]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'>NetCDF error writing file
-global attribute<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l37 level1 lfo25'><![if !supportLists]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'><span style='mso-list:Ignore'>44.<span
-style='font:7.0pt "Times New Roman"'>   </span></span></span><![endif]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'>NetCDF error creating
-dimension in file<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l37 level1 lfo25'><![if !supportLists]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'><span style='mso-list:Ignore'>45.<span
-style='font:7.0pt "Times New Roman"'>   </span></span></span><![endif]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'>NetCDF error creating
-variable<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l37 level1 lfo25'><![if !supportLists]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'><span style='mso-list:Ignore'>46.<span
-style='font:7.0pt "Times New Roman"'>   </span></span></span><![endif]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'>NetCDF error writing
-variable attribute<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l37 level1 lfo25'><![if !supportLists]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'><span style='mso-list:Ignore'>47.<span
-style='font:7.0pt "Times New Roman"'>   </span></span></span><![endif]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'>NetCDF error setting
-chunking parameters<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l37 level1 lfo25'><![if !supportLists]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'><span style='mso-list:Ignore'>48.<span
-style='font:7.0pt "Times New Roman"'>   </span></span></span><![endif]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'>NetCDF error leaving
-definition mode<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l37 level1 lfo25'><![if !supportLists]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'><span style='mso-list:Ignore'>49.<span
-style='font:7.0pt "Times New Roman"'>   </span></span></span><![endif]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'>Hybrid coordinate, could not
-find “a” coefficient<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l37 level1 lfo25'><![if !supportLists]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'><span style='mso-list:Ignore'>50.<span
-style='font:7.0pt "Times New Roman"'>   </span></span></span><![endif]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'>Hybrid coordinate, could not
-find “b” coefficient<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l37 level1 lfo25'><![if !supportLists]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'><span style='mso-list:Ignore'>51.<span
-style='font:7.0pt "Times New Roman"'>   </span></span></span><![endif]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'>Hybrid coordinate, could not
-find “a_bnds” coefficient<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l37 level1 lfo25'><![if !supportLists]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'><span style='mso-list:Ignore'>52.<span
-style='font:7.0pt "Times New Roman"'>   </span></span></span><![endif]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'>Hybrid coordinate, could not
-find “b_bnds” coefficient<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l37 level1 lfo25'><![if !supportLists]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'><span style='mso-list:Ignore'>53.<span
-style='font:7.0pt "Times New Roman"'>   </span></span></span><![endif]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'>Hybrid coordinate, could not
-find “p0” coefficient<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l37 level1 lfo25'><![if !supportLists]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'><span style='mso-list:Ignore'>54.<span
-style='font:7.0pt "Times New Roman"'>   </span></span></span><![endif]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'>Hybrid coordinate, could not
-find “ap” coefficient<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l37 level1 lfo25'><![if !supportLists]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'><span style='mso-list:Ignore'>55.<span
-style='font:7.0pt "Times New Roman"'>   </span></span></span><![endif]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'>Hybrid coordinate, could not
-find “ap_bnds” coefficient<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l37 level1 lfo25'><![if !supportLists]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'><span style='mso-list:Ignore'>56.<span
-style='font:7.0pt "Times New Roman"'>   </span></span></span><![endif]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'>Hybrid coordinate, could not
-find “sigma” coefficient<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l37 level1 lfo25'><![if !supportLists]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'><span style='mso-list:Ignore'>57.<span
-style='font:7.0pt "Times New Roman"'>   </span></span></span><![endif]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'>Hybrid coordinate, could not
-find “sigma_bnds” coefficient<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l37 level1 lfo25'><![if !supportLists]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'><span style='mso-list:Ignore'>58.<span
-style='font:7.0pt "Times New Roman"'>   </span></span></span><![endif]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'>NetCDF writing error<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l37 level1 lfo25'><![if !supportLists]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'><span style='mso-list:Ignore'>59.<span
-style='font:7.0pt "Times New Roman"'>   </span></span></span><![endif]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'>NetCDF error closing file<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l37 level1 lfo25'><![if !supportLists]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'><span style='mso-list:Ignore'>60.<span
-style='font:7.0pt "Times New Roman"'>   </span></span></span><![endif]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'>Could not rename temporary
-file to its final name.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l37 level1 lfo25'><![if !supportLists]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'><span style='mso-list:Ignore'>61.<span
-style='font:7.0pt "Times New Roman"'>   </span></span></span><![endif]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'>Cdms could not convert time
-values for calendar.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l37 level1 lfo25'><![if !supportLists]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'><span style='mso-list:Ignore'>62.<span
-style='font:7.0pt "Times New Roman"'>   </span></span></span><![endif]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'>Variable does not have all
-required attributes (cmor_variable)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l37 level1 lfo25'><![if !supportLists]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'><span style='mso-list:Ignore'>63.<span
-style='font:7.0pt "Times New Roman"'>   </span></span></span><![endif]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'>Reference variable is
-defined with “positive”, user did not pass it to cmor_variable<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l37 level1 lfo25'><![if !supportLists]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'><span style='mso-list:Ignore'>64.<span
-style='font:7.0pt "Times New Roman"'>   </span></span></span><![endif]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'>Could not allocate memory
-for zfactor elements<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l37 level1 lfo25'><![if !supportLists]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'><span style='mso-list:Ignore'>65.<span
-style='font:7.0pt "Times New Roman"'>   </span></span></span><![endif]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'>Udunits error freeing units<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l37 level1 lfo25'><![if !supportLists]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'><span style='mso-list:Ignore'>66.<span
-style='font:7.0pt "Times New Roman"'>   </span></span></span><![endif]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'>Udunits error freeing
-converter<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l37 level1 lfo25'><![if !supportLists]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'><span style='mso-list:Ignore'>67.<span
-style='font:7.0pt "Times New Roman"'>   </span></span></span><![endif]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'>Could not allocate memory
-for zfactor_bounds<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l37 level1 lfo25'><![if !supportLists]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'><span style='mso-list:Ignore'>68.<span
-style='font:7.0pt "Times New Roman"'>   </span></span></span><![endif]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'>Calling cmor_variable before
-reading in a MIP table<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l37 level1 lfo25'><![if !supportLists]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'><span style='mso-list:Ignore'>69.<span
-style='font:7.0pt "Times New Roman"'>   </span></span></span><![endif]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'>Too many variable defined
-(see appendix on CMOR limits)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l37 level1 lfo25'><![if !supportLists]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'><span style='mso-list:Ignore'>70.<span
-style='font:7.0pt "Times New Roman"'>   </span></span></span><![endif]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'>Could not find variable in
-MIP table<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l37 level1 lfo25'><![if !supportLists]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'><span style='mso-list:Ignore'>71.<span
-style='font:7.0pt "Times New Roman"'>   </span></span></span><![endif]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'>Wrong parameter “positive”
-passed<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l37 level1 lfo25'><![if !supportLists]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'><span style='mso-list:Ignore'>72.<span
-style='font:7.0pt "Times New Roman"'>   </span></span></span><![endif]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'>No “positive” parameter
-passed to cmor_variable and it is required for this variable<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l37 level1 lfo25'><![if !supportLists]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'><span style='mso-list:Ignore'>73.<span
-style='font:7.0pt "Times New Roman"'>   </span></span></span><![endif]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'>Variable defined with too
-many (not enough) dimensions<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l37 level1 lfo25'><![if !supportLists]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'><span style='mso-list:Ignore'>74.<span
-style='font:7.0pt "Times New Roman"'>   </span></span></span><![endif]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'>Variable defined with axis
-that should not be on this variable<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l37 level1 lfo25'><![if !supportLists]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'><span style='mso-list:Ignore'>75.<span
-style='font:7.0pt "Times New Roman"'>   </span></span></span><![endif]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'>Variable defined within
-existing axis (wrong axis_id)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l37 level1 lfo25'><![if !supportLists]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'><span style='mso-list:Ignore'>76.<span
-style='font:7.0pt "Times New Roman"'>   </span></span></span><![endif]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'>Defining variable with axes
-defined in a MIP table that is not the current one.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l37 level1 lfo25'><![if !supportLists]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'><span style='mso-list:Ignore'>77.<span
-style='font:7.0pt "Times New Roman"'>   </span></span></span><![endif]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'>Defining a variable with too
-many axes (see annex on CMOR limits)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l37 level1 lfo25'><![if !supportLists]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'><span style='mso-list:Ignore'>78.<span
-style='font:7.0pt "Times New Roman"'>   </span></span></span><![endif]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'>Defining variable with axes
-ids that are not valid.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l37 level1 lfo25'><![if !supportLists]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'><span style='mso-list:Ignore'>79.<span
-style='font:7.0pt "Times New Roman"'>   </span></span></span><![endif]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'>Defining variable with grid
-id that is not valid.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l37 level1 lfo25'><![if !supportLists]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'><span style='mso-list:Ignore'>80.<span
-style='font:7.0pt "Times New Roman"'>   </span></span></span><![endif]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'>Defining a variable with
-dimensions that are not part of the MIP table (except for var named “latitude”
-and “longitude”, since they could have grid axes defined in another MIP table)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l37 level1 lfo25'><![if !supportLists]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'><span style='mso-list:Ignore'>81.<span
-style='font:7.0pt "Times New Roman"'>   </span></span></span><![endif]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'>Trying to retrieve length of
-time for a variable defined w/o time length<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l37 level1 lfo25'><![if !supportLists]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'><span style='mso-list:Ignore'>82.<span
-style='font:7.0pt "Times New Roman"'>   </span></span></span><![endif]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'>Trying to retrieve variable
-shape into an array of wrong rank (Fortran only really)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l37 level1 lfo25'><![if !supportLists]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'><span style='mso-list:Ignore'>83.<span
-style='font:7.0pt "Times New Roman"'>   </span></span></span><![endif]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'>Calling cmor_write with time
-values for a timeless variable<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l37 level1 lfo25'><![if !supportLists]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'><span style='mso-list:Ignore'>84.<span
-style='font:7.0pt "Times New Roman"'>   </span></span></span><![endif]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'>Cannot allocate memory for
-temporary array to write<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l37 level1 lfo25'><![if !supportLists]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'><span style='mso-list:Ignore'>85.<span
-style='font:7.0pt "Times New Roman"'>   </span></span></span><![endif]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'>Invalid absolute mean for
-data written (lower or greater by one order of magintudethan what the MIP table
-allows)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l37 level1 lfo25'><![if !supportLists]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'><span style='mso-list:Ignore'>86.<span
-style='font:7.0pt "Times New Roman"'>   </span></span></span><![endif]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'>Calling cmor_write with time
-values when they have already been defined with cmor_axis when creating time
-axis<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l37 level1 lfo25'><![if !supportLists]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'><span style='mso-list:Ignore'>87.<span
-style='font:7.0pt "Times New Roman"'>   </span></span></span><![endif]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'>Cannot allocate memory to
-store time values<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l37 level1 lfo25'><![if !supportLists]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'><span style='mso-list:Ignore'>88.<span
-style='font:7.0pt "Times New Roman"'>   </span></span></span><![endif]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'>Cannot allocate memory to
-store time bounds values<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l37 level1 lfo25'><![if !supportLists]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'><span style='mso-list:Ignore'>89.<span
-style='font:7.0pt "Times New Roman"'>   </span></span></span><![endif]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'>Time values are not
-monotonic<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l37 level1 lfo25'><![if !supportLists]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'><span style='mso-list:Ignore'>90.<span
-style='font:7.0pt "Times New Roman"'>   </span></span></span><![endif]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'>Calling cmor_write w/o time
-values when no values were defined via cmor_axis when creating time axis<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l37 level1 lfo25'><![if !supportLists]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'><span style='mso-list:Ignore'>91.<span
-style='font:7.0pt "Times New Roman"'>   </span></span></span><![endif]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'>Time values already written
-in file<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l37 level1 lfo25'><![if !supportLists]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'><span style='mso-list:Ignore'>92.<span
-style='font:7.0pt "Times New Roman"'>   </span></span></span><![endif]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'>Time axis units do not
-contain “since” word (cmor_axis)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l37 level1 lfo25'><![if !supportLists]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'><span style='mso-list:Ignore'>93.<span
-style='font:7.0pt "Times New Roman"'>   </span></span></span><![endif]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'>Invalid data type for time
-values (ok are ‘f’,’l’,’i’,’d’)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l37 level1 lfo25'><![if !supportLists]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'><span style='mso-list:Ignore'>94.<span
-style='font:7.0pt "Times New Roman"'>   </span></span></span><![endif]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'>Time values are not within
-time bounds<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l37 level1 lfo25'><![if !supportLists]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'><span style='mso-list:Ignore'>95.<span
-style='font:7.0pt "Times New Roman"'>   </span></span></span><![endif]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'>Non monotonic time bounds<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l37 level1 lfo25'><![if !supportLists]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'><span style='mso-list:Ignore'>96.<span
-style='font:7.0pt "Times New Roman"'>   </span></span></span><![endif]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'>Longitude axis spread over
-360 degrees.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l37 level1 lfo25'><![if !supportLists]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'><span style='mso-list:Ignore'>97.<span
-style='font:7.0pt "Times New Roman"'>   </span></span></span><![endif]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'>Overlapping bound values
-(except for climatological data)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l37 level1 lfo25'><![if !supportLists]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'><span style='mso-list:Ignore'>98.<span
-style='font:7.0pt "Times New Roman"'>   </span></span></span><![endif]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'>bounds and axis values are
-not stored in the same order<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l37 level1 lfo25'><![if !supportLists]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'><span style='mso-list:Ignore'>99.<span
-style='font:7.0pt "Times New Roman"'>   </span></span></span><![endif]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'>requested value for axis not
-present<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l37 level1 lfo25'><![if !supportLists]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'><span style='mso-list:Ignore'>100.<span
-style='font:7.0pt "Times New Roman"'>                 
-</span></span></span><![endif]><span style='font-size:10.0pt;mso-bidi-font-size:
-14.0pt'>approximate time axis interval much greater (>20%) than the one
-defined in your MIP table<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l37 level1 lfo25'><![if !supportLists]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'><span style='mso-list:Ignore'>101.<span
-style='font:7.0pt "Times New Roman"'>                 
-</span></span></span><![endif]><span style='font-size:10.0pt;mso-bidi-font-size:
-14.0pt'>calling cmor_axis before loading a MIP table<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l37 level1 lfo25'><![if !supportLists]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'><span style='mso-list:Ignore'>102.<span
-style='font:7.0pt "Times New Roman"'>                 
-</span></span></span><![endif]><span style='font-size:10.0pt;mso-bidi-font-size:
-14.0pt'>too many axes defined (see appendix on CMOR limits)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l37 level1 lfo25'><![if !supportLists]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'><span style='mso-list:Ignore'>103.<span
-style='font:7.0pt "Times New Roman"'>                 
-</span></span></span><![endif]><span style='font-size:10.0pt;mso-bidi-font-size:
-14.0pt'>could not find reference axis name in current MIP table<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l37 level1 lfo25'><![if !supportLists]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'><span style='mso-list:Ignore'>104.<span
-style='font:7.0pt "Times New Roman"'>                 
-</span></span></span><![endif]><span style='font-size:10.0pt;mso-bidi-font-size:
-14.0pt'>output axis needs to be standard_hybrid_sigma and input axis is not one
-of : “standard_hybrid_sigma”, “alternate_hybrid_sigma”, “standard_sigma”<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l37 level1 lfo25'><![if !supportLists]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'><span style='mso-list:Ignore'>105.<span
-style='font:7.0pt "Times New Roman"'>                 
-</span></span></span><![endif]><span style='font-size:10.0pt;mso-bidi-font-size:
-14.0pt'>MIP table requires to convert axis to unknown type<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l37 level1 lfo25'><![if !supportLists]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'><span style='mso-list:Ignore'>106.<span
-style='font:7.0pt "Times New Roman"'>                 
-</span></span></span><![endif]><span style='font-size:10.0pt;mso-bidi-font-size:
-14.0pt'>requested “region” not present on axis<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l37 level1 lfo25'><![if !supportLists]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'><span style='mso-list:Ignore'>107.<span
-style='font:7.0pt "Times New Roman"'>                 
-</span></span></span><![endif]><span style='font-size:10.0pt;mso-bidi-font-size:
-14.0pt'>axis (with bounds) values are in invalid type (valid are:
-‘f’,’d’,’l’,’i’)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l37 level1 lfo25'><![if !supportLists]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'><span style='mso-list:Ignore'>108.<span
-style='font:7.0pt "Times New Roman"'>                 
-</span></span></span><![endif]><span style='font-size:10.0pt;mso-bidi-font-size:
-14.0pt'>requested values already checked but stored internally, could be bad
-user cleanup<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l37 level1 lfo25'><![if !supportLists]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'><span style='mso-list:Ignore'>109.<span
-style='font:7.0pt "Times New Roman"'>                 
-</span></span></span><![endif]><span style='font-size:10.0pt;mso-bidi-font-size:
-14.0pt'>MIP table defined for version of CMOR greater than the library you’re
-using<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l37 level1 lfo25'><![if !supportLists]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'><span style='mso-list:Ignore'>110.<span
-style='font:7.0pt "Times New Roman"'>                 
-</span></span></span><![endif]><span style='font-size:10.0pt;mso-bidi-font-size:
-14.0pt'>too many experiments defined in MIP table (see appendix on CMOR limits)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l37 level1 lfo25'><![if !supportLists]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'><span style='mso-list:Ignore'>111.<span
-style='font:7.0pt "Times New Roman"'>                 
-</span></span></span><![endif]><span style='font-size:10.0pt;mso-bidi-font-size:
-14.0pt'>cmor_set_table used with invalid table_id<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l37 level1 lfo25'><![if !supportLists]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'><span style='mso-list:Ignore'>112.<span
-style='font:7.0pt "Times New Roman"'>                 
-</span></span></span><![endif]><span style='font-size:10.0pt;mso-bidi-font-size:
-14.0pt'>MIP table<span style="mso-spacerun: yes">  </span>has too many
-axes defined in it (see appendix on CMOR limits)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l37 level1 lfo25'><![if !supportLists]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'><span style='mso-list:Ignore'>113.<span
-style='font:7.0pt "Times New Roman"'>                 
-</span></span></span><![endif]><span style='font-size:10.0pt;mso-bidi-font-size:
-14.0pt'>MIP table<span style="mso-spacerun: yes">  </span>has too many variables
-defined in it (see appendix on CMOR limits)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l37 level1 lfo25'><![if !supportLists]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'><span style='mso-list:Ignore'>114.<span
-style='font:7.0pt "Times New Roman"'>                 
-</span></span></span><![endif]><span style='font-size:10.0pt;mso-bidi-font-size:
-14.0pt'>MIP table<span style="mso-spacerun: yes">  </span>has too many
-mappings defined in it (see appendix on CMOR limits)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l37 level1 lfo25'><![if !supportLists]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'><span style='mso-list:Ignore'>115.<span
-style='font:7.0pt "Times New Roman"'>                 
-</span></span></span><![endif]><span style='font-size:10.0pt;mso-bidi-font-size:
-14.0pt'>MIP table<span style="mso-spacerun: yes">  </span>defines the same
-mapping twice<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l37 level1 lfo25'><![if !supportLists]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'><span style='mso-list:Ignore'>116.<span
-style='font:7.0pt "Times New Roman"'>                 
-</span></span></span><![endif]><span style='font-size:10.0pt;mso-bidi-font-size:
-14.0pt'>grid mapping has too many parameters (see appendix on CMOR limits)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l37 level1 lfo25'><![if !supportLists]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'><span style='mso-list:Ignore'>117.<span
-style='font:7.0pt "Times New Roman"'>                 
-</span></span></span><![endif]><span style='font-size:10.0pt;mso-bidi-font-size:
-14.0pt'>grid has different number of axes than what grid_mapping prescribes.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l37 level1 lfo25'><![if !supportLists]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'><span style='mso-list:Ignore'>118.<span
-style='font:7.0pt "Times New Roman"'>                 
-</span></span></span><![endif]><span style='font-size:10.0pt;mso-bidi-font-size:
-14.0pt'>Could not find all the axes required by grid_mapping<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l37 level1 lfo25'><![if !supportLists]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'><span style='mso-list:Ignore'>119.<span
-style='font:7.0pt "Times New Roman"'>                 
-</span></span></span><![endif]><span style='font-size:10.0pt;mso-bidi-font-size:
-14.0pt'>Call to cmor_grid with axis that are not created yet via cmor_axis<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l37 level1 lfo25'><![if !supportLists]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'><span style='mso-list:Ignore'>120.<span
-style='font:7.0pt "Times New Roman"'>                 
-</span></span></span><![endif]><span style='font-size:10.0pt;mso-bidi-font-size:
-14.0pt'>Too many grids defined (see appendix on cmor_limits)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l37 level1 lfo25'><![if !supportLists]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'><span style='mso-list:Ignore'>121.<span
-style='font:7.0pt "Times New Roman"'>                 
-</span></span></span><![endif]><span style='font-size:10.0pt;mso-bidi-font-size:
-14.0pt'>Call to cmor_grid w/o latitude array<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l37 level1 lfo25'><![if !supportLists]><span
-style='font-size:10.0pt;mso-bidi-font-size:14.0pt'><span style='mso-list:Ignore'>122.<span
-style='font:7.0pt "Times New Roman"'>                 
-</span></span></span><![endif]><span style='font-size:10.0pt;mso-bidi-font-size:
-14.0pt'>Call to cmor_grid w/o longitude array<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt;
-mso-bidi-font-size:14.0pt'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='tab-stops:123.0pt'><b style='mso-bidi-font-weight:
-normal'><span style='font-size:14.0pt'><o:p> </o:p></span></b></p>
-
-<p class=MsoNormal style='tab-stops:123.0pt'><b style='mso-bidi-font-weight:
-normal'><span style='font-size:14.0pt'><o:p> </o:p></span></b></p>
-
-<b><span style='font-size:16.0pt;font-family:Arial;mso-fareast-font-family:
-"Times New Roman";mso-bidi-font-family:Arial;mso-font-kerning:16.0pt;
-mso-ansi-language:EN-US;mso-fareast-language:EN-US'><br clear=ALL
-style='page-break-before:always'>
-</span></b>
-
-<h1><a name="_Toc129422031"></a><a name="_Toc149385744"><span style='mso-bookmark:
-_Toc129422031'>Appendix B: Limits in cmor</span></a><o:p></o:p></h1>
-
-<p class=MsoNormal style='tab-stops:123.0pt'><span style='font-size:10.0pt;
-mso-bidi-font-size:14.0pt'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='tab-stops:123.0pt'><span style='font-size:10.0pt;
-mso-bidi-font-size:14.0pt'>The following are defined in cmor.h<o:p></o:p></span></p>
-
-<p class=MsoNormal style='tab-stops:123.0pt'><span style='font-size:10.0pt;
-mso-bidi-font-size:14.0pt'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='tab-stops:123.0pt'><span style='font-size:10.0pt;
-mso-bidi-font-size:14.0pt'>#define CMOR_MAX_STRING 1024<o:p></o:p></span></p>
-
-<p class=MsoNormal><span style='font-size:10.0pt;mso-bidi-font-size:14.0pt'>#define
-CMOR_DEF_ATT_STR_LEN 256<o:p></o:p></span></p>
-
-<p class=MsoNormal style='tab-stops:123.0pt'><span style='font-size:10.0pt;
-mso-bidi-font-size:14.0pt'>#define CMOR_MAX_ELEMENTS 500<o:p></o:p></span></p>
-
-<p class=MsoNormal style='tab-stops:123.0pt'><span style='font-size:10.0pt;
-mso-bidi-font-size:14.0pt'>#define CMOR_MAX_AXES CMOR_MAX_ELEMENTS*3<o:p></o:p></span></p>
-
-<p class=MsoNormal style='tab-stops:123.0pt'><span style='font-size:10.0pt;
-mso-bidi-font-size:14.0pt'>#define CMOR_MAX_VARIABLES CMOR_MAX_ELEMENTS<o:p></o:p></span></p>
-
-<p class=MsoNormal style='tab-stops:123.0pt'><span style='font-size:10.0pt;
-mso-bidi-font-size:14.0pt'>#define CMOR_MAX_GRIDS 100<o:p></o:p></span></p>
-
-<p class=MsoNormal style='tab-stops:123.0pt'><span style='font-size:10.0pt;
-mso-bidi-font-size:14.0pt'>#define CMOR_MAX_DIMENSIONS 7<o:p></o:p></span></p>
-
-<p class=MsoNormal style='tab-stops:123.0pt'><span style='font-size:10.0pt;
-mso-bidi-font-size:14.0pt'>#define CMOR_MAX_ATTRIBUTES 100<o:p></o:p></span></p>
-
-<p class=MsoNormal style='tab-stops:123.0pt'><span style='font-size:10.0pt;
-mso-bidi-font-size:14.0pt'>#define CMOR_MAX_ERRORS 10<o:p></o:p></span></p>
-
-<p class=MsoNormal style='tab-stops:123.0pt'><span style='font-size:10.0pt;
-mso-bidi-font-size:14.0pt'>#define CMOR_MAX_TABLES 10<o:p></o:p></span></p>
-
-<p class=MsoNormal style='tab-stops:123.0pt'><span style='font-size:10.0pt;
-mso-bidi-font-size:14.0pt'>#define CMOR_MAX_GRID_ATTRIBUTES 25<o:p></o:p></span></p>
-
-<b><span style='font-size:10.0pt;mso-bidi-font-size:16.0pt;font-family:Arial;
-mso-fareast-font-family:"Times New Roman";mso-bidi-font-family:Arial;
-mso-font-kerning:16.0pt;mso-ansi-language:EN-US;mso-fareast-language:EN-US'><br
-clear=ALL style='page-break-before:always'>
-</span></b>
-
-<h1><a name="_Toc129422032"></a><a name="_Toc149385745"><span style='mso-bookmark:
-_Toc129422032'>Appendix C: Sample Codes</span></a><o:p></o:p></h1>
-
-<h2><a name="_Toc129422033"></a><a name="_Toc149385746"><span style='mso-bookmark:
-_Toc129422033'>FORTRAN</span></a><o:p></o:p></h2>
-
-<h3><a name="_Toc129422034"></a><a name="_Toc149385747"><span style='mso-bookmark:
-_Toc129422034'>Sample Program 1</span></a><o:p></o:p></h3>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!!$pgf90
--I/work/NetCDF/5.1/include -L/work/NetCDF/5.1/lib -l netcdf -L. -l cmor
-Test/test_dimensionless.f90 -IModules -o cmor_test<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!!$pgf90
--g -I/pcmdi/charles_work/NetCDF/include -L/pcmdi/charles_work/NetCDF/lib
--lnetcdf -module Modules -IModules -L. -lcmor
--I/pcmdi/charles_work/Unidata/include -L/pcmdi/charles_work/Unidata/lib
--ludunits Test/test_dimensionless.f90 -o cmor_test<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>MODULE
-local_subs<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>USE cmor_users_functions<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>PRIVATE<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>PUBLIC read_coords, read_time,
-read_3d_input_files, read_2d_input_files<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>CONTAINS<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>SUBROUTINE read_coords(alats, alons,
-plevs, bnds_lat, bnds_lon)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">    </span>IMPLICIT NONE<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">    </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">    </span>DOUBLE PRECISION,
-INTENT(OUT), DIMENSION(:) :: alats<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">    </span>DOUBLE PRECISION,
-INTENT(OUT), DIMENSION(:) :: alons<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">    </span>DOUBLE PRECISION, INTENT(OUT),
-DIMENSION(:) :: plevs<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">    </span>DOUBLE PRECISION,
-INTENT(OUT), DIMENSION(:,:) :: bnds_lat<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">    </span>DOUBLE PRECISION,
-INTENT(OUT), DIMENSION(:,:) :: bnds_lon<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">    </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">    </span>INTEGER :: i<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">    </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">    </span>DO i = 1, SIZE(alons)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">       </span>alons(i)
-= (i-1)*360./SIZE(alons)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">       </span>bnds_lon(1,i)
-= (i - 1.5)*360./SIZE(alons)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">      
-</span>bnds_lon(2,i) = (i - 0.5)*360./SIZE(alons)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">    </span>END DO<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">    </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">    </span>DO i = 1, SIZE(alats)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">       </span>alats(i)
-= (size(alats)+1-i)*10<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">      
-</span>bnds_lat(1,i) = (size(alats)+1-i)*10 + 5.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">      
-</span>bnds_lat(2,i) = (size(alats)+1-i)*10 - 5.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">    </span>END DO<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">    </span>DO i = 1, SIZE(plevs)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">       </span>plevs(i)
-= i*1.0e4<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">    </span>END DO<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">      </span>plevs =
-(/100000., 92500., 85000., 70000.,&<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">       </span>60000.,
-50000., 40000., 30000., 25000., 20000.,&<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">       </span>15000.,
-10000., 7000., 5000., 3000., 2000., 1000. /)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">    </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">    </span>RETURN<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>END SUBROUTINE read_coords<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>SUBROUTINE read_time(it, time,
-time_bnds)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">    </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">    </span>IMPLICIT NONE<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">    </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">    </span>INTEGER, INTENT(IN) :: it<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">    </span>DOUBLE PRECISION,
-INTENT(OUT) :: time<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">    </span>DOUBLE PRECISION,
-INTENT(OUT), DIMENSION(2,1) :: time_bnds<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes"> </span><span style="mso-spacerun:
-yes">   </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">    </span>time = (it-0.5)*30.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">    </span>time_bnds(1,1) = (it-1)*30.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">    </span>time_bnds(2,1) = it*30.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">    </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">    </span>RETURN<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>END SUBROUTINE read_time<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>SUBROUTINE read_3d_input_files(it,
-varname, field)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">    </span>IMPLICIT NONE<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">    </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">    </span>INTEGER, INTENT(IN) :: it<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">    </span>CHARACTER(len=*),
-INTENT(IN) :: varname<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">    </span>REAL, INTENT(OUT),
-DIMENSION(:,:,:) :: field<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">    </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">    </span>INTEGER :: i, j, k<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">    </span>REAL :: factor, offset<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">    </span>CHARACTER(len=LEN(varname))
-:: tmp<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">    </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">    </span>tmp =
-TRIM(ADJUSTL(varname))<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">    </span>SELECT CASE (tmp)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">    </span>CASE ('CLOUD')<span
-style="mso-spacerun: yes">  </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">   </span><span style="mso-spacerun:
-yes">    </span>factor = 0.1<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">       </span>offset =
--50.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">    </span>CASE ('U')<span
-style="mso-spacerun: yes">  </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">       </span>factor =
-1.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">       </span>offset =
-100.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">    </span>CASE ('T')<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">       </span>factor =
-0.5<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">       </span>offset =
--150.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">    </span>END SELECT<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">    </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">    </span>DO k=1,SIZE(field, 3)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">       </span>DO
-j=1,SIZE(field, 2)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun:
-yes">          </span>DO
-i=1,SIZE(field, 1)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun:
-yes">            
-</span>field(i,j,k) = ((k-1)*64 + (j-1)*16 + (i-1)*4 + it)*factor - offset<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun:
-yes">          </span>END DO<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">       </span>END DO<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">    </span>END DO<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">    </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>END SUBROUTINE read_3d_input_files<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>SUBROUTINE read_2d_input_files(it,
-varname, field)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">    </span>IMPLICIT NONE<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">    </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">    </span>INTEGER, INTENT(IN) :: it<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">    </span>CHARACTER(len=*),
-INTENT(IN) :: varname<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">    </span>REAL, INTENT(OUT),
-DIMENSION(:,:) :: field<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">    </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">    </span>INTEGER :: i, j<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">    </span>REAL :: factor, offset<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">    </span>CHARACTER(len=LEN(varname))
-:: tmp<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">    </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">    </span>tmp =
-TRIM(ADJUSTL(varname))<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">    </span>SELECT CASE (tmp)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">    </span>CASE ('LATENT')<span
-style="mso-spacerun: yes">  </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">       </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">       </span>factor =
-1.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">       </span>offset =
-20.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">    </span>CASE ('TSURF')<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">       </span>factor =
-2.0<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">       </span>offset =
--220.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">    </span>CASE ('SOIL_WET')<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">       </span>factor =
-10.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">       </span>offset =
-0.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">    </span>CASE ('PSURF')<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">       </span>factor =
-100.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">       </span>offset =
--9.7e4<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">    </span>END SELECT<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">    </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">    </span>DO j=1,SIZE(field, 2)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">       </span>DO
-i=1,SIZE(field, 1)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun:
-yes">         
-</span>field(i,size(field,2)+1-j) = ((j-1)*16 + (i-1)*4 + it)*factor - offset<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">       </span>END DO<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">    </span>END DO<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>END SUBROUTINE read_2d_input_files<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>END
-MODULE local_subs<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>PROGRAM
-ipcc_test_code<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<span
-style="mso-spacerun: yes">   </span>Purpose:<span
-style="mso-spacerun: yes">   </span>To serve as a generic example of
-an application that<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<span
-style="mso-spacerun: yes">       </span>uses the
-"Climate Model Output Rewriter" (CMOR)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<span
-style="mso-spacerun: yes">    </span>CMOR writes CF-compliant
-netCDF files.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<span
-style="mso-spacerun: yes">    </span>Its use is strongly
-encouraged by the IPCC and is intended for use <o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<span
-style="mso-spacerun: yes">       </span>by those
-participating in many community-coordinated standard <o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<span
-style="mso-spacerun: yes">       </span>climate
-model experiments (e.g., AMIP, CMIP, CFMIP, PMIP, APE,<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<span
-style="mso-spacerun: yes">       </span>etc.)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<span
-style="mso-spacerun: yes">   </span>Background information for this
-sample code:<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<span
-style="mso-spacerun: yes">      </span>Atmospheric
-standard output requested by IPCC are listed in <o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<span
-style="mso-spacerun: yes">   </span>tables available on the web.<span
-style="mso-spacerun: yes">  </span>Monthly mean output is found in<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<span
-style="mso-spacerun: yes">   </span>tables A1a and A1c.<span
-style="mso-spacerun: yes">  </span>This sample code processes only two 3-d
-<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<span
-style="mso-spacerun: yes">   </span>variables listed in table A1c
-("monthly mean atmosphere 3-D data" <o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<span
-style="mso-spacerun: yes">   </span>and only four 2-d variables
-listed in table A1a ("monthly mean <o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<span
-style="mso-spacerun: yes">   </span>atmosphere + land surface 2-D
-(latitude, longitude) data").<span style="mso-spacerun: yes"> 
-</span>The <o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<span
-style="mso-spacerun: yes">   </span>extension to many more fields is
-trivial.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<span
-style="mso-spacerun: yes">      </span>For this
-example, the user must fill in the sections of code that <o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<span
-style="mso-spacerun: yes">   </span>extract the 3-d and 2-d fields
-from his monthly mean "history" <o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<span
-style="mso-spacerun: yes">   </span>files (which usually contain many
-variables but only a single time <o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<span
-style="mso-spacerun: yes">   </span>slice).<span style="mso-spacerun:
-yes">  </span>The CMOR code will write each field in a separate file, but <o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<span
-style="mso-spacerun: yes">   </span>many monthly mean time-samples
-will be stored together.<span style="mso-spacerun: yes">  </span>These <o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<span
-style="mso-spacerun: yes">   </span>constraints partially determine
-the structure of the code.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<span
-style="mso-spacerun: yes">   </span>Record of revisions:<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<span
-style="mso-spacerun: yes">       </span>Date<span
-style="mso-spacerun: yes">       
-</span>Programmer(s)<span style="mso-spacerun:
-yes">          
-</span>Description of change<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<span
-style="mso-spacerun: yes">       </span>====<span
-style="mso-spacerun: yes">       
-</span>==========<span style="mso-spacerun:
-yes">             
-</span>=====================<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<span
-style="mso-spacerun: yes">      </span>10/22/03<span
-style="mso-spacerun: yes">     </span>Rusty Koder<span
-style="mso-spacerun:
-yes">             
-</span>Original code<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<span
-style="mso-spacerun: yes">      
-</span>1/28/04<span style="mso-spacerun: yes">    
-</span>Les R. Koder<span style="mso-spacerun:
-yes">            
-</span>Revised to be consistent<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<span
-style="mso-spacerun:
-yes">                                           
-</span>with evolving code design<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!
-include module that contains the user-accessible cmor functions.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>USE cmor_users_functions<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>USE local_subs<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>IMPLICIT NONE<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>!<span style="mso-spacerun:
-yes">   </span>dimension parameters:<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>! ---------------------------------<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>INTEGER, PARAMETER :: ntimes = 2<span
-style="mso-spacerun: yes">    </span>! number of time samples to
-process<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>INTEGER, PARAMETER :: lon = 4<span
-style="mso-spacerun: yes">       </span>! number
-of longitude grid cells<span style="mso-spacerun: yes">  </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>INTEGER, PARAMETER :: lat = 3<span
-style="mso-spacerun: yes">       </span>! number
-of latitude grid cells<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>INTEGER, PARAMETER :: lev = 5<span
-style="mso-spacerun: yes">       </span>! number
-of standard pressure levels<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>INTEGER, PARAMETER :: lev2 = 17<span
-style="mso-spacerun: yes">       </span>! number
-of standard pressure levels<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>INTEGER, PARAMETER :: n2d = 4<span
-style="mso-spacerun: yes">       </span>! number
-of IPCC Table A1a fields to be<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun:
-yes">                                     
-</span>!<span style="mso-spacerun: yes">     </span>output.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>INTEGER, PARAMETER :: n3d = 3<span
-style="mso-spacerun: yes">       </span>! number
-of IPCC Table A1c fields to <o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun:
-yes">                                     
-</span>!<span style="mso-spacerun: yes">     </span>be
-output.<span style="mso-spacerun: yes">  </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>!<span style="mso-spacerun:
-yes">   </span>Tables associating the user's variables with IPCC
-standard output <o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>!<span style="mso-spacerun:
-yes">   </span>variables.<span style="mso-spacerun: yes"> 
-</span>The user may choose to make this association in a <o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>!<span style="mso-spacerun:
-yes">   </span>different way (e.g., by defining values of pointers
-that allow him <o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>!<span style="mso-spacerun:
-yes">   </span>to directly retrieve data from a data record
-containing many <o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>!<span style="mso-spacerun:
-yes">   </span>different variables), but in some way the user will
-need to map his <o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>!<span style="mso-spacerun:
-yes">   </span>model output onto the Tables specifying the MIP
-standard output.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>! ----------------------------------<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun:
-yes">                               
-</span>! My variable names for IPCC Table A1c fields<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>CHARACTER (LEN=5), DIMENSION(n3d) ::
-&<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun:
-yes">                                
-</span>varin3d=(/'CLOUD', 'U<span style="mso-spacerun: yes">   
-</span>', 'T<span style="mso-spacerun: yes">    </span>'/)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun:
-yes">                               
-</span>! Units appropriate to my data<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>CHARACTER (LEN=5), DIMENSION(n3d) ::
-&<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun:
-yes">                        
-</span><span style="mso-spacerun:
-yes">         </span>units3d=(/
-'%<span style="mso-spacerun: yes">    </span>', 'm s-1',<span
-style="mso-spacerun: yes">   </span>'K<span style="mso-spacerun:
-yes">    </span>'<span style="mso-spacerun: yes"> 
-</span>/)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun:
-yes">                    
-</span>! Corresponding IPCC Table A1c entry (variable name) <o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>CHARACTER (LEN=2), DIMENSION(n3d) ::
-entry3d = (/ 'cl', 'ua', 'ta' /)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun:
-yes">                               
-</span>! My variable names for IPCC Table A1a fields<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>CHARACTER (LEN=8), DIMENSION(n2d) ::
-&<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun:
-yes">                 
-</span>varin2d=(/ 'LATENT<span style="mso-spacerun: yes">  </span>',
-'TSURF<span style="mso-spacerun: yes">   </span>', 'SOIL_WET',
-'PSURF<span style="mso-spacerun: yes">   </span>' /)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun:
-yes">                               
-</span>! Units appropriate to my data<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">   </span>CHARACTER (LEN=6), DIMENSION(n2d)
-:: &<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">       </span><span
-style="mso-spacerun:
-yes">                   </span>units2d=(/
-'W m-2 ', 'K<span style="mso-spacerun: yes">     </span>',
-'kg m-2', 'Pa<span style="mso-spacerun: yes">    </span>' /)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">   </span>CHARACTER (LEN=4), DIMENSION(n2d)
-:: &<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun:
-yes">                     
-</span>positive2d= (/<span style="mso-spacerun: yes">  </span>'down',<span
-style="mso-spacerun: yes">  </span>'<span style="mso-spacerun:
-yes">    </span>', '<span style="mso-spacerun:
-yes">    </span>', '<span style="mso-spacerun:
-yes">    </span>'<span style="mso-spacerun: yes"> 
-</span>/)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun:
-yes">                    
-</span>! Corresponding IPCC Table A1a entry (variable name) <o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>CHARACTER (LEN=5), DIMENSION(n2d) ::
-&<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun:
-yes">                       
-</span>entry2d = (/ 'hfls ', 'tas<span style="mso-spacerun: yes"> 
-</span>', 'mrsos', 'ps<span style="mso-spacerun: yes">   </span>' /)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<span
-style="mso-spacerun: yes">  </span>uninitialized variables used in
-communicating with CMOR:<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<span
-style="mso-spacerun: yes"> 
-</span>---------------------------------------------------------<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>INTEGER :: error_flag<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>INTEGER :: znondim_id, zfactor_id<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>INTEGER, DIMENSION(n2d) :: var2d_ids<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>INTEGER, DIMENSION(n3d) :: var3d_ids<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>REAL, DIMENSION(lon,lat) :: data2d<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>REAL, DIMENSION(lon,lat,lev2) :: data3d<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>DOUBLE PRECISION, DIMENSION(lat) ::
-alats<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>DOUBLE PRECISION, DIMENSION(lon) ::
-alons<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>DOUBLE PRECISION, DIMENSION(lev2) ::
-plevs<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>DOUBLE PRECISION, DIMENSION(1) :: time<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>DOUBLE PRECISION, DIMENSION(2,1)::
-bnds_time<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>DOUBLE PRECISION, DIMENSION(2,lat) ::
-bnds_lat<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>DOUBLE PRECISION, DIMENSION(2,lon) ::
-bnds_lon<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>DOUBLE PRECISION, DIMENSION(lev) ::
-zlevs<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>DOUBLE PRECISION, DIMENSION(lev+1) ::
-zlev_bnds<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>REAL, DIMENSION(lev) :: a_coeff<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>REAL, DIMENSION(lev) :: b_coeff<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>REAL :: p0<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>REAL, DIMENSION(lev+1) :: a_coeff_bnds<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>REAL, DIMENSION(lev+1) :: b_coeff_bnds<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>INTEGER :: ilon, ilat, ipres, ilev,
-itim, itim2, ilon2,ilat2<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>DOUBLE PRECISION bt<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>character(256)::<span
-style="mso-spacerun: yes">  </span>outpath<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>!<span style="mso-spacerun: yes"> 
-</span>Other variables:<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>!<span style="mso-spacerun: yes"> 
-</span>---------------------<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>INTEGER :: it, m<span
-style="mso-spacerun: yes">  </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>bt=0.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>! ================================<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>! <span style="mso-spacerun:
-yes"> </span>Execution begins here:<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>! ================================<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>! Read coordinate information from
-model into arrays that will be passed <o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>!<span style="mso-spacerun:
-yes">   </span>to CMOR.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>! Read latitude, longitude, and
-pressure coordinate values into <o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>!<span style="mso-spacerun:
-yes">   </span>alats, alons, and plevs, respectively.<span
-style="mso-spacerun: yes">  </span>Also generate latitude and <o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>!<span style="mso-spacerun:
-yes">   </span>longitude bounds, and store in bnds_lat and bnds_lon,
-respectively.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>!<span style="mso-spacerun:
-yes">   </span>Note that all variable names in this code can be
-freely chosen by<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>!<span style="mso-spacerun:
-yes">   </span>the user.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>!<span style="mso-spacerun:
-yes">   </span>The user must write the subroutine that fills the
-coordinate arrays <o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>!<span style="mso-spacerun:
-yes">   </span>and their bounds with actual data.<span
-style="mso-spacerun: yes">  </span>The following line is simply a<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>!<span style="mso-spacerun:
-yes">   </span>a place-holder for the user's code, which should
-replace it.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>!<span style="mso-spacerun: yes"> 
-</span>*** possible user-written call ***<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>call read_coords(alats, alons, plevs,
-bnds_lat, bnds_lon)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>! Specify path where tables can be
-found and indicate that existing <o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>!<span style="mso-spacerun:
-yes">    </span>netCDF files should not be overwritten.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>error_flag = cmor_setup(inpath='Test',
-netcdf_file_action='replace')<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>! Define dataset as output from the
-GICC model (first member of an<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>!<span style="mso-spacerun:
-yes">   </span>ensemble of simulations) run under IPCC 2xCO2
-equilibrium<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>!<span style="mso-spacerun:
-yes">   </span>experiment conditions, and provide information to be
-included as <o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>!<span style="mso-spacerun:
-yes">   </span>attributes in all CF-netCDF files written as part of
-this dataset.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>error_flag = cmor_dataset(<span
-style="mso-spacerun:
-yes">                                  
-</span>&<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">      
-</span>outpath='Test',<span style="mso-spacerun:
-yes">                                        
-</span>&<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">      
-</span>experiment_id='abrupt 4XCO2',<span style="mso-spacerun:
-yes">           </span>&<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">      
-</span>institution=<span style="mso-spacerun:
-yes">                                           
-</span>&<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">       </span>'GICC
-(Generic International Climate Center, ' //<span style="mso-spacerun:
-yes">       </span>&<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">       </span>'Geneva,
-Switzerland)',<span style="mso-spacerun:
-yes">                                
-</span>&<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">      
-</span>source='GICCM1 (2002): ' //<span style="mso-spacerun:
-yes">                            
-</span>&<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">      
-</span>'atmosphere:<span style="mso-spacerun: yes">  </span>GICAM3
-(gicam_0_brnchT_itea_2, T63L32); '// &<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">       </span>'ocean:
-MOM (mom3_ver_3.5.2, 2x3L15); '<span style="mso-spacerun:
-yes">            
-</span>//<span style="mso-spacerun: yes">  </span>&<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">       </span>'sea ice:
-GISIM4; land: GILSM2.5',<span style="mso-spacerun:
-yes">                     
-</span>&<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">      
-</span>calendar='360_day',<span style="mso-spacerun:
-yes">                                     
-</span>&<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">      
-</span>realization=1,<span style="mso-spacerun:
-yes">                                         
-</span>&<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">      
-</span>history='Output from archive/giccm_03_std_2xCO2_2256.', &<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">      
-</span>institute_id = 'PCMDI', &<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">      
-</span>comment='Equilibrium reached after 30-year spin-up ' // &<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">       </span>'after
-which data were output starting with nominal '// &<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">       </span>'date of
-January 2030',<span style="mso-spacerun:
-yes">                     
-</span><span style="mso-spacerun:
-yes">           </span>&<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">      
-</span>references='Model described by Koder and Tolkien ' //<span
-style="mso-spacerun: yes">   </span>&<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">       </span>'(J.
-Geophys. Res., 2001, 576-591).<span style="mso-spacerun: yes"> 
-</span>Also '<span style="mso-spacerun:
-yes">        </span>//<span
-style="mso-spacerun: yes">   </span>&<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">       </span>'see
-http://www.GICC.su/giccm/doc/index.html '<span style="mso-spacerun:
-yes">     </span>//<span style="mso-spacerun:
-yes">   </span>&<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">       </span>' 2XCO2
-simulation described in Dorkey et al. '<span style="mso-spacerun:
-yes">    </span>//<span style="mso-spacerun: yes">  
-</span>&<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">       </span>'(Clim.
-Dyn., 2003, 323-357.)',&<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">      
-</span>model_id='GICCM1',forcing='TO',contact="Barry Bonds",&<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">      
-</span>parent_experiment_id="N/A",branch_time=bt)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>!<span style="mso-spacerun: yes"> 
-</span>Define all axes that will be needed<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>ilat = cmor_axis(<span
-style="mso-spacerun: yes">  </span>&<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">       </span>table='Tables/CMIP5_Amon',<span
-style="mso-spacerun: yes">    </span>&<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">      
-</span>table_entry='latitude',<span style="mso-spacerun:
-yes">       </span>&<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">      
-</span>units='degrees_north',<span style="mso-spacerun:
-yes">        </span>&<span
-style="mso-spacerun: yes">  </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">      
-</span>length=lat,<span style="mso-spacerun:
-yes">                  
-</span>&<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">      
-</span>coord_vals=alats,<span style="mso-spacerun:
-yes">            
-</span>& <o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">      
-</span>cell_bounds=bnds_lat)<span style="mso-spacerun:
-yes">        </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">      </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>ilon2 = cmor_axis(<span
-style="mso-spacerun: yes">  </span>&<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">      </span><span
-style="mso-spacerun: yes"> </span>table='Tables/CMIP5_Lmon',<span
-style="mso-spacerun: yes">    </span>&<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">      
-</span>table_entry='longitude',<span style="mso-spacerun:
-yes">      </span>&<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">      
-</span>length=lon,<span style="mso-spacerun:
-yes">                  
-</span>&<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">      
-</span>units='degrees_east',<span style="mso-spacerun:
-yes">         </span>&<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">      
-</span>coord_vals=alons,<span style="mso-spacerun:
-yes">            
-</span>&<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">      
-</span>cell_bounds=bnds_lon)<span style="mso-spacerun:
-yes">      </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">        </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>ilat2 = cmor_axis(<span
-style="mso-spacerun: yes">  </span>&<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">      
-</span>table='Tables/CMIP5_Lmon',<span style="mso-spacerun:
-yes">    </span>&<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">      
-</span>table_entry='latitude',<span style="mso-spacerun:
-yes">       </span>&<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">      
-</span>units='degrees_north',<span style="mso-spacerun:
-yes">        </span>&<span
-style="mso-spacerun: yes">  </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">      
-</span>length=lat,<span style="mso-spacerun:
-yes">                  
-</span>&<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">      
-</span>coord_vals=alats,<span style="mso-spacerun:
-yes">            
-</span>& <o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">      
-</span>cell_bounds=bnds_lat)<span style="mso-spacerun:
-yes">        </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">      </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>ilon = cmor_axis(<span
-style="mso-spacerun: yes">  </span>&<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">      
-</span>table='Tables/CMIP5_Amon',<span style="mso-spacerun:
-yes">    </span>&<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">      
-</span>table_entry='longitude',<span style="mso-spacerun:
-yes">      </span>&<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">      
-</span>length=lon,<span style="mso-spacerun:
-yes">                  
-</span>&<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">      
-</span>units='degrees_east',<span style="mso-spacerun:
-yes">         </span>&<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">      
-</span>coord_vals=alons,<span style="mso-spacerun:
-yes">            
-</span>&<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">      
-</span>cell_bounds=bnds_lon)<span style="mso-spacerun:
-yes">      </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">        </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>ipres = cmor_axis(<span
-style="mso-spacerun: yes">  </span>&<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">      
-</span>table='Tables/CMIP5_Amon',<span style="mso-spacerun:
-yes">    </span>&<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">      
-</span>table_entry='plevs',<span style="mso-spacerun:
-yes">       </span>&<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">      
-</span>units='Pa',<span style="mso-spacerun:
-yes">                  
-</span>&<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">      
-</span>length=lev2,<span style="mso-spacerun:
-yes">                  
-</span>&<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">      
-</span>coord_vals=plevs)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>!<span style="mso-spacerun:
-yes">   </span>note that the time axis is defined next, but the time
-coordinate <o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>!<span style="mso-spacerun:
-yes">   </span>values and bounds will be passed to cmor through
-function <o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>!<span style="mso-spacerun:
-yes">   </span>cmor_write (later, below).<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>itim = cmor_axis(<span
-style="mso-spacerun: yes">  </span>&<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">      
-</span>table='Tables/CMIP5_Amon',<span style="mso-spacerun:
-yes">    </span>&<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">      
-</span>table_entry='time',<span style="mso-spacerun:
-yes">           </span>&<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">      
-</span>units='days since 2030-1-1',<span style="mso-spacerun: yes"> 
-</span>&<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">    </span><span style="mso-spacerun:
-yes">   </span>length=ntimes,<span style="mso-spacerun:
-yes">               
-</span>&<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">      
-</span>interval='20 minutes')<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>itim2 = cmor_axis(<span
-style="mso-spacerun: yes">  </span>&<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">      
-</span>table='Tables/CMIP5_Lmon',<span style="mso-spacerun:
-yes">    </span>&<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">      
-</span>table_entry='time',<span style="mso-spacerun:
-yes">           </span>&<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">      
-</span>units='days since 2030-1-1',<span style="mso-spacerun: yes"> 
-</span>&<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">      
-</span>length=ntimes,<span style="mso-spacerun:
-yes">               
-</span>&<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">       </span>interval='20
-minutes')<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>!<span style="mso-spacerun: yes"> 
-</span>define model eta levels (although these must be provided, they will<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>!<span style="mso-spacerun:
-yes">    </span>actually be replaced by a+b before writing the
-netCDF file)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>zlevs = (/ 0.1, 0.3, 0.55, 0.7, 0.9 /)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>zlev_bnds=(/ 0.,.2, .42, .62, .8, 1. /)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>ilev = cmor_axis(<span
-style="mso-spacerun: yes">  </span>&<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">      
-</span>table='Tables/CMIP5_Amon',<span style="mso-spacerun:
-yes">    </span>&<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">      
-</span>table_entry='standard_hybrid_sigma',<span style="mso-spacerun:
-yes">       </span>&<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">      
-</span>units='1', &<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">      
-</span>length=lev,<span style="mso-spacerun:
-yes">                  
-</span>&<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">      
-</span>coord_vals=zlevs,<span style="mso-spacerun:
-yes">            
-</span>&<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">      
-</span>cell_bounds=zlev_bnds)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>!<span style="mso-spacerun:
-yes">   </span>define z-factors needed to transform from model level
-to pressure<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>p0 = 1.e5<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>a_coeff = (/ 0.1, 0.2, 0.3, 0.22, 0.1
-/)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>b_coeff = (/ 0.0, 0.1, 0.2, 0.5, 0.8 /)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>a_coeff_bnds=(/0.,.15, .25, .25, .16,
-0./)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>b_coeff_bnds=(/0.,.05, .15, .35, .65,
-1./)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>error_flag = cmor_zfactor(<span
-style="mso-spacerun: yes">  </span>&<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">      
-</span>zaxis_id=ilev,<span style="mso-spacerun:
-yes">                     
-</span>&<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">      
-</span>zfactor_name='p0',<span style="mso-spacerun:
-yes">                 
-</span>&<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">      
-</span>units='Pa',<span style="mso-spacerun:
-yes">                        
-</span>&<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">      
-</span>zfactor_values = p0)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>error_flag = cmor_zfactor(<span
-style="mso-spacerun: yes">  </span>&<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">      
-</span>zaxis_id=ilev,<span style="mso-spacerun:
-yes">                      
-</span>& <o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">      
-</span>zfactor_name='b',<span style="mso-spacerun:
-yes">                   
-</span>&<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">       </span>axis_ids=
-(/ ilev /),<span style="mso-spacerun:
-yes">               
-</span>&<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">      
-</span>zfactor_values = b_coeff,<span style="mso-spacerun:
-yes">           
-</span>&<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">      
-</span>zfactor_bounds = b_coeff_bnds<span style="mso-spacerun: yes"> 
-</span>)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>error_flag = cmor_zfactor(<span
-style="mso-spacerun: yes">  </span>&<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">      
-</span>zaxis_id=ilev,<span style="mso-spacerun:
-yes">                      
-</span>&<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">      
-</span>zfactor_name='a',<span style="mso-spacerun:
-yes">                   
-</span>&<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">       </span>axis_ids=
-(/ ilev /),<span style="mso-spacerun:
-yes">               
-</span>&<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">      
-</span>zfactor_values = a_coeff,<span style="mso-spacerun:
-yes">           
-</span>&<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">      
-</span>zfactor_bounds = a_coeff_bnds )<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>zfactor_id = cmor_zfactor(<span
-style="mso-spacerun: yes">  </span>&<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">      
-</span>zaxis_id=ilev,<span style="mso-spacerun:
-yes">                      
-</span><span style="mso-spacerun: yes">  </span>&<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">      
-</span>zfactor_name='ps',<span style="mso-spacerun:
-yes">                    
-</span>&<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">      
-</span>axis_ids=(/ ilon, ilat, itim /),<span style="mso-spacerun:
-yes">       </span>&<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">      
-</span>units='Pa' )<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>!<span style="mso-spacerun: yes"> 
-</span>Define the only field to be written that is a function of model level<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>!<span style="mso-spacerun:
-yes">    </span>(appearing in IPCC table A1c)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>var3d_ids(1) = cmor_variable(<span
-style="mso-spacerun: yes">    </span>&<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">      
-</span>table='Tables/CMIP5_Amon',<span style="mso-spacerun: yes"> 
-</span>&<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">      
-</span>table_entry=entry3d(1),<span style="mso-spacerun:
-yes">     </span>&<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">      
-</span>units=units3d(1),<span style="mso-spacerun:
-yes">           </span>&<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">      
-</span>axis_ids=(/ ilon, ilat, ilev, itim /),<span style="mso-spacerun:
-yes">  </span>&<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">      
-</span>missing_value=1.0e28, &<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">      
-</span>original_name=varin3d(1))<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>!<span style="mso-spacerun: yes"> 
-</span>Define variables appearing in IPCC table A1c that are a function of
-pressure<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>!<span style="mso-spacerun:
-yes">         </span>(3-d variables)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>DO m=2,n3d<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">     </span>var3d_ids(m) =
-cmor_variable(<span style="mso-spacerun: yes">    </span>&<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun:
-yes">         
-</span>table='Tables/CMIP5_Amon',<span style="mso-spacerun: yes"> 
-</span>&<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun:
-yes">         
-</span>table_entry=entry3d(m),<span style="mso-spacerun:
-yes">     </span>&<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun:
-yes">         
-</span>units=units3d(m),<span style="mso-spacerun:
-yes">           </span>&<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun:
-yes">          </span>axis_ids=(/
-ilon, ilat, ipres, itim /), &<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun:
-yes">         
-</span>missing_value=1.0e28,<span style="mso-spacerun:
-yes">       </span>&<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun:
-yes">         
-</span>original_name=varin3d(m))<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>ENDDO<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>!<span style="mso-spacerun: yes"> 
-</span>Define variables appearing in IPCC table A1a (2-d variables)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>DO m=1,n2d<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">     </span>if (m.ne.3) then<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">     </span>var2d_ids(m) =
-cmor_variable(<span style="mso-spacerun: yes">    </span>&<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun:
-yes">         
-</span>table='Tables/CMIP5_Amon',<span style="mso-spacerun:
-yes">      </span>&<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun:
-yes">         
-</span>table_entry=entry2d(m),<span style="mso-spacerun:
-yes">     </span>& <o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun:
-yes">         
-</span>units=units2d(m),<span style="mso-spacerun:
-yes">           </span>& <o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun:
-yes">          </span>axis_ids=(/
-ilon, ilat, itim /), &<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun:
-yes">         
-</span>missing_value=1.0e28,<span style="mso-spacerun:
-yes">       </span>&<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes"> </span><span style="mso-spacerun:
-yes">        
-</span>positive=positive2d(m),<span style="mso-spacerun:
-yes">     </span>&<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun:
-yes">         
-</span>original_name=varin2d(m))<span style="mso-spacerun: yes">  
-</span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>else<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">     </span>var2d_ids(m) =
-cmor_variable(<span style="mso-spacerun: yes">    </span>&<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun:
-yes">         
-</span>table='Tables/CMIP5_Lmon',<span style="mso-spacerun:
-yes">      </span>&<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun:
-yes">         
-</span>table_entry=entry2d(m),<span style="mso-spacerun:
-yes">     </span>& <o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun:
-yes">         
-</span>units=units2d(m),<span style="mso-spacerun:
-yes">           </span>& <o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">     </span><span
-style="mso-spacerun: yes">     </span>axis_ids=(/
-ilon2, ilat2, itim2 /), &<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun:
-yes">         
-</span>missing_value=1.0e28,<span style="mso-spacerun:
-yes">       </span>&<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun:
-yes">         
-</span>positive=positive2d(m),<span style="mso-spacerun:
-yes">     </span>&<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun:
-yes">         
-</span>original_name=varin2d(m)) <o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>endif<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>ENDDO<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>PRINT*, ' '<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>PRINT*, 'completed everything up to
-writing output fields '<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>PRINT*, ' '<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>!<span style="mso-spacerun: yes"> 
-</span>Loop through history files (each containing several different fields, <o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>!<span style="mso-spacerun:
-yes">       </span>but only a single month of
-data, averaged over the month).<span style="mso-spacerun: yes"> 
-</span>Then <o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>!<span style="mso-spacerun:
-yes">       </span>extract fields of interest and
-write these to netCDF files (with <o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>!<span style="mso-spacerun:
-yes">       </span>one field per file, but all
-months included in the loop).<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>time_loop: DO it=1, ntimes<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">     </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">     </span>! In the following
-loops over the 3d and 2d fields, the user-written<span style="mso-spacerun:
-yes">    </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">     </span>! subroutines
-(read_3d_input_files and read_2d_input_files) retrieve <o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">     </span>! the requested IPCC
-table A1c and table A1a fields and store them in <o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">     </span>! data3d and data2d,
-respectively.<span style="mso-spacerun: yes">  </span>In addition a
-user-written code <o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">     </span>! (read_time)
-retrieves the time and time-bounds associated with the <o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">     </span>! time sample (in
-units of 'days since 1970-1-1', consistent with the <o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">     </span>! axis definitions
-above).<span style="mso-spacerun: yes">  </span>The bounds are set to the
-beginning and <o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">     </span>! the end of the
-month retrieved, indicating the averaging period.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">     </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">     </span>! The user must write
-a code to obtain the times and time-bounds for<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">     </span>!<span
-style="mso-spacerun: yes">   </span>the time slice.<span
-style="mso-spacerun: yes">  </span>The following line is simply a
-place-holder for<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">     </span>!<span
-style="mso-spacerun: yes">   </span>the user's code, which should
-replace it.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">     </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">    </span>call read_time(it, time(1),
-bnds_time)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">    </span>call
-read_3d_input_files(it, varin3d(1), data3d)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">    </span>error_flag = cmor_write(<span
-style="mso-spacerun:
-yes">                                 
-</span>&<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">        
-</span>var_id<span style="mso-spacerun:
-yes">        </span>= var3d_ids(1),<span
-style="mso-spacerun: yes">                       
-</span>&<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">        
-</span>data<span style="mso-spacerun:
-yes">          </span>=
-data3d,<span style="mso-spacerun: yes">                             
-</span>&<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">        
-</span>ntimes_passed = 1,<span style="mso-spacerun:
-yes">                                  
-</span>&<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">        
-</span>time_vals<span style="mso-spacerun: yes">    
-</span>= time,<span style="mso-spacerun:
-yes">                               
-</span>&<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">        
-</span>time_bnds<span style="mso-spacerun: yes">    
-</span>= bnds_time<span style="mso-spacerun: yes">   </span>)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">    </span>call
-read_2d_input_files(it, varin2d(4), data2d)<span style="mso-spacerun:
-yes">                 
-</span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">    </span>error_flag =
-cmor_write(<span style="mso-spacerun:
-yes">                                 
-</span>&<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">        
-</span>var_id<span style="mso-spacerun:
-yes">        </span>= zfactor_id,<span
-style="mso-spacerun: yes">     </span><span
-style="mso-spacerun:
-yes">                     </span>&<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">        
-</span>data<span style="mso-spacerun:
-yes">          </span>=
-data2d,<span style="mso-spacerun: yes">                             
-</span>&<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">        
-</span>ntimes_passed = 1,<span style="mso-spacerun:
-yes">                                  
-</span>&<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">        
-</span>time_vals<span style="mso-spacerun: yes">    
-</span>= time,<span style="mso-spacerun:
-yes">                               
-</span>&<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">        
-</span>time_bnds<span style="mso-spacerun: yes">    
-</span>= bnds_time,<span style="mso-spacerun:
-yes">      </span><span style="mso-spacerun:
-yes">                     </span>&<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">        
-</span>store_with<span style="mso-spacerun: yes">    </span>=
-var3d_ids(1) )<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">    </span>! Cycle through the 3-d
-fields (stored on pressure levels), <o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">    </span>! and retrieve the
-requested variable and append each to the <o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">    </span>! appropriate netCDF file.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">    </span>DO m=2,n3d<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">        </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">     </span><span
-style="mso-spacerun: yes">   </span>! The user must write the
-code that fills the arrays of data<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">        </span>!
-that will be passed to CMOR.<span style="mso-spacerun: yes">  </span>The
-following line is simply a<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">        </span>! a
-place-holder for the user's code, which should replace it.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">       
-</span>call read_3d_input_files(it, varin3d(m), data3d)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">       </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">        </span>!
-append a single time sample of data for a single field to <o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">        </span>!
-the appropriate netCDF file.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">       
-</span>call cmor_create_output_path(var3d_ids(m),outpath)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">       
-</span>print*, 'Ok we will dump that at: ',outpath<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">       
-</span>error_flag = cmor_write(<span style="mso-spacerun:
-yes">                                 
-</span>&<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun:
-yes">            
-</span>var_id<span style="mso-spacerun:
-yes">        </span>= var3d_ids(m),<span
-style="mso-spacerun: yes">                       
-</span>&<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun:
-yes">            
-</span>data<span style="mso-spacerun:
-yes">          </span>= data3d,<span
-style="mso-spacerun:
-yes">                             
-</span>&<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun:
-yes">            
-</span>ntimes_passed = 1,<span style="mso-spacerun:
-yes">                                  
-</span>&<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">     </span><span
-style="mso-spacerun:
-yes">        </span>time_vals<span
-style="mso-spacerun: yes">     </span>= time,<span
-style="mso-spacerun:
-yes">                               
-</span>&<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun:
-yes">            
-</span>time_bnds<span style="mso-spacerun: yes">    
-</span>= bnds_time<span style="mso-spacerun: yes">  </span>)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">        </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">        </span>IF
-(error_flag < 0) THEN<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun:
-yes">           </span>!
-write diagnostic messages to standard output device<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun:
-yes">          
-</span>write(*,*) ' Error encountered writing IPCC Table A1c ' &<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun:
-yes">               
-</span>// 'field ', entry3d(m), ', which I call ', varin3d(m)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun:
-yes">          
-</span>write(*,*) ' Was processing time sample: ', time<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun:
-yes">                     
-</span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">        </span>END
-IF<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">     </span>END DO<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">     </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">     </span>! Cycle through the
-2-d fields, retrieve the requested variable and <o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">     </span>! append each to the
-appropriate netCDF file.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">     </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">     </span>DO m=1,n2d<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">        </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">        </span>!
-The user must write the code that fills the arrays of data<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">        </span>!
-that will be passed to CMOR.<span style="mso-spacerun: yes">  </span>The
-following line is simply a<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">   </span><span style="mso-spacerun:
-yes">     </span>! a place-holder for the user's code,
-which should replace it.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">        </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">       
-</span>call read_2d_input_files(it, varin2d(m), data2d)<span
-style="mso-spacerun:
-yes">                 
-</span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">        </span>!
-append a single time sample of data for a single field to <o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">        </span>!
-the appropriate netCDF file.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">       
-</span>error_flag = cmor_write(<span style="mso-spacerun:
-yes">                                 
-</span>&<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun:
-yes">            
-</span>var_id<span style="mso-spacerun:
-yes">        </span>= var2d_ids(m),<span
-style="mso-spacerun: yes">                       
-</span>&<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun:
-yes">            
-</span>data<span style="mso-spacerun:
-yes">          </span>= data2d,<span
-style="mso-spacerun:
-yes">                             
-</span>&<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun:
-yes">            
-</span>ntimes_passed = 1,<span style="mso-spacerun:
-yes">              
-</span><span style="mso-spacerun:
-yes">                    </span>&<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun:
-yes">            
-</span>time_vals<span style="mso-spacerun: yes">    
-</span>= time,<span style="mso-spacerun: yes">                               
-</span>&<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun:
-yes">            
-</span>time_bnds<span style="mso-spacerun: yes">    
-</span>= bnds_time<span style="mso-spacerun: yes">  </span>)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">        </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">       </span>IF
-(error_flag < 0) THEN<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun:
-yes">           </span>!
-write diagnostic messages to standard output device<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun:
-yes">          
-</span>write(*,*) ' Error encountered writing IPCC Table A1a ' &<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun:
-yes">               
-</span>// 'field ', entry2d(m), ', which I call ', varin2d(m)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun:
-yes">          
-</span>write(*,*) ' Was processing time sample: ', time <o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun:
-yes">                     
-</span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">        </span>END
-IF<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">        </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">     </span>END DO<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">     </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>END DO time_loop<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>!<span style="mso-spacerun:
-yes">   </span>Close all files opened by CMOR.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>error_flag = cmor_close()<span
-style="mso-spacerun: yes">  </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>print*, ' '<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>print*,
-'******************************'<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>print*, ' '<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>print*, 'ipcc_test_code executed to
-completion '<span style="mso-spacerun: yes">   </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>print*, ' '<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>print*, '******************************'<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>END
-PROGRAM ipcc_test_code<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<h2><a name="_Toc129422036"></a><a name="_Toc149385748"><span style='mso-bookmark:
-_Toc129422036'>C</span></a><span style='mso-bookmark:_Toc129422036'><o:p></o:p></span></h2>
-
-<h3><span style='mso-bookmark:_Toc129422036'><a name="_Toc149385749">Sample
-Program 1: grids</a></span><o:p></o:p></h3>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>#include
-<time.h><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>#include
-<stdio.h><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>#include<string.h><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>#include
-"cmor.h"<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>#include
-<stdlib.h><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>#include
-<math.h><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>void
-read_time(it, time, time_bnds)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">     </span>int it;<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">     </span>double time[];<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span><span style="mso-spacerun:
-yes">   </span>double time_bnds[];<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>{<span
-style="mso-spacerun: yes">    </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>time[0] = (it-0.5)*30.;<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>time_bnds[0] = (it-1)*30.;<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>time_bnds[1] = it*30.;<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>time[0]=it;<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>time_bnds[0] = it;<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>time_bnds[1] = it+1;<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>}<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>void
-read_3d_input_files(it, varname, field,n0,n1,n2)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">     </span>int it,n0,n1,n2;<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">     </span>char *varname;<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">     </span>double field[];<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>{<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>int i,j,k;<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>float factor,offset;<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">    </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>if
-(strcmp(varname,"CLOUD")==0) {<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">    </span>factor = 0.1;<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">    </span>offset = -50.;<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>}<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>else if
-(strcmp(varname,"U")==0) {<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">    </span>factor = 1.;<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">    </span>offset = 100.;<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>}<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>else if (strcmp(varname,"T")==0)
-{<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">    </span>factor = 0.5;<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">    </span>offset = -150.;<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>}<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">    </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>for (k=0;k<n2;k++) {<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">    </span>for (j=0;j<n1;j++) {<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">      </span>for
-(i=0;i<n0;i++) {<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">       
-</span>field[k*(n0*n1)+j*n0+i] = (k*64 + j*16 + i*4 + it)*factor - offset;<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">      </span>}<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">    </span>}<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>}<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>}<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>void
-read_2d_input_files(it, varname, field, n0, n1)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>int it,n0,n1;<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>char *varname;<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>double field[];<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>{<span
-style="mso-spacerun: yes">    </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>int i, j,k;<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>double factor, offset;<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>double tmp;<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>if
-(strcmp(varname,"LATENT")==0){<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">    </span>factor = 1.;<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">    </span>offset = 120.;<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>}<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>else if
-(strcmp(varname,"TSURF")==0){<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">    </span>factor = 2.0;<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">    </span>offset = -230.;<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>}<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>else if
-(strcmp(varname,"SOIL_WET")==0){<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">    </span>factor = 10.;<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">    </span>offset = 0.;<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>}<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>else if
-(strcmp(varname,"PSURF")==0){<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">    </span>factor = 1.;<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">    </span>offset = -9.7e2;<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>}<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>for (j=0;j<n0;j++){<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">    </span>for (i=0;i<n1;i++) {<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">      </span>tmp =
-((double)j*16. + (double)(i)*4. + (double)it)*factor - offset;<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">      </span>k=
-(n0-1-j)*n1+i;<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">      </span>field[k] = tmp;<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">    </span>}<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>}<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>}<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>int
-main()<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>{<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>/*<span style="mso-spacerun:
-yes">   </span>dimension parameters: */<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>/* --------------------------------- */<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>#define<span
-style="mso-spacerun: yes">   </span>ntimes<span style="mso-spacerun:
-yes">  </span>2<span style="mso-spacerun: yes">   
-</span>/* number of time samples to process */<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>#define<span
-style="mso-spacerun: yes">   </span>lon<span style="mso-spacerun:
-yes">  </span>3<span style="mso-spacerun:
-yes">       </span>/* number of longitude grid
-cells<span style="mso-spacerun: yes">   </span>*/<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>#define<span
-style="mso-spacerun: yes">   </span>lat<span style="mso-spacerun:
-yes">  </span>4<span style="mso-spacerun:
-yes">       </span>/* number of latitude grid
-cells */<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>#define<span
-style="mso-spacerun: yes">   </span>lev<span style="mso-spacerun:
-yes">  </span>5<span style="mso-spacerun:
-yes">       </span>/* number of standard pressure
-levels */<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>double x[lon];<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>double y[lat];<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>double lon_coords[lon*lat];<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>double lat_coords[lon*lat];<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>double lon_vertices[lon*lat*4];<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>double lat_vertices[lon*lat*4];<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes"> </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>double data2d[lat*lon];<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>double data3d[lev*lat*lon];<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>int myaxes[10];<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>int mygrids[10];<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>int myvars[10];<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>int tables[4];<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>int axes_ids[CMOR_MAX_DIMENSIONS];<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>int i,j,k,ierr;<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>double Time[ntimes];<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>double<span style="mso-spacerun:
-yes">  </span>bnds_time[ntimes*2];<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>double tolerance=1.e-4;<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>double lon0 = 280.;<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>double lat0=0.;<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>double delta_lon = 10.;<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>double delta_lat = 10.;<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>char id[CMOR_MAX_STRING];<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>double tmpf=0.;<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>#define
-nparam 6 /* number of grid parameters */<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>#define
-lparam 40<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>#define
-lunits 14<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>char params[nparam][lparam] =
-{"standard_parallel1","longitude_of_central_meridian","latitude_of_projection_origin","false_easting","false_northing","standard_parallel2"};<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>char punits[nparam][lunits] =
-{"degrees_north","degrees_east","degrees_north","m","m","degrees_north"};<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>//char punits[nparam][lunits] =
-{"","","","","",""};<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>double pvalues[nparam] =
-{-20.,175.,13.,8.,0.,20};<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>int exit_mode;<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>/* first construct grid lon/lat */<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>for (j=0;j<lat;j++) {<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">    </span>y[j]=j;<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">    </span>for (i=0;i<lon;i++) {<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">      </span>x[i]=i;<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">     
-</span>lon_coords[i+j*lon] = lon0+delta_lon*(j+1+i);<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">     
-</span>lat_coords[i+j*lon] = lat0+delta_lat*(j+1-i);<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">      </span>/* vertices
-lon*/<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">      </span>k =
-i*4+j*lon*4+0;<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">     
-</span>printf("i,j,k: %i, %i, %i\n",i,j,k);<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">     
-</span>lon_vertices[i*4+j*lon*4+0] = lon_coords[i+j*lon]-delta_lon;<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">     
-</span>lon_vertices[i*4+j*lon*4+1] = lon_coords[i+j*lon];<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">     
-</span>lon_vertices[i*4+j*lon*4+2] = lon_coords[i+j*lon]+delta_lon;<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">      </span>lon_vertices[i*4+j*lon*4+3]
-= lon_coords[i+j*lon];<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">      </span>/* vertices lat
-*/<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">     
-</span>lat_vertices[i*4+j*lon*4+0] = lat_coords[i+j*lon];<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">     
-</span>lat_vertices[i*4+j*lon*4+1] = lat_coords[i+j*lon]-delta_lat;<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">     
-</span>lat_vertices[i*4+j*lon*4+2] = lat_coords[i+j*lon];<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">      </span>lat_vertices[i*4+j*lon*4+3]
-= lat_coords[i+j*lon]+delta_lat;<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">      </span>}<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>}<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>exit_mode = CMOR_EXIT_ON_MAJOR;<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>j = CMOR_REPLACE;<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>printf("Test code: ok init cmor,
-%i\n",exit_mode);<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>ierr =
-cmor_setup(NULL,&j,NULL,&exit_mode,NULL,NULL);<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>printf("Test code: ok init
-cmor\n");<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>int tmpmo[12];<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>ierr = cmor_dataset(<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">      
-</span>"Test",<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">      
-</span>"amip",<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">      
-</span>"GICC (Generic International Climate Center, Geneva,
-Switzerland)",<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">      
-</span>"GICCM1 (2002): atmosphere:<span style="mso-spacerun: yes"> 
-</span>GICAM3 (gicam_0_brnchT_itea_2, T63L32); ocean: MOM (mom3_ver_3.5.2,
-2x3L15); sea ice: GISIM4; land: GILSM2.5",<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">      
-</span>"standard",<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">       </span>1,<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">      
-</span>"Rusty Koder (koder at middle_earth.net)",<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">      
-</span>"Output from archive/giccm_03_std_2xCO2_2256.",<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">      
-</span>"Equilibrium reached after 30-year spin-up after which data were
-output starting with nominal date of January 2030",<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">      
-</span>"Model described by Koder and Tolkien (J. Geophys. Res., 2001,
-576-591).<span style="mso-spacerun: yes">  </span>Also see
-http://www.GICC.su/giccm/doc/index.html<span style="mso-spacerun: yes"> 
-</span>2XCO2 simulation described in Dorkey et al. '(Clim. Dyn., 2003,
-323-357.)",<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">       </span>0,<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">       </span>0,<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">       </span>tmpmo,<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">      
-</span>"GICCM1\0","N/A",0,0,"GICC","N/A",&tmpf);<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>printf("Test code: ok load cmor
-table(s)\n");<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>ierr =
-cmor_load_table("Tables/CMIP5_Amon",&tables[1]);<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>printf("Test code: ok load cmor
-table(s)\n");<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>//ierr = cmor_load_table("Test/IPCC_test_table_Grids",&tables[0]);<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>ierr =
-cmor_load_table("Tables/CMIP5_grids",&tables[0]);<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>printf("Test code: ok load cmor
-table(s)\n");<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>ierr = cmor_set_table(tables[0]);<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>/* first define grid axes
-(x/y/rlon/rlat,etc... */<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>ierr = cmor_axis(&myaxes[0],"x","m",lon,&x[0],'d',NULL,0,NULL);<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>printf("Test code: ok got axes id:
-%i for 'x'\n",myaxes[0]);<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>ierr =
-cmor_axis(&myaxes[1],"y","m",lat,&y[0],'d',NULL,0,NULL);<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>printf("Test code: ok got axes id:
-%i for 'y'\n",myaxes[1]);<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>axes_ids[0] = myaxes[1];<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>axes_ids[1] = myaxes[0];<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>/*now defines the grid */<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>printf("going to grid stuff
-\n");<o:p></o:p></span></p>
-
-<p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New";
-mso-bidi-font-family:"Courier New"'><span style="mso-spacerun: yes"> 
-</span>ierr = cmor_grid(&mygrids[0],2,&axes_ids[0],'d',&lat_coords[0],&lon_coords[0],4,&lat_vertices[0],&lon_vertices[0]);<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>for (i=0;i<cmor_grids[0].ndims;i++)
-{<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">    </span>printf("Dim : %i the
-grid has the follwoing axes on itself: %i
-(%s)\n",i,cmor_grids[0].axes_ids[i],cmor_axes[cmor_grids[0].axes_ids[i]].id);<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>}<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>/* ok puts some grid mappings in
-it,<span style="mso-spacerun: yes">  </span>not sure these parmeters make
-sens! */<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>for(i=0;i<nparam;i++)
-printf("Test code: ok paramter: %i is: %s, with value %lf and units
-'%s'\n",i,params[i],pvalues[i],punits[i]);<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>printf("back from grid going to
-mapping \n");<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>ierr =
-cmor_set_grid_mapping(mygrids[0],"lambert_conformal_conic",nparam-1,&params[0],lparam,pvalues,&punits[0],lunits);<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>for (i=0;i<cmor_grids[0].ndims;i++)
-{<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">    </span>printf("New Dim : %i
-the grid has the follwoing axes on itself: %i
-(%s)\n",i,cmor_grids[0].axes_ids[i],cmor_axes[cmor_grids[0].axes_ids[i]].id);<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>}<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>/* ok sets back the vars table */<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>cmor_set_table(tables[1]);<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>for(i=0;i<ntimes;i++) read_time(i,
-&Time[i], &bnds_time[2*i]);<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>ierr =
-cmor_axis(&myaxes[3],"time","months since
-1980",2,&Time[0],'d',&bnds_time[0],2,NULL);<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>printf("time axis id:
-%i\n",myaxes[3]);<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>axes_ids[0]=myaxes[3]; /*time*/<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>axes_ids[1]=mygrids[0]; /*grid */<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>printf("Test code: sending
-axes_ids: %i %i\n",axes_ids[0],axes_ids[1]);<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>ierr =
-cmor_variable(&myvars[0],"hfls","W
-m-2",2,axes_ids,'d',NULL,&tolerance,"down","HFLS","no
-history","no future");<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>for (i=0;i<ntimes;i++) {<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">    </span>printf("Test code:
-writing time: %i of %i\n",i+1,ntimes);<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">    </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">    </span>printf("Test code:
-2d\n");<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">    </span>read_2d_input_files(i,
-"LATENT", &data2d[0],lat,lon);<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">    </span>//for(j=0;j<10;j++)
-printf("Test code: %i out of %i : %lf\n",j,9,data2d[j]);<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">    </span>printf("var id:
-%i\n",myvars[0]);<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">    </span>ierr =
-cmor_write(myvars[0],&data2d,'d',NULL,1,NULL,NULL,NULL);<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>}<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>printf("ok loop done\n");<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>ierr = cmor_close();<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>printf("Test code: done\n");<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">  </span>return 0;<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>}<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<h2><a name="_Toc129422037"></a><a name="_Toc149385750"><span style='mso-bookmark:
-_Toc129422037'>PYTHON</span></a><o:p></o:p></h2>
-
-<h3><a name="_Toc129422038"></a><a name="_Toc149385751"><span style='mso-bookmark:
-_Toc129422038'>Sample Program 1</span></a><o:p></o:p></h3>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>import
-cmor<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>cmor.setup(inpath='Tables',netcdf_file_action=cmor.CMOR_REPLACE)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>cmor.dataset('historical',
-'ukmo', 'HadCM3'HadCM3 (2010)', '360_day',model_id='pcmdi-10b'’HadCM3',forcing='co2')'Nat',<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:9.0pt;
-font-family:"Courier New";mso-bidi-font-family:"Courier New"'>parent_experiment_id=’N/A’,branch_time=0.,contact=’Tim
-Lincecum, timmy at sfgiants.com’,</span> <span style='font-size:9.0pt;font-family:
-"Courier New";mso-bidi-font-family:"Courier New"'>institute_id='pcmdi')<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">    </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>table='CMIP5_Amon'<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>cmor.load_table(table)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>itime
-= cmor.axis(table_entry= 'time',<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun:
-yes">                 
-</span>units= 'days since 2000-01-01 00:00:00',<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun:
-yes">                 
-</span>coord_vals= [15,],<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun:
-yes">                 
-</span>cell_bounds= [0, 30])<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>ilat
-= cmor.axis(table_entry= 'latitude',<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun:
-yes">                
-</span>units= 'degrees_north',<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun:
-yes">                
-</span>coord_vals= [0],<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun:
-yes">                
-</span>cell_bounds= [-1, 1])<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>ilon
-= cmor.axis(table_entry= 'longitude',<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun:
-yes">                
-</span>units= 'degrees_east',<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">     </span><span
-style="mso-spacerun:
-yes">            </span>coord_vals=
-[90],<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun:
-yes">                
-</span>cell_bounds= [89, 91])<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>axis_ids
-= [itime,ilat,ilon]<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun:
-yes">             
-</span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>varid
-= cmor.variable('ts', 'K', axis_ids)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>cmor.write(varid,
-[273])<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>path=cmor.close(varid,
-file_name=True)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>print
-path<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>cmor.close()<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<h3><a name="_Toc129422039"></a><a name="_Toc149385752"><span style='mso-bookmark:
-_Toc129422039'>Sample Program 2: grids</span></a><span style='mso-bookmark:
-_Toc129422039'></span><span style='mso-bookmark:_Toc149385752'></span><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p></o:p></span></h3>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>import
-cmor<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>import
-os<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>def
-gen_irreg_grid(lon,lat):<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">    </span>lon0 = -120.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">    </span>lat0=0.;<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">    </span>delta_lon = 10.;<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">    </span>delta_lat = 10.;<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">    </span>y = numpy.arange(lat)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">    </span>x = numpy.arange(lon)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">    </span>lon_coords =
-numpy.zeros((lat,lon))<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">    </span>lat_coords = numpy.zeros((lat,lon))<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">    </span>lon_vertices =
-numpy.zeros((lat,lon,4))<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">    </span>lat_vertices =
-numpy.zeros((lat,lon,4))<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">    </span>for j in range(lat): #
-really porr coding i know<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">        </span>for
-i in range(lon): # getting worse i know<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun:
-yes">           
-</span>lon_coords[j,i] = lon0+delta_lon*(j+1+i);<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun:
-yes">           
-</span>lat_coords[j,i] = lat0+delta_lat*(j+1-i);<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun:
-yes">           
-</span>lon_vertices[j,i,0] = lon_coords[j,i]-delta_lon;<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun:
-yes">           
-</span>lon_vertices[j,i,1] = lon_coords[j,i];<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun:
-yes">           
-</span>lon_vertices[j,i,2] = lon_coords[j,i]+delta_lon;<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun:
-yes">           
-</span>lon_vertices[j,i,3] = lon_coords[j,i];<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>##
-!!$<span style="mso-spacerun: yes">      </span>/*
-vertices lat */<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun:
-yes">           
-</span>lat_vertices[j,i,0] = lat_coords[j,i];<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun:
-yes">           
-</span>lat_vertices[j,i,1] = lat_coords[j,i]-delta_lat;<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun:
-yes">           
-</span>lat_vertices[j,i,2] = lat_coords[j,i];<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun:
-yes">           
-</span>lat_vertices[j,i,3] = lat_coords[j,i]+delta_lat;<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">    </span>return
-x,y,lon_coords,lat_coords,lon_vertices,lat_vertices<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>pth
-= os.path.split(os.path.realpath(os.curdir))<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>if
-pth[-1]=='Test':<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">    </span>ipth = opth = '.'<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>else:<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">    </span>ipth = opth = 'Test'<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>myaxes=numpy.zeros(9,dtype='i')<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>myaxes2=numpy.zeros(9,dtype='i')<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>myvars=numpy.zeros(9,dtype='i')<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>cmor.setup(inpath=ipth,set_verbosity=cmor.CMOR_NORMAL,
-netcdf_file_action = cmor.CMOR_REPLACE, exit_control =
-cmor.CMOR_EXIT_ON_MAJOR);<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>cmor.dataset(<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">    </span>outpath = opth,<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">    </span>experiment_id = "historical",<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">    </span>institution = "GICC
-(Generic International Climate Center, Geneva, Switzerland)",<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">    </span>source = "GICCM1 (2002):
-atmosphere:<span style="mso-spacerun: yes">  </span>GICAM3
-(gicam_0_brnchT_itea_2, T63L32); ocean: MOM (mom3_ver_3.5.2, 2x3L15); sea ice:
-GISIM4; land: GILSM2.5",<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">    </span>calendar =
-"standard",<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">    </span>realization = 1,<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">    </span>contact = "Rusty Koder
-(koder at middle_earth.net)",<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">    </span>history = "Output from
-archive/giccm_03_std_2xCO2_2256.",<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">    </span>comment = "Equilibrium
-reached after 30-year spin-up after which data were output starting with
-nominal date of January 2030",<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">    </span>references = "Model
-described by Koder and Tolkien (J. Geophys. Res., 2001, 576-591).<span
-style="mso-spacerun: yes">  </span>Also see
-http://www.GICC.su/giccm/doc/index.html<span style="mso-spacerun: yes"> 
-</span>2XCO2 simulation described in Dorkey et al. '(Clim. Dyn., 2003,
-323-357.)",<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">    </span>leap_year=0,<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">    </span>leap_month=0,<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">    </span>month_lengths=None,<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">   
-</span>model_id="GICCM1",<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">    </span>forcing="Ant,
-Nat",<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">   
-</span>institute_id="pcmdi",<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">   
-</span>parent_experiment_id="piControl",branch_time=18336.33)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>tables=[]<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>a
-= cmor.load_table("Tables/CMIP5_grids")<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>tables.append(a)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>tables.append(cmor.load_table("Tables/CMIP5_Amon"))<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>print
-'Tables ids:',tables<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>cmor.set_table(tables[0])<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>x,y,lon_coords,lat_coords,lon_vertices,lat_vertices
-= gen_irreg_grid(lon,lat)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>myaxes[0]
-= cmor.axis(table_entry = 'y', <o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun:
-yes">                     
-</span>units = 'm', <o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun:
-yes">                     
-</span>coord_vals = y)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>myaxes[1]
-= cmor.axis(table_entry = 'x', <o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun:
-yes">                     
-</span>units = 'm', <o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun:
-yes">                     
-</span>coord_vals = x)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>grid_id
-= cmor.grid(axis_ids = myaxes[:2], <o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun:
-yes">                   
-</span>latitude = lat_coords, <o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">    </span><span style="mso-spacerun:
-yes">                </span>longitude
-= lon_coords, <o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun:
-yes">                   
-</span>latitude_vertices = lat_vertices, <o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun:
-yes">                   
-</span>longitude_vertices = lon_vertices)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>print
-'got grid_id:',grid_id<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>myaxes[2]
-= grid_id<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>mapnm
-= 'lambert_conformal_conic'<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>params
-= [ "standard_parallel1",<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun:
-yes">          
-</span>"longitude_of_central_meridian","latitude_of_projection_origin",<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun:
-yes">          
-</span>"false_easting","false_northing","standard_parallel2"
-]<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>punits
-=
-["","","","","",""
-]<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>pvalues
-= [-20.,175.,13.,8.,0.,20. ]<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>cmor.set_grid_mapping(grid_id=myaxes[2],<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun:
-yes">                     
-</span>mapping_name = mapnm,<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun:
-yes">                     
-</span>parameter_names = params,<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun:
-yes">                     
-</span>parameter_values = pvalues,<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun:
-yes">                     
-</span>parameter_units = punits)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>cmor.set_table(tables[1])<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>myaxes[3]
-= cmor.axis(table_entry = 'time',<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun:
-yes">                     
-</span>units = 'months since 1980')<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>pass_axes
-= [myaxes[3],myaxes[2]]<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>myvars[0]
-= cmor.variable( table_entry = 'hfls',<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun:
-yes">                          
-</span>units = 'W m-2',<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun:
-yes">                          
-</span>axis_ids = pass_axes,<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun:
-yes">               
-</span><span style="mso-spacerun:
-yes">           </span>positive
-= 'down',<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun:
-yes">                          
-</span>original_name = 'HFLS',<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun:
-yes">                          
-</span>history = 'no history',<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun:
-yes">                          
-</span>comment = 'no future'<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun:
-yes">                          
-</span>)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>for
-i in range(ntimes):<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">    </span>data2d = read_2d_input_files(i,
-varin2d[0], lat,lon)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">    </span>print 'writing time:
-',i,data2d.shape,data2d<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">    </span>print
-Time[i],bnds_time[2*i:2*i+2]<span style="mso-spacerun: yes">   
-</span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes">   
-</span>cmor.write(myvars[0],data2d,1,
-time_vals=Time[i],time_bnds=bnds_time[2*i:2*i+2])<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>cmor.close()<o:p></o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><o:p> </o:p></p>
-
-<b><span style='font-size:16.0pt;font-family:Arial;mso-fareast-font-family:
-"Times New Roman";mso-bidi-font-family:Arial;mso-font-kerning:16.0pt;
-mso-ansi-language:EN-US;mso-fareast-language:EN-US'><br clear=ALL
-style='page-break-before:always'>
-</span></b>
-
-<h1><a name="_Toc129422040"></a><a name="_Toc149385753"><span style='mso-bookmark:
-_Toc129422040'>Appendix D: MIP Tables</span></a><o:p></o:p></h1>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><b
-style='mso-bidi-font-weight:normal'><span style='font-size:14.0pt'><o:p> </o:p></span></b></p>
-
-<h2><a name="_Toc129422041"></a><a name="_Toc149385754"><span style='mso-bookmark:
-_Toc129422041'>CMOR 1 sample</span></a><o:p></o:p></h2>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><b
-style='mso-bidi-font-weight:normal'><span style='font-size:14.0pt'><o:p> </o:p></span></b></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><b
-style='mso-bidi-font-weight:normal'><span style='font-size:14.0pt'>Sample Portion
-of a MIP Table (which will be made available by MIP organizers to contributing
-groups)<o:p></o:p></span></b></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><b
-style='mso-bidi-font-weight:normal'><span style='font-size:14.0pt'><o:p> </o:p></span></b></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><b
-style='mso-bidi-font-weight:normal'><i style='mso-bidi-font-style:normal'>The
-user normally need not be concerned with the details contained in this table.<o:p></o:p></i></b></p>
-
-<p class=MsoNormal style='margin-left:.5in;text-indent:-.5in'><b
-style='mso-bidi-font-weight:normal'><span style='font-size:14.0pt'><span
-style="mso-spacerun: yes"> </span><o:p></o:p></span></b></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>cmor_version:
-0.8<span style="mso-spacerun:
-yes">         </span>! version of CMOR
-that can read this table<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>cf_version:<span
-style="mso-spacerun: yes">   </span>1.0<span style="mso-spacerun:
-yes">         </span>! version of CF
-that output conforms to<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>project_id:<span
-style="mso-spacerun: yes">   </span>IPCC Fourth Assessment<span
-style="mso-spacerun: yes">       </span>! project
-id<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>table_id:<span
-style="mso-spacerun: yes">     </span>Table A1<span
-style="mso-spacerun: yes">    </span>! table id<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>table_date:<span
-style="mso-spacerun: yes">   </span>7 April 2004 ! date this table
-was constructed<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>expt_id_ok:<span
-style="mso-spacerun: yes">   </span>'pre-industrial control
-experiment'<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>expt_id_ok:<span
-style="mso-spacerun: yes">   </span>'present-day control experiment'<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>expt_id_ok:<span
-style="mso-spacerun: yes">   </span>'climate of the 20th Century
-experiment (20C3M)'<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>expt_id_ok:<span
-style="mso-spacerun: yes">   </span>'committed climate change
-experiment'<span style="mso-spacerun: yes">  </span>! official name(s) of <o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>expt_id_ok:<span
-style="mso-spacerun: yes">   </span>'SRES A2 experiment'<span
-style="mso-spacerun:
-yes">          </span><span
-style="mso-spacerun:
-yes">         </span>!<span
-style="mso-spacerun: yes">  </span>project's experiments<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>expt_id_ok:<span
-style="mso-spacerun: yes">   </span>'control experiment (for
-committed climate change experiment)'<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>expt_id_ok:<span
-style="mso-spacerun: yes">   </span>'720 ppm stabilization experiment
-(SRES A1B)'<span style="mso-spacerun: yes">    </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>expt_id_ok:<span
-style="mso-spacerun: yes">   </span>'550 ppm stabilization experiment
-(SRES B1)'<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>expt_id_ok:<span
-style="mso-spacerun: yes">   </span>'1%/year CO2 increase experiment
-(to doubling)'<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>expt_id_ok:<span
-style="mso-spacerun: yes">   </span>'1%/year CO2 increase experiment
-(to quadrupling)'<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>expt_id_ok:<span
-style="mso-spacerun: yes">   </span>'slab ocean control experiment'<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>expt_id_ok:<span
-style="mso-spacerun: yes">   </span>'2xCO2 equilibrium experiment'<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>expt_id_ok:<span
-style="mso-spacerun: yes">   </span>'AMIP experiment'<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>magic_number:
--1<span style="mso-spacerun:
-yes">          </span>! used to
-check whether this file has been <o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun:
-yes">                         
-</span>!<span style="mso-spacerun: yes">   </span>altered from the
-official version.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun:
-yes">                         
-</span>!<span style="mso-spacerun: yes">   </span>should be set to
-number of non-blank <o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun:
-yes">                         
-</span>!<span style="mso-spacerun: yes">   </span>characters in file.
-<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>approx_interval:<span
-style="mso-spacerun: yes">  </span>30.<span style="mso-spacerun:
-yes">     </span>! approximate spacing between successive
-time<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun:
-yes">                         
-</span>!<span style="mso-spacerun: yes">   </span>samples (in units
-of the output time <o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun:
-yes">                         
-</span>!<span style="mso-spacerun: yes">   </span>coordinate.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>missing_value:
-1.e20<span style="mso-spacerun: yes">      </span>!
-value used to indicate a missing value<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun:
-yes">                         
-</span>!<span style="mso-spacerun: yes">   </span>in arrays output by
-netCDF as 32-bit IEEE <o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun:
-yes">                         
-</span>!<span style="mso-spacerun: yes">   </span>floating-point
-numbers (float or real)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!
-SUBROUTINE ARGUMENT DEFAULT INFORMATION<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<span
-style="mso-spacerun: yes">  </span>set default specifications for
-subroutine arguments to:<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<span
-style="mso-spacerun: yes">    
-</span>required/indeterminate/optional/ignored/forbidden<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<span
-style="mso-spacerun: yes">    </span>(indeterminate may or may
-not be required information, but is not always<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<span
-style="mso-spacerun: yes">     </span>required as an
-argument of the function call)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!============<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>subroutine_entry:
-cmor_axis<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!============<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>required:
-table axis_name units length coord_vals cell_bounds<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>ignored:
-interval<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!============<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>subroutine_entry:
-cmor_variable<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!============<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>required:
-table table_entry units axis_ids<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>indeterminate:
-missing_value<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>optional:
-tolerance original_name history comment<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>ignored:
-positive<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!============<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>subroutine_entry:
-cmor_write<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!============<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>required:<span
-style="mso-spacerun: yes">  </span>var_id data <o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>indeterminate:
-ntimes_passed time_vals time_bnds store_with<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>optional:
-file_suffix<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<span
-style="mso-spacerun: yes">  </span>TEMPLATE FOR AXES<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!============<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!axis_entry:<span
-style="mso-spacerun:
-yes">              
-</span>! (required)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!============<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<span
-style="mso-spacerun: yes">    </span>Override default argument
-specifications for cmor_axis <o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!------------<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<span
-style="mso-spacerun: yes">    </span>acceptable arguments
-include units length coord_vals cell_bounds interval<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!required:<span
-style="mso-spacerun:
-yes">                 
-</span>! (default: table axis_name units length<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<span
-style="mso-spacerun:
-yes">                                       
-</span>coord_vals cell_bounds)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!indeterminate:<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!optional:<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!ignored:<span
-style="mso-spacerun:
-yes">               
-</span><span style="mso-spacerun: yes">   </span>! (default:
-interval)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!forbidden:<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!------------<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!
-Axis attributes:<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<span
-style='mso-tab-count:1'> </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!standard_name:<span
-style="mso-spacerun:
-yes">            
-</span>! (required)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!units:<span
-style="mso-spacerun:
-yes">                    
-</span>! (required)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!axis:<span
-style="mso-spacerun:
-yes">                     
-</span>! X, Y, Z, T (default: undeclared)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!positive:<span
-style="mso-spacerun:
-yes">                 
-</span>! up or down (default: undeclared)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!long_name:<span
-style="mso-spacerun:
-yes">                
-</span>! (default: undeclared)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<span
-style='mso-tab-count:1'> </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!
-Additional axis information:<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<span
-style='mso-tab-count:1'> </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!out_name:<span
-style="mso-spacerun:
-yes">               
-</span>! (default: same as axis_entry) <o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!type:<span
-style="mso-spacerun:
-yes">                   
-</span>! double (default), real, character, integer<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!stored_direction:<span
-style="mso-spacerun: yes">        </span>!
-increasing (default) or decreasing<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!valid_min:<span
-style="mso-spacerun:
-yes">              
-</span>! type: double precision (default: no check performed<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!valid_max:<span
-style="mso-spacerun: yes">        </span><span
-style="mso-spacerun: yes">       </span>!
-type: double precision (default: no check performed<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!requested:<span
-style="mso-spacerun:
-yes">              
-</span>! space-separated list of requested coordinates <o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun:
-yes">                         
-</span>!<span style="mso-spacerun: yes">      
-</span>(default: undeclared)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!requested_bounds:<span
-style="mso-spacerun: yes">        </span>!
-space-separated list of requested coordinate bounds<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun:
-yes">                         
-</span>!<span style="mso-spacerun: yes">      
-</span>(default: undeclared)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!tol_on_requests:<span
-style="mso-spacerun: yes">        
-</span>! fractional tolerance for meeting request<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun:
-yes">                         
-</span>!<span style="mso-spacerun: yes">  </span>(default=1.e-3, which is
-used in the formula:<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun:
-yes">                         
-</span>!<span style="mso-spacerun: yes">     </span>eps
-=<span style="mso-spacerun: yes">  </span>MIN(( tol*interval between
-grid-points)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun:
-yes">                         
-</span>!<span style="mso-spacerun: yes">         
-</span>and (1.e-3*tol*coordinate value)))<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!value:<span
-style="mso-spacerun:
-yes">                  
-</span>! of scalar (singleton) dimension <o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!bounds_values:<span
-style="mso-spacerun:
-yes">           </span>! of
-scalar (singleton) dimension bounds<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<span
-style='mso-tab-count:1'> </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<span
-style="mso-spacerun: yes">  </span>TEMPLATE FOR VARIABLES<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!============<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!variable_entry:<span
-style="mso-spacerun:
-yes">               
-</span>! (required)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!============<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<span
-style="mso-spacerun: yes">    </span>Override default argument
-specifications for cmor_variable<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!------------<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<span
-style="mso-spacerun: yes">       
-</span>acceptable arguments include<span style="mso-spacerun: yes"> 
-</span>file_suffix missing_value tolerance <o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<span
-style="mso-spacerun:
-yes">                              
-</span>original_name history comment positive<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!required:<span
-style="mso-spacerun:
-yes">                  
-</span>! (default: table table_entry units axis_ids)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!indeterminate:<span
-style="mso-spacerun:
-yes">             
-</span>! (default: file_suffix missing_value)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!optional:<span
-style="mso-spacerun:
-yes">                  
-</span>! (default: original_name history comment)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!ignored:<span
-style="mso-spacerun:
-yes">                   
-</span>! (default: positive)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!forbidden:<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!------------<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!
-Variable attributes:<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<span
-style='mso-tab-count:1'> </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!standard_name:<span
-style="mso-spacerun:
-yes">             
-</span>! (required)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!units:<span
-style="mso-spacerun:
-yes">                     
-</span>! (required)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!cell_methods:<span
-style="mso-spacerun:
-yes">              
-</span>! (default: undeclared)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!long_name:<span
-style="mso-spacerun:
-yes">                 
-</span>! (default: undeclared)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!comment:<span
-style="mso-spacerun:
-yes">                   
-</span>! (default: undeclared)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<span
-style='mso-tab-count:1'> </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!
-Additional variable information:<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<span
-style='mso-tab-count:1'> </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!dimensions:<span
-style="mso-spacerun:
-yes">                
-</span>! (required)<span style="mso-spacerun: yes">  </span>(scalar
-dimension(s) should appear<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun:
-yes">                            
-</span>!<span style="mso-spacerun: yes">     
-</span>last in list)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!out_name:<span
-style="mso-spacerun:
-yes">                  
-</span>! (default: variable_entry)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!type:<span
-style="mso-spacerun:
-yes">                      
-</span>! real (default), double, integer <o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!positive:<span
-style="mso-spacerun:
-yes">                  
-</span>! up or down (default: undeclared)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!valid_min:<span
-style="mso-spacerun:
-yes">                 
-</span>! type: real (default: no check performed)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!valid_max:<span
-style="mso-spacerun:
-yes">                 
-</span>! type: real (default: no check performed)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!ok_min_mean_abs:<span
-style="mso-spacerun:
-yes">           
-</span>! type: real (default: no check performed)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!ok_max_mean_abs:<span
-style="mso-spacerun:
-yes">           
-</span>! type: real (default: no check performed)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<span
-style='mso-tab-count:1'> </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!
-<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!
-AXIS INFORMATION<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!============<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>axis_entry:
-longitude<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!============<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!------------<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!
-Axis attributes:<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<span
-style='mso-tab-count:1'> </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>standard_name:<span
-style="mso-spacerun: yes">    </span>longitude<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>units:<span
-style="mso-spacerun:
-yes">           
-</span>degrees_east<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>axis:<span
-style="mso-spacerun:
-yes">            
-</span>X<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>long_name:<span
-style="mso-spacerun: yes">       
-</span>longitude<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<span
-style='mso-tab-count:1'> </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!
-Additional axis information:<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<span
-style='mso-tab-count:1'> </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>out_name:<span
-style="mso-spacerun: yes">        
-</span>lon<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>valid_min:<span
-style="mso-spacerun: yes">       
-</span>0.<span style="mso-spacerun:
-yes">          </span><span
-style="mso-spacerun: yes"> </span>! CMOR will add n*360 to input values<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun:
-yes">                              
-</span>! (where n is an integer) to ensure <o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun:
-yes">                              
-</span>!<span style="mso-spacerun: yes">  </span>longitudes are in proper
-range.<span style="mso-spacerun: yes">  </span>The<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun:
-yes">                              
-</span>!<span style="mso-spacerun: yes">  </span>data will also be
-rearranged <o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun:
-yes">             
-</span><span style="mso-spacerun:
-yes">                 </span>!<span
-style="mso-spacerun: yes">  </span>appropriately.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>valid_max:<span
-style="mso-spacerun: yes">       
-</span>360.<span style="mso-spacerun:
-yes">         </span>!<span
-style="mso-spacerun: yes">  </span>see above comment.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<span
-style='mso-tab-count:1'> </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!=============<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>axis_entry:
-latitude<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!=============<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!
-Axis attributes:<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<span
-style='mso-tab-count:1'> </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>standard_name:<span
-style="mso-spacerun: yes">    </span>latitude<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>units:<span
-style="mso-spacerun:
-yes">           
-</span>degrees_north<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>axis:<span
-style="mso-spacerun:
-yes">            
-</span>Y<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>long_name:<span
-style="mso-spacerun: yes">       
-</span>latitude<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<span
-style='mso-tab-count:1'> </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!
-Additional axis information:<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<span
-style='mso-tab-count:1'> </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>out_name:<span
-style="mso-spacerun: yes">        
-</span>lat<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>valid_min:<span
-style="mso-spacerun: yes">       
-</span>-90.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>valid_max:<span
-style="mso-spacerun: yes">      </span><span
-style="mso-spacerun: yes">  </span>90.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<span
-style='mso-tab-count:1'> </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!============<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>axis_entry:
-time<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!============<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<span
-style="mso-spacerun: yes">    </span>Override default argument
-specifications for cmor_axis <o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!------------<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>required:
-interval<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>indeterminate:
-coord_vals cell_bounds<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!------------<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!
-Axis attributes:<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<span
-style='mso-tab-count:1'> </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>standard_name:<span
-style="mso-spacerun: yes">    </span>time<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>units:<span
-style="mso-spacerun:
-yes">           
-</span>days since ?<span style="mso-spacerun: yes">   
-</span>!<span style="mso-spacerun: yes">  </span>the user's basetime will
-be used<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>axis:<span
-style="mso-spacerun:
-yes">            
-</span>T<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>long_name:<span
-style="mso-spacerun: yes">       
-</span>time<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<span
-style='mso-tab-count:1'> </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!============<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>axis_entry:
-pressure<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!============<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<span
-style="mso-spacerun: yes">    </span>Override default argument
-specifications for cmor_axis <o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!------------<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>ignored:
-cell_bounds<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!------------<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!
-Axis attributes:<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<span
-style='mso-tab-count:1'> </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>standard_name:<span
-style="mso-spacerun: yes">    </span>air_pressure<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>units:<span
-style="mso-spacerun:
-yes">           
-</span>Pa <o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>axis:<span
-style="mso-spacerun:
-yes">            
-</span>Z<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>positive:<span
-style="mso-spacerun: yes">        
-</span>down<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>long_name:<span
-style="mso-spacerun: yes">       
-</span>pressure<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<span
-style='mso-tab-count:1'> </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!
-Additional axis information:<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<span
-style='mso-tab-count:1'> </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>out_name:<span
-style="mso-spacerun: yes">        
-</span>plev<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>valid_min:<span
-style="mso-spacerun: yes">        </span>0.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>valid_max:<span
-style="mso-spacerun: yes">       
-</span>110000.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>requested:<span
-style="mso-spacerun: yes">       
-</span>10000. 20000. 30000. 40000. 50000.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<span
-style='mso-tab-count:1'> </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!============<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>axis_entry:
-height1<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!============<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<span
-style="mso-spacerun: yes">    </span>Override default argument
-specifications for cmor_axis <o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!------------<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>ignored:
-cell_bounds<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!------------<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!
-Axis attributes:<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<span
-style='mso-tab-count:1'> </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>standard_name:<span
-style="mso-spacerun: yes">    </span>height<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>units:<span
-style="mso-spacerun:
-yes">           
-</span>m<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>axis:<span
-style="mso-spacerun:
-yes">            
-</span>Z<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>positive:<span
-style="mso-spacerun: yes">        
-</span>up<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>long_name:<span
-style="mso-spacerun: yes">       
-</span>height<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<span
-style='mso-tab-count:1'> </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!
-Additional axis information:<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<span
-style='mso-tab-count:1'> </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>out_name:<span
-style="mso-spacerun: yes">   </span><span style="mso-spacerun:
-yes">      </span>height<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>valid_min:<span
-style="mso-spacerun: yes">        </span>0.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>valid_max:<span
-style="mso-spacerun: yes">        </span>10.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>value:<span
-style="mso-spacerun:
-yes">           
-</span>2.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<span
-style='mso-tab-count:1'> </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!============<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>axis_entry:
-height2<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!============<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<span
-style="mso-spacerun: yes">    </span>Override default argument
-specifications for cmor_axis <o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!------------<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>ignored:
-cell_bounds<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!------------<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!
-Axis attributes:<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<span
-style='mso-tab-count:1'> </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>standard_name:<span
-style="mso-spacerun: yes">    </span>height<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>units:<span
-style="mso-spacerun:
-yes">           
-</span>m<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>axis:<span
-style="mso-spacerun:
-yes">            
-</span>Z<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>positive:<span
-style="mso-spacerun: yes">        
-</span>up<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>long_name:<span
-style="mso-spacerun: yes">       
-</span>height<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<span
-style='mso-tab-count:1'> </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!
-Additional axis information:<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<span
-style='mso-tab-count:1'> </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>out_name:<span
-style="mso-spacerun: yes">        
-</span>height<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>valid_min:<span
-style="mso-spacerun: yes">        </span>0.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>valid_max:<span
-style="mso-spacerun: yes">        </span>30.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>value:<span
-style="mso-spacerun:
-yes">           
-</span>10.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<span
-style='mso-tab-count:1'> </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!============<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>axis_entry:
-depth1<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!============<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!------------<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!
-Axis attributes:<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<span
-style='mso-tab-count:1'> </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>standard_name:<span
-style="mso-spacerun: yes">    </span>depth<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>units:<span
-style="mso-spacerun:
-yes">           
-</span>m<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>axis:<span
-style="mso-spacerun:
-yes">            
-</span>Z<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>positive:<span
-style="mso-spacerun: yes">        
-</span>down<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>long_name:<span
-style="mso-spacerun: yes">        
-</span>depth<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<span
-style='mso-tab-count:1'> </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!
-Additional axis information:<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<span
-style='mso-tab-count:1'> </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>out_name:<span
-style="mso-spacerun: yes">        
-</span>depth<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>valid_min:<span
-style="mso-spacerun: yes">        </span>0.0<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>valid_max:<span
-style="mso-spacerun: yes">        </span>1.0<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>value:<span
-style="mso-spacerun:
-yes">           
-</span>0.05<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>bounds_values:<span
-style="mso-spacerun: yes">    </span>0.0 0.1<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!
-VARIABLE INFORMATION<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!============<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>variable_entry:
-tas<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!============<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!
-Variable attributes:<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<span
-style='mso-tab-count:1'> </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>standard_name:<span
-style="mso-spacerun: yes">   </span>air_temperature<span
-style="mso-spacerun: yes">     </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>units:<span
-style="mso-spacerun:
-yes">           </span>K<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>cell_methods:<span
-style="mso-spacerun: yes">    </span>time: mean<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>long_name:<span
-style="mso-spacerun: yes">       </span>Surface
-Air Temperature<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<span
-style='mso-tab-count:1'> </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!
-Additional variable information:<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<span
-style='mso-tab-count:1'> </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>dimensions:<span
-style="mso-spacerun: yes">       </span>longitude
-latitude time height1<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>valid_min:<span
-style="mso-spacerun: yes">       
-</span>200.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>valid_max:<span
-style="mso-spacerun: yes">       
-</span>340.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>ok_min_mean_abs:<span
-style="mso-spacerun: yes">  </span>270.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>ok_max_mean_abs:<span
-style="mso-spacerun: yes">  </span>300.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<span
-style='mso-tab-count:1'> </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!
-<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!============<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>variable_entry:
-hfls<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!============<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<span
-style="mso-spacerun: yes">    </span>Override default argument
-specifications for cmor_variable<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!------------<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>required:
-positive<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!------------<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!
-Variable attributes:<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<span
-style='mso-tab-count:1'> </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>standard_name:
-upward_surface_latent_heat_flux<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>units:<span
-style="mso-spacerun: yes">        
-</span>W m-2<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>cell_methods:<span
-style="mso-spacerun: yes">  </span>time: mean<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>long_name:<span
-style="mso-spacerun: yes">     </span>Surface Latent Heat
-Flux<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<span
-style='mso-tab-count:1'> </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!
-Additional variable information:<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<span
-style='mso-tab-count:1'> </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>dimensions:<span
-style="mso-spacerun: yes">       </span>longitude
-latitude time<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>positive:<span
-style="mso-spacerun: yes">        
-</span>up<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>valid_min:<span
-style="mso-spacerun: yes">       
-</span>-50.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>valid_max:<span
-style="mso-spacerun: yes">       
-</span>300.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>ok_min_mean_abs:<span
-style="mso-spacerun: yes">  </span>20.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>ok_max_mean_abs:<span
-style="mso-spacerun: yes">  </span>150.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<span
-style='mso-tab-count:1'> </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!
-<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!============<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>variable_entry:
-mrsos<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!============<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!
-Variable attributes:<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<span
-style='mso-tab-count:1'> </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>standard_name:
-moisture_content_of_soil_layer<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>units:<span
-style="mso-spacerun: yes">        
-</span>kg m-2<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>cell_methods:<span
-style="mso-spacerun: yes">  </span>time: mean<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>long_name:<span
-style="mso-spacerun: yes">     </span>Moisture in Upper 0.1
-m of Soil Column<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>comment:<span
-style="mso-spacerun: yes">        
-</span>includes subsurface frozen water but not surface snow and ice <o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<span
-style='mso-tab-count:1'> </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!
-Additional variable information:<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<span
-style='mso-tab-count:1'> </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>dimensions:<span
-style="mso-spacerun: yes">       </span>longitude
-latitude time depth1<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<span
-style='mso-tab-count:1'> </span> <o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!============<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>variable_entry:
-ua<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!============<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!
-Variable attributes:<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<span
-style='mso-tab-count:1'> </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>standard_name:
-eastward_wind<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>units:<span
-style="mso-spacerun: yes">        
-</span>m s-1<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>cell_methods:<span
-style="mso-spacerun: yes">  </span>time: mean<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>long_name:<span
-style="mso-spacerun: yes">     </span>Zonal Wind Component<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<span
-style='mso-tab-count:1'> </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!
-Additional variable information:<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<span
-style='mso-tab-count:1'> </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>dimensions:<span
-style="mso-spacerun: yes">       </span>longitude
-latitude pressure time<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>valid_min:<span
-style="mso-spacerun: yes">       
-</span>-200.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>valid_max:<span
-style="mso-spacerun: yes">       
-</span>300.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>ok_min_mean_abs:<span
-style="mso-spacerun: yes">  </span>0.1<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>ok_max_mean_abs:<span
-style="mso-spacerun: yes">  </span>100.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<span
-style='mso-tab-count:1'> </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!============<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>variable_entry:
-ta<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!============<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!
-Variable attributes:<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<span
-style='mso-tab-count:1'> </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>standard_name:
-air_temperature<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>units:<span
-style="mso-spacerun: yes">        
-</span>K<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>cell_methods:<span
-style="mso-spacerun: yes">  </span>time: mean<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>long_name:<span
-style="mso-spacerun: yes">     </span>Temperature<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<span
-style='mso-tab-count:1'> </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!
-Additional variable information:<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<span
-style='mso-tab-count:1'> </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>dimensions:<span
-style="mso-spacerun: yes">       </span>longitude
-latitude pressure time<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>valid_min:<span
-style="mso-spacerun: yes">       
-</span>150.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>valid_max:<span
-style="mso-spacerun: yes">       
-</span>350.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>ok_min_mean_abs:<span
-style="mso-spacerun: yes">  </span>200.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>ok_max_mean_abs:<span
-style="mso-spacerun: yes">  </span>300.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<span
-style='mso-tab-count:1'> </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!============<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>variable_entry:
-pr<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!============<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!
-Variable attributes:<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<span
-style='mso-tab-count:1'> </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>standard_name:<span
-style="mso-spacerun: yes">  </span>precipitation<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>units:<span
-style="mso-spacerun:
-yes">          </span>kg m-2 s-1<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>cell_methods:<span
-style="mso-spacerun: yes">   </span>time: mean<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>long_name:<span
-style="mso-spacerun: yes">      </span>Precipitation<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>comment:<span
-style="mso-spacerun: yes">       
-</span>includes all types (rain, snow, large-scale, convective, etc.)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<span
-style='mso-tab-count:1'> </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!
-Additional variable information:<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<span
-style='mso-tab-count:1'> </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>dimensions:<span
-style="mso-spacerun: yes">        
-</span>longitude latitude time<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-lang=DE style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:
-"Courier New";mso-ansi-language:DE'>valid_min:<span style="mso-spacerun:
-yes">          </span>0.0<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-lang=DE style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:
-"Courier New";mso-ansi-language:DE'>valid_max:<span style="mso-spacerun:
-yes">          </span>1.e-4<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-lang=DE style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:
-"Courier New";mso-ansi-language:DE'>ok_min_mean_abs:<span style="mso-spacerun:
-yes">    </span>1.e-6<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>ok_max_mean_abs:<span
-style="mso-spacerun: yes">   </span><span style="mso-spacerun:
-yes"> </span>5.e-5 <o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<span
-style='mso-tab-count:1'> </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!============<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>variable_entry:
-cl<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!============<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!
-Variable attributes:<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<span
-style='mso-tab-count:1'> </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>standard_name:<span
-style="mso-spacerun: yes">  </span>cloud_area_fraction<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>units:<span
-style="mso-spacerun:
-yes">          </span>%<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>cell_methods:<span
-style="mso-spacerun: yes">   </span>time: mean<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>long_name:<span
-style="mso-spacerun: yes">      </span>Total Cloud
-Fraction<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<span
-style='mso-tab-count:1'> </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!
-Additional variable information:<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<span
-style='mso-tab-count:1'> </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>dimensions:<span
-style="mso-spacerun: yes">        
-</span>longitude latitude zlevel time<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>valid_min:<span
-style="mso-spacerun:
-yes">          </span>0.0<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>valid_max:<span
-style="mso-spacerun:
-yes">          </span>100.0<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>ok_min_mean_abs:<span
-style="mso-spacerun: yes">    </span>10.0<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>ok_max_mean_abs:<span
-style="mso-spacerun: yes">    </span>90.0<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<span
-style='mso-tab-count:1'> </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<h2><a name="_Toc129422042"></a><a name="_Toc149385755"><span style='mso-bookmark:
-_Toc129422042'>CMOR 2 (table excerpts)</span></a><o:p></o:p></h2>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New";
-mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>table_id:
-Table Amon<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>modeling_realm:
-atmos<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>frequency:
-mon<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>cmor_version:
-2.0<span style="mso-spacerun:
-yes">         </span>! version of CMOR
-that can read this table<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>cf_version:<span
-style="mso-spacerun: yes">   </span>1.4<span style="mso-spacerun:
-yes">         </span>! version of CF
-that output conforms to<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>project_id:<span
-style="mso-spacerun: yes">   </span>CMIP5<span style="mso-spacerun:
-yes">  </span>! project id<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>table_date:<span
-style="mso-spacerun: yes">   </span>04 March 2010 ! date this table
-was constructed<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>missing_value:
-1.e20<span style="mso-spacerun: yes">      </span>!
-value used to indicate a missing value<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun:
-yes">                         
-</span>!<span style="mso-spacerun: yes">   </span>in arrays output by
-netCDF as 32-bit IEEE <o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun:
-yes">                         
-</span>!<span style="mso-spacerun: yes">   </span>floating-point
-numbers (float or real)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>baseURL:
-http://cmip-pcmdi.llnl.gov/CMIP5/dataLocation <o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>product:
-output<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>required_global_attributes:
-creation_date tracking_id forcing model_id parent_experiment_id branch_time contact
-institute_id ! space separated required global attribute<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New";
-mso-bidi-font-family:"Courier New"'>forcings:<span style="mso-spacerun:
-yes">   </span>N/A Nat Ant GHG SD SI SA TO SO Oz LU Sl Vl SS Ds BC MD
-OC AA<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>expt_id_ok:
-'10- or 30-year run initialized in year XXXX' 'decadalXXXX'<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>expt_id_ok:
-'volcano-free hindcasts XXXX' 'noVolcXXXX'<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>expt_id_ok:
-'prediction with 2010 volcano' 'volcIn2010'<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>expt_id_ok:
-'pre-industrial control' 'piControl'<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>expt_id_ok:
-'Historical' 'historical'<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>expt_id_ok:
-'mid-Holocene' 'midHolocene'<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>expt_id_ok:
-'last glacial maximum' 'lgm'<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>expt_id_ok:
-'last millennium' 'past1000'<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>expt_id_ok:
-'RCP4.5' 'rcp45'<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>expt_id_ok:
-'RCP8.5' 'rcp85'<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>expt_id_ok:
-'RCP2.6' 'rcp26'<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>expt_id_ok:
-'RCP6' 'rcp60'<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>expt_id_ok:
-'ESM pre-industrial control' 'esmControl'<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>expt_id_ok:
-'ESM historical' 'esmHistorical'<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>expt_id_ok:
-'ESM RCP8.5' 'esmrcp85'<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>expt_id_ok:
-'ESM fixed climate 1' 'esmFixClim1'<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>expt_id_ok:
-'ESM fixed climate 2' 'esmFixClim2'<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>expt_id_ok:
-'ESM feedback 1' 'esmFdbk1'<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>expt_id_ok:
-'ESM feedback 2' 'esmFdbk2'<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>expt_id_ok:
-'1 percent per year CO2' '1pctCO2'<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>expt_id_ok:
-'abrupt 4XCO2' 'abrupt4xCO2'<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>expt_id_ok:
-'natural-only' 'historicalNat'<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>expt_id_ok:
-'GHG-only' 'historicalGHG'<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>expt_id_ok:
-'anthropogenic-only' 'historicalAnt'<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>expt_id_ok:
-'anthropogenic sulfate aerosol direct effect only' 'historicalSD'<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>expt_id_ok:
-'anthropogenic sulfate aerosol indirect effect only' 'historicalSI'<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>expt_id_ok:
-'anthropogenic sulfate aerosol only' 'historicalSA'<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>expt_id_ok:
-'tropospheric ozone only' 'historicalTO'<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>expt_id_ok:
-'stratospheric ozone' 'historicalSO'<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>expt_id_ok:
-'ozone only' 'historicalOz'<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>expt_id_ok:
-'land-use change only' 'historicalLU'<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>expt_id_ok:
-'solar irradiance only' 'historicalSl'<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>expt_id_ok:
-'volcanic aerosol only' 'historicalVl'<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>expt_id_ok:
-'sea salt only' 'historicalSS'<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>expt_id_ok:
-'dust' 'historicalDs'<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>expt_id_ok:
-'black carbon only' 'historicalBC'<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>expt_id_ok:
-'mineral dust only' 'historicalMD'<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>expt_id_ok:
-'organic carbon only' 'historicalOC'<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>expt_id_ok:
-'anthropogenic aerosols only' 'historicalAA'<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>expt_id_ok:
-'AMIP' 'amip'<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>expt_id_ok:
-'2030 time-slice' 'sst2030'<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>expt_id_ok:
-'control SST climatology' 'sstClim'<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>expt_id_ok:
-'CO2 forcing' 'sstClim4xCO2'<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>expt_id_ok:
-'all aerosol forcing' 'sstClimAerosol'<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>expt_id_ok:
-'sulfate aerosol forcing' 'sstClimSulfate'<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>expt_id_ok:
-'4xCO2 AMIP' 'amip4xCO2'<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>expt_id_ok:
-'AMIP plus patterned anomaly' 'amipFuture'<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>expt_id_ok:
-'aqua planet control' 'aquaControl'<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>expt_id_ok:
-'4xCO2 aqua planet' 'aqua4xCO2'<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>expt_id_ok:
-'aqua planet plus 4K anomaly' 'aqua4K'<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>expt_id_ok:
-'AMIP plus 4K anomaly' 'amip4K'<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>approx_interval:<span
-style="mso-spacerun: yes">  </span>30.000000<span style="mso-spacerun:
-yes">     </span>! approximate spacing between successive
-time<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun:
-yes">                         
-</span>!<span style="mso-spacerun: yes">   </span>samples (in units
-of the output time <o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun:
-yes">                         
-</span>!<span style="mso-spacerun: yes">   </span>coordinate.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!============<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>axis_entry:
-longitude<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!============<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!
-Axis attributes:<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>standard_name:<span
-style="mso-spacerun: yes">    </span>longitude<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>units:<span
-style="mso-spacerun:
-yes">           
-</span>degrees_east<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>axis:<span
-style="mso-spacerun:
-yes">            
-</span>X<span style="mso-spacerun:
-yes">            
-</span>! X, Y, Z, T (default: undeclared)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>long_name:<span
-style="mso-spacerun: yes">       
-</span>longitude<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!
-Additional axis information:<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>out_name:<span
-style="mso-spacerun: yes">        
-</span>lon<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>valid_min:<span
-style="mso-spacerun: yes">       
-</span>0<span style="mso-spacerun:
-yes">         </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>valid_max:<span
-style="mso-spacerun: yes">        </span>360
-<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>stored_direction:
-increasing<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>type:<span
-style="mso-spacerun:
-yes">            
-</span>double<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>must_have_bounds:
-yes<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!============<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>axis_entry:
-latitude<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!============<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!
-Axis attributes:<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>standard_name:<span
-style="mso-spacerun: yes">    </span>latitude<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>units:<span
-style="mso-spacerun:
-yes">           
-</span>degrees_north<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>axis:<span
-style="mso-spacerun:
-yes">            
-</span>Y<span style="mso-spacerun:
-yes">            
-</span>! X, Y, Z, T (default: undeclared)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>long_name:<span
-style="mso-spacerun: yes">       
-</span>latitude<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!
-Additional axis information:<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>out_name:<span
-style="mso-spacerun: yes">        
-</span>lat<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>valid_min:<span
-style="mso-spacerun: yes">       
-</span>-90<span style="mso-spacerun:
-yes">         </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>valid_max:<span
-style="mso-spacerun: yes">        </span>90 <o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>stored_direction:
-increasing<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>type:<span
-style="mso-spacerun:
-yes">            
-</span>double<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>must_have_bounds:
-yes<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!============<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>axis_entry:
-plevs<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!============<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!
-Axis attributes:<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>standard_name:<span
-style="mso-spacerun: yes">    </span>air_pressure<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>units:<span
-style="mso-spacerun:
-yes">           
-</span>Pa<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>axis:<span
-style="mso-spacerun:
-yes">            
-</span>Z<span style="mso-spacerun:
-yes">            
-</span>! X, Y, Z, T (default: undeclared)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>positive:<span
-style="mso-spacerun: yes">        
-</span>down<span style="mso-spacerun:
-yes">         </span>! up or down
-(default: undeclared)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>long_name:<span
-style="mso-spacerun: yes">       
-</span>pressure<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!
-Additional axis information:<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>out_name:<span
-style="mso-spacerun: yes">        
-</span>plev<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>stored_direction:
-decreasing<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>tolerance:<span
-style="mso-spacerun: yes">       
-</span>0.001<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>type:<span
-style="mso-spacerun:
-yes">            
-</span>double<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>requested:<span
-style="mso-spacerun: yes">       
-</span>100000. 92500. 85000. 70000. 60000. 50000. 40000. 30000. 25000. 20000.
-15000. 10000. 7000. 5000. 3000. 2000. 1000.<span style="mso-spacerun:
-yes">        </span>! space-separated list
-of requested coordinates <o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>must_have_bounds:
-no<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!============<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>axis_entry:
-alevbnds<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!============<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!
-Axis attributes:<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>axis:<span
-style="mso-spacerun:
-yes">            
-</span>Z<span style="mso-spacerun:
-yes">            
-</span>! X, Y, Z, T (default: undeclared)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>long_name:<span
-style="mso-spacerun: yes">       
-</span>atmospheric model half-level<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!
-Additional axis information:<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>out_name:<span
-style="mso-spacerun: yes">        
-</span>lev<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>stored_direction:
-increasing<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>type:<span
-style="mso-spacerun:
-yes">            
-</span>double<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>must_have_bounds:
-no<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>index_only:<span
-style="mso-spacerun: yes">       </span>ok<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!============<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>axis_entry:
-time<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!============<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!
-Axis attributes:<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>standard_name:<span
-style="mso-spacerun: yes">    </span>time<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>units:<span
-style="mso-spacerun:
-yes">           
-</span>days since ?<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>axis:<span
-style="mso-spacerun:
-yes">            
-</span>T<span style="mso-spacerun:
-yes">            
-</span>! X, Y, Z, T (default: undeclared)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>long_name:<span
-style="mso-spacerun: yes">       
-</span>time<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!
-Additional axis information:<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>out_name:<span
-style="mso-spacerun: yes">        
-</span>time<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>stored_direction:
-increasing<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>type:<span
-style="mso-spacerun:
-yes">            
-</span>double<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>must_have_bounds:
-yes<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!============<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>axis_entry:
-time2<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!============<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!
-Axis attributes:<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>standard_name:<span
-style="mso-spacerun: yes">    </span>time<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>units:<span
-style="mso-spacerun: yes">      </span><span
-style="mso-spacerun: yes">      </span>days since
-?<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>axis:<span
-style="mso-spacerun:
-yes">            
-</span>T<span style="mso-spacerun:
-yes">            
-</span>! X, Y, Z, T (default: undeclared)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>long_name:<span
-style="mso-spacerun: yes">       
-</span>time<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!
-Additional axis information:<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>out_name:<span
-style="mso-spacerun: yes">        
-</span>time<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>stored_direction:
-increasing<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>type:<span
-style="mso-spacerun:
-yes">            
-</span>double<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>must_have_bounds:
-yes<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>climatology:<span
-style="mso-spacerun: yes">      </span>yes<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!============<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>axis_entry:
-height2m<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!============<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!
-Axis attributes:<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>standard_name:<span
-style="mso-spacerun: yes">    </span>height<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>units:<span
-style="mso-spacerun:
-yes">           
-</span>m<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>axis:<span
-style="mso-spacerun:
-yes">            
-</span>Z<span style="mso-spacerun:
-yes">            
-</span>! X, Y, Z, T (default: undeclared)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>positive:<span
-style="mso-spacerun: yes">        
-</span>up<span style="mso-spacerun:
-yes">         </span>! up or down
-(default: undeclared)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>long_name:<span
-style="mso-spacerun: yes">       
-</span>height<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!
-Additional axis information:<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>out_name:<span
-style="mso-spacerun: yes">        
-</span>height<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>valid_min:<span
-style="mso-spacerun: yes">       
-</span>1<span style="mso-spacerun:
-yes">         </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>valid_max:<span
-style="mso-spacerun: yes">        </span>10 <o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>stored_direction:
-increasing<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>type:<span
-style="mso-spacerun:
-yes">            
-</span>double<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>value:<span
-style="mso-spacerun:
-yes">           
-</span>2.<span style="mso-spacerun:
-yes">           
-</span>! of scalar (singleton) dimension <o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>must_have_bounds:
-no<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!============<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>axis_entry:
-height10m<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!============<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!
-Axis attributes:<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>standard_name:<span
-style="mso-spacerun: yes">    </span>height<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>units:<span
-style="mso-spacerun:
-yes">           
-</span>m<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>axis:<span
-style="mso-spacerun:
-yes">            
-</span>Z<span style="mso-spacerun:
-yes">            
-</span>! X, Y, Z, T (default: undeclared)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>positive:<span
-style="mso-spacerun: yes">        
-</span>up<span style="mso-spacerun:
-yes">         </span>! up or down
-(default: undeclared)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>long_name:<span
-style="mso-spacerun: yes">       
-</span>height<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!
-Additional axis information:<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>out_name:<span
-style="mso-spacerun: yes">       </span><span
-style="mso-spacerun: yes">  </span>height<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>valid_min:<span
-style="mso-spacerun: yes">       
-</span>1<span style="mso-spacerun:
-yes">         </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>valid_max:<span
-style="mso-spacerun: yes">        </span>30 <o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>stored_direction:
-increasing<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>type:<span
-style="mso-spacerun:
-yes">            
-</span>double<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>value:<span
-style="mso-spacerun:
-yes">           
-</span>10.<span style="mso-spacerun:
-yes">           
-</span>! of scalar (singleton) dimension <o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>must_have_bounds:
-no<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!============<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>axis_entry:
-smooth_level<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!============<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!
-This coordinate is a hybrid height coordinate with units of meters (m).<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<span
-style="mso-spacerun: yes">  </span>It increases upward.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<span
-style="mso-spacerun: yes">  </span>The values of a(k)*ztop, which appear
-in the formula below, should be stored as smooth_level. <o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<span
-style="mso-spacerun: yes">  </span>Note that in the netCDF file the
-variable will be named "lev", not smooth_level.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!------------<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!
-Axis attributes:<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<span
-style='mso-tab-count:1'> </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>standard_name:<span
-style="mso-spacerun: yes">    </span>atmosphere_sleve_coordinate<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>units:<span
-style="mso-spacerun:
-yes">           
-</span>m<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>axis:<span
-style="mso-spacerun:
-yes">            
-</span>Z<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>positive:<span
-style='mso-tab-count:1'>     </span><span
-style="mso-spacerun: yes">      </span>up<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>long_name:<span
-style="mso-spacerun: yes">  </span><span style="mso-spacerun:
-yes">      </span>atmosphere smooth level
-vertical (SLEVE) coordinate<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<span
-style='mso-tab-count:1'> </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!
-Additional axis information:<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<span
-style='mso-tab-count:1'> </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>out_name:<span
-style="mso-spacerun: yes">        
-</span>lev<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>must_have_bounds:
-yes<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>stored_direction:
-increasing<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>valid_min:<span
-style="mso-spacerun: yes">        </span>-200.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>valid_max:<span
-style="mso-spacerun: yes">       
-</span>800000.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>formula:<span
-style="mso-spacerun:
-yes">          </span>z(n,k,j,i) =
-a(k)*ztop + b1(k)*zsurf1(n,j,i) + b2(k)*zsurf2(n,j,i)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>z_factors:<span
-style="mso-spacerun: yes">        </span>a:
-a b1: b1 b2: b2 ztop: ztop zsurf1: zsurf1 zsurf2: zsurf2<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>z_bounds_factors:
-a: a_bnds b1: b1_bnds b2: b2_bnds ztop: ztop zsurf1: zsurf1 zsurf2: zsurf2<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<span
-style='mso-tab-count:1'> </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!============<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>axis_entry:
-natural_log_pressure<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!============<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!This
-coordinate is dimensionless and varies from near 0 at the surface and increases
-upward.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<span
-style="mso-spacerun: yes">  </span>The values of lev(k), which appears in
-the formula below, should be stored as natural_log_pressure.<span
-style="mso-spacerun: yes">  </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<span
-style="mso-spacerun: yes">  </span>Note that in the netCDF file the
-variable will be named "lev", not natural_log_pressure.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!------------<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!
-Axis attributes:<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<span
-style='mso-tab-count:1'> </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>standard_name:<span
-style="mso-spacerun: yes">   
-</span>atmosphere_ln_pressure_coordinate<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>axis:<span
-style="mso-spacerun:
-yes">            
-</span>Z<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>long_name:<span
-style="mso-spacerun: yes">       
-</span>atmosphere natural log pressure coordinate<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>positive:<span
-style='mso-tab-count:1'>     </span><span
-style="mso-spacerun: yes">      </span>down<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<span
-style='mso-tab-count:1'> </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!
-Additional axis information:<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<span
-style='mso-tab-count:1'> </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>out_name:<span
-style="mso-spacerun: yes">        
-</span>lev<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>must_have_bounds:
-yes<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>stored_direction:
-decreasing<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>valid_min:<span
-style="mso-spacerun: yes">        </span>-1.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>valid_max:<span
-style="mso-spacerun: yes">        </span>20.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>formula:<span
-style="mso-spacerun:
-yes">          </span>p(k) = p0 *
-exp(-lev(k))<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>z_factors:<span
-style="mso-spacerun: yes">        </span>p0:
-p0 lev: lev<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>z_bounds_factors:
-p0: p0 lev: lev_bnds<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<span
-style='mso-tab-count:1'> </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!============<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>axis_entry:
-standard_sigma<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!============<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!
-This coordinate is dimensionless and varies from 0 at the model top to 1.0 at
-the surface.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<span
-style="mso-spacerun: yes">  </span>The values of sigma(k), which appears
-in the formula below, should be stored as standard_sigma.<span
-style="mso-spacerun: yes">  </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<span
-style="mso-spacerun: yes">  </span>Note that in the netCDF file the
-variable will be named "lev", not standard_sigma.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!------------<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!
-Axis attributes:<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<span
-style='mso-tab-count:1'> </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>standard_name:<span
-style="mso-spacerun: yes">    </span>atmosphere_sigma_coordinate<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>axis:<span
-style="mso-spacerun:
-yes">            
-</span>Z<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>positive:<span
-style="mso-spacerun: yes">        
-</span>down<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>long_name:<span
-style="mso-spacerun: yes">       
-</span>sigma coordinate<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<span
-style='mso-tab-count:1'> </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!
-Additional axis information:<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<span
-style='mso-tab-count:1'> </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>out_name:<span
-style="mso-spacerun: yes">        
-</span>lev<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>must_have_bounds:
-yes<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>stored_direction:
-decreasing<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>valid_min:<span
-style="mso-spacerun: yes">        </span>0.0<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>valid_max:<span
-style="mso-spacerun: yes">        </span>1.0<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>formula:<span
-style="mso-spacerun:
-yes">          </span>p(n,k,j,i) =
-ptop + sigma(k)*(ps(n,j,i) - ptop)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>z_factors:<span
-style="mso-spacerun: yes">       
-</span>ptop: ptop sigma: lev ps: ps<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>z_bounds_factors:
-ptop: ptop sigma: lev_bnds ps: ps<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<span
-style='mso-tab-count:1'> </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!============<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>axis_entry:<span
-style="mso-spacerun: yes">  </span>standard_hybrid_sigma<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!============<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!
-This coordinate is dimensionless and varies from a small value at the model top
-to 1.0 at the surface.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<span
-style="mso-spacerun: yes">  </span>The values of a(k)+ b(k), which appear
-in the formula below, should be stored as standard_hybrid_sigma.<span
-style="mso-spacerun: yes">  </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<span
-style="mso-spacerun: yes">  </span>Note that in the netCDF file the
-variable will be named "lev", not standard_hybrid_sigma.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!---------------------------------<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!
-Axis attributes:<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<span
-style='mso-tab-count:1'> </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>standard_name:<span
-style="mso-spacerun: yes">   
-</span>atmosphere_hybrid_sigma_pressure_coordinate<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>units:<span
-style="mso-spacerun:
-yes">           
-</span>1<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>axis:<span
-style="mso-spacerun:
-yes">           </span><span
-style="mso-spacerun: yes">  </span>Z <o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>positive:<span
-style="mso-spacerun: yes">        
-</span>down<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>long_name:<span
-style="mso-spacerun: yes">       
-</span>hybrid sigma pressure coordinate<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!
-Additional axis information:<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<span
-style='mso-tab-count:1'> </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>out_name:<span
-style="mso-spacerun: yes">        
-</span>lev<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>must_have_bounds:
-yes<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>stored_direction:
-decreasing<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>valid_min:<span
-style="mso-spacerun: yes">        </span>0.0<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>valid_max:<span
-style="mso-spacerun: yes">        </span>1.0<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>formula:<span
-style="mso-spacerun:
-yes">          </span>p(n,k,j,i) =
-a(k)*p0 + b(k)*ps(n,j,i)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>z_factors:<span
-style="mso-spacerun: yes">        </span>p0:
-p0 a: a b: b ps: ps<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>z_bounds_factors:
-p0: p0 a: a_bnds b: b_bnds ps: ps<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<span
-style='mso-tab-count:2'>        </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!============<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>axis_entry:<span
-style="mso-spacerun: yes">  </span>alternate_hybrid_sigma<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!============<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!
-This coordinate is dimensionless and varies from a small value at the model top
-to 1.0 at the surface.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<span
-style="mso-spacerun: yes">  </span>The values of ap(k)/p0 + b(k), which
-appear in the formula below, should be stored as alternate_hybrid_sigma.<span
-style="mso-spacerun: yes">  </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<span
-style="mso-spacerun: yes">  </span>Note that in the netCDF file the
-variable will be named "lev", not alternate_hybrid_sigma.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!------------<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!
-Axis attributes:<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<span
-style='mso-tab-count:1'> </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>standard_name:<span
-style="mso-spacerun: yes">   
-</span>atmosphere_hybrid_sigma_pressure_coordinate<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>units:<span
-style="mso-spacerun:
-yes">          </span><span
-style="mso-spacerun: yes">  </span>1<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>axis:<span
-style="mso-spacerun:
-yes">            
-</span>Z<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>positive:<span
-style="mso-spacerun: yes">        
-</span>down<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>long_name:<span
-style="mso-spacerun: yes">       
-</span>hybrid sigma pressure coordinate<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<span
-style='mso-tab-count:1'> </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!
-Additional axis information:<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<span
-style='mso-tab-count:1'> </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>out_name:<span
-style="mso-spacerun: yes">        
-</span>lev<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>must_have_bounds:
-yes<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>stored_direction:
-decreasing<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>valid_min:<span
-style="mso-spacerun: yes">        </span>0.0<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>valid_max:<span
-style="mso-spacerun: yes">        </span>1.0<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>formula:<span
-style="mso-spacerun:
-yes">          </span>p(n,k,j,i) =
-ap(k) + b(k)*ps(n,j,i)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>z_factors:<span
-style="mso-spacerun: yes">        </span>p0:
-p0 ap: ap b: b ps: ps<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>z_bounds_factors:
-p0 ap: ap_bnds b: b_bnds ps: ps<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<span
-style='mso-tab-count:2'>        </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!============<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>axis_entry:<span
-style="mso-spacerun: yes">  </span>hybrid_height<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!============<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!
-This coordinate has dimension of meters (m) and increases upward.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<span
-style="mso-spacerun: yes">  </span>The values of a(k) which appear in the
-formula below, should be stored as hybrid_height.<span style="mso-spacerun:
-yes">  </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<span
-style="mso-spacerun: yes">  </span>Note that in the netCDF file the variable
-will be named "lev", not hybrid_height.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!------------<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!
-Axis attributes:<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<span
-style='mso-tab-count:1'> </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>standard_name:<span
-style="mso-spacerun: yes">   
-</span>atmosphere_hybrid_height_coordinate<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>units:<span
-style="mso-spacerun:
-yes">           
-</span>m<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>axis:<span
-style="mso-spacerun:
-yes">            
-</span>Z <o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>positive:<span
-style="mso-spacerun: yes">        
-</span>up<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>long_name:<span
-style="mso-spacerun: yes">        </span>hybrid
-height coordinate<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<span
-style='mso-tab-count:1'> </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!
-Additional axis information:<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<span
-style='mso-tab-count:1'> </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>out_name:<span
-style="mso-spacerun: yes">        
-</span>lev<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>must_have_bounds:
-yes<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>stored_direction:
-increasing<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>valid_min:<span
-style="mso-spacerun: yes">        </span>0.0<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>formula:<span
-style="mso-spacerun:
-yes">          </span>z(k,j,i) = a(k)
-+ b(k)*orog(j,i)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>z_factors:<span
-style="mso-spacerun: yes">        </span>a:
-lev b: b orog: orog<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>z_bounds_factors:
-a: lev_bnds b: b_bnds orog: orog<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<span
-style='mso-tab-count:2'>        </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!
-***************************************************************<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!
-Vertical coordinate formula terms:<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!
-***************************************************************<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!============<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>variable_entry:<span
-style="mso-spacerun: yes">    </span>orog<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!============<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>modeling_realm:<span
-style="mso-spacerun: yes">    </span>atmos<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!
-Variable attributes:<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>standard_name:<span
-style="mso-spacerun: yes">     </span>surface_altitude<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>units:<span
-style="mso-spacerun:
-yes">            
-</span>m<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>long_name:<span
-style="mso-spacerun: yes">        
-</span>Surface Altitude<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>comment:<span
-style="mso-spacerun:
-yes">           </span>height
-above the geoid; as defined here, ""the geoid"" is a
-surface of constant geopotential that, if the ocean were at rest, would
-coincide with mean sea level. Under this definition, the geoid changes as the
-mean volume of the ocean changes (e.g., due to glacial melt, or global warming
-of the ocean).<span style="mso-spacerun: yes">  </span>Report here the
-height above the present-day geoid.<span style="mso-spacerun: yes"> 
-</span>Over ocean, report as 0.0<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!
-Additional variable information:<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>dimensions:<span
-style="mso-spacerun: yes">       
-</span>longitude latitude<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>out_name:<span
-style="mso-spacerun:
-yes">          </span>orog<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>type:<span
-style="mso-spacerun:
-yes">             
-</span>real<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>valid_min:<span
-style="mso-spacerun: yes">        
-</span>-700<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>valid_max:<span
-style="mso-spacerun: yes">        
-</span>1.00E+04<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!============<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>variable_entry:
-p0<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!============<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!------------<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!
-Variable attributes:<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<span
-style='mso-tab-count:1'> </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>long_name:<span
-style="mso-spacerun: yes">       </span>vertical
-coordinate formula term: reference pressure <o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>units:<span
-style="mso-spacerun:
-yes">           </span>Pa<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<span
-style='mso-tab-count:1'> </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!============<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>variable_entry:
-ptop<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!============<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!------------<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!
-Variable attributes:<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<span
-style='mso-tab-count:1'> </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>long_name:<span
-style="mso-spacerun: yes">       </span>pressure
-at top of model <o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>units:<span
-style="mso-spacerun:
-yes">           </span>Pa<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<span
-style='mso-tab-count:1'> </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!============<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>variable_entry:
-a<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!============<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!------------<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!
-Variable attributes:<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<span
-style='mso-tab-count:1'> </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>long_name:<span
-style="mso-spacerun: yes">   </span>vertical coordinate formula term:
-a(k)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<span
-style='mso-tab-count:1'> </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!
-Additional variable information:<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<span
-style='mso-tab-count:1'> </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>dimensions:<span
-style="mso-spacerun: yes">        
-</span>alevel<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>type:<span
-style="mso-spacerun:
-yes">              
-</span>double<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<span
-style='mso-tab-count:1'> </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!============<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>variable_entry:
-b<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!============<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!------------<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!
-Variable attributes:<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<span
-style='mso-tab-count:1'> </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>long_name:<span
-style="mso-spacerun: yes">   </span>vertical coordinate formula term:
-b(k)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<span
-style='mso-tab-count:1'> </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!
-Additional variable information:<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<span
-style='mso-tab-count:1'> </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>dimensions:<span
-style="mso-spacerun: yes">        
-</span>alevel<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>type:<span
-style="mso-spacerun:
-yes">              
-</span>double<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<span
-style='mso-tab-count:1'> </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!============<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>variable_entry:
-a_bnds<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!============<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!------------<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!
-Variable attributes:<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<span
-style='mso-tab-count:1'> </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>long_name:<span
-style="mso-spacerun: yes">   </span>vertical coordinate formula term:
-a(k+1/2)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<span
-style='mso-tab-count:1'> </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!
-Additional variable information:<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<span
-style='mso-tab-count:1'> </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>dimensions:<span
-style="mso-spacerun: yes">        
-</span>alevel<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>type:<span
-style="mso-spacerun:
-yes">              
-</span>double<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<span
-style='mso-tab-count:1'> </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!============<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>variable_entry:
-b_bnds<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!============<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!------------<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!
-Variable attributes:<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<span
-style='mso-tab-count:1'> </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>long_name:<span
-style="mso-spacerun: yes">   </span>vertical coordinate formula term:
-b(k+1/2)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<span
-style='mso-tab-count:1'> </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!
-Additional variable information:<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<span
-style='mso-tab-count:1'> </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>dimensions:<span
-style="mso-spacerun: yes">        
-</span>alevel<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>type:<span
-style="mso-spacerun:
-yes">              
-</span>double<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!============<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>variable_entry:
-ap<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!============<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!
-Variable attributes:<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<span
-style='mso-tab-count:1'> </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>long_name:<span
-style="mso-spacerun: yes">   </span>vertical coordinate formula term:
-ap(k)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>units:<span
-style="mso-spacerun:
-yes">           </span>Pa<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<span
-style='mso-tab-count:1'> </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!
-Additional variable information:<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<span
-style='mso-tab-count:1'> </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>dimensions:<span
-style="mso-spacerun: yes">        
-</span>alevel<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>type:<span
-style="mso-spacerun:
-yes">              
-</span>double<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<span
-style='mso-tab-count:1'> </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!============<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>variable_entry:
-ap_bnds<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!============<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!
-Variable attributes:<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<span
-style='mso-tab-count:1'> </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>long_name:<span
-style="mso-spacerun: yes">   </span>vertical coordinate formula term:
-ap(k+1/2)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>units:<span
-style="mso-spacerun:
-yes">           </span>Pa<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<span
-style='mso-tab-count:1'> </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!
-Additional variable information:<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<span
-style='mso-tab-count:1'> </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>dimensions:<span
-style="mso-spacerun: yes">        
-</span>alevel<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>type:<span
-style="mso-spacerun:
-yes">              
-</span>double<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<span
-style='mso-tab-count:1'> </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!============<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>variable_entry:
-ztop<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!============<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!------------<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!
-Variable attributes:<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<span
-style='mso-tab-count:1'> </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>long_name:<span
-style="mso-spacerun: yes">       </span>height of
-top of model <o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>units:<span
-style="mso-spacerun:
-yes">           </span>m<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<span
-style='mso-tab-count:1'> </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!============<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>variable_entry:<span
-style="mso-spacerun: yes">    </span>tas<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!============<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>modeling_realm:<span
-style="mso-spacerun: yes">    </span>atmos<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!
-Variable attributes:<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>standard_name:<span
-style="mso-spacerun: yes">     </span>air_temperature<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>units:<span
-style="mso-spacerun:
-yes">            
-</span>K<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>cell_methods:<span
-style="mso-spacerun: yes">      </span>time: mean<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>long_name:<span
-style="mso-spacerun: yes">        
-</span>Near-Surface Air Temperature<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>comment:<span
-style="mso-spacerun:
-yes">          
-</span>near-surface (usually, 2 meter) air temperature.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!
-Additional variable information:<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>dimensions:<span
-style="mso-spacerun: yes">       
-</span>longitude latitude time height2m<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>out_name:<span
-style="mso-spacerun:
-yes">          </span>tas<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>type:<span
-style="mso-spacerun:
-yes">             
-</span>real<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!============<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>variable_entry:<span
-style="mso-spacerun: yes">    </span>tasmin<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!============<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>modeling_realm:<span
-style="mso-spacerun: yes">    </span>atmos<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!
-Variable attributes:<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>standard_name:<span
-style="mso-spacerun: yes">     </span>air_temperature<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>units:<span
-style="mso-spacerun:
-yes">            
-</span>K<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>cell_methods:<span
-style="mso-spacerun: yes">      </span>time: minimum
-within days time: mean over time<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>long_name:<span
-style="mso-spacerun: yes">        
-</span>Daily Minimum Near-Surface Air Temperature<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>comment:<span
-style="mso-spacerun:
-yes">          
-</span>monthly mean of the daily-minimum near-surface (usually, 2 meter) air
-temperature.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!
-Additional variable information:<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>dimensions:<span
-style="mso-spacerun: yes">       
-</span>longitude latitude time height2m<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>out_name:<span
-style="mso-spacerun:
-yes">          </span>tasmin<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>type:<span
-style="mso-spacerun:
-yes">             
-</span>real<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!============<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>variable_entry:<span
-style="mso-spacerun: yes">    </span>pr<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!============<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>modeling_realm:<span
-style="mso-spacerun: yes">    </span>atmos<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!
-Variable attributes:<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>standard_name:<span
-style="mso-spacerun: yes">     </span>precipitation_flux<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>units:<span
-style="mso-spacerun:
-yes">            
-</span>kg m-2 s-1<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>cell_methods:<span
-style="mso-spacerun: yes">      </span>time: mean<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>long_name:<span
-style="mso-spacerun: yes">        
-</span>Precipitation<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>comment:<span
-style="mso-spacerun:
-yes">           </span>at
-surface; includes both liquid and solid phases from all types of clouds (both
-large-scale and convective)<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!
-Additional variable information:<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>dimensions:<span
-style="mso-spacerun: yes">       
-</span>longitude latitude time<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>out_name:<span
-style="mso-spacerun:
-yes">          </span>pr<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>type:<span
-style="mso-spacerun:
-yes">             
-</span>real<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!============<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>variable_entry:<span
-style="mso-spacerun: yes">    </span>hfls<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!============<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>modeling_realm:<span
-style="mso-spacerun: yes">    </span>atmos<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!
-Variable attributes:<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>standard_name:<span
-style="mso-spacerun: yes">    
-</span>surface_upward_latent_heat_flux<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>units:<span
-style="mso-spacerun:
-yes">            
-</span>W m-2<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>cell_methods:<span
-style="mso-spacerun: yes">      </span>time: mean<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>long_name:<span
-style="mso-spacerun: yes">        
-</span>Surface Upward Latent Heat Flux<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>comment:<span
-style="mso-spacerun:
-yes">          
-</span>includes both evaporation and sublimation<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!
-Additional variable information:<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>dimensions:<span
-style="mso-spacerun: yes">       
-</span>longitude latitude time<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>out_name:<span
-style="mso-spacerun:
-yes">          </span>hfls<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>type:<span
-style="mso-spacerun:
-yes">             
-</span>real<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>positive:<span
-style="mso-spacerun:
-yes">          </span>up<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!============<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>variable_entry:<span
-style="mso-spacerun: yes">    </span>cl<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!============<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>modeling_realm:<span
-style="mso-spacerun: yes">    </span>atmos<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!
-Variable attributes:<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>standard_name:<span
-style="mso-spacerun: yes">     </span>cloud_area_fraction_in_atmosphere_layer<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>units:<span
-style="mso-spacerun:
-yes">            
-</span>%<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>cell_methods:<span
-style="mso-spacerun: yes">      </span>time: mean<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>long_name:<span
-style="mso-spacerun: yes">        
-</span>Cloud Area Fraction<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>comment:<span
-style="mso-spacerun:
-yes">           </span>Report
-on model layers (not standard pressures).<span style="mso-spacerun: yes"> 
-</span>Include both large-scale and convective cloud.<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!
-Additional variable information:<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>dimensions:<span
-style="mso-spacerun: yes">       
-</span>longitude latitude alevel time<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>out_name:<span
-style="mso-spacerun:
-yes">          </span>cl<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>type:<span
-style="mso-spacerun:
-yes">             
-</span>real<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><span
-style="mso-spacerun: yes"> </span><o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!============<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>variable_entry:<span
-style="mso-spacerun: yes">    </span>ua<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!============<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>modeling_realm:<span
-style="mso-spacerun: yes">    </span>atmos<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!
-Variable attributes:<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>standard_name:<span
-style="mso-spacerun: yes">     </span>eastward_wind<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>units:<span
-style="mso-spacerun:
-yes">            
-</span>m s-1<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>cell_methods:<span
-style="mso-spacerun: yes">      </span>time: mean<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>long_name:<span
-style="mso-spacerun: yes">        
-</span>Eastward Wind<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!
-Additional variable information:<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>dimensions:<span
-style="mso-spacerun: yes">       
-</span>longitude latitude plevs time<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>out_name:<span
-style="mso-spacerun:
-yes">          </span>ua<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>type:<span
-style="mso-spacerun:
-yes">             
-</span>real<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!============<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>variable_entry:<span
-style="mso-spacerun: yes">    </span>co2<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!============<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>modeling_realm:<span
-style="mso-spacerun: yes">    </span>atmos<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!
-Variable attributes:<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>standard_name:<span
-style="mso-spacerun: yes">    
-</span>mole_fraction_of_carbon_dioxide_in_air<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>units:<span
-style="mso-spacerun:
-yes">            
-</span>1e-6<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>cell_methods:<span
-style="mso-spacerun: yes">      </span>time: mean<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>long_name:<span
-style="mso-spacerun: yes">        
-</span>Mole Fraction of CO2<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>comment:<span
-style="mso-spacerun:
-yes">           </span>For
-some simulations (e.g., prescribed concentration pi-control run), this will not
-vary from one year to the next, and so report instead the variable described in
-the next table entry.<span style="mso-spacerun: yes">  </span>If spatially
-uniform, omit this field, but report Total Atmospheric Mass of CO2 (see the
-table entry after the next one). <o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!
-Additional variable information:<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>dimensions:<span
-style="mso-spacerun: yes">     </span><span
-style="mso-spacerun: yes">   </span>longitude latitude plevs
-time<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>out_name:<span
-style="mso-spacerun:
-yes">          </span>co2<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>type:<span
-style="mso-spacerun:
-yes">             
-</span>real<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!============<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>variable_entry:<span
-style="mso-spacerun: yes">    </span>co2Clim<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!============<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>modeling_realm:<span
-style="mso-spacerun: yes">    </span>atmos<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!
-Variable attributes:<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>standard_name:<span
-style="mso-spacerun: yes">    
-</span>mole_fraction_of_carbon_dioxide_in_air<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>units:<span
-style="mso-spacerun:
-yes">            
-</span>1e-6<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>cell_methods:<span
-style="mso-spacerun: yes">      </span>time: mean
-within years time: mean over years<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>long_name:<span
-style="mso-spacerun: yes">        
-</span>Mole Fraction of CO2<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>comment:<span
-style="mso-spacerun:
-yes">           </span>Report
-only for simulations (e.g., prescribed concentration pi-control run), in which
-the CO2 does not vary from one year to the next. Report 12 monthly values,
-starting with January, even if the values don't vary seasonally.<span
-style="mso-spacerun: yes">  </span>When calling CMOR, identify this
-variable as co2Clim, not co2.<span style="mso-spacerun: yes">  
-</span>If<span style="mso-spacerun: yes">  </span>CO2 is spatially
-uniform, omit this field, but report Total Atmospheric Mass of CO2 (see the
-table entry after the next).<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!
-Additional variable information:<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>dimensions:<span
-style="mso-spacerun: yes">       
-</span>longitude latitude plevs time2<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>out_name:<span
-style="mso-spacerun:
-yes">          </span>co2<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>type:<span
-style="mso-spacerun:
-yes">             
-</span>real<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!============<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>variable_entry:<span
-style="mso-spacerun: yes">    </span>co2mass<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!============<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>modeling_realm:<span
-style="mso-spacerun: yes">    </span>atmos<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!
-Variable attributes:<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>units:<span
-style="mso-spacerun:
-yes">            
-</span>kg<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>cell_methods:<span
-style="mso-spacerun: yes">      </span>time: mean<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>long_name:<span
-style="mso-spacerun: yes">        
-</span>Total Atmospheric Mass of CO2<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>comment:<span
-style="mso-spacerun:
-yes">           </span>For
-some simulations (e.g., prescribed concentration pi-control run), this will not
-vary from one year to the next, and so report instead the variable described in
-the next table entry.<span style="mso-spacerun: yes">  </span>If CO2 is
-spatially nonuniform, omit this field, but report Mole Fraction of CO2 (see the
-table entry before the previous one). <o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!
-Additional variable information:<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>dimensions:<span
-style="mso-spacerun: yes">       
-</span>time<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>out_name:<span
-style="mso-spacerun:
-yes">          </span>co2mass<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>type:<span
-style="mso-spacerun:
-yes">             
-</span>real<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!============<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>variable_entry:<span
-style="mso-spacerun: yes">    </span>co2massClim<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!============<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>modeling_realm:<span
-style="mso-spacerun: yes">    </span>atmos<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!
-Variable attributes:<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>units:<span
-style="mso-spacerun:
-yes">            
-</span>kg<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>cell_methods:<span
-style="mso-spacerun: yes">      </span>time: mean
-within years time: mean over years<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>long_name:<span
-style="mso-spacerun: yes">        
-</span>Total Atmospheric Mass of CO2<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>comment:<span
-style="mso-spacerun:
-yes">           </span>Report
-only for simulations (e.g., prescribed concentration pi-control run), in which
-the CO2 does not vary from one year to the next. Report 12 monthly values,
-starting with January, even if the values don't vary seasonally.<span
-style="mso-spacerun: yes">  </span>When calling CMOR, identify this
-variable as co2massClim, not co2mass.<span style="mso-spacerun: yes"> 
-</span>If CO2 is spatially nonuniform, omit this field, but report Mole
-Fraction of CO2 (see the table entry before the previous one). <o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!
-Additional variable information:<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>dimensions:<span
-style="mso-spacerun: yes">       
-</span>time2<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>out_name:<span
-style="mso-spacerun:
-yes">          </span>co2mass<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>type:<span
-style="mso-spacerun:
-yes">             
-</span>real<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!----------------------------------<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'>!<o:p></o:p></span></p>
-
-<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span
-style='font-size:9.0pt;font-family:"Courier New";mso-bidi-font-family:"Courier New"'><o:p> </o:p></span></p>
-
-</div>
-
-<div style='mso-element:footnote-list'><![if !supportFootnotes]><br clear=all>
-
-<hr align=left size=1 width="33%">
-
-<![endif]>
-
-<div style='mso-element:footnote' id=ftn>
-
-<p class=MsoFootnoteText style='text-align:justify'><a style='mso-footnote-id:
-ftn' href="#_ftnref" name="_ftn1" title=""><span class=MsoFootnoteReference><span
-style='mso-special-character:footnote'><![if !supportFootnotes]>[1]<![endif]></span></span></a>
-CMOR is pronounced "C-more", which suggests that CMOR should enable a
-wide community of scientists to "see more" climate data produced by
-modeling centers around the world.<span style="mso-spacerun: yes"> 
-</span>CMOR also reminds us of Ecinae Corianus, the revered ancient Greek
-scholar, known to his friends as "Seymour".<span style="mso-spacerun:
-yes">  </span>Seymour spent much of his life translating into Greek nearly
-all the existing climate data, which had originally been recorded on largely
-inscrutable hieroglyphic and cuneiform tablets.<span style="mso-spacerun:
-yes">  </span>His resulting volumes, organized in a uniform fashion and in
-a language readable by the common scientists of the day, provided the basis for
-much subsequent scholarly research.<span style="mso-spacerun: yes"> 
-</span>Ecinae Corianus was later indirectly honored by early inhabitants of the
-British Isles who reversed the spelling of his name and used the resulting
-string of letters, grouped differently, to form new words referring to the
-major elements of climate.</p>
-
-</div>
-
-<div style='mso-element:footnote' id=ftn>
-
-<p class=MsoFootnoteText><a style='mso-footnote-id:ftn' href="#_ftnref"
-name="_ftn2" title=""><span class=MsoFootnoteReference><span style='mso-special-character:
-footnote'><![if !supportFootnotes]>[2]<![endif]></span></span></a> CMOR1 was
-written in Fortran 90 with access also provided through Python.</p>
-
-</div>
-
-<div style='mso-element:footnote' id=ftn>
-
-<p class=MsoFootnoteText><a style='mso-footnote-id:ftn' href="#_ftnref"
-name="_ftn3" title=""><span class=MsoFootnoteReference><span style='mso-special-character:
-footnote'><![if !supportFootnotes]>[3]<![endif]></span></span></a> See <a
-href="http://www.cgd.ucar.edu/cms/eaton/cf-metadata">http://www.cgd.ucar.edu/cms/eaton/cf-metadata</a>
-</p>
-
-</div>
-
-<div style='mso-element:footnote' id=ftn>
-
-<p class=MsoFootnoteText><a style='mso-footnote-id:ftn' href="#_ftnref"
-name="_ftn4" title=""><span class=MsoFootnoteReference><span style='mso-special-character:
-footnote'><![if !supportFootnotes]>[4]<![endif]></span></span></a> See <a
-href="http://my.unidata.ucar.edu/content/software/netcdf/">http://my.unidata.ucar.edu/content/software/netcdf/</a></p>
-
-</div>
-
-<div style='mso-element:footnote' id=ftn>
-
-<p class=MsoFootnoteText><a style='mso-footnote-id:ftn' href="#_ftnref"
-name="_ftn5" title=""><span class=MsoFootnoteReference><span style='mso-special-character:
-footnote'><![if !supportFootnotes]>[5]<![endif]></span></span></a>
-"MIP" is an acronym for "model intercomparison project".</p>
-
-</div>
-
-<div style='mso-element:footnote' id=ftn>
-
-<p class=MsoFootnoteText><a style='mso-footnote-id:ftn' href="#_ftnref"
-name="_ftn6" title=""><span class=MsoFootnoteReference><span style='mso-special-character:
-footnote'><![if !supportFootnotes]>[6]<![endif]></span></span></a> CMOR1 was
-linked to an earlier version of the netCDF library and udunits was optional.</p>
-
-</div>
-
-<div style='mso-element:footnote' id=ftn>
-
-<p class=MsoFootnoteText><a style='mso-footnote-id:ftn' href="#_ftnref"
-name="_ftn7" title=""><span class=MsoFootnoteReference><span style='mso-special-character:
-footnote'><![if !supportFootnotes]>[7]<![endif]></span></span></a> Cdtime is
-now built into CMOR. Therefore linking against cdms is no longer necessary.</p>
-
-</div>
-
-<div style='mso-element:footnote' id=ftn>
-
-<p class=MsoFootnoteText><a style='mso-footnote-id:ftn' href="#_ftnref"
-name="_ftn8" title=""><span class=MsoFootnoteReference><span style='color:#00B050'><span
-style='mso-special-character:footnote'><![if !supportFootnotes]>[8]<![endif]></span></span></span></a><span
-style='color:#00B050'> In the Fortran version only, to preserve compatibility
-with CMOR1, the character strings “replace”, “append”, and “preserve” may be
-passed instead of the integers CMOR_REPLACE, CMOR_APPEND, and CMOR_PRESERVE,
-respectively, but this option is deprecated.<o:p></o:p></span></p>
-
-</div>
-
-<div style='mso-element:footnote' id=ftn>
-
-<p class=MsoNormal style='text-align:justify;tab-stops:273.75pt'><a
-style='mso-footnote-id:ftn' href="#_ftnref" name="_ftn9" title=""><span
-class=MsoFootnoteReference><span style='font-size:10.0pt'><span
-style='mso-special-character:footnote'><![if !supportFootnotes]>[9]<![endif]></span></span></span></a><span
-style='font-size:10.0pt'> <span style='background:silver;mso-highlight:silver'>Note:
-For CMIP5 model_id and forcing are required. For backward compatibility with
-the original CMOR code, the model_id and forcing are “optionally” required by
-CMOR2, meaning they become mandatory only if they appear as
-“required_global_attributes” in the CMOR table. For this reason, a call to
-cmor_dataset without these would not return an error until a call is made to
-cmor_write, since it is table-dependent. <o:p></o:p></span></span></p>
-
-<p class=MsoFootnoteText><o:p> </o:p></p>
-
-</div>
-
-</div>
-
-</body>
-
-</html>
diff --git a/Doc/cmor_users_guide.pdf b/Doc/cmor_users_guide.pdf
deleted file mode 100644
index dda4257..0000000
Binary files a/Doc/cmor_users_guide.pdf and /dev/null differ
diff --git a/Doc/cmor_users_guide_files/filelist.xml b/Doc/cmor_users_guide_files/filelist.xml
deleted file mode 100644
index d375492..0000000
--- a/Doc/cmor_users_guide_files/filelist.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<xml xmlns:o="urn:schemas-microsoft-com:office:office">
- <o:MainFile HRef="::cmor_users_guide.htm"/>
- <o:File HRef="header.htm"/>
- <o:File HRef="filelist.xml"/>
-</xml>
\ No newline at end of file
diff --git a/Doc/cmor_users_guide_files/header.htm b/Doc/cmor_users_guide_files/header.htm
deleted file mode 100644
index 4d2ec7a..0000000
--- a/Doc/cmor_users_guide_files/header.htm
+++ /dev/null
@@ -1,122 +0,0 @@
-<html xmlns:v="urn:schemas-microsoft-com:vml"
-xmlns:o="urn:schemas-microsoft-com:office:office"
-xmlns:w="urn:schemas-microsoft-com:office:word"
-xmlns:m="http://schemas.microsoft.com/office/2004/12/omml"
-xmlns:css="http://macVmlSchemaUri" xmlns="http://www.w3.org/TR/REC-html40">
-
-<head>
-<meta name=Title content="Climate Model Output Rewriter (CMOR)">
-<meta name=Keywords content="">
-<meta http-equiv=Content-Type content="text/html; charset=utf-8">
-<meta name=ProgId content=Word.Document>
-<meta name=Generator content="Microsoft Word 2008">
-<meta name=Originator content="Microsoft Word 2008">
-<link id=Main-File rel=Main-File href="cmor_users_guide.htm">
-</head>
-
-<body lang=EN-US link=blue vlink=purple>
-
-<div style='mso-element:footnote-separator' id=fs>
-
-<p class=MsoNormal><span style='mso-special-character:footnote-separator'><![if !supportFootnotes]>
-
-<hr align=left size=1 width="33%">
-
-<![endif]></span></p>
-
-</div>
-
-<div style='mso-element:footnote-continuation-separator' id=fcs>
-
-<p class=MsoNormal><span style='mso-special-character:footnote-continuation-separator'><![if !supportFootnotes]>
-
-<hr align=left size=1>
-
-<![endif]></span></p>
-
-</div>
-
-<div style='mso-element:endnote-separator' id=es>
-
-<p class=MsoNormal><span style='mso-special-character:footnote-separator'><![if !supportFootnotes]>
-
-<hr align=left size=1 width="33%">
-
-<![endif]></span></p>
-
-</div>
-
-<div style='mso-element:endnote-continuation-separator' id=ecs>
-
-<p class=MsoNormal><span style='mso-special-character:footnote-continuation-separator'><![if !supportFootnotes]>
-
-<hr align=left size=1>
-
-<![endif]></span></p>
-
-</div>
-
-<div style='mso-element:header' id=h1>
-
-<p class=MsoHeader><o:p> </o:p></p>
-
-</div>
-
-<div style='mso-element:footer' id=ef1>
-
-<div style='mso-element:frame;mso-element-wrap:around;mso-element-anchor-vertical:
-paragraph;mso-element-anchor-horizontal:margin;mso-element-left:center;
-mso-element-top:.05pt;mso-height-rule:exactly'>
-
-<table cellspacing=0 cellpadding=0 hspace=0 vspace=0 align=center>
- <tr>
-  <td valign=top style='padding-top:0in;padding-right:0in;padding-bottom:0in;
-  padding-left:0in'>
-  <p class=MsoFooter style='mso-element:frame;mso-element-wrap:around;
-  mso-element-anchor-vertical:paragraph;mso-element-anchor-horizontal:margin;
-  mso-element-left:center;mso-element-top:.05pt;mso-height-rule:exactly'><!--[if supportFields]><span
-  class=MsoPageNumber><span style='mso-element:field-begin'></span>PAGE<span
-  style="mso-spacerun: yes">  </span></span><![endif]--><!--[if supportFields]><span
-  class=MsoPageNumber><span style='mso-element:field-end'></span></span><![endif]--><span
-  class=MsoPageNumber><o:p></o:p></span></p>
-  </td>
- </tr>
-</table>
-
-</div>
-
-<p class=MsoFooter><o:p> </o:p></p>
-
-</div>
-
-<div style='mso-element:footer' id=f1>
-
-<div style='mso-element:frame;mso-element-wrap:around;mso-element-anchor-vertical:
-paragraph;mso-element-anchor-horizontal:margin;mso-element-left:center;
-mso-element-top:.05pt;mso-height-rule:exactly'>
-
-<table cellspacing=0 cellpadding=0 hspace=0 vspace=0 align=center>
- <tr>
-  <td valign=top style='padding-top:0in;padding-right:0in;padding-bottom:0in;
-  padding-left:0in'>
-  <p class=MsoFooter style='mso-element:frame;mso-element-wrap:around;
-  mso-element-anchor-vertical:paragraph;mso-element-anchor-horizontal:margin;
-  mso-element-left:center;mso-element-top:.05pt;mso-height-rule:exactly'><!--[if supportFields]><span
-  class=MsoPageNumber><span style='mso-element:field-begin'></span>PAGE<span
-  style="mso-spacerun: yes">  </span><span style='mso-element:field-separator'></span></span><![endif]--><span
-  class=MsoPageNumber><span style='mso-no-proof:yes'>82</span></span><!--[if supportFields]><span
-  class=MsoPageNumber><span style='mso-element:field-end'></span></span><![endif]--><span
-  class=MsoPageNumber><o:p></o:p></span></p>
-  </td>
- </tr>
-</table>
-
-</div>
-
-<p class=MsoFooter><o:p> </o:p></p>
-
-</div>
-
-</body>
-
-</html>
diff --git a/Doc/standard_output.html b/Doc/standard_output.html
deleted file mode 100644
index d3c4c75..0000000
--- a/Doc/standard_output.html
+++ /dev/null
@@ -1,5561 +0,0 @@
-<html>
-
-<head>
-<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
-<meta name=Generator content="Microsoft Word 11 (filtered)">
-<title>IPCC Standard Output from Coupled Ocean-Atmosphere GCMs</title>
-
-<style>
-<!--
- /* Font Definitions */
- @font-face
-	{font-family:Tahoma;
-	panose-1:2 11 6 4 3 5 4 4 2 4;}
- /* Style Definitions */
- p.MsoNormal, li.MsoNormal, div.MsoNormal
-	{margin:0in;
-	margin-bottom:.0001pt;
-	font-size:12.0pt;
-	font-family:"Times New Roman";}
-h1
-	{margin-right:0in;
-	margin-left:0in;
-	font-size:24.0pt;
-	font-family:"Times New Roman";
-	font-weight:bold;}
-h2
-	{margin-right:0in;
-	margin-left:0in;
-	font-size:18.0pt;
-	font-family:"Times New Roman";
-	font-weight:bold;}
-h3
-	{margin-right:0in;
-	margin-left:0in;
-	font-size:13.5pt;
-	font-family:"Times New Roman";
-	font-weight:bold;}
-a:link, span.MsoHyperlink
-	{color:blue;
-	text-decoration:underline;}
-a:visited, span.MsoHyperlinkFollowed
-	{color:blue;
-	text-decoration:underline;}
-p
-	{margin-right:0in;
-	margin-left:0in;
-	font-size:12.0pt;
-	font-family:"Times New Roman";}
-p.MsoAcetate, li.MsoAcetate, div.MsoAcetate
-	{margin:0in;
-	margin-bottom:.0001pt;
-	font-size:8.0pt;
-	font-family:Tahoma;}
-ins
-	{text-decoration:none;}
-span.msoIns
-	{text-decoration:underline;}
-span.msoDel
-	{text-decoration:line-through;
-	color:red;}
- /* Page Definitions */
- @page Section1
-	{size:11.0in 8.5in;
-	margin:1.0in .8in 1.0in .8in;}
-div.Section1
-	{page:Section1;}
- /* List Definitions */
- ol
-	{margin-bottom:0in;}
-ul
-	{margin-bottom:0in;}
--->
-</style>
-
-</head>
-
-<body lang=EN-US link=blue vlink=blue>
-
-<div class=Section1>
-
-<h1 align=center style='text-align:center'>IPCC Standard Output from Coupled
-Ocean-Atmosphere GCMs</h1>
-
-<p class=MsoNormal align=center style='text-align:center'><b><span
-style='font-size:13.5pt'>WGCM Climate Simulation Panel<sup>1</sup> with the
-assistance of PCMDI<sup>2</sup></span></b></p>
-
-<p class=MsoNormal align=center style='text-align:center'><b>For further
-information contact: <a href="mailto:taylor13 at llnl.gov">taylor13 at llnl.gov</a></b></p>
-
-<p class=MsoNormal><sup>1</sup> Panel members include: Gerald Meehl (chair), Curt
-Covey, Mojib Latif, Bryant McAvaney, John Mitchell, and Ron Stouffer.</p>
-
-<p class=MsoNormal><sup>2</sup> Contributing PCMDI members include: Karl E.
-Taylor, Curt Covey, Krishna AchutaRao, Michael Fiorino, Peter J. Gleckler,
-Thomas J. Phillips, <span class=grame>and Kenneth</span> R. Sperber.</p>
-
-<p align=center style='text-align:center'><span style='font-size:13.5pt'>Click <a
-href="http://www-pcmdi.llnl.gov/ipcc/standard_output_updates.htm">here</a> for
-a summary of recent changes to this document.</span></p>
-
-<p align=center style='text-align:center'><span style='font-size:13.5pt'>Click <a
-href="http://www-pcmdi.llnl.gov/ipcc/standard_output.pdf">here</a> to obtain a
-pdf version of this document. </span></p>
-
-<p align=center style='text-align:center'><span style='font-size:13.5pt'> </span></p>
-
-<p align=center style='text-align:center'><span style='font-size:13.5pt'>16 August
-2007</span></p>
-
-<div class=MsoNormal align=center style='text-align:center'>
-
-<hr size=2 width="100%" align=center>
-
-</div>
-
-<h2><span style='font-size:14.0pt'>Contents:</span></h2>
-
-<h2 style='margin-top:0in;margin-right:0in;margin-bottom:0in;margin-left:.5in;
-margin-bottom:.0001pt;text-indent:-.25in;line-height:150%'><span
-style='font-size:12.0pt;line-height:150%;font-family:Symbol;font-weight:normal'>�</span><span
-style='font-size:7.0pt;line-height:150%;font-weight:normal'>       
-</span><span style='font-size:12.0pt;line-height:150%'><a
-href="#Introduction">Introduction and format
-requirements</a></span></h2>
-
-<h2 style='margin-top:0in;margin-right:0in;margin-bottom:0in;margin-left:.5in;
-margin-bottom:.0001pt;text-indent:-.25in;line-height:150%'><span
-style='font-size:12.0pt;line-height:150%;font-family:Symbol;font-weight:normal'>�</span><span
-style='font-size:7.0pt;line-height:150%;font-weight:normal'>       
-</span><span style='font-size:12.0pt;line-height:150%'><a
-href="#overview">Model output overview</a></span></h2>
-
-<h2 style='margin-top:0in;margin-right:0in;margin-bottom:0in;margin-left:.5in;
-margin-bottom:.0001pt;text-indent:-.25in;line-height:150%'><span
-style='font-size:12.0pt;line-height:150%;font-family:Symbol;font-weight:normal'>�</span><span
-style='font-size:7.0pt;line-height:150%;font-weight:normal'>       
-</span><span style='font-size:12.0pt;line-height:150%'><a
-href="#Highest_priority_output">Highest
-priority output fields</a></span></h2>
-
-<p style='margin-top:0in;margin-right:0in;margin-bottom:0in;margin-left:1.0in;
-margin-bottom:.0001pt;text-indent:-.25in'><a
-href="#Table_A1a">Table A1a</a>: Monthly-mean
-2-d atmosphere or land surface data (longitude, latitude, time:month)</p>
-
-<p style='margin-top:0in;margin-right:0in;margin-bottom:0in;margin-left:1.0in;
-margin-bottom:.0001pt;text-indent:-.25in'><a
-href="#Table_A1b">Table A1b</a>:
-Time-independent 2-d land surface data (longitude, latitude)</p>
-
-<p style='margin-top:0in;margin-right:0in;margin-bottom:0in;margin-left:1.0in;
-margin-bottom:.0001pt;text-indent:-.25in'><a
-href="#Table_A1c">Table A1c</a>: Monthly-mean
-3-d atmosphere data (longitude, latitude, pressure, time:month)</p>
-
-<p style='margin-top:0in;margin-right:0in;margin-bottom:0in;margin-left:1.0in;
-margin-bottom:.0001pt;text-indent:-.25in'><a
-href="#Table_O1a">Table O1a</a>: Monthly-mean
-1-d ocean data (latitude, region, time:month</p>
-
-<p style='margin-top:0in;margin-right:0in;margin-bottom:0in;margin-left:1.0in;
-margin-bottom:.0001pt;text-indent:-.25in'><a
-href="#Table_O1b">Table O1b</a>: Monthly-mean
-2-d ocean data (latitude, depth, region, time:month)</p>
-
-<p style='margin-top:0in;margin-right:0in;margin-bottom:0in;margin-left:1.0in;
-margin-bottom:.0001pt;text-indent:-.25in'><a
-href="#Table_O1c">Table O1c</a>: Monthly-mean
-0-d or 2-d ocean or sea ice data (longitude, latitude, time:month)</p>
-
-<p style='margin-top:0in;margin-right:0in;margin-bottom:0in;margin-left:1.0in;
-margin-bottom:.0001pt;text-indent:-.25in'><a
-href="#Table_O1d">Table O1d</a>:
-Time-independent 2-d ocean data (longitude, latitude)</p>
-
-<p style='margin-top:0in;margin-right:0in;margin-bottom:0in;margin-left:1.0in;
-margin-bottom:.0001pt;text-indent:-.25in'><a
-href="#Table_O1e">Table O1e</a>: Monthly-mean
-3-d ocean data (longitude, latitude, depth, time:month)</p>
-
-<p style='margin-top:0in;margin-right:0in;margin-bottom:0in;margin-left:1.0in;
-margin-bottom:.0001pt;text-indent:-.25in'><a
-href="#Table_A2a">Table A2a</a>: Daily-mean 2-d
-atmosphere data (longitude, latitude, time:day)</p>
-
-<p style='margin-top:0in;margin-right:0in;margin-bottom:0in;margin-left:1.0in;
-margin-bottom:.0001pt;text-indent:-.25in'><a
-href="#Table_A2b">Table A2b</a>: Daily-mean 3-d
-atmosphere data (longitude, latitude, pressure, time:day)</p>
-
-<p style='margin-top:0in;margin-right:0in;margin-bottom:0in;margin-left:1.0in;
-margin-bottom:.0001pt;text-indent:-.25in'><a
-href="#Table_A3">Table A3</a>: 3-bourly 2-d
-atmosphere data (longitude, latitude, time:3hour at 0, 3, 6, 9, 12, 15, 18, 21
-Z)</p>
-
-<p style='margin-top:0in;margin-right:0in;margin-bottom:0in;margin-left:1.0in;
-margin-bottom:.0001pt;text-indent:-.25in'><a
-href="#Table_A4">Table A4</a>: Extremes indices
-(longitude, latitude, time:year) from Frich et al. (their Table 1)</p>
-
-<p style='margin-top:0in;margin-right:0in;margin-bottom:0in;margin-left:1.0in;
-margin-bottom:.0001pt;text-indent:-.25in'> </p>
-
-<h2 style='margin-top:0in;margin-right:0in;margin-bottom:0in;margin-left:.5in;
-margin-bottom:.0001pt;text-indent:-.25in;line-height:150%'><span
-style='font-size:12.0pt;line-height:150%;font-family:Symbol;font-weight:normal'>�</span><span
-style='font-size:7.0pt;line-height:150%;font-weight:normal'>       
-</span><span style='font-size:12.0pt;line-height:150%'><a
-href="#Lower_priority_output">Lower
-priority output fields</a></span></h2>
-
-<p style='margin-top:0in;margin-right:0in;margin-bottom:0in;margin-left:1.0in;
-margin-bottom:.0001pt;text-indent:-.25in'><a
-href="#Table_A1d">Table A1d</a>: Monthly-mean
-ISCCP simulator data (longitude, latitude, pressure2, tau, time)</p>
-
-<p style='margin-top:0in;margin-right:0in;margin-bottom:0in;margin-left:1.0in;
-margin-bottom:.0001pt;text-indent:-.25in'><a
-href="#Table_A5">Table A5</a>: Monthly-mean 2-d
-radiative forcing data (longitude, latitude, time)</p>
-
-<p style='margin-top:0in;margin-right:0in;margin-bottom:0in;margin-left:1.0in;
-margin-bottom:.0001pt;text-indent:-.25in'><a
-href="#Table_A1e">Table A1e</a>: Monthly-mean
-2-d and 3-d sulfate aerosol fields</p>
-
-<p style='margin-top:0in;margin-right:0in;margin-bottom:0in;margin-left:1.0in;
-margin-bottom:.0001pt;text-indent:-.25in'><a
-href="#Table_O1f">Table O1f</a>: Monthly-mean
-1-d and 2-d ocean fields</p>
-
-<p style='margin-top:0in;margin-right:0in;margin-bottom:0in;margin-left:1.0in;
-margin-bottom:.0001pt;text-indent:-.25in'><a
-href="#Table_O1g">Table O1g</a>: Monthly-mean
-2-d sea ice fields (longitude, latitude, time:month)</p>
-
-<p style='margin-top:0in;margin-right:0in;margin-bottom:0in;margin-left:1.0in;
-margin-bottom:.0001pt;text-indent:-.25in'><a
-href="#Table_A1f">Table A1f</a>: Monthly-mean
-surface fields and prescribed land surface characteristics</p>
-
-<p style='margin-top:0in;margin-right:0in;margin-bottom:0in;margin-left:1.0in;
-margin-bottom:.0001pt;text-indent:-.25in'> </p>
-
-<h2 style='margin-top:0in;margin-right:0in;margin-bottom:0in;margin-left:.5in;
-margin-bottom:.0001pt;text-indent:-.25in;line-height:150%'><span
-style='font-size:12.0pt;line-height:150%;font-family:Symbol;font-weight:normal'>�</span><span
-style='font-size:7.0pt;line-height:150%;font-weight:normal'>       
-</span><span style='font-size:12.0pt;line-height:150%'><a
-href="#Coordinate_dimensions.">Coordinate
-dimensions</a></span></h2>
-
-<h2 style='margin-top:0in;margin-right:0in;margin-bottom:0in;margin-left:.5in;
-margin-bottom:.0001pt;text-indent:-.25in;line-height:150%'><span
-style='font-size:12.0pt;line-height:150%;font-family:Symbol;font-weight:normal'>�</span><span
-style='font-size:7.0pt;line-height:150%;font-weight:normal'>       
-</span><span style='font-size:12.0pt;line-height:150%'><a
-href="#Experiments">Experiments and time
-periods for which data should be submitted</a></span></h2>
-
-<p style='margin-top:0in;margin-right:0in;margin-bottom:0in;margin-left:.5in;
-margin-bottom:.0001pt;text-indent:-.25in'> </p>
-
-<h2><a name=Introduction>Introduction and format requirements</a></h2>
-
-<p>The following list of standard output for coupled GCMs is intended both to
-serve the immediate needs of the IPCC and to become a recommended "core
-set" of variables for CMIP. </p>
-
-<p>Modeling groups contributing output to the IPCC and CMIP database must
-ensure that it meets rather strict format and metadata requirements. 
-These requirements yield files produced in network Common Data Form (netCDF;
-see <a href="http://www.unidata.ucar.edu/packages/netcdf">http://www.unidata.ucar.edu/packages/netcdf)</a>,
-which has become the most popular form for exchanging ocean-atmosphere model
-output.  The files will be "self-describing" and the metadata
-contained in the files will conform with the NetCDF Climate and Forecast (CF)
-Metadata Conventions (see <a
-href="http://www.cgd.ucar.edu/cms/eaton/cf-metadata">http://www.cgd.ucar.edu/cms/eaton/cf-metadata)</a>. 
-The new CF conventions for netCDF data generalize and extend the Cooperative   Ocean / Atmosphere Research Data Service (COARDS) conventions developed in
-the 1990s. Note that the CF convention establishes standard names for climate
-and weather variables, which identify the physical quantity. These standard
-names are given in the tables below. Note that more than one field can be
-associated with the same standard name because different fields sampled in
-different ways (e.g., surface air temperature vs. upper air temperature) refer
-to the same physical quantity.  Nevertheless, one can uniquely identify
-each stored field by considering additional metadata stored in the file (e.g.,
-dimension information). Extended definitions of CF standard names, which
-basically answer the question "What do you mean precisely by this
-quantity?", may be found on the Web at <a
-href="http://www.cgd.ucar.edu/cms/eaton/cf-metadata/standard_name.html">http://www.cgd.ucar.edu/cms/eaton/cf-metadata/standard_name.html.</a></p>
-
-<p><b><i>The detailed requirements</i></b> for CMIP / IPCC contributions are
-contained in the document <a
-href="http://www-pcmdi.llnl.gov/ipcc/IPCC_output_requirements.htm">http://www-pcmdi.llnl.gov/ipcc/IPCC_output_requirements.htm.</a>
-This document should be read carefully before preparing contributions. Perhaps
-the easiest way to meet these requirements is to rewrite your model output
-through CMOR, a software library available from PCMDI and further described in
-the next paragraph. Put briefly, the requirements involve metadata, coordinate
-systems, and file organization. Units and sign conventions of the data must
-conform to the tables below. Latitude-longitude grids must be rectilinear,
-i.e., have a unique set of longitudes that applies to all latitudes. Data on
-non-rectilinear grids (typically occurring for ocean output) must be
-interpolated to rectilinear grids before transmission to the PCMDI. (In this
-case, the original "native grid" data, if deemed of sufficient value,
-may also be provided to the PCMDI.) Vertical coordinates must be depth for
-ocean variables and pressure for atmosphere variables (with the exception of
-cloudiness, which as noted below should be provided on model levels).
-Three-dimensional atmosphere variables must be interpolated to standard
-pressure levels given below. We also recommend -- but do not require -- that
-the ocean depth  levels match Levitus observations. Finally, we require
-that submitted files contain only one output variable per file, though they may
-have many time points per file. This file organization contrasts with the
-typical model output history files, which contain all variables for a single
-time step. </p>
-
-<p>To facilitate adherence to these standards, the PCMDI has written (in FORTRAN
-90) a standard output code called CMOR (pronounced "see more"; see <a
-href="http://www-pcmdi.llnl.gov/software-portal/cmor">http://www-pcmdi.llnl.gov/software-portal/cmor</a>).
-This code structures the data uniformly and writes netCDF files in full compliance
-with IPCC requirements. Use of CMOR is being encouraged (and in some cases
-required) by various ongoing model intercomparison projects.� The CMOR
-documentation in pdf format is available at <a
-href="http://www-pcmdi.llnl.gov/software/cmor/cmor_users_guide.pdf">http://www-pcmdi.llnl.gov/software/cmor/cmor_users_guide.pdf</a>,
-and the source code is available at� <a
-href="http://www-pcmdi.llnl.gov/software-portal/cmor/download">http://www-pcmdi.llnl.gov/software-portal/cmor/download</a>.
-For further information, contact <a href="mailto:taylor13 at llnl.gov">taylor13 at llnl.gov.</a></p>
-
-<p>The notes that appear in the following tables are meant to provide precise
-definitions of the requested fields.  Sometimes it may be impossible to
-satisfy the requests; in these cases, any deviations from the specifications
-below should be described in the "history" and/or "comment"
-attributes associated with the variable</p>
-
-<h2><a name=overview>Model output overview</a></h2>
-
-<p>The model output fields listed below are identified as either being
-"highest priority" (tables A1a-A1c, A2-A4, and O1a-O1e) or
-"lower priority" (tables A1d-A1f, A5, and O1f-O1g).  The fields
-appearing in the "lower priority" tables will in some cases be
-essential for carrying out analyses of high interest (e.g., the radiative
-forcing fields are needed to help determine why models have different responses
-to anthropogenic influences); placement in the "lower priority" table
-may reflect one or more of the following factors: 1) perceived to be difficult
-to calculate (or lack of agreement as to calculation method), 2) nominated
-late, after the "highest priority" tables had been officially
-released, or 3) generally perceived to be of somewhat less interest than other
-fields. </p>
-
-<p>Some of the variables in the tables below were required for the original
-1997 version of <a href="http://www-pcmdi.llnl.gov/projects/cmip/announ.php">CMIP2
-</a>or have been requested for contributions to the CMIP pilot project
-"20th Century Climate in Coupled Models" (<a
-href="http://www-pcmdi.llnl.gov/projects/cmip/ann_20c3m.php">20C3M</a>). Many
-of the additional fields were requested by AMIP, the atmosphere-only
-counterpart of CMIP in which ocean surface and sea ice boundary conditions are
-prescribed to match observations over the late 20th century (see <a
-href="http://www-pcmdi.llnl.gov/projects/amip/OUTPUT/AMIP2/outlist.php">AMIP2
-standard output). </a> Suggestions for additions or changes to these
-tables are welcome and will be considered for future model intercomparison and
-IPCC exercises.</p>
-
-<p>In most cases, variables that appear in the same table will all be
-associated with a single climate component (i.e., atmosphere, ocean, land, or
-sea ice) and will all be a function of the same spatial dimensions.  Also
-the temporal sampling (3-hourly, daily, monthly, or time-independent) and any
-spatial or temporal averaging will in most cases be the same within each table.</p>
-
-<h2><a name="Highest_priority_output">Highest priority output fields</a></h2>
-
-<h3><span style='color:navy'>Monthly-mean and time-independent data</span></h3>
-
-<table class=MsoNormalTable border=1 cellspacing=0 cellpadding=0
- style='border-collapse:collapse;border:none'>
- <tr style='page-break-inside:avoid;height:44.25pt'>
-  <td colspan=5 style='border:none;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:44.25pt'>
-  <p><a name="Table_A1a"><b><i>Table A1a: </i>Monthly-mean 2-d atmosphere or
-  land surface data (longitude, latitude, time:month).</b></a></p>
-  </td>
- </tr>
- <tr style='page-break-inside:avoid;height:44.25pt'>
-  <td style='border:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;
-  height:44.25pt'>
-  <p class=MsoNormal align=center style='text-align:center'><b> </b></p>
-  </td>
-  <td style='border:inset #111111 1.0pt;border-left:none;padding:1.5pt 1.5pt 1.5pt 1.5pt;
-  height:44.25pt'>
-  <p class=MsoNormal align=center style='text-align:center'><b>CF standard_name
-  </b></p>
-  </td>
-  <td style='border:inset #111111 1.0pt;border-left:none;padding:1.5pt 1.5pt 1.5pt 1.5pt;
-  height:44.25pt'>
-  <p class=MsoNormal align=center style='text-align:center'><b>output variable
-  name </b></p>
-  </td>
-  <td style='border:inset #111111 1.0pt;border-left:none;padding:1.5pt 1.5pt 1.5pt 1.5pt;
-  height:44.25pt'>
-  <p class=MsoNormal align=center style='text-align:center'><b>units </b></p>
-  </td>
-  <td style='border:inset #111111 1.0pt;border-left:none;padding:1.5pt 1.5pt 1.5pt 1.5pt;
-  height:44.25pt'>
-  <p class=MsoNormal align=center style='text-align:center'><b>notes </b></p>
-  </td>
- </tr>
- <tr style='page-break-inside:avoid;height:15.75pt'>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt;
-  height:15.75pt'>
-  <p class=MsoNormal align=center style='text-align:center'>1 </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:15.75pt'>
-  <p class=MsoNormal align=center style='text-align:center'>air_pressure_at_sea_level
-  </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:15.75pt'>
-  <p class=MsoNormal align=center style='text-align:center'>psl </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:15.75pt'>
-  <p class=MsoNormal align=center style='text-align:center'>Pa </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:15.75pt'>
-  <p class=MsoNormal> </p>
-  </td>
- </tr>
- <tr style='page-break-inside:avoid;height:16.5pt'>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt;
-  height:16.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>2 </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:16.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>precipitation_flux </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:16.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>pr </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:16.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>kg m<sup>-2</sup> s<sup>-1</sup>
-  </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:16.5pt'>
-  <p class=MsoNormal>includes both liquid and solid phases.</p>
-  </td>
- </tr>
- <tr style='page-break-inside:avoid;height:58.5pt'>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt;
-  height:58.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>3 </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:58.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>air_temperature</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:58.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>tas </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:58.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>K </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:58.5pt'>
-  <p class=MsoNormal>near-surface (usually, 2 meter) air temperature; the CMOR
-  singleton dimension default value of 2 m can be overridden, if absolutely
-  necessary, by redefining axis "height1".</p>
-  </td>
- </tr>
- <tr style='page-break-inside:avoid;height:129.75pt'>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt;
-  height:129.75pt'>
-  <p class=MsoNormal align=center style='text-align:center'>4 </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:129.75pt'>
-  <p class=MsoNormal align=center style='text-align:center'>moisture_content_of_soil_layer</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:129.75pt'>
-  <p class=MsoNormal align=center style='text-align:center'>mrsos </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:129.75pt'>
-  <p class=MsoNormal align=center style='text-align:center'>kg m<sup>-2</sup> </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:129.75pt'>
-  <p class=MsoNormal>water in all phases in the upper 0.1 meters of soil, and
-  averaged over the land portion of the grid cell (i.e., compute by dividing
-  the total mass of water contained in the soil layer of the grid cell by the
-  land area in the grid cell); report as "missing" or 0.0 where the
-  land fraction is 0;  the CMOR singleton dimension default value of 0.1 m
-  can be overridden, if absolutely necessary, by redefining axis
-  "depth1".</p>
-  </td>
- </tr>
- <tr style='page-break-inside:avoid;height:87.0pt'>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt;
-  height:87.0pt'>
-  <p class=MsoNormal align=center style='text-align:center'>5 </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:87.0pt'>
-  <p class=MsoNormal align=center style='text-align:center'>soil_moisture_content</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:87.0pt'>
-  <p class=MsoNormal align=center style='text-align:center'>mrso </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:87.0pt'>
-  <p class=MsoNormal align=center style='text-align:center'>kg m<sup>-2</sup> </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:87.0pt'>
-  <p class=MsoNormal>water in all phases summed over all soil layers, and
-  averaged over the land portion of the grid cell (i.e., compute by dividing the
-  total mass of water contained in the soil layer of the grid cell by the land
-  area in the grid cell); report as "missing" or 0.0 where the land
-  fraction is 0.</p>
-  </td>
- </tr>
- <tr style='page-break-inside:avoid;height:15.75pt'>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt;
-  height:15.75pt'>
-  <p class=MsoNormal align=center style='text-align:center'>6 </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:15.75pt'>
-  <p class=MsoNormal align=center style='text-align:center'>surface_downward_eastward_stress
-  </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:15.75pt'>
-  <p class=MsoNormal align=center style='text-align:center'>tauu </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:15.75pt'>
-  <p class=MsoNormal align=center style='text-align:center'>Pa </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:15.75pt'>
-  <p class=MsoNormal> </p>
-  </td>
- </tr>
- <tr style='page-break-inside:avoid;height:15.75pt'>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt;
-  height:15.75pt'>
-  <p class=MsoNormal align=center style='text-align:center'>7 </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:15.75pt'>
-  <p class=MsoNormal align=center style='text-align:center'>surface_downward_northward_stress
-  </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:15.75pt'>
-  <p class=MsoNormal align=center style='text-align:center'>tauv </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:15.75pt'>
-  <p class=MsoNormal align=center style='text-align:center'>Pa </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:15.75pt'>
-  <p class=MsoNormal> </p>
-  </td>
- </tr>
- <tr style='page-break-inside:avoid;height:115.5pt'>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt;
-  height:115.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>8 </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:115.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>surface_snow_thickness
-  </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:115.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>snd </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:115.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>m </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:115.5pt'>
-  <p class=MsoNormal>this thickness when multiplied by the average area of the
-  grid cell covered by snow yields the time-mean snow volume.  Thus, for
-  time means, compute as the weighted sum of thickness (averaged over the
-  snow-covered portion of the grid cell) divided by the sum of the weights,
-  with the weights equal to the area covered by snow.  report as 0.0 in
-  snow-free regions.</p>
-  </td>
- </tr>
- <tr style='page-break-inside:avoid;height:16.5pt'>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt;
-  height:16.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>9 </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:16.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>surface_upward_latent_heat_flux
-  </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:16.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>hfls </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:16.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>W m<sup>-2</sup> </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:16.5pt'>
-  <p class=MsoNormal> </p>
-  </td>
- </tr>
- <tr style='page-break-inside:avoid;height:16.5pt'>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt;
-  height:16.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>10 </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:16.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>surface_upward_sensible_heat_flux
-  </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:16.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>hfss </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:16.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>W m<sup>-2</sup> </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:16.5pt'>
-  <p class=MsoNormal> </p>
-  </td>
- </tr>
- <tr style='page-break-inside:avoid;height:16.5pt'>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt;
-  height:16.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>11 </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:16.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>surface_downwelling_longwave_flux_in_air</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:16.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>rlds </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:16.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>W m<sup>-2</sup> </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:16.5pt'>
-  <p class=MsoNormal> </p>
-  </td>
- </tr>
- <tr style='page-break-inside:avoid;height:16.5pt'>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt;
-  height:16.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>12 </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:16.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>surface_upwelling_longwave_flux_in_air</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:16.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>rlus </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:16.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>W m<sup>-2</sup> </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:16.5pt'>
-  <p class=MsoNormal> </p>
-  </td>
- </tr>
- <tr style='page-break-inside:avoid;height:16.5pt'>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt;
-  height:16.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>13 </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:16.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>surface_downwelling_shortwave_flux_in_air</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:16.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>rsds </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:16.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>W m<sup>-2</sup> </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:16.5pt'>
-  <p class=MsoNormal> </p>
-  </td>
- </tr>
- <tr style='page-break-inside:avoid;height:16.5pt'>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt;
-  height:16.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>14 </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:16.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>surface_upwelling_shortwave_flux_in_air</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:16.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>rsus </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:16.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>W m<sup>-2</sup> </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:16.5pt'>
-  <p class=MsoNormal> </p>
-  </td>
- </tr>
- <tr style='page-break-inside:avoid;height:15.75pt'>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt;
-  height:15.75pt'>
-  <p class=MsoNormal align=center style='text-align:center'>15 </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:15.75pt'>
-  <p class=MsoNormal align=center style='text-align:center'>surface_temperature
-  </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:15.75pt'>
-  <p class=MsoNormal align=center style='text-align:center'>ts </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:15.75pt'>
-  <p class=MsoNormal align=center style='text-align:center'>K </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:15.75pt'>
-  <p class=MsoNormal>"skin" temperature (i.e., SST for open ocean)</p>
-  </td>
- </tr>
- <tr style='page-break-inside:avoid;height:15.75pt'>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt;
-  height:15.75pt'>
-  <p class=MsoNormal align=center style='text-align:center'>16 </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:15.75pt'>
-  <p class=MsoNormal align=center style='text-align:center'>surface_air_pressure
-  </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:15.75pt'>
-  <p class=MsoNormal align=center style='text-align:center'>ps </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:15.75pt'>
-  <p class=MsoNormal align=center style='text-align:center'>Pa </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:15.75pt'>
-  <p class=MsoNormal><i>not </i>mean sea-level pressure</p>
-  </td>
- </tr>
- <tr style='page-break-inside:avoid;height:16.5pt'>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt;
-  height:16.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>17 </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:16.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>snowfall_flux </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:16.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>prsn </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:16.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>kg m<sup>-2</sup> s<sup>-1</sup>
-  </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:16.5pt'>
-  <p class=MsoNormal> </p>
-  </td>
- </tr>
- <tr style='page-break-inside:avoid;height:16.5pt'>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt;
-  height:16.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>18 </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:16.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>convective_precipitation_flux
-  </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:16.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>prc </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:16.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>kg m<sup>-2</sup> s<sup>-1</sup>
-  </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:16.5pt'>
-  <p class=MsoNormal> </p>
-  </td>
- </tr>
- <tr style='page-break-inside:avoid;height:30.0pt'>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt;
-  height:30.0pt'>
-  <p class=MsoNormal align=center style='text-align:center'>19 </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:30.0pt'>
-  <p class=MsoNormal align=center style='text-align:center'>atmosphere_water_vapor_content
-  </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:30.0pt'>
-  <p class=MsoNormal align=center style='text-align:center'>prw </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:30.0pt'>
-  <p class=MsoNormal align=center style='text-align:center'>kg m<sup>-2</sup> </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:30.0pt'>
-  <p class=MsoNormal>vertically integrated through the atmospheric column</p>
-  </td>
- </tr>
- <tr style='page-break-inside:avoid;height:87.0pt'>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt;
-  height:87.0pt'>
-  <p class=MsoNormal align=center style='text-align:center'>20 </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:87.0pt'>
-  <p class=MsoNormal align=center style='text-align:center'>soil_frozen_water_content</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:87.0pt'>
-  <p class=MsoNormal align=center style='text-align:center'>mrfso </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:87.0pt'>
-  <p class=MsoNormal align=center style='text-align:center'>kg m<sup>-2</sup> </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:87.0pt'>
-  <p class=MsoNormal>summed over all soil layers, and averaged over the land
-  portion of the grid cell (i.e., compute by dividing the total mass of frozen
-  water contained in the soil layer of the grid cell by the land area in the
-  grid cell); report as "missing" or 0.0 where the land fraction is
-  0.</p>
-  </td>
- </tr>
- <tr style='page-break-inside:avoid;height:58.5pt'>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt;
-  height:58.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>21 </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:58.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>surface_runoff_flux</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:58.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>mrros </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:58.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>kg m<sup>-2</sup> s<sup>-1</sup>
-  </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:58.5pt'>
-  <p class=MsoNormal>compute as the total surface runoff leaving the land
-  portion of the grid cell divided by the land area in the grid cell; report as
-  "missing" or 0.0 where the land fraction is 0.</p>
-  </td>
- </tr>
- <tr style='page-break-inside:avoid;height:58.5pt'>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt;
-  height:58.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>22 </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:58.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>runoff_flux</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:58.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>mrro </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:58.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>kg m<sup>-2</sup> s<sup>-1</sup>
-  </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:58.5pt'>
-  <p class=MsoNormal>compute as the total runoff (including
-  "drainage" through the base of the soil model) leaving the land
-  portion of the grid cell divided by the land area in the grid cell; report as
-  "missing" or 0.0 where the land fraction is 0.</p>
-  </td>
- </tr>
- <tr style='page-break-inside:avoid;height:72.75pt'>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt;
-  height:72.75pt'>
-  <p class=MsoNormal align=center style='text-align:center'>23 </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:72.75pt'>
-  <p class=MsoNormal align=center style='text-align:center'>surface_snow_amount_where_land</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:72.75pt'>
-  <p class=MsoNormal align=center style='text-align:center'>snw </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:72.75pt'>
-  <p class=MsoNormal align=center style='text-align:center'>kg m<sup>-2</sup> </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:72.75pt'>
-  <p class=MsoNormal>compute as the mass of surface snow on the land portion of
-  the grid cell divided by the land area in the grid cell; report as
-  "missing" or 0.0 where the land fraction is 0; exclude snow on
-  vegetation canopy or on sea ice.</p>
-  </td>
- </tr>
- <tr style='page-break-inside:avoid;height:30.0pt'>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt;
-  height:30.0pt'>
-  <p class=MsoNormal align=center style='text-align:center'>24 </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:30.0pt'>
-  <p class=MsoNormal align=center style='text-align:center'>surface_snow_area_fraction_where_land</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:30.0pt'>
-  <p class=MsoNormal align=center style='text-align:center'>snc </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:30.0pt'>
-  <p class=MsoNormal align=center style='text-align:center'>% </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:30.0pt'>
-  <p class=MsoNormal>fraction of grid cell covered by snow that lies on land;
-  exclude snow that lies on sea ice.</p>
-  </td>
- </tr>
- <tr style='page-break-inside:avoid;height:72.75pt'>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt;
-  height:72.75pt'>
-  <p class=MsoNormal align=center style='text-align:center'>25 </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:72.75pt'>
-  <p class=MsoNormal align=center style='text-align:center'>surface_snow_melt_flux_where_land</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:72.75pt'>
-  <p class=MsoNormal align=center style='text-align:center'>snm </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:72.75pt'>
-  <p class=MsoNormal align=center style='text-align:center'>kg m<sup>-2</sup> s<sup>-1</sup>
-  </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:72.75pt'>
-  <p class=MsoNormal>compute as the total surface melt water on the land
-  portion of the grid cell divided by the land area in the grid cell; report as
-  0.0 for snow-free land regions; report as 0.0 or "missing" where
-  the land fraction is 0.</p>
-  </td>
- </tr>
- <tr style='page-break-inside:avoid;height:58.5pt'>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt;
-  height:58.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>26 </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:58.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>eastward_wind</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:58.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>uas </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:58.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>m s<sup>-1</sup> </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:58.5pt'>
-  <p class=MsoNormal>near-surface (usually, 10 meters) eastward component of
-  wind; the CMOR singleton dimension default value of 10 m can be overridden,
-  if absolutely necessary, by redefining axis "height2". </p>
-  </td>
- </tr>
- <tr style='page-break-inside:avoid;height:58.5pt'>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt;
-  height:58.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>27 </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:58.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>northward_wind</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:58.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>vas </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:58.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>m s<sup>-1</sup> </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:58.5pt'>
-  <p class=MsoNormal>near-surface (usually, 10 meters) northward component of
-  wind; the CMOR singleton dimension default value of 10 m can be overridden,
-  if absolutely necessary, by redefining axis "height2". </p>
-  </td>
- </tr>
- <tr style='page-break-inside:avoid;height:58.5pt'>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt;
-  height:58.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>28 </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:58.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>specific_humidity</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:58.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>huss </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:58.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>1 (i.e., dimensionless
-  fraction)</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:58.5pt'>
-  <p class=MsoNormal>near-surface (usually, 2meters) specific humidity; the
-  CMOR singleton dimension default value of 2 m can be overridden, if
-  absolutely necessary, by redefining axis "height1". </p>
-  </td>
- </tr>
- <tr style='page-break-inside:avoid;height:16.5pt'>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt;
-  height:16.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>29 </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:16.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>toa_incoming_shortwave_flux
-  </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:16.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>rsdt </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:16.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>W m<sup>-2</sup> </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:16.5pt'>
-  <p class=MsoNormal>incident shortwave at the top of the atmosphere</p>
-  </td>
- </tr>
- <tr style='page-break-inside:avoid;height:16.5pt'>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt;
-  height:16.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>30 </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:16.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>toa_outgoing_shortwave_flux
-  </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:16.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>rsut </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:16.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>W m<sup>-2</sup> </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:16.5pt'>
-  <p class=MsoNormal>at the top of the atmosphere</p>
-  </td>
- </tr>
- <tr style='page-break-inside:avoid;height:30.0pt'>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt;
-  height:30.0pt'>
-  <p class=MsoNormal align=center style='text-align:center'>31 </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:30.0pt'>
-  <p class=MsoNormal align=center style='text-align:center'>toa_outgoing_longwave_flux
-  </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:30.0pt'>
-  <p class=MsoNormal align=center style='text-align:center'>rlut </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:30.0pt'>
-  <p class=MsoNormal align=center style='text-align:center'>W m<sup>-2</sup> </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:30.0pt'>
-  <p class=MsoNormal>at the top of the atmosphere (to be compared with
-  satellite measurements)</p>
-  </td>
- </tr>
- <tr style='page-break-inside:avoid;height:30.0pt'>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt;
-  height:30.0pt'>
-  <p class=MsoNormal align=center style='text-align:center'>32 </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:30.0pt'>
-  <p class=MsoNormal align=center style='text-align:center'>net_downward_radiative_flux_at_top_of_
-  atmosphere_model </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:30.0pt'>
-  <p class=MsoNormal align=center style='text-align:center'>rtmt </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:30.0pt'>
-  <p class=MsoNormal align=center style='text-align:center'>W m<sup>-2</sup> </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:30.0pt'>
-  <p class=MsoNormal>i.e., at the top of that portion of the atmosphere where
-  dynamics are explicitly treated by the model.</p>
-  </td>
- </tr>
- <tr style='page-break-inside:avoid;height:58.5pt'>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt;
-  height:58.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>33 </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:58.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>net_downward_shortwave_flux_in_air</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:58.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>rsntp </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:58.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>W m<sup>-2</sup> </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:58.5pt'>
-  <p class=MsoNormal>at 200 hPa only; the CMOR singleton dimension default
-  value of 200 hPa can be overridden, if absolutely necessary, by redefining
-  axis "pressure1".</p>
-  </td>
- </tr>
- <tr style='page-break-inside:avoid;height:12.0pt'>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt;
-  height:12.0pt'>
-  <p class=MsoNormal align=center style='text-align:center'>34 </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:12.0pt'>
-  <p class=MsoNormal align=center style='text-align:center'>net_upward_longwave_flux_in_air</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:12.0pt'>
-  <p class=MsoNormal align=center style='text-align:center'>rlntp </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:12.0pt'>
-  <p class=MsoNormal align=center style='text-align:center'>W m<sup>-2</sup> </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:12.0pt'>
-  <p class=MsoNormal>at 200 hPa only; the CMOR singleton dimension default
-  value of 200 hPa can be overridden, if absolutely necessary, by redefining
-  axis "pressure1".</p>
-  </td>
- </tr>
- <tr style='page-break-inside:avoid;height:30.0pt'>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt;
-  height:30.0pt'>
-  <p class=MsoNormal align=center style='text-align:center'>35 </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:30.0pt'>
-  <p class=MsoNormal align=center style='text-align:center'>net_downward_shortwave_flux_in_air_
-  assuming_clear_sky</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:30.0pt'>
-  <p class=MsoNormal align=center style='text-align:center'>rsntpcs </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:30.0pt'>
-  <p class=MsoNormal align=center style='text-align:center'>W m<sup>-2</sup> </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:30.0pt'>
-  <p class=MsoNormal>at 200 hPa only; method "2" is recommended for
-  calculating clear-sky fluxes; the CMOR singleton dimension default value of
-  200 hPa can be overridden, if absolutely necessary, by redefining axis
-  "pressure1".</p>
-  </td>
- </tr>
- <tr style='page-break-inside:avoid;height:30.0pt'>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt;
-  height:30.0pt'>
-  <p class=MsoNormal align=center style='text-align:center'>36 </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:30.0pt'>
-  <p class=MsoNormal align=center style='text-align:center'>net_upward_longwave_flux_in_air_
-  assuming_clear_sky</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:30.0pt'>
-  <p class=MsoNormal align=center style='text-align:center'>rlntpcs </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:30.0pt'>
-  <p class=MsoNormal align=center style='text-align:center'>W m<sup>-2</sup> </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:30.0pt'>
-  <p class=MsoNormal>at 200 hPa only; method "2" is recommended for
-  calculating clear-sky fluxes; the CMOR singleton dimension default value of
-  200 hPa can be overridden, if absolutely necessary, by redefining axis
-  "pressure1".</p>
-  </td>
- </tr>
- <tr style='page-break-inside:avoid;height:30.0pt'>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt;
-  height:30.0pt'>
-  <p class=MsoNormal align=center style='text-align:center'>37 </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:30.0pt'>
-  <p class=MsoNormal align=center style='text-align:center'>surface_downwelling_shortwave_flux_in_
-  air_assuming_clear_sky </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:30.0pt'>
-  <p class=MsoNormal align=center style='text-align:center'>rsdscs </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:30.0pt'>
-  <p class=MsoNormal align=center style='text-align:center'>W m<sup>-2</sup> </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:30.0pt'>
-  <p class=MsoNormal>method "2" is recommended for calculating
-  clear-sky fluxes</p>
-  </td>
- </tr>
- <tr style='page-break-inside:avoid;height:30.0pt'>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt;
-  height:30.0pt'>
-  <p class=MsoNormal align=center style='text-align:center'>38 </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:30.0pt'>
-  <p class=MsoNormal align=center style='text-align:center'>surface_upwelling_shortwave_flux_in_
-  air_assuming_clear_sky </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:30.0pt'>
-  <p class=MsoNormal align=center style='text-align:center'>rsuscs </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:30.0pt'>
-  <p class=MsoNormal align=center style='text-align:center'>W m<sup>-2</sup> </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:30.0pt'>
-  <p class=MsoNormal>method "2" is recommended for calculating
-  clear-sky fluxes</p>
-  </td>
- </tr>
- <tr style='page-break-inside:avoid;height:30.0pt'>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt;
-  height:30.0pt'>
-  <p class=MsoNormal align=center style='text-align:center'>39 </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:30.0pt'>
-  <p class=MsoNormal align=center style='text-align:center'>surface_downwelling_longwave_flux_in_
-  air_assuming_clear_sky </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:30.0pt'>
-  <p class=MsoNormal align=center style='text-align:center'>rldscs </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:30.0pt'>
-  <p class=MsoNormal align=center style='text-align:center'>W m<sup>-2</sup> </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:30.0pt'>
-  <p class=MsoNormal>method "2" is recommended for calculating
-  clear-sky fluxes</p>
-  </td>
- </tr>
- <tr style='page-break-inside:avoid;height:30.0pt'>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt;
-  height:30.0pt'>
-  <p class=MsoNormal align=center style='text-align:center'>40 </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:30.0pt'>
-  <p class=MsoNormal align=center style='text-align:center'>toa_outgoing_longwave_flux_assuming_
-  clear_sky </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:30.0pt'>
-  <p class=MsoNormal align=center style='text-align:center'>rlutcs </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:30.0pt'>
-  <p class=MsoNormal align=center style='text-align:center'>W m<sup>-2</sup> </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:30.0pt'>
-  <p class=MsoNormal>method "2" is recommended for calculating
-  clear-sky fluxes</p>
-  </td>
- </tr>
- <tr style='page-break-inside:avoid;height:30.0pt'>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt;
-  height:30.0pt'>
-  <p class=MsoNormal align=center style='text-align:center'>41 </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:30.0pt'>
-  <p class=MsoNormal align=center style='text-align:center'>toa_outgoing_shortwave_flux_assuming_
-  clear_sky </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:30.0pt'>
-  <p class=MsoNormal align=center style='text-align:center'>rsutcs </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:30.0pt'>
-  <p class=MsoNormal align=center style='text-align:center'>W m<sup>-2</sup> </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:30.0pt'>
-  <p class=MsoNormal>method "2" is recommended for calculating
-  clear-sky fluxes</p>
-  </td>
- </tr>
- <tr style='page-break-inside:avoid;height:30.0pt'>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt;
-  height:30.0pt'>
-  <p class=MsoNormal align=center style='text-align:center'>42 </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:30.0pt'>
-  <p class=MsoNormal align=center style='text-align:center'>cloud_area_fraction
-  </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:30.0pt'>
-  <p class=MsoNormal align=center style='text-align:center'>clt </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:30.0pt'>
-  <p class=MsoNormal align=center style='text-align:center'>% </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:30.0pt'>
-  <p class=MsoNormal>for the whole atmospheric column, as seen from the surface
-  or the top of the atmosphere. Include both large-scale and convective cloud.</p>
-  </td>
- </tr>
- <tr style='page-break-inside:avoid;height:30.0pt'>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt;
-  height:30.0pt'>
-  <p class=MsoNormal align=center style='text-align:center'>43 </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:30.0pt'>
-  <p class=MsoNormal align=center style='text-align:center'>atmosphere_cloud_condensed_water_content
-  </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:30.0pt'>
-  <p class=MsoNormal align=center style='text-align:center'>clwvi </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:30.0pt'>
-  <p class=MsoNormal align=center style='text-align:center'>kg m<sup>-2</sup> </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:30.0pt'>
-  <p class=MsoNormal>include both liquid and ice phases, consider all the mass
-  of condensed water in the column and divide by its area (in the
-  longitude-latitude plane) </p>
-  </td>
- </tr>
- <tr style='page-break-inside:avoid;height:30.0pt'>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt;
-  height:30.0pt'>
-  <p class=MsoNormal align=center style='text-align:center'>44 </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:30.0pt'>
-  <p class=MsoNormal align=center style='text-align:center'>atmosphere_cloud_ice_content
-  </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:30.0pt'>
-  <p class=MsoNormal align=center style='text-align:center'>clivi </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:30.0pt'>
-  <p class=MsoNormal align=center style='text-align:center'>kg m<sup>-2</sup> </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:30.0pt'>
-  <p class=MsoNormal>consider all the mass of ice-phase water in the column and
-  divide by its area (in the longitude-latitude plane)</p>
-  </td>
- </tr>
-</table>
-
-<p> </p>
-
-<table class=MsoNormalTable border=1 cellspacing=0 cellpadding=0
- style='border-collapse:collapse;border:none'>
- <tr>
-  <td colspan=5 style='border:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p><a name="Table_A1b"><b><i>Table A1b: </i>Time-independent 2-d land surface
-  data (longitude, latitude).</b></a></p>
-  </td>
- </tr>
- <tr>
-  <td style='border:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'><b> </b></p>
-  </td>
-  <td style='border:inset #111111 1.0pt;border-left:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'><b>CF standard_name
-  </b></p>
-  </td>
-  <td style='border:inset #111111 1.0pt;border-left:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'><b>output variable
-  name </b></p>
-  </td>
-  <td width=50 style='width:37.5pt;border:inset #111111 1.0pt;border-left:none;
-  padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'><b>units </b></p>
-  </td>
-  <td style='border:inset #111111 1.0pt;border-left:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'><b>notes </b></p>
-  </td>
- </tr>
- <tr>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal>1 </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>surface_altitude </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>orog </p>
-  </td>
-  <td width=50 style='width:37.5pt;border-top:none;border-left:none;border-bottom:
-  inset #111111 1.0pt;border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>m </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal>height above the geoid; as defined here, "the
-  geoid" is a surface of constant geopotential that, if the ocean were at
-  rest, would coincide with mean sea level. Under this definition, the geoid
-  changes as the mean volume of the ocean changes (e.g., due to glacial melt,
-  or global warming of the ocean).  Report here the height above the
-  present-day geoid.  Over ocean, report as 0.0</p>
-  </td>
- </tr>
- <tr>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal>2 </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>land_area_fraction </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>sftlf </p>
-  </td>
-  <td width=50 style='width:37.5pt;border-top:none;border-left:none;border-bottom:
-  inset #111111 1.0pt;border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>% </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal> </p>
-  </td>
- </tr>
- <tr>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal>3 </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>land_ice_area_fraction</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>sftgif</p>
-  </td>
-  <td width=50 style='width:37.5pt;border-top:none;border-left:none;border-bottom:
-  inset #111111 1.0pt;border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>% </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal>fraction of grid cell occupied by "permanent"
-  ice (i.e., glaciers).</p>
-  </td>
- </tr>
- <tr>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal>4 </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>soil_moisture_content_at_
-  field_capacity </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>mrsofc </p>
-  </td>
-  <td width=50 style='width:37.5pt;border-top:none;border-left:none;border-bottom:
-  inset #111111 1.0pt;border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>kg m<sup>-2</sup> </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal>divide the total water holding capacity of all the soil in
-  the grid cell by the land area in the grid cell;  report as
-  "missing" or 0.0 outside land areas.</p>
-  </td>
- </tr>
-</table>
-
-<p> </p>
-
-<span style='font-size:12.0pt;font-family:"Times New Roman"'><br clear=all
-style='page-break-before:always'>
-</span>
-
-<p> </p>
-
-<table class=MsoNormalTable border=1 cellspacing=0 cellpadding=0
- style='border-collapse:collapse;border:none'>
- <tr>
-  <td colspan=5 style='border:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p><a name="Table_A1c"><b><i>Table A1c: </i>Monthly-mean 3-d atmosphere data
-  (longitude, latitude, pressure, time:month).</b> Except for cloud area
-  fraction, this data must be provided on pressure levels, including at least
-  the following standard levels:1000, 925, 850, 700, 600, 500, 400, 300, 250,
-  200, 150, 100, 70, 50, 30, 20, 10 hPa. </a></p>
-  </td>
- </tr>
- <tr>
-  <td style='border:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'><b> </b></p>
-  </td>
-  <td style='border:inset #111111 1.0pt;border-left:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'><b>CF standard_name
-  </b></p>
-  </td>
-  <td style='border:inset #111111 1.0pt;border-left:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'><b>output variable
-  name </b></p>
-  </td>
-  <td style='border:inset #111111 1.0pt;border-left:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'><b>units </b></p>
-  </td>
-  <td style='border:inset #111111 1.0pt;border-left:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'><b> notes </b></p>
-  </td>
- </tr>
- <tr>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal>1 </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>cloud_area_fraction_in_atmosphere_layer
-  </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>cl </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>% </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal>unlike all other fields in this table, the cloud fraction
-  should be reported for each model layer (not interpolated to standard
-  pressures).  Include both large-scale and convective cloud.</p>
-  </td>
- </tr>
- <tr>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal>2 </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>air_temperature </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>ta </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>K </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal> </p>
-  </td>
- </tr>
- <tr>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal>3 </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>eastward_wind </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>ua </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>m s<sup>-1</sup> </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal> </p>
-  </td>
- </tr>
- <tr>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal>4 </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>northward_wind </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>va </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>m s<sup>-1</sup> </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal> </p>
-  </td>
- </tr>
- <tr>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal>5 </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>specific_humidity </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>hus </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>1 (i.e.,
-  dimensionless fraction)</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal> </p>
-  </td>
- </tr>
- <tr>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal>6 </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>lagrangian_tendency_of_air_pressure
-  </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>wap</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>Pa s<sup>-1</sup> </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal>commonly referred to as "omega", this represents
-  the vertical component of velocity in pressure coordinates (positive down)</p>
-  </td>
- </tr>
- <tr>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal>7 </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>geopotential_height
-  </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>zg </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>m </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal> </p>
-  </td>
- </tr>
- <tr>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal>8 </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>relative_humidity </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>hur </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>% </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal> </p>
-  </td>
- </tr>
- <tr>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal>9 </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>mole_fraction_of_o3_in_air
-  </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>tro3 </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>1e-9 (i.e., ppbv)</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal>if climatologically specified, report only for 1 year.</p>
-  </td>
- </tr>
-</table>
-
-<p> </p>
-
-<span style='font-size:12.0pt;font-family:"Times New Roman"'><br clear=all
-style='page-break-before:always'>
-</span>
-
-<p> </p>
-
-<table class=MsoNormalTable border=1 cellspacing=0 cellpadding=0
- style='border-collapse:collapse;border:none'>
- <tr>
-  <td colspan=5 style='border:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p><a name="Table_O1a"><b><i>Table O1a: </i>Monthly-mean 1-d ocean data
-  (latitude, region, time:month). </b>Zonal mean over all oceans and also zonal
-  mean for individual ocean basins (</a>Atlantic, Indian, and Pacific basins:
-  divide roughly at 20E and 120E). </p>
-  </td>
- </tr>
- <tr>
-  <td style='border:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'><b> </b></p>
-  </td>
-  <td style='border:inset #111111 1.0pt;border-left:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'><b>CF standard_name
-  </b></p>
-  </td>
-  <td style='border:inset #111111 1.0pt;border-left:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'><b>output variable
-  name </b></p>
-  </td>
-  <td style='border:inset #111111 1.0pt;border-left:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'><b>units </b></p>
-  </td>
-  <td style='border:inset #111111 1.0pt;border-left:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'><b> notes </b></p>
-  </td>
- </tr>
- <tr>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal>1 </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>northward_ocean_heat_transport
-  </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>hfogo </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>W </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal>transport by all ocean-related processes, both explicitly
-  simulated and parameterized (e.g., any contribution from the 'bolus velocity'
-  in the Gent-McWilliams parameterization), including sea water and sea ice
-  contributions.</p>
-  </td>
- </tr>
-</table>
-
-<p> </p>
-
-<table class=MsoNormalTable border=1 cellspacing=0 cellpadding=0 width=898
- style='width:673.5pt;border-collapse:collapse;border:none'>
- <tr>
-  <td colspan=5 style='border:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p><a name="Table_O1b"><b><i>Table O1b: </i>Monthly-mean 2-d ocean data
-  (latitude, depth, region, time:month). </b>Zonal mean over all oceans and
-  also zonal mean for individual ocean basins (</a>Atlantic, Indian, and
-  Pacific basins: divide roughly at 20E and 120E). Data must be provided on
-  depth levels.  We recommend that these match the 33 standard levels of
-  Levitus observations: 0, 10, 20, 30, 50, 75, 100, 125, 150, 200, 250, 300,
-  400, 500, 600, 700, 800, 900, 1000, 1100, 1200, 1300, 1400, 1500, 1750, 2000,
-  2500, 3000, 3500, 4000, 4500, 5000, and 5500 meters.</p>
-  </td>
- </tr>
- <tr>
-  <td width=10 style='width:.1in;border:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'><b> </b></p>
-  </td>
-  <td width=276 style='width:207.0pt;border:inset #111111 1.0pt;border-left:
-  none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'><b>CF standard_name
-  </b></p>
-  </td>
-  <td width=78 style='width:58.5pt;border:inset #111111 1.0pt;border-left:none;
-  padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'><b>output variable
-  name </b></p>
-  </td>
-  <td width=44 style='width:33.0pt;border:inset #111111 1.0pt;border-left:none;
-  padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'><b>units </b></p>
-  </td>
-  <td width=466 style='width:349.5pt;border:inset #111111 1.0pt;border-left:
-  none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'><b>notes</b></p>
-  </td>
- </tr>
- <tr>
-  <td width=10 style='width:.1in;border:inset #111111 1.0pt;border-top:none;
-  padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal>1 </p>
-  </td>
-  <td width=276 style='width:207.0pt;border-top:none;border-left:none;
-  border-bottom:inset #111111 1.0pt;border-right:inset #111111 1.0pt;
-  padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>ocean_meridional_overturning_streamfunction
-  </p>
-  </td>
-  <td width=78 style='width:58.5pt;border-top:none;border-left:none;border-bottom:
-  inset #111111 1.0pt;border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>stfmmc</p>
-  </td>
-  <td width=44 style='width:33.0pt;border-top:none;border-left:none;border-bottom:
-  inset #111111 1.0pt;border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>m<sup>3</sup> s<sup>-1</sup>
-  </p>
-  </td>
-  <td width=466 style='width:349.5pt;border-top:none;border-left:none;
-  border-bottom:inset #111111 1.0pt;border-right:inset #111111 1.0pt;
-  padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal>Note that the units do not include mass.  This should
-  include only the explicitly calculated, purely advective component and should
-  exclude contributions of the 'bolus velocity' that arise, for example, in the
-  Gent-McWilliams parameterization.</p>
-  </td>
- </tr>
-</table>
-
-<p> </p>
-
-<span style='font-size:12.0pt;font-family:"Times New Roman"'><br clear=all
-style='page-break-before:always'>
-</span>
-
-<p> </p>
-
-<table class=MsoNormalTable border=1 cellspacing=0 cellpadding=0 width="100%"
- style='width:100.0%;border-collapse:collapse;border:none'>
- <tr style='page-break-inside:avoid'>
-  <td colspan=5 style='border:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p><a name="Table_O1c"><b><i>Table O1c:</i> Monthly-mean 0-d or 2-d ocean or
-  sea ice data (longitude, latitude, time:month).</b></a></p>
-  </td>
- </tr>
- <tr style='page-break-inside:avoid'>
-  <td style='border:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'><b> </b></p>
-  </td>
-  <td style='border:inset #111111 1.0pt;border-left:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'><b>CF standard_name
-  </b></p>
-  </td>
-  <td style='border:inset #111111 1.0pt;border-left:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'><b>output variable
-  name </b></p>
-  </td>
-  <td width=65 style='width:48.75pt;border:inset #111111 1.0pt;border-left:
-  none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'><b>units </b></p>
-  </td>
-  <td style='border:inset #111111 1.0pt;border-left:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'><b>notes </b></p>
-  </td>
- </tr>
- <tr style='page-break-inside:avoid'>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>1 </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>sea_surface_height_above_geoid</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>zos</p>
-  </td>
-  <td width=65 style='width:48.75pt;border-top:none;border-left:none;
-  border-bottom:inset #111111 1.0pt;border-right:inset #111111 1.0pt;
-  padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>m </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal>this height, when multiplied by the area fraction of the
-  grid cell covered by ocean (or sea ice), yields the volume of sea water above
-  the geoid.  As defined here, "the geoid" is a surface of
-  constant geopotential that, if the ocean were at rest, would coincide with
-  mean sea level. Under this definition, the geoid changes as the mean volume
-  of the ocean changes (e.g., due to glacial melt, or global warming of the
-  ocean).  Report zos as "missing" over grid cells that are
-  entirely land.  There are a couple of acceptable options for reporting
-  this field: 1) if the geoid is defined to relate to the instantaneous volume
-  of the ocean, the global mean of zos will always be zero, and 2) if the geoid
-  is defined relative to a time-mean sea level over some period, then the
-  global mean of zos will be time-dependent.  In either case a global mean
-  time-series of sea level should also be reported as described in the next two
-  table entries immediately below.  In general IPCC analysis of global
-  mean sea level changes will not rely on zos.  It is recommended that in
-  reporting zos, the atmospheric "inverted barometer" effect be
-  omitted, since it can be easily calculated from the reported mean sea level
-  pressure field.  The "comment" attribute associated with zos
-  should indicate whether or not the  atmospheric "inverted
-  barometer"  influence on zos has been included. Additionally, it should
-  be noted in the "comment" attribute whether zos is obtained
-  directly, as in a free-surface model, or has been derived, for example, from
-  geostrophy using diagnosed velocities at some level or from geostrophy
-  relative to an assumed level of quiescence. </p>
-  </td>
- </tr>
- <tr style='page-break-inside:avoid'>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p align=center style='text-align:center'>2</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>global_average_thermosteric_
-  sea_level_change</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>zostoga</p>
-  </td>
-  <td width=65 style='width:48.75pt;border-top:none;border-left:none;
-  border-bottom:inset #111111 1.0pt;border-right:inset #111111 1.0pt;
-  padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>m</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal>a function only of time, zostoga is the contribution to
-  change in global mean sea level, relative to some fixed distance from the
-  center of the earth, due only to thermal structure changes. The fixed
-  reference height should be invariant across all IPCC simulations by a
-  model.   In a rigid-lid model this quantity can be calculated by
-  using a reference 3D salinity field to compute density as the 3D temperature
-  field evolves.  If only the total sea level change (due to thermosteric
-  changes, water flux input from land/glaciers/atmosphere, and salinity
-  influences on density) is available, omit zostoga, and report only zosga (see
-  next table entry below).  Please note in the "comment"
-  attribute any assumptions or methodological details related to calculation of
-  this time-series.</p>
-  </td>
- </tr>
- <tr style='page-break-inside:avoid'>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p align=center style='text-align:center'>3</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>global_average_sea_level_change</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>zosga</p>
-  </td>
-  <td width=65 style='width:48.75pt;border-top:none;border-left:none;
-  border-bottom:inset #111111 1.0pt;border-right:inset #111111 1.0pt;
-  padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>m</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal>a function only of time, zosga is the total change in
-  global mean sea level, relative to some fixed distance from the center of the
-  earth, due to thermosteric changes, water flux input from
-  land/glaciers/atmosphere, and salinity influences on density.  If the
-  model cannot be trusted to provide estimates of the water flux input from
-  land/glaciers, there is no need to report zosga (since salinity influences
-  are of secondary importance and the thermosteric contribution is reported by zostoga). 
-  Note that to good approximation the difference between zostoga and zosga
-  yields the global mean change in sea level due to water budget imbalances
-  (presumably, resulting largely from changes in glacial mass).  Please
-  note in the "comment" attribute any assumptions or methodological
-  details related to calculation of this time-series.</p>
-  </td>
- </tr>
- <tr style='page-break-inside:avoid'>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>4</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>sea_surface_temperature
-  </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>tos</p>
-  </td>
-  <td width=65 style='width:48.75pt;border-top:none;border-left:none;
-  border-bottom:inset #111111 1.0pt;border-right:inset #111111 1.0pt;
-  padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>K </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal>this may differ from "surface temperature" in
-  regions of sea ice.</p>
-  </td>
- </tr>
- <tr style='page-break-inside:avoid'>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>5 </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>sea_ice_area_fraction</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>sic </p>
-  </td>
-  <td width=65 style='width:48.75pt;border-top:none;border-left:none;
-  border-bottom:inset #111111 1.0pt;border-right:inset #111111 1.0pt;
-  padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>% </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal>fraction of grid cell covered by sea ice.</p>
-  </td>
- </tr>
- <tr style='page-break-inside:avoid'>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>6</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>sea_ice_thickness</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>sit </p>
-  </td>
-  <td width=65 style='width:48.75pt;border-top:none;border-left:none;
-  border-bottom:inset #111111 1.0pt;border-right:inset #111111 1.0pt;
-  padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>m </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal>this thickness, when multiplied by the average area of the
-  grid cell covered by sea ice, yields the time-mean sea ice volume. 
-  Thus, for time means, compute as the weighted sum of thickness (averaged over
-  the sea ice-covered portion of the grid cell) divided by the sum of the
-  weights, with the weights equal to the area covered by sea-ice; Report as 0.0
-  in regions free of sea ice.</p>
-  </td>
- </tr>
- <tr style='page-break-inside:avoid'>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>7</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>eastward_sea_ice_velocity
-  </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>usi</p>
-  </td>
-  <td width=65 style='width:48.75pt;border-top:none;border-left:none;
-  border-bottom:inset #111111 1.0pt;border-right:inset #111111 1.0pt;
-  padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>m s<sup>-1</sup> </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal>report as "missing" in regions free of sea ice.</p>
-  </td>
- </tr>
- <tr style='page-break-inside:avoid'>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>8</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>northward_sea_ice_velocity
-  </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>vsi</p>
-  </td>
-  <td width=65 style='width:48.75pt;border-top:none;border-left:none;
-  border-bottom:inset #111111 1.0pt;border-right:inset #111111 1.0pt;
-  padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>m s<sup>-1</sup> </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal>report as "missing" in regions free of sea ice.</p>
-  </td>
- </tr>
- <tr style='page-break-inside:avoid'>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>9</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>water_flux_into_ocean</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>wfo</p>
-  </td>
-  <td width=65 style='width:48.75pt;border-top:none;border-left:none;
-  border-bottom:inset #111111 1.0pt;border-right:inset #111111 1.0pt;
-  padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>kg m<sup>-2</sup> s<sup>-1</sup>
-  </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal>precipitation minus evaporation, plus runoff, melting of
-  sea ice and any water flux correction calculated considering only the
-  ocean-portion of each grid cell</p>
-  </td>
- </tr>
- <tr style='page-break-inside:avoid'>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>10</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>ocean_barotropic_streamfunction
-  </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>stfbarot </p>
-  </td>
-  <td width=65 style='width:48.75pt;border-top:none;border-left:none;
-  border-bottom:inset #111111 1.0pt;border-right:inset #111111 1.0pt;
-  padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>m<sup>3</sup> s<sup>-1</sup></p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal>units do not include mass.</p>
-  </td>
- </tr>
- <tr style='page-break-inside:avoid'>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>11</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>heat_flux_correction_where_ocean</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>hfcorr </p>
-  </td>
-  <td width=65 style='width:48.75pt;border-top:none;border-left:none;
-  border-bottom:inset #111111 1.0pt;border-right:inset #111111 1.0pt;
-  padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>W m<sup>-2</sup> </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal>if applicable, should be positive down (i.e., added to
-  ocean); the total flux correction entering the ocean portion of the grid cell
-  should be divided by the ocean area in the grid cell (in this context, ocean
-  includes sea ice); report only for a single year and a single run, assuming this
-  field is the same from year to year and for all runs.</p>
-  </td>
- </tr>
- <tr style='page-break-inside:avoid'>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>12</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>water_flux_correction_where_ocean</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>wfcorr </p>
-  </td>
-  <td width=65 style='width:48.75pt;border-top:none;border-left:none;
-  border-bottom:inset #111111 1.0pt;border-right:inset #111111 1.0pt;
-  padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>kg m<sup>-2 </sup>s<sup>-1</sup>
-  </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal>if applicable, should be positive down (i.e., added to
-  ocean); the total flux correction entering the ocean portion of the grid cell
-  should be divided by the ocean area in the grid cell (in this context, ocean
-  includes sea ice); report only for a single year and a single run, assuming
-  this field is the same from year to year and for all runs.</p>
-  </td>
- </tr>
- <tr style='page-break-inside:avoid'>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>13 </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>eastward_momentum_flux_
-  correction_where_ocean</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>tauucorr </p>
-  </td>
-  <td width=65 style='width:48.75pt;border-top:none;border-left:none;
-  border-bottom:inset #111111 1.0pt;border-right:inset #111111 1.0pt;
-  padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>Pa </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal>if applicable, should be positive down (i.e., added to
-  ocean); the total flux correction entering the ocean portion of the grid cell
-  should be divided by the ocean area in the grid cell (in this context, ocean
-  includes sea ice); report only for a single year and a single run, assuming
-  this field is the same from year to year and for all runs.</p>
-  </td>
- </tr>
- <tr style='page-break-inside:avoid'>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>14 </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>northward_momentum_flux_
-  correction_where_ocean</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>tauvcorr </p>
-  </td>
-  <td width=65 style='width:48.75pt;border-top:none;border-left:none;
-  border-bottom:inset #111111 1.0pt;border-right:inset #111111 1.0pt;
-  padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>Pa </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal>if applicable, should be positive down (i.e., added to
-  ocean); the total flux correction entering the ocean portion of the grid cell
-  should be divided by the ocean area in the grid cell (in this context, ocean
-  includes sea ice); report only for a single year and a single run, assuming
-  this field is the same from year to year and for all runs.</p>
-  </td>
- </tr>
-</table>
-
-<p> </p>
-
-<span style='font-size:12.0pt;font-family:"Times New Roman"'><br clear=all
-style='page-break-before:always'>
-</span>
-
-<p> </p>
-
-<table class=MsoNormalTable border=1 cellspacing=0 cellpadding=0 width=906
- style='width:679.5pt;border-collapse:collapse;border:none'>
- <tr>
-  <td width=906 colspan=5 style='width:679.5pt;border:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p><a name="Table_O1d"><b><i>Table O1d: </i>Time-independent 2-d ocean data
-  (longitude, latitude).</b></a></p>
-  </td>
- </tr>
- <tr>
-  <td width=12 style='width:9.05pt;border:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'><b> </b></p>
-  </td>
-  <td width=252 style='width:188.85pt;border:inset #111111 1.0pt;border-left:
-  none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'><b>CF standard_name
-  </b></p>
-  </td>
-  <td width=73 style='width:54.9pt;border:inset #111111 1.0pt;border-left:none;
-  padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'><b>output variable
-  name </b></p>
-  </td>
-  <td width=48 style='width:36.1pt;border:inset #111111 1.0pt;border-left:none;
-  padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'><b>units </b></p>
-  </td>
-  <td width=521 style='width:390.6pt;border:inset #111111 1.0pt;border-left:
-  none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'><b>notes </b></p>
-  </td>
- </tr>
- <tr>
-  <td width=12 style='width:9.05pt;border:inset #111111 1.0pt;border-top:none;
-  padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal>1 </p>
-  </td>
-  <td width=252 style='width:188.85pt;border-top:none;border-left:none;
-  border-bottom:inset #111111 1.0pt;border-right:inset #111111 1.0pt;
-  padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>sea_floor_depth_below_geoid</p>
-  </td>
-  <td width=73 style='width:54.9pt;border-top:none;border-left:none;border-bottom:
-  inset #111111 1.0pt;border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>zobt </p>
-  </td>
-  <td width=48 style='width:36.1pt;border-top:none;border-left:none;border-bottom:
-  inset #111111 1.0pt;border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>m </p>
-  </td>
-  <td width=521 style='width:390.6pt;border-top:none;border-left:none;
-  border-bottom:inset #111111 1.0pt;border-right:inset #111111 1.0pt;
-  padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal>this height, when multiplied by the area fraction of the
-  grid cell covered by ocean (or sea ice), yields the volume of water below the
-  geoid. As defined here, "the geoid" is a surface of constant
-  geopotential that, if the ocean were at rest, would coincide with mean sea
-  level. Under this definition, the geoid changes as the mean volume of the
-  ocean changes (e.g., due to glacial melt, or global warming of the
-  ocean).  Report here the sea floor depth for present day.</p>
-  </td>
- </tr>
- <tr>
-  <td width=12 style='width:9.05pt;border:inset #111111 1.0pt;border-top:none;
-  padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal>2</p>
-  </td>
-  <td width=252 style='width:188.85pt;border-top:none;border-left:none;
-  border-bottom:inset #111111 1.0pt;border-right:inset #111111 1.0pt;
-  padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p align=center style='margin:0in;margin-bottom:.0001pt;text-align:center'>prescribed_heat_flux_into_slab_ocean</p>
-  </td>
-  <td width=73 style='width:54.9pt;border-top:none;border-left:none;border-bottom:
-  inset #111111 1.0pt;border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>qflux</p>
-  </td>
-  <td width=48 style='width:36.1pt;border-top:none;border-left:none;border-bottom:
-  inset #111111 1.0pt;border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>W m<sup>-2</sup> </p>
-  </td>
-  <td width=521 style='width:390.6pt;border-top:none;border-left:none;
-  border-bottom:inset #111111 1.0pt;border-right:inset #111111 1.0pt;
-  padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p style='margin:0in;margin-bottom:.0001pt'>the so-called q-flux added to
-  slab ocean cell, which is meant to account for convergence (or divergence) of
-  heat by the ocean circulation.  It should be computed as the total qflux
-  energy added to the ocean-portion of the grid cell divided by the ocean area
-  in the grid cell; report as "missing" or 0.0 where the ocean
-  fraction is 0.  Report only for slab ocean experiments.</p>
-  </td>
- </tr>
-</table>
-
-<p> </p>
-
-<table class=MsoNormalTable border=1 cellspacing=0 cellpadding=0
- style='border-collapse:collapse;border:none'>
- <tr>
-  <td colspan=5 style='border:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p><a name="Table_O1e"><b><i>Table O1e: </i>Monthly-mean 3-d ocean data
-  (longitude, latitude, depth, time:month).</b> Data must be provided on depth
-  levels.  We recommend that these match the 33 standard levels of Levitus
-  observations: 0, 10, 20, 30, 50, 75, 100, 125, 150, 200, 250, 300, 400, 500,
-  600, 700, 800, 900, 1000, 1100, 1200, 1300, 1400, 1500, 1750, 2000, 2500,
-  3000, 3500, 4000, 4500, 5000, and 5500 meters.  For the 3-d ocean
-  fields, it is likely that storage space constraints will limit relatively
-  quick access to output from only a single member of each ensemble, so in
-  prioritizing your processing, consider initially sending PCMDI  the 3-d
-  ocean output from only 1 member of the ensemble.  </a></p>
-  </td>
- </tr>
- <tr>
-  <td style='border:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'><b> </b></p>
-  </td>
-  <td style='border:inset #111111 1.0pt;border-left:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'><b>CF standard_name
-  </b></p>
-  </td>
-  <td style='border:inset #111111 1.0pt;border-left:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'><b>output variable
-  name </b></p>
-  </td>
-  <td style='border:inset #111111 1.0pt;border-left:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'><b>units </b></p>
-  </td>
-  <td style='border:inset #111111 1.0pt;border-left:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'><b>notes </b></p>
-  </td>
- </tr>
- <tr>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal>1 </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>sea_water_salinity </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>so </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>1e-3 (i.e., ppt) </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal>The unit of salinity is PSU (expressed here as parts per
-  thousand).</p>
-  </td>
- </tr>
- <tr>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal>2 </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>sea_water_potential_temperature
-  </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>thetao</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>K </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal>assume reference height is sea level </p>
-  </td>
- </tr>
- <tr>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal>3 </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>sea_water_potential_density
-  </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>rhopoto</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>kg m<sup>-3</sup> </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal>assume reference height is sea level </p>
-  </td>
- </tr>
- <tr>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal>4 </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>eastward_sea_water_velocity
-  </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>uo </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>m s<sup>-1</sup> </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal> </p>
-  </td>
- </tr>
- <tr>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal>5 </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>northward_sea_water_velocity
-  </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>vo </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>m s<sup>-1</sup> </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal> </p>
-  </td>
- </tr>
- <tr>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal>6 </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>upward_sea_water_velocity
-  </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>wo </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>m s<sup>-1</sup> </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal> </p>
-  </td>
- </tr>
-</table>
-
-<p> </p>
-
-<p> </p>
-
-<h3><span style='color:navy'>Daily-mean data</span></h3>
-
-<table class=MsoNormalTable border=1 cellspacing=0 cellpadding=0
- style='border-collapse:collapse;border:none'>
- <tr>
-  <td colspan=5 style='border:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p><a name="Table_A2a"><b><i>Table A2a: </i></b>Daily-mean 2-d atmosphere
-  data (longitude, latitude, time:day).  It is recommended that the daily
-  means be computed for intervals beginning at 0 Z and ending the following </a>midnight at 0Z.  Except for  the temperature (mean, min., and max.) and
-  precipitation fields, the following daily-mean data should be provided for
-  just one ensemble member per scenario.  Also report data only for the
-  years specified in the table at the end of this document. </p>
-  </td>
- </tr>
- <tr>
-  <td style='border:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'><b> </b></p>
-  </td>
-  <td style='border:inset #111111 1.0pt;border-left:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'><b>CF standard_name
-  </b></p>
-  </td>
-  <td style='border:inset #111111 1.0pt;border-left:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'><b>output variable
-  name </b></p>
-  </td>
-  <td width=65 style='width:48.75pt;border:inset #111111 1.0pt;border-left:
-  none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'><b>units </b></p>
-  </td>
-  <td style='border:inset #111111 1.0pt;border-left:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'><b>notes </b></p>
-  </td>
- </tr>
- <tr>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>1 </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>air_pressure_at_sea_level
-  </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>psl </p>
-  </td>
-  <td width=65 style='width:48.75pt;border-top:none;border-left:none;
-  border-bottom:inset #111111 1.0pt;border-right:inset #111111 1.0pt;
-  padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>Pa </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal> </p>
-  </td>
- </tr>
- <tr>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>2 </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>precipitation_flux </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>pr </p>
-  </td>
-  <td width=65 style='width:48.75pt;border-top:none;border-left:none;
-  border-bottom:inset #111111 1.0pt;border-right:inset #111111 1.0pt;
-  padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>kg m<sup>-2</sup> s<sup>-1</sup>
-  </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal>includes both liquid and solid phases.</p>
-  </td>
- </tr>
- <tr>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>3 </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>air_temperature</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>tasmin </p>
-  </td>
-  <td width=65 style='width:48.75pt;border-top:none;border-left:none;
-  border-bottom:inset #111111 1.0pt;border-right:inset #111111 1.0pt;
-  padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>K </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal>daily-minimum near-surface (usually, 2 meter) air
-  temperature.  Consistent with the CF-conventions, the cell_methods
-  attribute should specify "time: minimum" (automatically done by
-  CMOR);  The CMOR singleton dimension default value of 2 m can be
-  overridden, if absolutely necessary, by redefining axis "height1".</p>
-  </td>
- </tr>
- <tr>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>4 </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>air_temperature</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>tasmax </p>
-  </td>
-  <td width=65 style='width:48.75pt;border-top:none;border-left:none;
-  border-bottom:inset #111111 1.0pt;border-right:inset #111111 1.0pt;
-  padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>K </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal>daily-maximum near-surface (usually, 2 meter) air
-  temperature.  Consistent with the CF-conventions, the cell_methods
-  attribute should specify "time: maximum" (automatically done by
-  CMOR).  The CMOR singleton dimension default value of 2 m can be
-  overridden, if absolutely necessary, by redefining axis "height1".</p>
-  </td>
- </tr>
- <tr>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>5 </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>air_temperature</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>tas </p>
-  </td>
-  <td width=65 style='width:48.75pt;border-top:none;border-left:none;
-  border-bottom:inset #111111 1.0pt;border-right:inset #111111 1.0pt;
-  padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>K </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal>daily-mean near-surface (usually, 2 meter) air
-  temperature;  The CMOR singleton dimension default value of 2 m can be
-  overridden, if absolutely necessary, by redefining axis "height1".</p>
-  </td>
- </tr>
- <tr>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>6 </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>surface_upward_latent_heat_flux
-  </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>hfls </p>
-  </td>
-  <td width=65 style='width:48.75pt;border-top:none;border-left:none;
-  border-bottom:inset #111111 1.0pt;border-right:inset #111111 1.0pt;
-  padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>W m<sup>-2</sup> </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal> </p>
-  </td>
- </tr>
- <tr>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>7 </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>surface_upward_sensible_heat_flux
-  </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>hfss </p>
-  </td>
-  <td width=65 style='width:48.75pt;border-top:none;border-left:none;
-  border-bottom:inset #111111 1.0pt;border-right:inset #111111 1.0pt;
-  padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>W m<sup>-2</sup> </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal> </p>
-  </td>
- </tr>
- <tr>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>8 </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>surface_downwelling_longwave_flux_in_air</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>rlds </p>
-  </td>
-  <td width=65 style='width:48.75pt;border-top:none;border-left:none;
-  border-bottom:inset #111111 1.0pt;border-right:inset #111111 1.0pt;
-  padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>W m<sup>-2</sup> </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal> </p>
-  </td>
- </tr>
- <tr>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>9 </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>surface_upwelling_longwave_flux_in_air
-  </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>rlus </p>
-  </td>
-  <td width=65 style='width:48.75pt;border-top:none;border-left:none;
-  border-bottom:inset #111111 1.0pt;border-right:inset #111111 1.0pt;
-  padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>W m<sup>-2</sup> </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal> </p>
-  </td>
- </tr>
- <tr>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>10 </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>surface_downwelling_shortwave_flux_in_air
-  </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>rsds </p>
-  </td>
-  <td width=65 style='width:48.75pt;border-top:none;border-left:none;
-  border-bottom:inset #111111 1.0pt;border-right:inset #111111 1.0pt;
-  padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>W m<sup>-2</sup> </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal> </p>
-  </td>
- </tr>
- <tr>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>11 </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>surface_upwelling_shortwave_flux_in_air
-  </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>rsus </p>
-  </td>
-  <td width=65 style='width:48.75pt;border-top:none;border-left:none;
-  border-bottom:inset #111111 1.0pt;border-right:inset #111111 1.0pt;
-  padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>W m<sup>-2</sup> </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal> </p>
-  </td>
- </tr>
- <tr>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>12 </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>eastward_wind</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>uas </p>
-  </td>
-  <td width=65 style='width:48.75pt;border-top:none;border-left:none;
-  border-bottom:inset #111111 1.0pt;border-right:inset #111111 1.0pt;
-  padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>m s<sup>-1</sup> </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal>near-surface (usually, 10 meters) eastward component of
-  wind.  The CMOR singleton dimension default value of 10 m can be
-  overridden, if absolutely necessary, by redefining axis "height2".</p>
-  </td>
- </tr>
- <tr>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>13 </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>northward_wind</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>vas </p>
-  </td>
-  <td width=65 style='width:48.75pt;border-top:none;border-left:none;
-  border-bottom:inset #111111 1.0pt;border-right:inset #111111 1.0pt;
-  padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>m s<sup>-1</sup> </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal>near-surface (usually, 10 meters) northward component of
-  wind.  The CMOR singleton dimension default value of 10 m can be
-  overridden, if absolutely necessary, by redefining axis "height2".</p>
-  </td>
- </tr>
- <tr>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>14 </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>toa_outgoing_longwave_flux
-  </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>rlut </p>
-  </td>
-  <td width=65 style='width:48.75pt;border-top:none;border-left:none;
-  border-bottom:inset #111111 1.0pt;border-right:inset #111111 1.0pt;
-  padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>W m<sup>-2</sup> </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal>at the top of the atmosphere (to be compared with
-  satellite measurements)</p>
-  </td>
- </tr>
-</table>
-
-<p> </p>
-
-<table class=MsoNormalTable border=1 cellspacing=0 cellpadding=0
- style='border-collapse:collapse;border:none'>
- <tr>
-  <td colspan=5 style='border:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p><a name="Table_A2b"><b><i>Table A2b: </i></b>Daily-mean 3-d atmosphere
-  data (longitude, latitude, pressure, time:day).  It is recommended that
-  the daily means be computed for intervals beginning at 0 Z and ending the
-  following </a>midnight at 0Z.  This data should be provided for just one
-  ensemble member per scenario, and for only the years specified in the table
-  at the end of this document. Also this data must be provided on pressure
-  levels, including at least the following subset of standard levels:1000, 925,
-  850, 700, 600, 500, 400, 300, 200 hPa.</p>
-  </td>
- </tr>
- <tr>
-  <td style='border:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'><b> </b></p>
-  </td>
-  <td style='border:inset #111111 1.0pt;border-left:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'><b>CF standard_name
-  </b></p>
-  </td>
-  <td style='border:inset #111111 1.0pt;border-left:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'><b>output variable
-  name </b></p>
-  </td>
-  <td style='border:inset #111111 1.0pt;border-left:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'><b>units </b></p>
-  </td>
-  <td style='border:inset #111111 1.0pt;border-left:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'><b> notes </b></p>
-  </td>
- </tr>
- <tr>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal>1 </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>air_temperature </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>ta </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>K </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal> </p>
-  </td>
- </tr>
- <tr>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal>2 </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>eastward_wind </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>ua </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>m s<sup>-1</sup> </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal> </p>
-  </td>
- </tr>
- <tr>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal>3 </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>northward_wind </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>va </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>m s<sup>-1</sup> </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal> </p>
-  </td>
- </tr>
- <tr>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal>4 </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>specific_humidity </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>hus </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>1 (i.e.,
-  dimensionless fraction) </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal> </p>
-  </td>
- </tr>
-</table>
-
-<p> </p>
-
-<b><span style='font-size:13.5pt;font-family:"Times New Roman";color:navy'><br
-clear=all style='page-break-before:always'>
-</span></b>
-
-<h3><span style='color:navy'>3-hourly data</span></h3>
-
-<table class=MsoNormalTable border=1 cellspacing=0 cellpadding=0
- style='border-collapse:collapse;border:none'>
- <tr>
-  <td colspan=5 style='border:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p><a name="Table_A3"><b><i>Table A3: </i>3-bourly 2-d atmosphere data
-  (longitude, latitude, time:3hour at 0, 3, 6, 9, 12, 15, 18, 21 Z). </b>The
-  data should be provided for just one ensemble member per scenario, and for the
-  years specified in the table at the end of this document.  3-hourly
-  precipitation should be an average over the 3-hour intervals, 0-3Z, 3-6Z, ...
-  21-24Z; all other 3-hourly data should be instantaneous "snapshots"
-  at 0, 3, 6, ... 21Z.</a></p>
-  </td>
- </tr>
- <tr>
-  <td style='border:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'><b> </b></p>
-  </td>
-  <td style='border:inset #111111 1.0pt;border-left:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'><b>CF standard_name
-  </b></p>
-  </td>
-  <td style='border:inset #111111 1.0pt;border-left:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'><b>output variable
-  name </b></p>
-  </td>
-  <td width=65 style='width:48.75pt;border:inset #111111 1.0pt;border-left:
-  none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'><b>units </b></p>
-  </td>
-  <td style='border:inset #111111 1.0pt;border-left:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'><b>notes </b></p>
-  </td>
- </tr>
- <tr>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal>1 </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>air_pressure_at_sea_level
-  </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>psl </p>
-  </td>
-  <td width=65 style='width:48.75pt;border-top:none;border-left:none;
-  border-bottom:inset #111111 1.0pt;border-right:inset #111111 1.0pt;
-  padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>Pa </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal> </p>
-  </td>
- </tr>
- <tr>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal>2 </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>precipitation_flux </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>pr </p>
-  </td>
-  <td width=65 style='width:48.75pt;border-top:none;border-left:none;
-  border-bottom:inset #111111 1.0pt;border-right:inset #111111 1.0pt;
-  padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>kg m<sup>-2</sup> s<sup>-1</sup>
-  </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal>includes both liquid and solid phases.</p>
-  </td>
- </tr>
- <tr>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal>3 </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>air_temperature</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>tas </p>
-  </td>
-  <td width=65 style='width:48.75pt;border-top:none;border-left:none;
-  border-bottom:inset #111111 1.0pt;border-right:inset #111111 1.0pt;
-  padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>K </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal>near-surface (usually, 2 meter) air temperature (CMOR
-  singleton dimension table entry is "height1").</p>
-  </td>
- </tr>
- <tr>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal>4 </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>surface_upward_latent_heat_flux
-  </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>hfls </p>
-  </td>
-  <td width=65 style='width:48.75pt;border-top:none;border-left:none;
-  border-bottom:inset #111111 1.0pt;border-right:inset #111111 1.0pt;
-  padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>W m<sup>-2</sup> </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal> </p>
-  </td>
- </tr>
- <tr>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal>5 </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>surface_upward_sensible_heat_flux
-  </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>hfss </p>
-  </td>
-  <td width=65 style='width:48.75pt;border-top:none;border-left:none;
-  border-bottom:inset #111111 1.0pt;border-right:inset #111111 1.0pt;
-  padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>W m<sup>-2</sup> </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal> </p>
-  </td>
- </tr>
- <tr>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal>6 </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>surface_downwelling_longwave_flux_in_air</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>rlds </p>
-  </td>
-  <td width=65 style='width:48.75pt;border-top:none;border-left:none;
-  border-bottom:inset #111111 1.0pt;border-right:inset #111111 1.0pt;
-  padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>W m<sup>-2</sup> </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal> </p>
-  </td>
- </tr>
- <tr>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal>7 </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>surface_upwelling_longwave_flux_in_air</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>rlus </p>
-  </td>
-  <td width=65 style='width:48.75pt;border-top:none;border-left:none;
-  border-bottom:inset #111111 1.0pt;border-right:inset #111111 1.0pt;
-  padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>W m<sup>-2</sup> </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal> </p>
-  </td>
- </tr>
- <tr>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal>8 </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>surface_downwelling_shortwave_flux_in_air</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>rsds </p>
-  </td>
-  <td width=65 style='width:48.75pt;border-top:none;border-left:none;
-  border-bottom:inset #111111 1.0pt;border-right:inset #111111 1.0pt;
-  padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>W m<sup>-2</sup> </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal> </p>
-  </td>
- </tr>
- <tr>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal>9 </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>surface_upwelling_shortwave_flux_in_air</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>rsus </p>
-  </td>
-  <td width=65 style='width:48.75pt;border-top:none;border-left:none;
-  border-bottom:inset #111111 1.0pt;border-right:inset #111111 1.0pt;
-  padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>W m<sup>-2</sup> </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal> </p>
-  </td>
- </tr>
-</table>
-
-<p> </p>
-
-<p> </p>
-
-<b><span style='font-size:13.5pt;font-family:"Times New Roman";color:navy'><br
-clear=all style='page-break-before:always'>
-</span></b>
-
-<h3><span style='color:navy'>Extremes indices</span></h3>
-
-<p>The following ten "extremes indices" are described in Frich, P,
-Alexander LV, Della-Marta P, Gleason B, Haylock M, Klein Tank AMG, Peterson T,
-2002: Observed coherent changes in climate extremes during the second half of
-the twentieth century, <i>Climate Research 19</i>: 193-212. Frich et al.
-describe these as "derived data in the form of annual indicator time
-series" and present them (as derived from observations) as a function of
-longitude, latitude, and year. See <a
-href="http://www.cru.uea.ac.uk/cru/projects/stardex">http://www.cru.uea.ac.uk/cru/projects/stardex</a>
-for sample computer code and documentation. </p>
-
-<table class=MsoNormalTable border=1 cellspacing=0 cellpadding=0
- style='border-collapse:collapse;border:none'>
- <tr>
-  <td colspan=4 style='border:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p><a name="Table_A4"><b><i>Table A4: </i>Extremes indices (longitude,
-  latitude, time:year) from Frich et al. (their Table 1). </b></a></p>
-  </td>
- </tr>
- <tr>
-  <td style='border:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'><b> </b></p>
-  </td>
-  <td style='border:inset #111111 1.0pt;border-left:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'><b>output variable
-  name </b></p>
-  </td>
-  <td width=70 style='width:52.5pt;border:inset #111111 1.0pt;border-left:none;
-  padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'><b>units </b></p>
-  </td>
-  <td style='border:inset #111111 1.0pt;border-left:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'><b>notes </b></p>
-  </td>
- </tr>
- <tr>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>1 </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>fd </p>
-  </td>
-  <td width=70 style='width:52.5pt;border-top:none;border-left:none;border-bottom:
-  inset #111111 1.0pt;border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>days </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal>Total number of frost days (days with absolute minimum
-  temperature < 0 deg C)</p>
-  </td>
- </tr>
- <tr>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>2 </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>etr </p>
-  </td>
-  <td width=70 style='width:52.5pt;border-top:none;border-left:none;border-bottom:
-  inset #111111 1.0pt;border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>K </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal>Intra-annual extreme temperature range: difference between
-  the highest temperature of any given calendar year (T<sub>h</sub>) and the
-  lowest temperature of the same calendar year (T<sub>i</sub>)</p>
-  </td>
- </tr>
- <tr>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>3 </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>gsl </p>
-  </td>
-  <td width=70 style='width:52.5pt;border-top:none;border-left:none;border-bottom:
-  inset #111111 1.0pt;border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>days </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal>Growing season length: period between when T<sub>day</sub>
-  > 5 deg C for > 5 d and T<sub>day</sub> < 5 deg C for > 5 d</p>
-  </td>
- </tr>
- <tr>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>4 </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>hwdi </p>
-  </td>
-  <td width=70 style='width:52.5pt;border-top:none;border-left:none;border-bottom:
-  inset #111111 1.0pt;border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>days </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal>Heat wave duration index: maximum period > 5
-  consecutive days with T<sub>max</sub> > 5 deg C above the 1961-1990 daily
-  T<sub>max</sub> normal</p>
-  </td>
- </tr>
- <tr>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>5 </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>tn90 </p>
-  </td>
-  <td width=70 style='width:52.5pt;border-top:none;border-left:none;border-bottom:
-  inset #111111 1.0pt;border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>% </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal>Fraction (expressed as a percentage) of time T<sub>min</sub>
-  > 90th percentile of daily minimum temperature, where percentiles are for
-  the 1961-1990 base period.</p>
-  </td>
- </tr>
- <tr>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>6 </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>r10 </p>
-  </td>
-  <td width=70 style='width:52.5pt;border-top:none;border-left:none;border-bottom:
-  inset #111111 1.0pt;border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>days </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal>No. of days with precipitation greater than or equal to 10
-  mm d<sup>-1</sup></p>
-  </td>
- </tr>
- <tr>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>7 </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>cdd </p>
-  </td>
-  <td width=70 style='width:52.5pt;border-top:none;border-left:none;border-bottom:
-  inset #111111 1.0pt;border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>days </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal>Maximum number of consecutive dry days (R<sub>day</sub>
-  < 1 mm)</p>
-  </td>
- </tr>
- <tr>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>8 </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>r5d </p>
-  </td>
-  <td width=70 style='width:52.5pt;border-top:none;border-left:none;border-bottom:
-  inset #111111 1.0pt;border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>kg m<sup>-2</sup> </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal>Maximum 5 d precipitation total</p>
-  </td>
- </tr>
- <tr>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>9 </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>sdii </p>
-  </td>
-  <td width=70 style='width:52.5pt;border-top:none;border-left:none;border-bottom:
-  inset #111111 1.0pt;border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>kg m<sup>-2 </sup>s<sup>-1</sup>
-  </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal>Simple daily intensity index: annual total / number of R<sub>day</sub>
-  greater than or equal to 1 mm d<sup>-1</sup></p>
-  </td>
- </tr>
- <tr>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>10 </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>r95t </p>
-  </td>
-  <td width=70 style='width:52.5pt;border-top:none;border-left:none;border-bottom:
-  inset #111111 1.0pt;border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>% </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal>Fraction (expressed as a percentage) of annual total
-  precipitation due to events exceeding the 1961-1990 95th percentile</p>
-  </td>
- </tr>
-</table>
-
-<p> </p>
-
-<p> </p>
-
-<h2><a name="Lower_priority_output">Lower priority output fields</a></h2>
-
-<h3><span style='color:navy'>ISCCP simulator output </span></h3>
-
-<p>Cloud-related output that matches the quantities observed by the
-International Satellite Cloud Climatology Project. This output is produced by
-the ISCCP simulator code and which usually must be run in the climate model,
-not as a post-processing step. See the Cloud Forcing Model Intercomparison Web
-site <a href="http://www.cfmip.net">(http://www.cfmip.net)</a> for details of
-the ISCCP simulator -- where to get code, settings for climate models, etc.</p>
-
-<table class=MsoNormalTable border=1 cellspacing=0 cellpadding=0
- style='border-collapse:collapse;border:none'>
- <tr>
-  <td colspan=4 style='border:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p><a name="Table_A1d"><b><i>Table A1d: Monthly-mean ISCCP simulator data
-  (longitude, latitude, pressure2, tau, time).  </i></b>Data should be
-  sampled no less frequently than every 15 hours.  The ISCCP cloud layers
-  refer to the following ranges (hPa): 800 and higher, 800-680, 680-560,
-  560-440, 440-310, 310-180, and 180-0.  The ISCCP optical depth (tau)
-  categories refer to the following ranges: 0-0.3, 0.3-1.3, 1.3-3.6, 3.6-9.4,
-  9.4-23, 23-60, and >60.  The preferred time periods and experiments
-  for which this data will be collected have not be agreed upon yet, but
-  discussions are underway.  Anyone having an opinion about this is
-  invited to participate in the discussion.</a></p>
-  </td>
- </tr>
- <tr>
-  <td style='border:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'><b>CF standard_name
-  </b></p>
-  </td>
-  <td style='border:inset #111111 1.0pt;border-left:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'><b>output variable
-  name </b></p>
-  </td>
-  <td width=50 style='width:37.5pt;border:inset #111111 1.0pt;border-left:none;
-  padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'><b>units </b></p>
-  </td>
-  <td style='border:inset #111111 1.0pt;border-left:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'><b>notes</b></p>
-  </td>
- </tr>
- <tr>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal>isccp_cloud_area_fraction</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>clisccp</p>
-  </td>
-  <td width=50 style='width:37.5pt;border-top:none;border-left:none;border-bottom:
-  inset #111111 1.0pt;border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>1 (i.e.,
-  dimensionless fraction)</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal>as seen from above, mean fraction of grid column occupied
-  by cloud of optical depths and heights specified by the tau and pressure
-  intervals given above;  for each longitude and latitude grid column, the
-  ISCCP simulator output comprises a 7x7 (pressure x tau) matrix of values matching
-  those of the satellite. With CMOR, use "pressure2" to define the
-  vertical coordinates for this variable.</p>
-  </td>
- </tr>
-</table>
-
-<p> </p>
-
-<h3><span style='color:navy'>Radiative forcing </span></h3>
-
-<p>To enable an analysis of feedbacks, which explain differences in model
-sensitivity, the WGCM urges groups to calculate, if at all practical, the
-clear-sky and all-sky shortwave and longwave radiative forcing. These four
-fields should be a function of longitude latitude and time (monthly sampling).
-No standard method for calculating radiative forcing has been agreed on by the
-WGCM, but one good option would be to follow the method suggested in Appendix A
-of a letter from the IPCC co-chairs (see <a href="Appendix_A.php">http://www-pcmdi.llnl.gov/ipcc/Appendix_A.php</a>).
-The highest priority (and easiest) calculation of this kind is to calculate
-monthly-mean values of radiative forcing for doubled CO2. Calculation of
-clear-sky radiative forcing as well as all-sky forcing will make it possible to
-estimate the importance of cloud feedbacks in the 1% / year CO2 simulations and
-the 2xCO2 equilibrium simulations (assuming the radiative forcing scales with
-the logarithm of CO2 concentration). The evolution of forcing fields for any
-and all other climate change agents are also welcome.  A rough priority
-for forcing calculations follows:</p>
-
-<ol start=1 type=1>
- <li class=MsoNormal>CO2 doubling (<i>Please provide this at the very least!</i>)</li>
- <li class=MsoNormal>Total forcing (from all anthropogenic influences) for SRES
-     A1b, B1, and A2 (reported at least at the end of the simulation, and as
-     frequently as necessary to characterize, approximately, the forcing changes
-     throughout the experiment.</li>
- <li class=MsoNormal>CO2 quadrupling( to check that logarithmic scaling holds).</li>
- <li class=MsoNormal>Total anthropogenic forcing for the historical run
-     (sampled every 10 years or more frequently)</li>
- <li class=MsoNormal>Total natural forcing (if any) for the historical run
-     (sampled as frequently as necessary)</li>
- <li class=MsoNormal>Forcing due to individual constituents (e.g., volcanic
-     aerosols, anthropogenic aerosols, individual greenhouse gases) for the
-     historical run.</li>
- <li class=MsoNormal>Forcing due to individual constituents for the experiments
-     listed in 2.</li>
-</ol>
-
-<table class=MsoNormalTable border=1 cellspacing=0 cellpadding=0
- style='border-collapse:collapse;border:none'>
- <tr>
-  <td colspan=5 style='border:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p><a name="Table_A5"><b><i>Table A5:</i> Monthly-mean 2-d radiative forcing
-  data (longitude, latitude, time). </b>For the following output fields choose
-  the variable name corresponding to the method you used to calculate radiative
-  forcing and replace the "?" suffix with one of the following
-  abbreviations for different forcing agents: g (all greenhouse gases), co2
-  (carbon dioxide only), s (total sulfate aerosol), sd  (direct effect
-  only of sulfate aersol), si (indirect effect only of sulfate aerosols), bc
-  ("black carbon"), o (ozone), to (tropospheric ozone only), so
-  (stratospheric ozone only), l (vegetation and other land surface
-  changes),  a (all anthropogenic factors, inclusive), v (volcanic
-  aerosols), sun (solar constant changes), or n (all natural factors,
-  inclusive).  Use the term that is most specific (e.g., if the only
-  anthropogenic effect included in the model simulation is an increase in
-  carbon dioxide, use "co2", not "a" or
-  "g").  A complete example is: rsftoaa_a.</a></p>
-  </td>
- </tr>
- <tr>
-  <td style='border:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'><b> </b></p>
-  </td>
-  <td style='border:inset #111111 1.0pt;border-left:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'><b>CF standard_name
-  </b></p>
-  </td>
-  <td style='border:inset #111111 1.0pt;border-left:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'><b>output variable
-  name </b></p>
-  </td>
-  <td width=50 style='width:37.5pt;border:inset #111111 1.0pt;border-left:none;
-  padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'><b>units </b></p>
-  </td>
-  <td style='border:inset #111111 1.0pt;border-left:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'><b>notes</b></p>
-  </td>
- </tr>
- <tr>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal>1 </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p align=center style='margin:0in;margin-bottom:.0001pt;text-align:center'>toa_adjusted_shortwave_forcing</p>
-  <p align=center style='margin:0in;margin-bottom:.0001pt;text-align:center'>tropopause_adjusted_shortwave_forcing</p>
-  <p align=center style='margin:0in;margin-bottom:.0001pt;text-align:center'>toa_instantaneous_shortwave_forcing</p>
-  <p align=center style='margin:0in;margin-bottom:.0001pt;text-align:center'>tropopause_instantaneous_shortwave_forcing</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p align=center style='margin:0in;margin-bottom:.0001pt;text-align:center'>rsftoaa_?</p>
-  <p align=center style='margin:0in;margin-bottom:.0001pt;text-align:center'>rsftropa_?</p>
-  <p align=center style='margin:0in;margin-bottom:.0001pt;text-align:center'>rsftoai_?</p>
-  <p align=center style='margin:0in;margin-bottom:.0001pt;text-align:center'>rsftropi_?</p>
-  </td>
-  <td width=50 style='width:37.5pt;border-top:none;border-left:none;border-bottom:
-  inset #111111 1.0pt;border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>W m<sup>-2</sup> 
-  </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal>all-sky conditions, defined to be positive down. Choose
-  appropriate variable, and indicate in the "comment" attribute
-  (associated with the variable) any particulars (e.g., 200 hPa taken as
-  approximate tropopause). For tropopause, CMOR will by default record a
-  singleton dimension value of 200 hPa.  To override this value redefine
-  pressure1.</p>
-  </td>
- </tr>
- <tr>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal>2 </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p align=center style='margin:0in;margin-bottom:.0001pt;text-align:center'>toa_adjusted_longwave_forcing</p>
-  <p align=center style='margin:0in;margin-bottom:.0001pt;text-align:center'>tropopause_adjusted_longwave_forcing</p>
-  <p align=center style='margin:0in;margin-bottom:.0001pt;text-align:center'>toa_instantaneous_longwave_forcing</p>
-  <p align=center style='margin:0in;margin-bottom:.0001pt;text-align:center'>tropopause_instantaneous_longwave_forcing</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p align=center style='margin:0in;margin-bottom:.0001pt;text-align:center'>rlftoaa_?</p>
-  <p align=center style='margin:0in;margin-bottom:.0001pt;text-align:center'>rlftropa_?</p>
-  <p align=center style='margin:0in;margin-bottom:.0001pt;text-align:center'>rlftoai_?</p>
-  <p align=center style='margin:0in;margin-bottom:.0001pt;text-align:center'>rlftropi_?</p>
-  </td>
-  <td width=50 style='width:37.5pt;border-top:none;border-left:none;border-bottom:
-  inset #111111 1.0pt;border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>W m<sup>-2</sup></p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal>all-sky conditions, defined to be positive down. Choose
-  appropriate variable, and indicate in the "comment" attribute
-  (associated with the variable) any particulars (e.g., 200 hPa taken as
-  approximate tropopause).  For tropopause, CMOR will by default record a
-  singleton dimension value of 200 hPa.   To override this value
-  redefine pressure1.</p>
-  </td>
- </tr>
- <tr>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal>3 </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p align=center style='margin:0in;margin-bottom:.0001pt;text-align:center'>toa_adjusted_shortwave_forcing_assuming_clear_sky</p>
-  <p align=center style='margin:0in;margin-bottom:.0001pt;text-align:center'>tropopause_adjusted_shortwave_forcing_assuming_clear_sky</p>
-  <p align=center style='margin:0in;margin-bottom:.0001pt;text-align:center'>toa_instantaneous_shortwave_forcing_assuming_clear_sky</p>
-  <p align=center style='margin:0in;margin-bottom:.0001pt;text-align:center'>tropopause_instantaneous_shortwave_forcing_assuming_clear_sky</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p align=center style='margin:0in;margin-bottom:.0001pt;text-align:center'>rsftoaacs_?</p>
-  <p align=center style='margin:0in;margin-bottom:.0001pt;text-align:center'>rsftropacs_?</p>
-  <p align=center style='margin:0in;margin-bottom:.0001pt;text-align:center'>rsftoaics_?</p>
-  <p align=center style='margin:0in;margin-bottom:.0001pt;text-align:center'>rsftropics_?</p>
-  </td>
-  <td width=50 style='width:37.5pt;border-top:none;border-left:none;border-bottom:
-  inset #111111 1.0pt;border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>W m<sup>-2</sup></p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal>clear-sky calculation, defined to be positive down. Choose
-  appropriate variable, and indicate in the "comment" attribute
-  (associated with the variable) any particulars (e.g., 200 hPa taken as
-  approximate tropopause).  For tropopause, CMOR will by default record a
-  singleton dimension value of 200 hPa.   To override this value
-  redefine pressure1.</p>
-  </td>
- </tr>
- <tr>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal>4 </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p align=center style='margin:0in;margin-bottom:.0001pt;text-align:center'>toa_adjusted_longwave_forcing_assuming_clear_sky</p>
-  <p align=center style='margin:0in;margin-bottom:.0001pt;text-align:center'>tropopause_adjusted_longwave_forcing_assuming_clear_sky</p>
-  <p align=center style='margin:0in;margin-bottom:.0001pt;text-align:center'>toa_instantaneous_longwave_forcing_assuming_clear_sky</p>
-  <p align=center style='margin:0in;margin-bottom:.0001pt;text-align:center'>tropopause_instantaneous_longwave_forcing_assuming_clear_sky</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p align=center style='margin:0in;margin-bottom:.0001pt;text-align:center'>rlftoaacs_?</p>
-  <p align=center style='margin:0in;margin-bottom:.0001pt;text-align:center'>rlftropacs_?</p>
-  <p align=center style='margin:0in;margin-bottom:.0001pt;text-align:center'>rlftoaics_?</p>
-  <p align=center style='margin:0in;margin-bottom:.0001pt;text-align:center'>rlftropics_?</p>
-  </td>
-  <td width=50 style='width:37.5pt;border-top:none;border-left:none;border-bottom:
-  inset #111111 1.0pt;border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>W m<sup>-2</sup></p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal>clear-sky calculation, defined to be positive down. Choose
-  appropriate variable, and indicate in the "comment" attribute
-  (associated with the variable) any particulars (e.g., 200 hPa taken as
-  approximate tropopause).  For tropopause, CMOR will by default record a
-  singleton dimension value of 200 hPa.   To override this value
-  redefine pressure1.</p>
-  </td>
- </tr>
-</table>
-
-<p> </p>
-
-<b><span style='font-size:13.5pt;font-family:"Times New Roman";color:navy'><br
-clear=all style='page-break-before:always'>
-</span></b>
-
-<h3><span style='color:navy'>Sulfate aerosol data </span></h3>
-
-<p>Provide both the column integrated 2-D fields and the 3-D fields on the
-following pressure levels: 1004, 983, 953, 910, 848, 765, 663, 546, 425, 318,
-238, 183, 140, 103, 72, 47, 27, 13, and 4 hPa.</p>
-
-<table class=MsoNormalTable border=1 cellspacing=0 cellpadding=0
- style='border-collapse:collapse;border:none'>
- <tr style='height:30.0pt'>
-  <td colspan=5 style='border:none;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:30.0pt'>
-  <p><a name="Table_A1e"><b><i>Table A1e:</i> Monthly-mean 2-d and 3-d sulfate
-  aerosol fields.</b></a></p>
-  </td>
- </tr>
- <tr style='height:30.0pt'>
-  <td style='border:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;
-  height:30.0pt'>
-  <p align=center style='text-align:center'><b> </b></p>
-  </td>
-  <td style='border:inset #111111 1.0pt;border-left:none;padding:1.5pt 1.5pt 1.5pt 1.5pt;
-  height:30.0pt'>
-  <p align=center style='text-align:center'><b>CF standard_name </b></p>
-  </td>
-  <td style='border:inset #111111 1.0pt;border-left:none;padding:1.5pt 1.5pt 1.5pt 1.5pt;
-  height:30.0pt'>
-  <p align=center style='text-align:center'><b>output variable name </b></p>
-  </td>
-  <td width=80 style='width:60.0pt;border:inset #111111 1.0pt;border-left:none;
-  padding:1.5pt 1.5pt 1.5pt 1.5pt;height:30.0pt'>
-  <p align=center style='text-align:center'><b>units </b></p>
-  </td>
-  <td style='border:inset #111111 1.0pt;border-left:none;padding:1.5pt 1.5pt 1.5pt 1.5pt;
-  height:30.0pt'>
-  <p align=center style='text-align:center'><b>notes</b></p>
-  </td>
- </tr>
- <tr style='height:16.5pt'>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt;
-  height:16.5pt'>
-  <p>1</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:16.5pt'>
-  <p align=center style='text-align:center'>mass_concentration_of_sulfate_aerosol_in_air
-  </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:16.5pt'>
-  <p align=center style='text-align:center'>trsul</p>
-  </td>
-  <td width=80 style='width:60.0pt;border-top:none;border-left:none;border-bottom:
-  inset #111111 1.0pt;border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;
-  height:16.5pt'>
-  <p align=center style='text-align:center'>1e-9 kg m<sup>-3</sup></p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:16.5pt'>
-  <p>3-d field (longitude, latitude, pressure3, time)</p>
-  </td>
- </tr>
- <tr style='height:25.5pt'>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt;
-  height:25.5pt'>
-  <p>2</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:25.5pt'>
-  <p align=center style='text-align:center'>atmosphere_content_of_sulfate_aerosol</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:25.5pt'>
-  <p align=center style='text-align:center'>trsult</p>
-  </td>
-  <td width=80 style='width:60.0pt;border-top:none;border-left:none;border-bottom:
-  inset #111111 1.0pt;border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;
-  height:25.5pt'>
-  <p align=center style='text-align:center'>1e-6 kg m<sup>-2</sup></p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:25.5pt'>
-  <p>2-d field, vertically integrated through atmospheric column (longitude,
-  latitude, time)</p>
-  </td>
- </tr>
-</table>
-
-<p> </p>
-
-<h3><span style='color:navy'>Additional Monthly-mean fields </span></h3>
-
-<table class=MsoNormalTable border=1 cellspacing=0 cellpadding=0
- style='border-collapse:collapse;border:none'>
- <tr>
-  <td colspan=5 style='border:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p><a name="Table_O1f"><b><i>Table O1f: </i>Monthly-mean 1-d and 2-d ocean
-  fields. </b></a></p>
-  </td>
- </tr>
- <tr>
-  <td style='border:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'><b> </b></p>
-  </td>
-  <td style='border:inset #111111 1.0pt;border-left:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'><b>CF standard_name
-  </b></p>
-  </td>
-  <td style='border:inset #111111 1.0pt;border-left:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'><b>output variable
-  name </b></p>
-  </td>
-  <td width=70 style='width:52.5pt;border:inset #111111 1.0pt;border-left:none;
-  padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'><b>units </b></p>
-  </td>
-  <td style='border:inset #111111 1.0pt;border-left:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'><b>notes</b></p>
-  </td>
- </tr>
- <tr>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal>1</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>ocean_mixed_layer_thickness</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>zmlo</p>
-  </td>
-  <td width=70 style='width:52.5pt;border-top:none;border-left:none;border-bottom:
-  inset #111111 1.0pt;border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>m</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal>mixed layer depth; (longitude, latitude, time).  No
-  agreement has been reached as to the precise definition of the mixed layer
-  depth, so this field may be of limited value.</p>
-  </td>
- </tr>
- <tr>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal>2</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>northward_ocean_heat_transport_due_to_diffusion</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>htovdiff</p>
-  </td>
-  <td width=70 style='width:52.5pt;border-top:none;border-left:none;border-bottom:
-  inset #111111 1.0pt;border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>W</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal>vertically integrated northward heat transport by
-  unresolved processes, summed over longitude for each of 3 basins (Atlantic,
-  Indian, Pacific) and global ocean; (latitude, region, time); include
-  specifically contributions of the 'bolus velocity' that arise, for example,
-  in the Gent-McWilliams parameterization.</p>
-  </td>
- </tr>
- <tr>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal>3</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>northward_ocean_heat_transport_due_to_gyre</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>htovgyre</p>
-  </td>
-  <td width=70 style='width:52.5pt;border-top:none;border-left:none;border-bottom:
-  inset #111111 1.0pt;border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>W</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal>vertically integrated northward heat transport by gyre
-  circulation (including heat advection by sea ice), summed over longitude for
-  each of 3 basins (Atlantic, Indian, Pacific) and global ocean; (latitude,
-  region, time); exclude contributions of the 'bolus velocity' that arise, for
-  example, in the Gent-McWilliams parameterization.</p>
-  </td>
- </tr>
- <tr>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal>4</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>northward_ocean_heat_transport_due_to_overturning</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>htovovrt</p>
-  </td>
-  <td width=70 style='width:52.5pt;border-top:none;border-left:none;border-bottom:
-  inset #111111 1.0pt;border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>W</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal>vertically integrated northward heat transport by
-  overturning circulation, summed over longitude for each of 3 basins
-  (Atlantic, Indian, Pacific) and global ocean; (latitude, region, time);
-  exclude contributions of the 'bolus velocity' that arise, for example, in the
-  Gent-McWilliams parameterization.</p>
-  </td>
- </tr>
- <tr>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal>5</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>northward_ocean_salt_transport_due_to_diffusion</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>sltovdiff</p>
-  </td>
-  <td width=70 style='width:52.5pt;border-top:none;border-left:none;border-bottom:
-  inset #111111 1.0pt;border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>kg s<sup>-1</sup></p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal>vertically integrated northward salt transport by
-  unresolved processes, summed over longitude for each of 3 basins (Atlantic, Indian, Pacific) and global ocean; (latitude, region, time)</p>
-  </td>
- </tr>
- <tr>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal>6</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>northward_ocean_salt_transport_due_to_gyre</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>sltovgyre</p>
-  </td>
-  <td width=70 style='width:52.5pt;border-top:none;border-left:none;border-bottom:
-  inset #111111 1.0pt;border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>kg s<sup>-1</sup></p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal>vertically integrated northward salt transport by gyre
-  circulation (including salt advection by sea ice), summed over longitude for
-  each of 3 basins (Atlantic, Indian, Pacific) and global ocean; (latitude,
-  region, time)</p>
-  </td>
- </tr>
- <tr>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal>7</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>northward_ocean_salt_transport_due_to_overturning</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>sltovovrt</p>
-  </td>
-  <td width=70 style='width:52.5pt;border-top:none;border-left:none;border-bottom:
-  inset #111111 1.0pt;border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>kg s<sup>-1</sup></p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal>vertically integrated northward salt transport by
-  overturning circulation, summed over longitude for each of 3 basins (Atlantic, Indian, Pacific) and global ocean; (latitude, region, time)</p>
-  </td>
- </tr>
-</table>
-
-<p> </p>
-
-<span style='font-size:12.0pt;font-family:"Times New Roman"'><br clear=all
-style='page-break-before:always'>
-</span>
-
-<p> </p>
-
-<table class=MsoNormalTable border=1 cellspacing=0 cellpadding=0
- style='border-collapse:collapse;border:none'>
- <tr>
-  <td colspan=5 style='border:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p><a name="Table_O1g"><b><i>Table O1g: </i>Monthly-mean 2-d sea ice fields
-  (longitude, latitude, time:month).</b></a></p>
-  </td>
- </tr>
- <tr>
-  <td style='border:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'><b> </b></p>
-  </td>
-  <td style='border:inset #111111 1.0pt;border-left:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'><b>CF standard_name
-  </b></p>
-  </td>
-  <td style='border:inset #111111 1.0pt;border-left:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'><b>output variable
-  name </b></p>
-  </td>
-  <td width=75 style='width:56.25pt;border:inset #111111 1.0pt;border-left:
-  none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'><b>units </b></p>
-  </td>
-  <td style='border:inset #111111 1.0pt;border-left:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'><b>notes</b></p>
-  </td>
- </tr>
- <tr>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal>1</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>water_evaporation_flux_where_sea_ice</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>sbl</p>
-  </td>
-  <td width=75 style='width:56.25pt;border-top:none;border-left:none;
-  border-bottom:inset #111111 1.0pt;border-right:inset #111111 1.0pt;
-  padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>kg m<sup>-2</sup> s<sup>-1</sup></p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal>Compute the average rate that water mass evaporates (or
-  sublimates) from the sea ice surface (i.e., kg/s) divided by the average area
-  of the grid cell covered by sea ice. This quantity multiplied both by the
-  average area covered by sea ice and by the length of the month should yield
-  the total mass of water evaporated (or sublimated) from the sea ice. 
-  Report as 0.0 in regions free of sea ice.</p>
-  </td>
- </tr>
- <tr>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal>2</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>upward_sea_ice_basal_heat_flux</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>hfsib</p>
-  </td>
-  <td width=75 style='width:56.25pt;border-top:none;border-left:none;
-  border-bottom:inset #111111 1.0pt;border-right:inset #111111 1.0pt;
-  padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>W m<sup>-2</sup></p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal>Compute the average rate that heat flows up at the base of
-  the sea ice (i.e., Watts) divided by the average area of the grid cell
-  covered by sea ice. This quantity multiplied both by the average area covered
-  by sea ice and by the length of the month should yield the total energy
-  flowing into the ice from below. Report as 0.0 in regions free of sea ice.</p>
-  </td>
- </tr>
- <tr>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal>3</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>downward_sea_ice_basal_salt_flux</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>sltfsib</p>
-  </td>
-  <td width=75 style='width:56.25pt;border-top:none;border-left:none;
-  border-bottom:inset #111111 1.0pt;border-right:inset #111111 1.0pt;
-  padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>kg m<sup>-2</sup> s<sup>-1</sup></p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal>Compute the average rate that salt mass flows down at the
-  base of the sea ice (i.e., kg/s) divided by the average area of the grid cell
-  covered by sea ice. This quantity multiplied both by the average area covered
-  by sea ice and by the length of the month should yield the total salt mass
-  flowing into the ocean at the base of the sea ice. Report as 0.0 in regions
-  free of sea ice.</p>
-  </td>
- </tr>
-</table>
-
-<p> </p>
-
-<span style='font-size:12.0pt;font-family:"Times New Roman"'><br clear=all
-style='page-break-before:always'>
-</span>
-
-<p> </p>
-
-<table class=MsoNormalTable border=1 cellspacing=0 cellpadding=0
- style='border-collapse:collapse;border:none'>
- <tr style='height:44.25pt'>
-  <td colspan=5 style='border:none;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:44.25pt'>
-  <p><a name="Table_A1f"><b><i>Table A1f: </i>Monthly-mean surface fields, and
-  prescribed land surface characteristics.</b></a></p>
-  </td>
- </tr>
- <tr style='height:44.25pt'>
-  <td style='border:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;
-  height:44.25pt'>
-  <p class=MsoNormal align=center style='text-align:center'><b> </b></p>
-  </td>
-  <td style='border:inset #111111 1.0pt;border-left:none;padding:1.5pt 1.5pt 1.5pt 1.5pt;
-  height:44.25pt'>
-  <p class=MsoNormal align=center style='text-align:center'><b>CF standard_name
-  </b></p>
-  </td>
-  <td style='border:inset #111111 1.0pt;border-left:none;padding:1.5pt 1.5pt 1.5pt 1.5pt;
-  height:44.25pt'>
-  <p class=MsoNormal align=center style='text-align:center'><b>output variable
-  name </b></p>
-  </td>
-  <td width=65 style='width:48.75pt;border:inset #111111 1.0pt;border-left:
-  none;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:44.25pt'>
-  <p class=MsoNormal align=center style='text-align:center'><b>units </b></p>
-  </td>
-  <td style='border:inset #111111 1.0pt;border-left:none;padding:1.5pt 1.5pt 1.5pt 1.5pt;
-  height:44.25pt'>
-  <p class=MsoNormal align=center style='text-align:center'><b>notes</b></p>
-  </td>
- </tr>
- <tr style='height:58.5pt'>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt;
-  height:58.5pt'>
-  <p class=MsoNormal>1</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:58.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>precipitation_flux_onto_canopy</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:58.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>prveg</p>
-  </td>
-  <td width=65 style='width:48.75pt;border-top:none;border-left:none;
-  border-bottom:inset #111111 1.0pt;border-right:inset #111111 1.0pt;
-  padding:1.5pt 1.5pt 1.5pt 1.5pt;height:58.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>kg m<sup>-2</sup> s<sup>-1</sup>
-  </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:58.5pt'>
-  <p class=MsoNormal>As a function of longitude, latitude, and time, report the
-  precipitation flux intercepted by vegetation canopy (if present in model),
-  averaged over only the land portion of the grid cell; report as
-  "missing" or 0.0 where the land fraction is 0;  </p>
-  </td>
- </tr>
- <tr style='height:58.5pt'>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt;
-  height:58.5pt'>
-  <p class=MsoNormal>2</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:58.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>water_evaporation_flux_from_canopy</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:58.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>evspsblveg</p>
-  </td>
-  <td width=65 style='width:48.75pt;border-top:none;border-left:none;
-  border-bottom:inset #111111 1.0pt;border-right:inset #111111 1.0pt;
-  padding:1.5pt 1.5pt 1.5pt 1.5pt;height:58.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>kg m<sup>-2</sup> s<sup>-1</sup>
-  </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:58.5pt'>
-  <p class=MsoNormal>As a function of longitude, latitude, and time, report the
-  canopy evaporation+sublimation (if present in model), averaged only over the
-  land portion of the grid cell; report as "missing" or 0.0 where the
-  land fraction is 0;  </p>
-  </td>
- </tr>
- <tr style='height:44.25pt'>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt;
-  height:44.25pt'>
-  <p class=MsoNormal>3</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:44.25pt'>
-  <p class=MsoNormal align=center style='text-align:center'>atmosphere_boundary_layer_thickness</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:44.25pt'>
-  <p class=MsoNormal align=center style='text-align:center'>zmla</p>
-  </td>
-  <td width=65 style='width:48.75pt;border-top:none;border-left:none;
-  border-bottom:inset #111111 1.0pt;border-right:inset #111111 1.0pt;
-  padding:1.5pt 1.5pt 1.5pt 1.5pt;height:44.25pt'>
-  <p class=MsoNormal align=center style='text-align:center'>m</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:44.25pt'>
-  <p class=MsoNormal>As a function of longitude, latitude, and time, report the
-  height of the atmospheric boundary layer (if defined in model); No agreement
-  has been reached as to the precise definition of this quantity, so this field
-  may be of limited value.</p>
-  </td>
- </tr>
- <tr style='height:.75pt'>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt;
-  height:.75pt'>
-  <p class=MsoNormal>4</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:.75pt'>
-  <p class=MsoNormal align=center style='text-align:center'>root_depth</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:.75pt'>
-  <p class=MsoNormal align=center style='text-align:center'>rootd</p>
-  </td>
-  <td width=65 style='width:48.75pt;border-top:none;border-left:none;
-  border-bottom:inset #111111 1.0pt;border-right:inset #111111 1.0pt;
-  padding:1.5pt 1.5pt 1.5pt 1.5pt;height:.75pt'>
-  <p class=MsoNormal align=center style='text-align:center'>m</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:.75pt'>
-  <p class=MsoNormal>As a function of longitude and latitude, report the
-  maximum soil depth reachable by plant roots, i.e., the maximum soil depth
-  from which they can extract moisture (if defined in model); report as
-  "missing" or 0.0 where the land fraction is 0;  </p>
-  </td>
- </tr>
- <tr style='height:.75pt'>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt;
-  height:.75pt'>
-  <p class=MsoNormal>5</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:.75pt'>
-  <p class=MsoNormal align=center style='text-align:center'>air_temperature</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:.75pt'>
-  <p class=MsoNormal align=center style='text-align:center'>tasmin </p>
-  </td>
-  <td width=65 style='width:48.75pt;border-top:none;border-left:none;
-  border-bottom:inset #111111 1.0pt;border-right:inset #111111 1.0pt;
-  padding:1.5pt 1.5pt 1.5pt 1.5pt;height:.75pt'>
-  <p class=MsoNormal align=center style='text-align:center'>K </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:.75pt'>
-  <p class=MsoNormal>monthly mean of the daily-minimum near-surface (usually, 2
-  meter) air temperature.  Consistent with the CF-conventions, the
-  cell_methods attribute should specify "time: minimum within days time:
-  mean over days" (automatically done by CMOR);  The CMOR singleton
-  dimension default value of 2 m can be overridden, if absolutely necessary, by
-  redefining axis "height1".</p>
-  </td>
- </tr>
- <tr style='height:.75pt'>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt;
-  height:.75pt'>
-  <p class=MsoNormal>6</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:.75pt'>
-  <p class=MsoNormal align=center style='text-align:center'>air_temperature</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:.75pt'>
-  <p class=MsoNormal align=center style='text-align:center'>tasmax </p>
-  </td>
-  <td width=65 style='width:48.75pt;border-top:none;border-left:none;
-  border-bottom:inset #111111 1.0pt;border-right:inset #111111 1.0pt;
-  padding:1.5pt 1.5pt 1.5pt 1.5pt;height:.75pt'>
-  <p class=MsoNormal align=center style='text-align:center'>K </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:.75pt'>
-  <p class=MsoNormal>monthly mean of the daily-maximum near-surface (usually, 2
-  meter) air temperature.  Consistent with the CF-conventions, the
-  cell_methods attribute should specify "time: maximum within days time:
-  mean over days" (automatically done by CMOR);  The CMOR singleton
-  dimension default value of 2 m can be overridden, if absolutely necessary, by
-  redefining axis "height1".</p>
-  </td>
- </tr>
-</table>
-
-<div class=MsoNormal align=center style='text-align:center'>
-
-<hr size=2 width="100%" align=center>
-
-</div>
-
-<p> </p>
-
-<h2><a name="Coordinate_dimensions.">Coordinate dimensions.</a></h2>
-
-<p>In the tables given above, variables are a function of various coordinate
-variables, which are stored in the netCDF files with the following names and
-units:</p>
-
-<table class=MsoNormalTable border=1 cellspacing=0 cellpadding=0
- style='border-collapse:collapse;border:none'>
- <tr>
-  <td colspan=7 style='border:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p><b><i>Table of Coordinate Dimensions.</i></b></p>
-  </td>
- </tr>
- <tr>
-  <td style='border:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'><b> </b></p>
-  </td>
-  <td style='border:inset #111111 1.0pt;border-left:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'><b>CF standard_name
-  </b></p>
-  </td>
-  <td style='border:inset #111111 1.0pt;border-left:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'><b>output
-  coordinate variable name </b></p>
-  </td>
-  <td style='border:inset #111111 1.0pt;border-left:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'><b>CMOR table
-  "entry" I.D.</b></p>
-  </td>
-  <td style='border:inset #111111 1.0pt;border-left:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'><b>units</b></p>
-  </td>
-  <td style='border:inset #111111 1.0pt;border-left:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'><b>default value of
-  scalar dimension</b></p>
-  </td>
-  <td style='border:inset #111111 1.0pt;border-left:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'><b> notes </b></p>
-  </td>
- </tr>
- <tr>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>1 </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>longitude </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>lon</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>longitude</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>degrees_east</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'> </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal> </p>
-  </td>
- </tr>
- <tr>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>2 </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>latitude </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>lat </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>latitude</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>degrees_north</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'> </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal> </p>
-  </td>
- </tr>
- <tr>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>3 </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>time </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>time</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>time</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p>days_since_??</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'> </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal>where ?? should be specified in the form year-month-day
-  (e.g., days_since_1800-1-1).</p>
-  </td>
- </tr>
- <tr>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>4</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>time</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>time</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>time1</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>days_since_??</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'> </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal>used for 3-hourly "snapshot" fields in Table A3,
-  where the cell_bounds attribute should be omitted for the time dimension.</p>
-  </td>
- </tr>
- <tr>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>5</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>air_pressure</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>plev </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>pressure</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>Pa</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'> </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal>used for all fields that are a function of pressure except
-  those listed in the next 3 rows below.</p>
-  </td>
- </tr>
- <tr>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>6</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>air_pressure</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>plev</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>pressure1</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>Pa</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>20000.</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal>used by some near-tropopause radiation fluxes (Table A1a,
-  entries 33-36), and some radiative forcing fields (Table A5, entries 1-4)</p>
-  </td>
- </tr>
- <tr>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>7</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>air_pressure</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>plev</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>pressure2</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>Pa</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'> </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal>used by clisccp in Table A1d</p>
-  </td>
- </tr>
- <tr>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>8</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>air_pressure</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>plev</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>pressure3</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>Pa</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'> </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal>used by trsul in Table A1e</p>
-  </td>
- </tr>
- <tr>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>9</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>height</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>height </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>height1</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'> m</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>2.</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal>used by tas, huss, tasmin and tasmax in Tables A1a, A2a,
-  and A3.</p>
-  </td>
- </tr>
- <tr>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>10</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>height</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>height </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>height2</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>m</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>10.</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal>used by uas and vas in Tables A1a and A2a.</p>
-  </td>
- </tr>
- <tr>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>11</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>depth</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>depth</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>depth1</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>m </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>0.05</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal>used by mrsos in Table A1a; bounds for this scalar
-  dimension should be 0.0 and 0.1 m.</p>
-  </td>
- </tr>
- <tr>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>12</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>cloud_optical_depth</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>tau</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>tau</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>1</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'> </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal>used by clisccp in Table A1d</p>
-  </td>
- </tr>
- <tr>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>13</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>atmosphere_sigma_coordinate
-  </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>lev </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>standard_sigma</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>1 (dimensionless)</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'> </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal>one choice of dimensionless vertical coordinate needed for
-  cl field (cloud fraction).  The following parameters (specified by the
-  CF-standard) are also needed to fully describe this coordinate: ptop, sigma,
-  and ps.</p>
-  </td>
- </tr>
- <tr>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>14</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>atmosphere_hybrid_sigma_
-  pressure_coordinate</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>lev</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>standard_hybrid_sigma</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>1 (dimensionless)</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'> </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal>one choice of dimensionless vertical coordinate needed for
-  cl field (cloud fraction). The following parameters (specified by the
-  CF-standard) are also needed to fully describe this coordinate: p0, a, b, and
-  ps.</p>
-  </td>
- </tr>
- <tr>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>15</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>atmosphere_hybrid_sigma_
-  pressure_coordinate</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>lev</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>alternate_hybrid_sigma</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>1 (dimensionless)</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'> </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal>one choice of dimensionless vertical coordinate needed for
-  cl field (cloud fraction).  The following parameters (specified by the
-  CF-standard) are also needed to fully describe this coordinate: p0, ap, b,
-  and ps.</p>
-  </td>
- </tr>
- <tr>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>16</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>atmosphere_hybrid_</p>
-  <p class=MsoNormal align=center style='text-align:center'>height_coordinate</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>lev</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>hybrid_height</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>1</p>
-  <p class=MsoNormal align=center style='text-align:center'>(dimensionless)</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'> </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal>one choice of dimensionless vertical coordinate needed for
-  cl field (cloud fraction).� The following parameters (specified by the
-  CF-standard) are also needed to fully describe this coordinate: a, b, and
-  orog.</p>
-  </td>
- </tr>
- <tr>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>17</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>depth</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>depth</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>depth</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>m</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'> </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal>for some ocean fields</p>
-  </td>
- </tr>
- <tr>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>18</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'> </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>region</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>region</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>none</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'> </p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt'>
-  <p class=MsoNormal>this coordinate is a simple index.  A variable named
-  geo_region must also be stored with the four values:
-  "atlantic_ocean", "indian_ocean",
-  "pacific_ocean", and "global_ocean".</p>
-  </td>
- </tr>
-</table>
-
-<p> </p>
-
-<p> </p>
-
-<b><span style='font-size:18.0pt;font-family:"Times New Roman"'><br clear=all
-style='page-break-before:always'>
-</span></b>
-
-<h2><a name=Experiments>Experiments and time periods for which data should be
-submitted:</a></h2>
-
-<p>A figure summarizing the reporting periods is available at <a
-href="http://www-pcmdi.llnl.gov/ipcc/IPCC_output_requirements.htm">http://www-pcmdi.llnl.gov/ipcc/output_periods.pdf</a>,
-but more precise information is provided below. The following table indicates
-for each IPCC simulation the years for which output should be submitted to the
-PCMDI archive.  All time intervals should be interpreted as extending from
-the beginning of the first year indicated through the end of the last year
-indicated.  For example, years 1961-2000 means 0Z 1-1-2000 through 0Z 1-1-2001.</p>
-
-<table class=MsoNormalTable border=1 cellspacing=0 cellpadding=0
- style='border-collapse:collapse;border:none'>
- <tr style='page-break-inside:avoid;height:58.5pt'>
-  <td colspan=6 style='border:none;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:58.5pt'>
-  <p><b><i>Table of Experiments.</i></b></p>
-  </td>
- </tr>
- <tr style='page-break-inside:avoid;height:58.5pt'>
-  <td style='border:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;
-  height:58.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'><b> </b></p>
-  </td>
-  <td style='border:inset #111111 1.0pt;border-left:none;padding:1.5pt 1.5pt 1.5pt 1.5pt;
-  height:58.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'><b>Experiment Name</b></p>
-  </td>
-  <td style='border:inset #111111 1.0pt;border-left:none;padding:1.5pt 1.5pt 1.5pt 1.5pt;
-  height:58.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'><b>Monthly Data and
-  Yearly Data (Extreme Indices)  </b><span style='font-size:10.0pt'>(submit
-  for each member of ensemble)</span></p>
-  </td>
-  <td style='border:inset #111111 1.0pt;border-left:none;padding:1.5pt 1.5pt 1.5pt 1.5pt;
-  height:58.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'><b>Daily Data </b><span
-  style='font-size:10.0pt'>(temperature and precipitation data should be
-  submitted for each member of ensemble, but all other fields should be submitted
-  for only a single ensemble member)</span></p>
-  </td>
-  <td style='border:inset #111111 1.0pt;border-left:none;padding:1.5pt 1.5pt 1.5pt 1.5pt;
-  height:58.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'><b>3-Hourly Data </b><span
-  style='font-size:10.0pt'>(submit for a single ensemble member)</span></p>
-  </td>
-  <td style='border:inset #111111 1.0pt;border-left:none;padding:1.5pt 1.5pt 1.5pt 1.5pt;
-  height:58.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'><b> Notes </b></p>
-  </td>
- </tr>
- <tr style='page-break-inside:avoid;height:30.0pt'>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt;
-  height:30.0pt'>
-  <p class=MsoNormal align=center style='text-align:center'>1</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:30.0pt'>
-  <p class=MsoNormal>pre-industrial control experiment</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:30.0pt'>
-  <p class=MsoNormal align=center style='text-align:center'>> 100
-  years  (~500 years)</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:30.0pt'>
-  <p class=MsoNormal align=center style='text-align:center'>40 years that can
-  best be compared to years 1961-2000 (i.e., through the end of year 2000) of the
-  20C3M expt.</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:30.0pt'>
-  <p class=MsoNormal align=center style='text-align:center'>last year of
-  reported daily data (i.e., corresponding to year 2000 of the 20C3M expt.)</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:30.0pt'>
-  <p class=MsoNormal>control for experiments 3-7 and for some models also the
-  control for experiments 8-9.  There will be no anthropogenic or natural
-  forcing in this control.  The control experiment should be long enough
-  to extend to the furthest point in time reached by the end of the
-  perturbation experiments (which presumably branch from it).  Thus the
-  control should allow us to subtract any residual, unforced drift from all perturbation
-  simulations.</p>
-  </td>
- </tr>
- <tr style='page-break-inside:avoid;height:30.0pt'>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt;
-  height:30.0pt'>
-  <p class=MsoNormal align=center style='text-align:center'>2</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:30.0pt'>
-  <p class=MsoNormal>present-day control experiment</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:30.0pt'>
-  <p class=MsoNormal align=center style='text-align:center'>> 100
-  years  (~300 years)</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:30.0pt'>
-  <p class=MsoNormal align=center style='text-align:center'>last 20 years</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:30.0pt'>
-  <p class=MsoNormal align=center style='text-align:center'>last year</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:30.0pt'>
-  <p class=MsoNormal>for most models this experiment is not needed, but for
-  some it is the control for experiments 8-9.  There will be no natural
-  forcing and anthropogenic influences will be set at present-day level. 
-  The control experiment should be long enough to extend to the furthest point
-  in time reached by the end of the perturbation experiments (which branch from
-  it).  Thus the control should allow us to subtract any residual,
-  unforced drift from the perturbation simulations.</p>
-  </td>
- </tr>
- <tr style='page-break-inside:avoid;height:30.0pt'>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt;
-  height:30.0pt'>
-  <p class=MsoNormal align=center style='text-align:center'>3</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:30.0pt'>
-  <p class=MsoNormal>climate of the 20th Century experiment (20C3M)</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:30.0pt'>
-  <p class=MsoNormal align=center style='text-align:center'>~1850 - present</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:30.0pt'>
-  <p class=MsoNormal align=center style='text-align:center'>1961 - 2000 (i.e.,
-  through the end of year 2000)</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:30.0pt'>
-  <p class=MsoNormal align=center style='text-align:center'>1991-2000 (i.e.,
-  through the end of year 2000)</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:30.0pt'>
-  <p class=MsoNormal>should initialize from a point early enough in the
-  pre-industrial control run to ensure that the end of all the perturbed runs
-  branching from the end of this 20C3M run end before the end of the
-  control.  This will enable us to subtract any residual drift in the
-  control from all runs that will be compared to it.</p>
-  </td>
- </tr>
- <tr style='page-break-inside:avoid;height:30.0pt'>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt;
-  height:30.0pt'>
-  <p class=MsoNormal align=center style='text-align:center'>4</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:30.0pt'>
-  <p class=MsoNormal>committed climate change experiment</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:30.0pt'>
-  <p class=MsoNormal align=center style='text-align:center'>present - 2100</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:30.0pt'>
-  <p class=MsoNormal align=center style='text-align:center'>2046-2065, 2081 -
-  2100</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:30.0pt'>
-  <p class=MsoNormal align=center style='text-align:center'>2050, 2100</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:30.0pt'>
-  <p class=MsoNormal>should take the end of the 20C3M run as its initial
-  condition.</p>
-  </td>
- </tr>
- <tr style='page-break-inside:avoid;height:30.0pt'>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt;
-  height:30.0pt'>
-  <p class=MsoNormal align=center style='text-align:center'>5</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:30.0pt'>
-  <p class=MsoNormal>SRES A2 experiment</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:30.0pt'>
-  <p class=MsoNormal align=center style='text-align:center'>present - 2100</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:30.0pt'>
-  <p class=MsoNormal align=center style='text-align:center'>2046 - 2065, 2081 -
-  2100</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:30.0pt'>
-  <p class=MsoNormal align=center style='text-align:center'>2050, 2100</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:30.0pt'>
-  <p class=MsoNormal>should take the end of the 20C3M run as its initial
-  condition.</p>
-  </td>
- </tr>
- <tr style='page-break-inside:avoid;height:44.25pt'>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt;
-  height:44.25pt'>
-  <p class=MsoNormal align=center style='text-align:center'>6</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:44.25pt'>
-  <p class=MsoNormal>720 ppm stabilization experiment (SRES A1B)</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:44.25pt'>
-  <p class=MsoNormal align=center style='text-align:center'>present - 2300
-  (present - 2200)</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:44.25pt'>
-  <p class=MsoNormal align=center style='text-align:center'>2046 - 2065,
-  2081-2100, 2181-2200, 2281-2300</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:44.25pt'>
-  <p class=MsoNormal align=center style='text-align:center'>2050, 2100, 2150,
-  2200, 2300</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:44.25pt'>
-  <p class=MsoNormal>Impose SRES A1B conditions and initialize with conditions
-  from the end of the 20C3M simulation and run to 2100, after which hold
-  concentrations fixed and continue run to 2200.  One member of the
-  ensemble should be extended for an additional 100 years (to 2300), continuing
-  to hold concentrations fixed.</p>
-  </td>
- </tr>
- <tr style='page-break-inside:avoid;height:44.25pt'>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt;
-  height:44.25pt'>
-  <p class=MsoNormal align=center style='text-align:center'>7</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:44.25pt'>
-  <p class=MsoNormal>550 ppm stabilization experiment (SRES B1)</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:44.25pt'>
-  <p class=MsoNormal align=center style='text-align:center'>present - 2300
-  (present - 2200)</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:44.25pt'>
-  <p class=MsoNormal align=center style='text-align:center'>2046 - 2065,
-  2081-2100, 2181-2200, 2281-2300</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:44.25pt'>
-  <p class=MsoNormal align=center style='text-align:center'>2050, 2100, 2150,
-  2200, 2300</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:44.25pt'>
-  <p class=MsoNormal>Impose SRES B1 conditions and initialize with conditions
-  from the end of the 20C3M simulation and run to 2100, after which hold
-  concentrations fixed and continue run to 2200.  One member of the
-  ensemble should be extended for an additional 100 years (to 2300), continuing
-  to hold concentrations fixed.</p>
-  </td>
- </tr>
- <tr style='page-break-inside:avoid;height:44.25pt'>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt;
-  height:44.25pt'>
-  <p class=MsoNormal align=center style='text-align:center'>8</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:44.25pt'>
-  <p class=MsoNormal>1%/year CO2 increase experiment (to doubling)</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:44.25pt'>
-  <p class=MsoNormal align=center style='text-align:center'>~70 years to
-  doubling + an additional 150 years</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:44.25pt'>
-  <p class=MsoNormal align=center style='text-align:center'>20 years centered
-  on time of doubling + last 20 years</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:44.25pt'>
-  <p class=MsoNormal align=center style='text-align:center'>at doubling and 150
-  years after doubling</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:44.25pt'>
-  <p class=MsoNormal>Hold CO2 fixed after reaching doubled concentration. 
-  This run should be initialized from a point either within a present-day
-  control run or a pre-industrial control run.  Make sure that the initial
-  time is early enough in the control run to subtract out any residual
-  (unforced) drift that might occur over the 220 years of this experiment.</p>
-  </td>
- </tr>
- <tr style='page-break-inside:avoid;height:44.25pt'>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt;
-  height:44.25pt'>
-  <p class=MsoNormal align=center style='text-align:center'>9</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:44.25pt'>
-  <p class=MsoNormal>1%/year CO2 increase experiment (to quadrupling)</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:44.25pt'>
-  <p class=MsoNormal align=center style='text-align:center'>~140 years to
-  quadrupling + an additional 150 years</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:44.25pt'>
-  <p class=MsoNormal align=center style='text-align:center'>20 years centered
-  on time of quadrupling + last 20 years</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:44.25pt'>
-  <p class=MsoNormal align=center style='text-align:center'>at quadrupling and
-  150 years after quadrupling</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:44.25pt'>
-  <p class=MsoNormal>Hold CO2 fixed after reaching quadrupled concentration. 
-  This run should be initialized from a point either within a pre-industrial
-  control run or a present-day control run.  Make sure that the initial
-  time is early enough in the control run to subtract out any residual
-  (unforced) drift that might occur over the 290 years of this experiment.</p>
-  </td>
- </tr>
- <tr style='page-break-inside:avoid;height:25.5pt'>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt;
-  height:25.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>10</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:25.5pt'>
-  <p class=MsoNormal>slab ocean control experiment</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:25.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>~100 years??</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:25.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>last 20 years</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:25.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>last year</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:25.5pt'>
-  <p class=MsoNormal>slab ocean control for experiment 11.  Be sure to run
-  long enough to reach a true equilibrium state and to produce stable
-  statistics (at least 20 years beyond equilibrium).</p>
-  </td>
- </tr>
- <tr style='page-break-inside:avoid;height:30.0pt'>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt;
-  height:30.0pt'>
-  <p class=MsoNormal align=center style='text-align:center'>11</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:30.0pt'>
-  <p class=MsoNormal>2xCO2 equilibrium experiment</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:30.0pt'>
-  <p class=MsoNormal align=center style='text-align:center'>~100 years??</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:30.0pt'>
-  <p class=MsoNormal align=center style='text-align:center'>last 20 years</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:30.0pt'>
-  <p class=MsoNormal align=center style='text-align:center'>last year</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:30.0pt'>
-  <p class=MsoNormal>slab ocean experiment with an instantaneous
-  doubling.  There is interest in the transient response to the
-  instantaneous doubling, so please report all years and be sure to run long
-  enough to reach a true equilibrium state and to produce stable statistics (at
-  least 20 years beyond equilibrium).</p>
-  </td>
- </tr>
- <tr style='page-break-inside:avoid;height:25.5pt'>
-  <td style='border:inset #111111 1.0pt;border-top:none;padding:1.5pt 1.5pt 1.5pt 1.5pt;
-  height:25.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>12</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:25.5pt'>
-  <p class=MsoNormal>AMIP simulation</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:25.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>1979 - present</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:25.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>all years</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:25.5pt'>
-  <p class=MsoNormal align=center style='text-align:center'>2000</p>
-  </td>
-  <td style='border-top:none;border-left:none;border-bottom:inset #111111 1.0pt;
-  border-right:inset #111111 1.0pt;padding:1.5pt 1.5pt 1.5pt 1.5pt;height:25.5pt'>
-  <p class=MsoNormal>atmospheric component should be identical to that used in
-  the above experiments</p>
-  </td>
- </tr>
-</table>
-
-<p> </p>
-
-</div>
-
-</body>
-
-</html>
diff --git a/Doc/standard_output.pdf b/Doc/standard_output.pdf
deleted file mode 100644
index 31d4f09..0000000
Binary files a/Doc/standard_output.pdf and /dev/null differ
diff --git a/Doc/standard_output_updates.htm b/Doc/standard_output_updates.htm
deleted file mode 100644
index e8f6e11..0000000
--- a/Doc/standard_output_updates.htm
+++ /dev/null
@@ -1,256 +0,0 @@
-<html>
-
-<head>
-<meta http-equiv="Content-Language" content="en-us">
-<meta name="GENERATOR" content="Microsoft FrontPage 5.0">
-<meta name="ProgId" content="FrontPage.Editor.Document">
-<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
-<title>History of Changes Made to IPCC Standard Output</title>
-<style>
-<!--
- li.MsoNormal
-	{mso-style-parent:"";
-	margin-bottom:.0001pt;
-	font-size:12.0pt;
-	font-family:"Times New Roman";
-	margin-left:0in; margin-right:0in; margin-top:0in}
- table.MsoNormalTable
-	{mso-style-parent:"";
-	font-size:10.0pt;
-	font-family:"Times New Roman"}
--->
-</style>
-</head>
-
-<body>
-
-<p align="center"><b><font size="4">History of Changes Made to IPCC Standard 
-Output</font></b></p>
-<p align="left"><b>16 October 2007:</b></p>
-<ol>
-  <li>
-<p align="left">Corrected notes for entry 44 in table A1a (clivi) to indicate that
- only the solid-phase water (not the liquid or vapor)should be considered in 
-calculating the atmosphere cloud ice content. </p>
-  </li>
-</ol>
-<p align="left"><b>15 September 2005:</b></p>
-<ol>
-  <li>
-<p align="left">Added accommodation for the hybrid height coordinate, which 
-appears in the Hadley Centre models.  Also included depth coordinate for 
-ocean fields, which had been previously inadvertently omitted.</p>
-  </li>
-</ol>
-<p align="left"><b>7 December 2004:</b></p>
-<ol>
-  <li>
-<p align="left">Added the following clarification for the 
-global_average_thermosteric_sea_level_change: "<span style="font-size: 12.0pt; font-family: Times New Roman">In 
-a rigid-lid model this quantity can be calculated by using a reference 3D 
-salinity field to compute density as the 3D temperature field evolves."</span></p>
-  </li>
-  <li>
-<p align="left"><span style="font-family: Times New Roman">Added a 
-recommendation that daily mean data be computed for intervals beginning at 
-midnight, i.e., 0 Z (UTC), and ending the following midnight at 0 Z.</span></p>
-  </li>
-</ol>
-<p align="left"><b>22 November 2004:</b></p>
-<ol>
-  <li>
-<p align="left">Replace occurrences of zostogm with zostoga and zosgm with zosga.</p>
-  </li>
-</ol>
-<p align="left"><b>17 November 2004:</b></p>
-<ol>
-  <li>
-<p align="left">Clarified how zos should be computed.</p>
-  </li>
-  <li>
-<p align="left">Added zostoga and zosga to list of high priority output 
-variables (Table 
-O1c).</p>
-  </li>
-  <li>
-<p align="left">Added to Table O1d the "qflux" as a high priority 
-field for slab ocean experiments.</p>
-  </li>
-  <li>
-<p align="left">Added monthly-mean tasmin and tasmax to Table A1f.</p>
-  </li>
-  <li>
-<p align="left">For mrfso, indicated explicitly in the comment column that it 
-was frozen water only that should be considered.</p>
-  </li>
-  <li>
-<p align="left">Expanded descriptions of clwvi and clivi.</p>
-  </li>
-  <li>
-<p align="left">Indicated that ISSCP simulator output should be generated from 
-data sampled no less frequently than every 15 hours.</p>
-  </li>
-  <li>
-<p align="left">Noted that htovgyre and htovovrt should exlcude 'bolus velocity' 
-contributions from the Gent-McWilliams parameterization; further noted that 
-htovdiff and
-hfogo should include any 'bolus velocity' contribution.</p>
-  </li>
-  <li>
-<p align="left">Specified that in calculating wfo, zos, and zobt, only the ocean portion of 
-each grid cell should be considered.</p>
-  </li>
-  <li>
-<p align="left">Changed 'atmospheric_boundary_layer_thickness' to 'atmosphere_boundary_layer_thickness'.</p>
-  </li>
-  <li>
-<p align="left">We now request that in identifying forcing agents (table A5) the 
-term that is "most specific", not "most general" should be used (e.g., if the only anthropogenic effect included in the 
-model simulation is an increase in carbon dioxide, use "co2", not "a" or "g").  </p>
-  </li>
-  <li>
-<p align="left">Corrected the cell_methods attribute associated with the 
-time-dimension for daily maximum and minimum surface air temperature.</p>
-  </li>
-</ol>
-<p align="left"><b>30 September 2004:</b></p>
-<ol>
-  <li>
-<p align="left">Corrected length of first ensemble member requested for the 550 
-ppm stabilization experiment (SRES B1): changed last year from 2200 to 2300.</p>
-  </li>
-  <li>
-<p align="left">Added 20 year interval to the daily data requested for each of 
-the 1%/yr CO2 experiments: 20 years centered on time of doubling for doubling 
-experiment. and 20 years centered on time of quadrupling for the quadrupling 
-experiment.</p>
-  </li>
-  <li>
-<p align="left">Included a table of contents with links to sections of the 
-document.</p>
-  </li>
-</ol>
-<p align="left"><b>15 September 2004:</b></p>
-<ol>
-  <li>
-<p align="left">Noted that 3-hourly precipitation data should be averaged over 
-the intervals 0-3Z, 3-6Z, ... 21-24Z, whereas the "snapshots" should be sampled 
-at 0, 3, 6, ... 21Z.</p>
-  </li>
-  <li>
-<p align="left">Noted that stfmmc should exclude 'bolus velocity' contribution 
-from the Gent-McWilliams parameterization.</p>
-  </li>
-  <li>Clarified that all time intervals in the last table of experiments should 
-  be interpreted as extending from the beginning of the first year indicated 
-  through the end of the last year indicated.  For example, years 1961-2000 
-  means 0Z 1-1-2000 through 0Z 1-1-2001.</li>
-  <li>Added a row to the coordinate dimension table for 'time1' which is needed 
-  in the 3-hourly table (A3) to define the time axis for "snapshot" (rather than 
-  time-mean) data (i.e., all but the precipitation field in this table).</li>
-</ol>
-<p align="left"><b>3 September 2004:</b></p>
-<p align="left">Revised web links to be consistent with new PCMDI web site.</p>
-<p align="left"><b>25 August 2004:</b></p>
-<ol>
-  <li>
-<p align="left">Clarified in the last table that yearly data (i.e., extreme 
-indices) should be submitted for the same years as the monthly data.</p>
-  </li>
-</ol>
-<p align="left"><b>2 August 2004:</b></p>
-<ol>
-  <li>
-<p align="left">Changed period for which 3-hourly data should be reported in the 
-"pre-industrial control experiment" from "last year" to "last year of reported 
-daily data (i.e., corresponding to year 2000 of the 20C3M expt.)".</p>
-  </li>
-  <li>
-<p align="left">Modified description of a few fields to make them clearer.</p>
-  </li>
-</ol>
-<p align="left"><b>20 July 2004:</b></p>
-<ol>
-  <li>
-<p align="left">Changed years requested for the committed climate change 
-experiment from tables A2a,b to be consistent with other experiments (i.e., 
-2046-2065, not 2031-2050).</p>
-  </li>
-</ol>
-<p align="left"><b>19 July 2004:</b></p>
-<ol>
-  <li>
-<p align="left">Changed one of the experiment names in the last table of the 
-document: 'climate of the 20<sup>th</sup> Century (20C3M)' was changed to 
-'climate of the 20<sup>th</sup> Century experiment (20C3M)'.</p>
-  </li>
-</ol>
-<p align="left"><b>14 July 2004:</b></p>
-<ol>
-  <li>
-<p align="left">Added table of experiments and years of requested data.</p>
-  </li>
-  <li>
-<p align="left">Moved dimension table to near the end of the document.</p>
-  </li>
-  <li>
-<p align="left">Noted that "flux-correction" fields need to be reported only for 
-a single year, assuming it applies to all experiments.</p>
-  </li>
-  <li>
-<p align="left">Noted that disk space constraints will likely limit quick access 
-to monthly-mean 3-d ocean output to a single member of each ensemble.</p>
-  </li>
-  <li>
-<p align="left">Noted that daily data should only be reported for a single 
-member of each ensemble, except for the surface air temperature (mean, max. and 
-min.) and precipitation, which should be reported for all members.</p>
-  </li>
-</ol>
-<p><b>5 July 2004:</b></p>
-<ol>
-  <li>The requested fields listed under  
-  "Highest priority output fields" were not changed, but some of the 
-  information given there was modified.</li>
-  <li>The "PCMDI names" are now identified as "output variable names", because 
-  these are the variable names that should appear in the netCDF files.  
-  These also serve as unique reference names for CMOR.  Several names were 
-  changed in this version to make them consistent with the existing CMIP data 
-  base: ssh ==> zos, sst ==> tos, siu==>usi, siv==>vsi, prme==>wfo, sftbaro==>stfbarot, 
-  topot==>thetao, and rhopot==>rhopoto</li>
-  <li>The following units were changed:  for ocean meridional overturning 
-  stream function, kg<sup>3</sup> s<sup>-1</sup>  ==> m<sup>3</sup>  s<sup>-1</sup>.  
-  for ocean barotropic stream function, kg<sup>3</sup> s<sup>-1</sup>  ==> m<sup>3</sup>  s<sup>-1</sup>.  For several variables, percent ==> % (nb. CMOR will accept "percent" as an 
-  alias for "%", but the netCDF file will show "%").</li>
-  <li>A few corrections were made to the "standard_names"</li>
-  <li>The "source" column in the tables was replaced by a "notes" column 
-  providing explanatory information.  These notes should be studied 
-  carefully to ensure conformance with IPCC requirements.</li>
-  <li>Dimensionless units are now expressed simply as a numeric factor (e.g.,  
-  '1' or '1e-3') or as '%', but not as a dimensionless ratio (e.g.,  
-  'kg/kg').</li>
-  <li>Tables were constructed and detailed information was provided (for the 
-  first time) for the "Lower priority fields" (previously identified as 
-  "optional")..</li>
-  <li>The following lower priority fields were eliminated: sea surface salinity 
-  (already collected as part of the 3-d salinity field), the vertical and 
-  horizontal components of temperature and salinity fluxes as a function of 
-  longitude, latitude, model layer, and month (this was the only field requested 
-  on model levels and is difficult to treat uniformly; interpolating to depth 
-  levels would make it impossible to treat precisely and might not be any better 
-  an approximation than multiplying velocity times salinity or temperature, 
-  which is possible from fields collected as high priority), temperature on all sea 
-  ice model levels (too difficult to uniformly treat sea ice models with 
-  different vertical coordinates, and although this field would be useful for 
-  energy budget studies, other terms in the budget are not being collected), 
-  surface snow thickness (already collected as high priority field),  "tendency of sea ice thickness due to thermodynamics" 
-  (of little value without all the other terms needed to balance the sea ice 
-  equation), and certain land surface fields, including total 
-  heat storage, albedo, soil types, vegetation fraction etc (difficult to 
-  define uniformly across models).</li>
-  <li>A table with dimension information was added.</li>
-</ol>
-
-</body>
-
-</html>
diff --git a/INSTALL b/INSTALL
index 8c659c4..7b966a3 100644
--- a/INSTALL
+++ b/INSTALL
@@ -1,6 +1,6 @@
 INSTALLATION INSTRUCTIONS  
 ------------------------- 
-Climate Model Output Rewriter (CMOR) version 2.0 installation instructions.
+Climate Model Output Rewriter (CMOR) version 3.1.0 installation instructions.
 
  
 DOWNLOAD 
@@ -13,7 +13,7 @@ cd CMOR
 
 INSTALLATION
 ------------ 
-CMOR 2 requires external packages that need to be installed first. 
+CMOR 3.1.0 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! 
@@ -60,7 +60,7 @@ FIRST:
          reasonable answers.
 
 
-SECOND: Install CMOR (version 2) library
+SECOND: Install CMOR (version 3) library
         run the configuration script, build and install
 
         ./configure --prefix=/path/to/where/you/want/cmor --with-netcdf=/path/to/NetCDF4 --with-udunits2=/path/to/udunits2
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..dce58dd
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,66 @@
+CCLRC License for CCLRC Software forming part of the Climate Model Output 
+Rewriter Tools Package.
+
+The Council for the Central Laboratory of the Research Councils (CCLRC)
+grants any person who obtains a copy of this software (the Software),
+free of charge, the non-exclusive, worldwide right to use, copy, modify,
+distribute and sub-license the use of the Software on the terms and
+conditions appearing below:
+
+1)The Software may be used only as part of the Climate Data Analysis
+Tools Package, made available to users free of charge.
+
+2)The CCLRC copyright notice and any other notice placed by CCLRC on the
+Software must be reproduced on every copy of the Software, and on every
+Derived Work. A Derived Work means any modification of, or enhancement
+or improvement to, any of the Software, and any software or other work
+developed or derived from any of the Software.
+
+3)CCLRC gives no warranty and makes no representation in relation to
+the Software. The Licensee and anyone to whom the Licensee makes the
+Software or any Derived Work available, use the Software at their own
+risk.
+
+4)All warranties, conditions, terms, undertakings and obligations on the
+part of CCLRC, implied by statute, common law, custom, trade usage,
+course of dealing or in any other way are excluded to the fullest extent
+permitted by law.
+
+5)Subject to condition 6, CCLRC will not be liable for:
+  a)any loss of profits, loss of revenue, loss or corruption
+    of data, loss of contracts or opportunity, loss of savings or third
+    party claims (in each case whether direct or indirect);
+  b)any indirect loss or damage arising out of or in
+    connection with the Software;
+  c)any direct loss or damage arising out of, or in connection
+    with, the Software in each case, whether that loss arises as a result of
+    CCLRC's negligence, or in any other way, even if CCLRC has been
+    advised of the possibility of that loss arising, or if it was within
+    CCLRC's contemplation.
+
+6)None of these conditions limits or excludes CCLRC's liability for
+death or personal injury caused by its negligence or for any fraud, or
+for any sort of liability that, by law, cannot be limited or excluded.
+
+7)These conditions set out the entire agreement relating to the
+Software. The licensee acknowledges that it has not relied on any
+warranty, representation, statement, agreement or undertaking given by
+CCLRC, and waives any claim in respect of any of the same.
+
+8)The rights granted above will cease immediately on any breach of these
+conditions and the licensee will destroy all copies of the Software and
+any Derived Work in its control or possession. Conditions 3, 4, 5, 6, 7,
+8, 9 and 10 will survive termination and continue indefinitely.
+
+9)The licence and these conditions are governed by, and are to be
+construed in accordance with, English law. The English Courts will have
+exclusive jurisdiction to deal with any dispute which has arisen or may
+arise out of or in connection with the Software, the rights granted and
+these conditions, except that CCLRC may bring proceedings for an
+injunction in any jurisdiction.
+
+10)If the whole or any part of these conditions are void or
+unenforceable in any jurisdiction, the other provisions, and the rest of
+the void or unenforceable provision, will continue in force in that
+jurisdiction, and the validity and enforceability of that provision in
+any other jurisdiction will not be affected.
diff --git a/Lib/CV_experiments.json b/Lib/CV_experiments.json
new file mode 100644
index 0000000..65d70c3
--- /dev/null
+++ b/Lib/CV_experiments.json
@@ -0,0 +1,2224 @@
+{
+    "experiment_ids": { 
+
+        "hist-piNTCF": {
+                               "experiment":                "historical forcing, but with pre-industrial NTCF emissions",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "AerChemMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM AER CHEM",
+                               "additional_source_type":    ""
+
+                          },
+
+        "hist-piAer": {
+                               "experiment":                "historical forcing, but with pre-industrial aerosol emissions",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "AerChemMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM AER",
+                               "additional_source_type":    "CHEM"
+
+                          },
+
+        "hist-1950HC": {
+                               "experiment":                "historical forcing, but with1950s halocarbon concentrations; initialized in 1950",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "AerChemMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM AER CHEM",
+                               "additional_source_type":    ""
+
+                          },
+
+        "histSST": {
+                               "experiment":                "historical prescribed SSTs and historical forcing",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "AerChemMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM AER",
+                               "additional_source_type":    "CHEM"
+
+                          },
+
+        "histSST-piNTCF": {
+                               "experiment":                "historical SSTs and historical forcing, but with pre-industrial NTCF emissions",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "AerChemMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM AER CHEM",
+                               "additional_source_type":    ""
+
+                          },
+
+        "histSST-piAer": {
+                               "experiment":                "historical SSTs and historical forcing, but with pre-industrial aerosol emissions",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "AerChemMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM AER",
+                               "additional_source_type":    "CHEM"
+
+                          },
+
+        "histSST-piO3": {
+                               "experiment":                "historical SSTs and historical forcing, but with pre-industrial ozone precursor emissions",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "AerChemMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM AER CHEM",
+                               "additional_source_type":    ""
+
+                          },
+
+        "histSST-1950HC": {
+                               "experiment":                "historical SSTs and historical forcing, but with1950 halocarbon concentrations",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "AerChemMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM AER CHEM",
+                               "additional_source_type":    ""
+
+                          },
+
+        "histSST-piCH4": {
+                               "experiment":                "historical SSTs and historical forcing, but with pre-industrial methane concentrations",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "AerChemMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM AER CHEM",
+                               "additional_source_type":    ""
+
+                          },
+
+        "histSST-piN2O": {
+                               "experiment":                "historical SSTs and historical forcings, but with pre-industrial N2O concentrations",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "AerChemMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM AER CHEM",
+                               "additional_source_type":    ""
+
+                          },
+
+        "ssp370": {
+                               "experiment":                "Gap-filling scenario reaching 7.0 based on SSP3",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "ScenarioMIP, AerChemMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM AER",
+                               "additional_source_type":    "CHEM"
+
+                          },
+
+        "ssp370-lowNTCF": {
+                               "experiment":                "SSP3-7.0, with low NTCF emissions",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "AerChemMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM AER",
+                               "additional_source_type":    "CHEM"
+
+                          },
+
+        "ssp370SST": {
+                               "experiment":                "SSP3-7.0, with  SSTs prescribed from ssp370",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "AerChemMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM AER",
+                               "additional_source_type":    "CHEM"
+
+                          },
+
+        "ssp370SST-lowNTCF": {
+                               "experiment":                "SSP3-7.0, prescribed SSTs, with low NTCF emissions",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "AerChemMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM AER CHEM",
+                               "additional_source_type":    ""
+
+                          },
+
+        "ssp370SST-lowAer": {
+                               "experiment":                "SSP3-7.0, prescribed SSTs, with low aerosol emissions",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "AerChemMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM AER",
+                               "additional_source_type":    "CHEM"
+
+                          },
+
+        "ssp370SST-lowBC": {
+                               "experiment":                "SSP3-7.0, prescribed SSTs, with low black carbon emissions",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "AerChemMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM AER",
+                               "additional_source_type":    "CHEM"
+
+                          },
+
+        "ssp370SST-lowO3": {
+                               "experiment":                "SSP3-7.0, prescribed SSTs, with low ozone precursor emissions",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "AerChemMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM AER CHEM",
+                               "additional_source_type":    ""
+
+                          },
+
+        "ssp370SST-lowCH4": {
+                               "experiment":                "SSP3-7.0, prescribed SSTs, with low methane concentrations",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "AerChemMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM AER CHEM",
+                               "additional_source_type":    ""
+
+                          },
+
+        "ssp370SST-lowLu": {
+                               "experiment":                "SSP3-7.0, prescribed SSTs, with low land-use change",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "AerChemMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM AER",
+                               "additional_source_type":    "CHEM"
+
+                          },
+
+        "piClim-control": {
+                               "experiment":                "pre-industrial with prescribed climatological SSTs",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "RFMIP, AerChemMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM AER",
+                               "additional_source_type":    "CHEM"
+
+                          },
+
+        "piClim-NTCF": {
+                               "experiment":                "pre-industrial climatolgical SSTs and forcing, but with 2014 NTCF emissions",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "AerChemMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM AER CHEM",
+                               "additional_source_type":    ""
+
+                          },
+
+        "piClim-aer": {
+                               "experiment":                "pre-industrial climatological SSTs and forcing, but 2014 aerosol emissions",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "AerChemMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM AER",
+                               "additional_source_type":    "CHEM"
+
+                          },
+
+        "piClim-BC": {
+                               "experiment":                "pre-industrial climatological SSTs and forcing, but with 2014 black carbon emissions",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "AerChemMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM AER",
+                               "additional_source_type":    "CHEM"
+
+                          },
+
+        "piClim-O3": {
+                               "experiment":                "pre-industrial climatological SSTs and forcing, but with 2014 ozone precursor emissions",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "AerChemMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM AER CHEM",
+                               "additional_source_type":    ""
+
+                          },
+
+        "piClim-CH4": {
+                               "experiment":                "pre-industrial climatological SSTs and forcing, but with 2014 methane concentrations (including chemistry)",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "AerChemMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM AER CHEM",
+                               "additional_source_type":    ""
+
+                          },
+
+        "piClim-N2O": {
+                               "experiment":                "pre-industrial climatological SSTs and forcing, but with 2014 N2O concentrations (including chemistry)",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "AerChemMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM AER CHEM",
+                               "additional_source_type":    ""
+
+                          },
+
+        "piClim-HC": {
+                               "experiment":                "pre-industrial climatological SSTs and forcing, but with 2014 halocarbon concentrations (including chemistry)",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "AerChemMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM AER CHEM",
+                               "additional_source_type":    ""
+
+                          },
+
+        "piClim-NOX": {
+                               "experiment":                "pre-industrial climatological SSTs and forcing, but with 2014 NOx emissions",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "AerChemMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM AER CHEM",
+                               "additional_source_type":    ""
+
+                          },
+
+        "piClim-VOC": {
+                               "experiment":                "pre-industrial climatological SSTs and forcing, but with 2014 VOC emissions",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "AerChemMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM AER CHEM",
+                               "additional_source_type":    ""
+
+                          },
+
+        "piClim-2xdust": {
+                               "experiment":                "pre-industrial climatological SSTs and forcing, but with doubled emissions of dust",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "AerChemMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM AER",
+                               "additional_source_type":    "CHEM"
+
+                          },
+
+        "piClim-2xss": {
+                               "experiment":                "pre-industrial climatological SSTs and forcing, but with doubled emissions of sea salt",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "AerChemMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM AER",
+                               "additional_source_type":    "CHEM"
+
+                          },
+
+        "piClim-2xDMS": {
+                               "experiment":                "pre-industrial climatological SSTs and forcing, but with doubled emissions of DMS",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "AerChemMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM AER",
+                               "additional_source_type":    "CHEM"
+
+                          },
+
+        "piClim-2xfire": {
+                               "experiment":                "pre-industrial climatological SSTs and forcing, but with doubled emissions from fires",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "AerChemMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM AER",
+                               "additional_source_type":    "CHEM"
+
+                          },
+
+        "piClim-2xNOX": {
+                               "experiment":                "pre-industrial climatological SSTs and forcing, but with doubled production of NOX due to lightning",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "AerChemMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM AER CHEM",
+                               "additional_source_type":    ""
+
+                          },
+
+        "piClim-2xVOC": {
+                               "experiment":                "pre-industrial climatological SSTs and forcing, but with doubled emissions of biogenic VOCs",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "AerChemMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM AER CHEM",
+                               "additional_source_type":    ""
+
+                          },
+
+        "1pctCO2-bgc": {
+                               "experiment":                "biogeochemically-coupled version of 1 percent per year increasing CO2 experiment",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "C4MIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM BGM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "1pctCO2Ndep": {
+                               "experiment":                "1 percent per year increasing CO2 experient with increasing N-deposition",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "C4MIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM BGM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "1pctCO2Ndep-bgc": {
+                               "experiment":                "biogeochemically-coupled version of 1 percent per year increasing CO2 experiment with increasing N-deposition",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "C4MIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM BGM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "1pctCO2-rad": {
+                               "experiment":                "radiatively-coupled version of 1 percent per year increasing CO2 experiment",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "C4MIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM BGM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "hist-bgc": {
+                               "experiment":                "biogeochemically-coupled version of the simulation of the recent past with CO2 concentration prescribed ",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "C4MIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM BGM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "esm-ssp585": {
+                               "experiment":                "update of emission-driven RCP8.5 based on SSP5",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "C4MIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "ESM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "ssp585-bgc": {
+                               "experiment":                "biogeochemically-coupled version of the updated emission-driven RCP8.5 based on SSP5",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "C4MIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "ESM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "abrupt-0p5xCO2": {
+                               "experiment":                "",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "CFMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER BGM"
+
+                          },
+
+        "abrupt-2xCO2": {
+                               "experiment":                "",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "CFMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "abrupt-solm4p": {
+                               "experiment":                "",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "CFMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "abrupt-solp4p": {
+                               "experiment":                "",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "CFMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "amip-p4K": {
+                               "experiment":                "AMIP plus 4K SSTs",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "CFMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "amip-4xCO2": {
+                               "experiment":                "control SSTs with 4xCO2",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "CFMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "amip-pat4K": {
+                               "experiment":                "AMIP plus warming pattern SSTs",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "CFMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "amip-m4K": {
+                               "experiment":                "AMIP minus 4K SSTs",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "CFMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "amip-piForcing": {
+                               "experiment":                "AMIP SSTs with control forcing",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "CFMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "amipFuture-4xCO2-all": {
+                               "experiment":                "AMIP plus warming pattern SSTs with 4xCO2",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "CFMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "aqua-p4K": {
+                               "experiment":                "aquaplanet plus 4K SSTs",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "CFMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "aqua-4xCO2": {
+                               "experiment":                "aquaplanet with 4xCO2",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "CFMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "aqua-control": {
+                               "experiment":                "Aquaplanet control",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "CFMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "amip-lwoff": {
+                               "experiment":                "AMIP SSTs with longwave cloud-radiative effects off",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "CFMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "amip-p4K-lwoff": {
+                               "experiment":                "AMIP plus 4K SSTs with longwave cloud radiative effects off",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "CFMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "aqua-p4K-lwoff": {
+                               "experiment":                "aquaplanet plus 4K SSTs with longwave cloud radiative effects off",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "CFMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "aqua-control-lwoff": {
+                               "experiment":                "aquaplanet with longwave cloud radiative effects off",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "CFMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "piSST-control": {
+                               "experiment":                "control SSTs",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "CFMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "piSST-pxK": {
+                               "experiment":                "control plus scaled warming pattern",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "CFMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "piSST-4xCO2-rad": {
+                               "experiment":                "control SSTs with radiation-only seeing 4xCO2",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "CFMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "piSST-4xCO2-all": {
+                               "experiment":                "control SSTs with 4xCO2",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "CFMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "futureSST": {
+                               "experiment":                "control plus warming pattern SSTs ",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "CFMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "futureSST-4xCO2-all": {
+                               "experiment":                "control plus warming pattern SSTs with 4xCO2",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "CFMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM",
+                               "additional_source_type":    "CHEM AER BGM"
+
+                          },
+
+        "1pctCO2": {
+                               "experiment":                "1 percent per year increase in CO2",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "CMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "abrupt-4xCO2": {
+                               "experiment":                "abrupt quadrupling of CO2",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "CMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "amip": {
+                               "experiment":                "AMIP",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "CMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "piControl": {
+                               "experiment":                "pre-Industrial control",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "CMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "esm-piControl": {
+                               "experiment":                "pre-industrial control simulation with CO2 concentration calculated",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "CMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "ESM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "historical": {
+                               "experiment":                "all-forcing simulation of the recent past",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "CMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "esm-hist": {
+                               "experiment":                "all-forcing simulation of the recent past with atmospheric CO2 concentration calculated ",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "CMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "ESM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "historical-ext": {
+                               "experiment":                "post-2014 all-forcing simulation",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "CMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "esm-hist-ext": {
+                               "experiment":                "post-2014 all-forcing simulation with atmospheric CO2 concentration calculated",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "CMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "ESM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "hist-aer": {
+                               "experiment":                "historical anthropogenic aerosols-only run",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "DAMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER BGM"
+
+                          },
+
+        "hist-CO2": {
+                               "experiment":                "historical CO2-only run",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "DAMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER BGM"
+
+                          },
+
+        "hist-all-aer2": {
+                               "experiment":                "historical ALL-forcing run with alternate estimates of aerosol forcing",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "DAMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER BGM"
+
+                          },
+
+        "hist-all-nat2": {
+                               "experiment":                "historical ALL-forcing run with alternate estimates of natural forcing",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "DAMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER BGM"
+
+                          },
+
+        "hist-GHG": {
+                               "experiment":                "historical well-mixed GHG-only run",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "DAMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER BGM"
+
+                          },
+
+        "hist-nat": {
+                               "experiment":                "historical natural-only run",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "DAMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER BGM"
+
+                          },
+
+        "hist-sol": {
+                               "experiment":                "historical solar-only run",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "DAMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER BGM"
+
+                          },
+
+        "hist-stratO3": {
+                               "experiment":                "historical stratospheric-ozone-only run",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "DAMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER BGM"
+
+                          },
+
+        "hist-volc": {
+                               "experiment":                "historical volcanic-only run",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "DAMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER BGM"
+
+                          },
+
+        "ssp245-aer": {
+                               "experiment":                "aerosol-only SSP2-4.5 run",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "DAMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER BGM"
+
+                          },
+
+        "ssp245-GHG": {
+                               "experiment":                "well-mixed GHG-only SSP2-4.5 run",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "DAMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER BGM"
+
+                          },
+
+        "ssp245-nat": {
+                               "experiment":                "natural-only SSP2-4.5 run",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "DAMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER BGM"
+
+                          },
+
+        "ssp245-stratO3": {
+                               "experiment":                "stratospheric-ozone-only SSP2-4.5 run",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "DAMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER BGM"
+
+                          },
+
+        "hindcast": {
+                               "experiment":                "hindcast initialized from observations with historical forcing",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "DCPP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "hindcast-control": {
+                               "experiment":                "simulation initialized from control with forcing prescribed from a portion of the historical period",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "DCPP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "hindcast-honest": {
+                               "experiment":                "hindcast initialized from observations without observed forcing after initialization",
+                               "sub_experiment_id":         "initiate with year YYYY",
+                               "activity_id":               "DCPP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "hindcast-hist": {
+                               "experiment":                "initialized from historical simulation without observed forcing after initialization",
+                               "sub_experiment_id":         "initiate with year YYYY",
+                               "activity_id":               "DCPP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "forecast": {
+                               "experiment":                "forecast initialized from observations",
+                               "sub_experiment_id":         "initiate with year YYYY",
+                               "activity_id":               "DCPP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "amv-control": {
+                               "experiment":                "idealized Atlantic control",
+                               "sub_experiment_id":         "initiate with year YYYY",
+                               "activity_id":               "DCPP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "amv-plus": {
+                               "experiment":                "idealized positive AMV anomaly pattern",
+                               "sub_experiment_id":         "initiate with year YYYY",
+                               "activity_id":               "DCPP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "amv-minus": {
+                               "experiment":                "idealized negative AMV anomaly pattern",
+                               "sub_experiment_id":         "initiate with year YYYY",
+                               "activity_id":               "DCPP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "pdv-control": {
+                               "experiment":                "idealized Pacific control",
+                               "sub_experiment_id":         "initiate with year YYYY",
+                               "activity_id":               "DCPP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "pdv-plus": {
+                               "experiment":                "idealized positive PDV anomaly pattern",
+                               "sub_experiment_id":         "initiate with year YYYY",
+                               "activity_id":               "DCPP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "pdv-minus": {
+                               "experiment":                "idealized negative PDV anomaly pattern",
+                               "sub_experiment_id":         "initiate with year YYYY",
+                               "activity_id":               "DCPP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "pdv-plus-extraTrop": {
+                               "experiment":                "idealized positive extratropical AMV anomaly pattern",
+                               "sub_experiment_id":         "initiate with year YYYY",
+                               "activity_id":               "DCPP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "pdv-minus-extraTrop": {
+                               "experiment":                "idealized� impact of a negative extratropical AMV anomaly pattern",
+                               "sub_experiment_id":         "initiate with year YYYY",
+                               "activity_id":               "DCPP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "amv-plus-trop": {
+                               "experiment":                "idealized positive tropical AMV anomaly pattern",
+                               "sub_experiment_id":         "initiate with year YYYY",
+                               "activity_id":               "DCPP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "amv-minus-trop": {
+                               "experiment":                "idealized impact of a positive tropical AMV anomaly pattern",
+                               "sub_experiment_id":         "initiate with year YYYY",
+                               "activity_id":               "DCPP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "predictability-atlGyre": {
+                               "experiment":                "predictability of 1990s warming of Atlantic gyre",
+                               "sub_experiment_id":         "initiate with year YYYY",
+                               "activity_id":               "DCPP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "hindcast-novolc": {
+                               "experiment":                "hindcast but with only background volcanic forcing",
+                               "sub_experiment_id":         "initiate with year YYYY",
+                               "activity_id":               "DCPP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "forecast-Pinatubo": {
+                               "experiment":                "2015 forecast with added Pinatubo forcing",
+                               "sub_experiment_id":         "initiate with year YYYY",
+                               "activity_id":               "DCPP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "forecast-ElChichon": {
+                               "experiment":                "2015 forecast with added El Chichon forcing",
+                               "sub_experiment_id":         "initiate with year YYYY",
+                               "activity_id":               "DCPP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "forecast-Agung": {
+                               "experiment":                "2015 forecast with added Agung forcing",
+                               "sub_experiment_id":         "initiate with year YYYY",
+                               "activity_id":               "DCPP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "faf-all": {
+                               "experiment":                "control plus perturbative surface fluxes of momentum, heat and water into ocean",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "FAFMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "faf-heat": {
+                               "experiment":                "control plus perturbative surface flux of heat into ocean",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "FAFMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "faf-passiveheat": {
+                               "experiment":                "control plus surface flux of passive heat tracer into ocean",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "FAFMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "faf-stress": {
+                               "experiment":                "control plus perturbative surface flux of momentum into ocean",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "FAFMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "faf-water": {
+                               "experiment":                "control plus perturbative surface flux of water into ocean",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "FAFMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "G1": {
+                               "experiment":                "abrupt quadrupling of CO2 plus reduction in total solar irradiance",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "GeoMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "piSST-4xCO2-solar": {
+                               "experiment":                "preindustrial conrol SSTs with quadrupled CO2 + solar reduction. ",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "GeoMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "futureSST-4xCO2-solar": {
+                               "experiment":                "year 100 SSTs from abrupt4xCO2 with quadrupled CO2 + solar reduction",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "GeoMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "G6SST1": {
+                               "experiment":                "SSTs, forcings, and other prescribed conditions from year 2020 of SSP5-8.5",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "GeoMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "G6solar": {
+                               "experiment":                "total solar irradiance reduction to reduce net forcing from SSP585 to SSP245",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "GeoMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "G6SST2-solar": {
+                               "experiment":                "SSTs from year 2020 of SSP5-8.5; forcings and other prescribed conditions from year 2100 of G6solar",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "GeoMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "G6sulfur": {
+                               "experiment":                "stratospheric sulfate aerosol injection to reduce net forcing from SSP585 to SSP245",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "GeoMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "G6SST2-sulfur": {
+                               "experiment":                "SSTs from year 2020 of SSP5-8.5; forcings and other prescribed conditions from year 2100 of G6sulfur",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "GeoMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "G7cirrus": {
+                               "experiment":                "G7cirrus _ increase cirrus ice crystal fall speed to reduce net forcing in SSP585 by 1 W m-2",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "GeoMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "G7SST1-cirrus": {
+                               "experiment":                "SSTs from year 2020 of SSP5-8.5; forcings and other prescribed conditions from year 2020 of SSP5-8.5 + cirrus thinning",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "GeoMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "G7SST2-cirrus": {
+                               "experiment":                "SSTs from year 2100 of SSP5-8.5; forcings and other prescribed conditions from year 2100 of G7cirrus",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "GeoMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "amip-hist": {
+                               "experiment":                "",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "GMMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "amip-hld": {
+                               "experiment":                "",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "GMMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "amip-TIP": {
+                               "experiment":                "",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "GMMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "amip-TIP-nosh": {
+                               "experiment":                "",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "GMMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "hist-resAMO": {
+                               "experiment":                "",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "GMMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "hist-resIPO": {
+                               "experiment":                "",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "GMMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "control-1950": {
+                               "experiment":                "coupled control with fixed 1950's forcing (HighResMIP equivalent of pre-industrial control)",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "HighResMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "highres-future": {
+                               "experiment":                "coupled future 2015-2050 using a scenario as close to CMIP5 RCP8.5 as possible within CMIP6",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "HighResMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "hist-1950": {
+                               "experiment":                "coupled historical 1950-2014",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "HighResMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "highresSST-present": {
+                               "experiment":                "forced atmosphere experiment for 1950-2014",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "HighResMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "highresSST-future": {
+                               "experiment":                "forced atmosphere experiment for 2015-2050 using SST/sea-ice derived from CMIP5 RCP8.5 simulations and a scenario as close to RCP8.5 as possible within CMIP6",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "HighResMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "highresSST-LAI": {
+                               "experiment":                "common LAI dataset within the highresSST-present experiment",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "HighResMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "highresSST-smoothed": {
+                               "experiment":                "smoothed SST version of highresSST-present",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "HighResMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "highresSST-p4K": {
+                               "experiment":                "uniform 4K warming of highresSST-present SST",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "HighResMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "highresSST-4co2": {
+                               "experiment":                "highresSST-present SST with 4xCO2 concentrations",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "HighResMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "ism-1pctCO2": {
+                               "experiment":                "",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "ISMIP6",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "ISM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "1pctCO2-withism": {
+                               "experiment":                "",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "ISMIP6",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM ISM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "ism-piControl": {
+                               "experiment":                "",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "ISMIP6",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "ISM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "piControl-withism": {
+                               "experiment":                "",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "ISMIP6",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM ISM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "ism-ssp585": {
+                               "experiment":                "",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "ISMIP6",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "ISM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "ssp585-withism": {
+                               "experiment":                "",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "ISMIP6",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM ISM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "amip-lfmip-pObs": {
+                               "experiment":                "prescribed land (from pseudo-observations) and AMIP SSTs",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "LS3MIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "amip-lfmip-pdLC": {
+                               "experiment":                "prescribed land (from current climatology) and AMIP SSTs",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "LS3MIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "lfmip-pdLC": {
+                               "experiment":                "prescribed land conditions (from current climate climatology) and initialized from 'historical' run year 1980",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "LS3MIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "lfmip-initLC": {
+                               "experiment":                "initialized from 'historical' run year 1980, but with land conditions initialized from pseudo-observations",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "LS3MIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "amip-lfmip-rmLC": {
+                               "experiment":                "prescribed land conditions (from running mean climatology) and AMIP SSTs",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "LS3MIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "lfmip-rmLC": {
+                               "experiment":                "prescribed land conditions (from running mean climatology) and initialized from 'historical' run year 1980",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "LS3MIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "land-future": {
+                               "experiment":                "offline land simulations for future climate",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "LS3MIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "LND",
+                               "additional_source_type":    ""
+
+                          },
+
+        "land-hist": {
+                               "experiment":                "offline land simulations for present climate",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "LS3MIP, LUMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "LND",
+                               "additional_source_type":    ""
+
+                          },
+
+        "land-hist-princeton": {
+                               "experiment":                "as land-hist with Princeton forcings",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "LS3MIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "LND",
+                               "additional_source_type":    ""
+
+                          },
+
+        "land-hist-cruNcep": {
+                               "experiment":                "as land-hist with CRU-NCEP forcings",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "LS3MIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "LND",
+                               "additional_source_type":    ""
+
+                          },
+
+        "land-hist-wfdei": {
+                               "experiment":                "as land-hist with WFDEI forcings",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "LS3MIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "LND",
+                               "additional_source_type":    ""
+
+                          },
+
+        "esm-ssp585-ssp126Lu": {
+                               "experiment":                "emissions-driven SSP5-8.5 with SSP1-2.6 land use",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "LUMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "ESM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "hist-noLu": {
+                               "experiment":                "historical with no land-use change",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "LUMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "deforest-globe": {
+                               "experiment":                "idealized transient global deforestation",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "LUMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "land-hist-altStartYear": {
+                               "experiment":                "historical land-only alternate start year",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "LUMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "LND",
+                               "additional_source_type":    ""
+
+                          },
+
+        "land-hist": {
+                               "experiment":                "historical land-only",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "LS3MIP, LUMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "LND",
+                               "additional_source_type":    ""
+
+                          },
+
+        "land-cCO2": {
+                               "experiment":                "historical land-only constant CO2",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "LUMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "LND",
+                               "additional_source_type":    ""
+
+                          },
+
+        "land-cClim": {
+                               "experiment":                "historical land-only constant climate",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "LUMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "LND",
+                               "additional_source_type":    ""
+
+                          },
+
+        "land-noLu": {
+                               "experiment":                "historical land-only with no land-use change",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "LUMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "LND",
+                               "additional_source_type":    ""
+
+                          },
+
+        "land-crop-noManage": {
+                               "experiment":                "historical land-only with crops but no crop management",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "LUMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "LND",
+                               "additional_source_type":    ""
+
+                          },
+
+        "land-netTrans": {
+                               "experiment":                "historical land-only with net land-use transitions",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "LUMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "LND",
+                               "additional_source_type":    ""
+
+                          },
+
+        "land-noFire": {
+                               "experiment":                "historical land-only with no human fire management",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "LUMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "LND",
+                               "additional_source_type":    ""
+
+                          },
+
+        "land-noWoodHarv": {
+                               "experiment":                "historical land-only with no wood harvest",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "LUMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "LND",
+                               "additional_source_type":    ""
+
+                          },
+
+        "land-noPasture": {
+                               "experiment":                "historical land-only with constant pastureland",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "LUMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "LND",
+                               "additional_source_type":    ""
+
+                          },
+
+        "land-crop-grass": {
+                               "experiment":                "historical land-only with cropland as natural grassland",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "LUMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "LND",
+                               "additional_source_type":    ""
+
+                          },
+
+        "land-crop-noIrrig": {
+                               "experiment":                "historical land-only with no irrigation ",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "LUMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "LND",
+                               "additional_source_type":    ""
+
+                          },
+
+        "land-crop-noFert": {
+                               "experiment":                "historical land-only with no fertilizer",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "LUMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "LND",
+                               "additional_source_type":    ""
+
+                          },
+
+        "ssp126-ssp370Lu": {
+                               "experiment":                "SSP1-2.6 with SSP3-7.0 land use",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "LUMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "ssp370-ssp126Lu": {
+                               "experiment":                "SSP3-7.0 with SSP1-2.6 land use",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "LUMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "omip-core2": {
+                               "experiment":                "OMIP experiment forced by CORE-2 atmospheric data set and initialized with observed physical and biogeochemical ocean data",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "OMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "OGCM",
+                               "additional_source_type":    ""
+
+                          },
+
+        "omip-core2-spunup": {
+                               "experiment":                "OMIP experiment forced by CORE-2 atmospheric data set and initialized from at least a 2000-year spin up of the coupled physical-biogeochemical model",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "OMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "OGCM",
+                               "additional_source_type":    ""
+
+                          },
+
+        "omip-jra55": {
+                               "experiment":                "OMIP experiment forced by JRA-55 atmospheric data set and initialized with observed physical and biogeochemical ocean data",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "OMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "OGCM",
+                               "additional_source_type":    ""
+
+                          },
+
+        "omip-jra55-spunup": {
+                               "experiment":                "OMIP experiment forced by JRA-55 atmospheric data set and initialized from at least a 2000-year spin up of the coupled physical-biogeochemical model",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "OMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "OGCM",
+                               "additional_source_type":    ""
+
+                          },
+
+        "lgm": {
+                               "experiment":                "",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "PMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "lig127k": {
+                               "experiment":                "",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "PMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "midHolocene": {
+                               "experiment":                "",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "PMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "past1000": {
+                               "experiment":                "",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "PMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "midPliocene-eoi400": {
+                               "experiment":                "",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "PMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "piClim-control": {
+                               "experiment":                "",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "RFMIP, AerChemMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "piClim-4xCO2": {
+                               "experiment":                "",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "RFMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "piClim-aerO3": {
+                               "experiment":                "",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "RFMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "piClim-aerO3x0p1": {
+                               "experiment":                "",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "RFMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "piClim-aerO3x2": {
+                               "experiment":                "",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "RFMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "piClim-anthro": {
+                               "experiment":                "",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "RFMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "piClim-GHG": {
+                               "experiment":                "",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "RFMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "piClim-histaer03": {
+                               "experiment":                "",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "RFMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "piClim-histAll": {
+                               "experiment":                "",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "RFMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "piClim-histGHG": {
+                               "experiment":                "",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "RFMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "piClim-histNat": {
+                               "experiment":                "",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "RFMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "piClim-lu": {
+                               "experiment":                "",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "RFMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "piClim-spAer-histall": {
+                               "experiment":                "",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "RFMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM",
+                               "additional_source_type":    ""
+
+                          },
+
+        "piClim-spAer-histaer": {
+                               "experiment":                "",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "RFMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM",
+                               "additional_source_type":    ""
+
+                          },
+
+        "piClim-spAer-aer": {
+                               "experiment":                "",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "RFMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM",
+                               "additional_source_type":    ""
+
+                          },
+
+        "piClim-spAer-anthro": {
+                               "experiment":                "",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "RFMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM",
+                               "additional_source_type":    ""
+
+                          },
+
+        "hist-spAer": {
+                               "experiment":                "",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "RFMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    ""
+
+                          },
+
+        "hist-all-spAer": {
+                               "experiment":                "",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "RFMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    ""
+
+                          },
+
+        "rad-irf": {
+                               "experiment":                "",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "RFMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "RAD",
+                               "additional_source_type":    ""
+
+                          },
+
+        "ssp126": {
+                               "experiment":                "update of RCP2.6 based on SSP1",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "ScenarioMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER",
+                               "parent_experiment_id" :     "historical",
+                               "parent_sub_experiment_id":  "none",
+                               "parent_activity_id ":       "CMIP",
+                               "parent_mip_era ":           "CMIP6"
+                          },
+
+        "ssp534-over": {
+                               "experiment":                "overshoot of 3.4 W/m**2 branching from ssp585 in 2040",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "ScenarioMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER",
+                               "parent_experiment_id" :     "ssp585",
+                               "parent_sub_experiment_id":  "none",
+                               "parent_activity_id ":       "ScenarioMIP",
+                               "parent_mip_era ":           "CMIP6"
+                          },
+
+        "ssp460": {
+                               "experiment":                "update of RCP6.0 based on SSP4",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "ScenarioMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER",
+                               "parent_experiment_id" :     "historical",
+                               "parent_sub_experiment_id":  "none",
+                               "parent_activity_id ":       "CMIP",
+                               "parent_mip_era ":           "CMIP6"
+                          },
+
+        "ssp245": {
+                               "experiment":                "update of RCP4.5 based on SSP2",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "ScenarioMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER",
+                               "parent_experiment_id" :     "historical",
+                               "parent_sub_experiment_id":  "none",
+                               "parent_activity_id ":       "CMIP",
+                               "parent_mip_era ":           "CMIP6"
+                          },
+
+        "ssp370": {
+                               "experiment":                "gap-filling scenario reaching 7.0 based on SSP3",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "ScenarioMIP, AerChemMIP, LUMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER",
+                               "parent_experiment_id" :     "historical",
+                               "parent_sub_experiment_id":  "none",
+                               "parent_activity_id ":       "CMIP",
+                               "parent_mip_era ":           "CMIP6"
+                          },
+
+        "ssp434": {
+                               "experiment":                "gap-filling scenario reaching 3.4 based on SSP4",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "ScenarioMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER",
+                               "parent_experiment_id" :     "historical",
+                               "parent_sub_experiment_id":  "none",
+                               "parent_activity_id ":       "CMIP",
+                               "parent_mip_era ":           "CMIP6"
+                          },
+
+        "ssp585": {
+                               "experiment":                "update of RCP8.5 based on SSP5",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "ScenarioMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER",
+                               "parent_experiment_id" :     "historical",
+                               "parent_sub_experiment_id":  "none",
+                               "parent_activity_id ":       "CMIP",
+                               "parent_mip_era ":           "CMIP6"
+                          },
+
+        "sspxy": {
+                               "experiment":                "low-end scenario informing 1.5C goal",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "ScenarioMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER",
+                               "parent_experiment_id" :     "historical",
+                               "parent_sub_experiment_id":  "none",
+                               "parent_activity_id ":       "CMIP",
+                               "parent_mip_era ":           "CMIP6"
+                          },
+
+        "volcCluster": {
+                               "experiment":                "long volcanic-forcing-only experiment with cluster of eruption",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "VolMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER",
+                               "parent_experiment_id" :     "piControl",
+                               "parent_sub_experiment_id":  "none",
+                               "parent_activity_id ":       "CMIP",
+                               "parent_mip_era ":           "CMIP6"
+                          },
+
+        "volcEq-S60": {
+                               "experiment":                "long volcanic-forcing-only experiment with single equatorial eruption",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "VolMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER",
+                               "parent_experiment_id" :     "piControl",
+                               "parent_sub_experiment_id":  "none",
+                               "parent_activity_id ":       "CMIP",
+                               "parent_mip_era ":           "CMIP6"
+                          },
+
+        "volcHL-S100": {
+                               "experiment":                "long volcanic-forcing-only experiment with single high-latitude eruption",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "VolMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER",
+                               "parent_experiment_id" :     "piControl",
+                               "parent_sub_experiment_id":  "none",
+                               "parent_activity_id ":       "CMIP",
+                               "parent_mip_era ":           "CMIP6"
+                          },
+
+        "volcEq-full": {
+                               "experiment":                "Pinatubo experiment with full volcanic forcing ",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "VolMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER",
+                               "parent_experiment_id" :     "piControl",
+                               "parent_sub_experiment_id":  "none",
+                               "parent_activity_id ":       "CMIP",
+                               "parent_mip_era ":           "CMIP6"
+                          },
+
+        "volcEq-ini": {
+                               "experiment":                "Pinatubo experiment in decadal climate prediction setup",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "VolMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER",
+                               "parent_experiment_id" :     "piControl",
+                               "parent_sub_experiment_id":  "none",
+                               "parent_activity_id ":       "CMIP",
+                               "parent_mip_era ":           "CMIP6"
+                          },
+
+        "volcEq-slab": {
+                               "experiment":                "Pinatubo experiment with full volcanic forcing and slab ocean",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "VolMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM SLAB",
+                               "additional_source_type":    "CHEM AER",
+                               "parent_experiment_id" :     "piControl",
+                               "parent_sub_experiment_id":  "none",
+                               "parent_activity_id ":       "CMIP",
+                               "parent_mip_era ":           "CMIP6"
+                          },
+
+        "volcEq-strat": {
+                               "experiment":                "Pinatubo experiment with only long-wave forcing",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "VolMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER",
+                               "parent_experiment_id" :     "piControl",
+                               "parent_sub_experiment_id":  "none",
+                               "parent_activity_id ":       "CMIP",
+                               "parent_mip_era ":           "CMIP6"
+                          },
+
+        "volcEq-surf": {
+                               "experiment":                "Pinatubo experiment with only short-wave forcing",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "VolMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER",
+                               "parent_experiment_id" :     "piControl",
+                               "parent_sub_experiment_id":  "none",
+                               "parent_activity_id ":       "CMIP",
+                               "parent_mip_era ":           "CMIP6"
+                          }
+
+
+    }
+}
diff --git a/Lib/__init__.py b/Lib/__init__.py
index 22cd541..58481c6 100644
--- a/Lib/__init__.py
+++ b/Lib/__init__.py
@@ -1,6 +1,6 @@
 from cmor_const import *
 
-from pywrapper import axis,variable,write,setup,load_table,dataset,set_table,zfactor,close,grid,set_grid_mapping,time_varying_grid_coordinate,set_cur_dataset_attribute,get_cur_dataset_attribute,has_cur_dataset_attribute,create_output_path,set_variable_attribute,get_variable_attribute,has_variable_attribute
+from pywrapper import axis,variable,write,setup,load_table,set_table,zfactor,close,grid,set_grid_mapping,time_varying_grid_coordinate,set_cur_dataset_attribute,get_cur_dataset_attribute,has_cur_dataset_attribute,create_output_path,set_variable_attribute,get_variable_attribute,has_variable_attribute,dataset_json,get_final_filename,set_deflate
 
 try:
   from check_CMOR_compliant import checkCMOR
diff --git a/Lib/check_CMOR_compliant.py b/Lib/check_CMOR_compliant.py
deleted file mode 100644
index cb4aaec..0000000
--- a/Lib/check_CMOR_compliant.py
+++ /dev/null
@@ -1,1622 +0,0 @@
-import cdms2
-import os
-import unidata
-import genutil
-import numpy
-import cdtime
-import cmor
-import time
-VERBOSE=-999
-
-#ok now we are going online to pull the file that has the control md5s
-try:
-    f=open("Tables/md5s")
-    ctrl_md5s=eval(f.read())
-except:
-    try:
-        import urllib2
-        url=urllib2.urlopen("http://esgf.org/gitweb/?p=cmip5-cmor-tables.git;a=blob_plain;f=Tables/md5s;hb=HEAD")
-        ctrl_md5s=eval(url.read())
-        url.close()
-        del(url)
-    except:
-        ctrl_md5s={}
-
-
-class CMORError(Exception):
-    def __init__(self,value=None):
-        self.value=value
-    def __str__(self):
-        color=31
-        msg = "%c[%d;%d;%dm%s%c[%dm" % (0X1B,2,color,47,self.value,0X1B,0)
-        return msg
-
-def hyphenize(value):
-    out=str(value)
-    for c in [' ',"_",'(',')','.',';',',','[',']',':','/','*','?','<','>','"',"'",'{','}','&']:
-        out=out.replace(c,"-")
-    return out
-
-def drs_check_pos(i,path,fout,noerror,val,name):
-    dic = { 1:"",2:"second to ",3:"third to "}
-    posstr = dic.get(i,"%ith to " % i)
-    if path[-i]!=val:
-        return manageLog(fout, noerror, 'Error file directory does not conform to DRS structure, %slast directory should be the %s (%s vs %s)' % (posstr, name, path[-i],val))
-    return 0
-
-def addcoloring(fout,error):
-    #warning blue: 34
-    #error red: 31
-    if error == cmor.CMOR_NORMAL:
-        color=31
-    elif error == cmor.CMOR_WARNING:
-        color=34
-    else:
-        return
-    print >> fout, "%c[%d;%d;%dm" % (0X1B,2,color,47)
-    return
-
-def delcoloring(fout):
-    print >> fout,"%c[%dm" % (0X1B,0)
-    return
-    
-def manageLog(fout,error,*msg_bits):
-    """ Print error message or raise an exception depending on noerror flag)"""
-    msg=''
-    for m in msg_bits:
-        msg+=" "+str(m)
-    msg=msg.lstrip()
-        
-##     print >>fout, 'No error is:',noerror
-    if error == cmor.CMOR_CRITICAL:
-        raise CMORError,[msg,]
-    elif error == VERBOSE:
-        fout.write( msg)
-        if msg_bits[-1]!="":
-            print >> fout
-        return
-        
-    addcoloring(fout,error)
-    print >>fout, '@#%@#%@#%@#%@#%@#%@#%@#%@#%@#%@#%@#%@#%@#%@#%@#%@#%@#%@#%@#%@#%'
-    print >>fout, '@#%@#%@#%@#%@#%@#%@#%@#%@#%@#%@#%@#%@#%@#%@#%@#%@#%@#%@#%@#%@#%'
-    if error == cmor.CMOR_NORMAL:
-        print >>fout, '@#%@#%@#%@#%@#%           ERROR          %@#%@#%@#%@#%@#%@#%@#%'
-    elif error == cmor.CMOR_WARNING:
-        print >>fout, '@#%@#%@#%@#%@#%          WARNING         %@#%@#%@#%@#%@#%@#%@#%'
-    print >>fout, '@#%@#%@#%@#%@#%@#%@#%@#%@#%@#%@#%@#%@#%@#%@#%@#%@#%@#%@#%@#%@#%'
-    print >>fout, '@#%@#%@#%@#%@#%@#%@#%@#%@#%@#%@#%@#%@#%@#%@#%@#%@#%@#%@#%@#%@#%'
-    delcoloring(fout)
-    print >>fout
-    addcoloring(fout,error)
-    print >>fout, msg
-    delcoloring(fout)
-    print >>fout
-    addcoloring(fout,error)
-    print >>fout, '@#%@#%@#%@#%@#%@#%@#%@#%@#%@#%@#%@#%@#%@#%@#%@#%@#%@#%@#%@#%@#%'
-    print >>fout, '@#%@#%@#%@#%@#%@#%@#%@#%@#%@#%@#%@#%@#%@#%@#%@#%@#%@#%@#%@#%@#%'
-    delcoloring(fout)
-    print >>fout
-    return 1
-
-def split_expt_ids(val):
-    long_vals=[]
-    short_vals = []
-    for v in val:
-        i = v.find("'")
-        if i>-1:
-            j=v[i+1:].find("'")
-            if j>-1:
-                long_vals.append(v[:i])
-                short_vals.append(v[j+i+2:])
-            else:
-                long_vals.append(v)
-                short_vals.append("")
-        else:
-            long_vals.append(v)
-            short_vals.append("")
-    return long_vals,short_vals
-
-def readTable(table):
-    lists_kw=['requested','bounds_requested','z_factors','z_bounds_requested','dimensions','required','ignored','optional']
-    f=open(table,'r')
-    import hashlib
-    m5=hashlib.md5(f.read())
-    m5=m5.hexdigest()
-    f.seek(0)
-    ln=f.readlines()
-    f.close()
-    header=1
-    gen_attributes={'actual_md5':m5}
-    while header:
-        l = ln.pop(0)[:-1]
-        l=l.strip()
-        if l=='' or l[0]=='!':
-            continue
-        sp=l.split('_entry')
-        if len(sp)>1:
-            ln.insert(0,l+'\n')
-            header=0
-            continue
-        sp=l.split(':')
-        kw=sp[0]
-        st="".join(sp[1:])
-        st=st.split('!')[0].strip()
-        if st[0]=="'":
-            st=st[1:-1]
-        if gen_attributes.has_key(kw):
-            if isinstance(gen_attributes[kw],str):
-                gen_attributes[kw]=[gen_attributes[kw],st]
-            else:
-                gen_attributes[kw].append(st)
-        else:
-            gen_attributes[kw]=st
-    e={} # entries dictionnary
-    while len(ln)>0:
-        l = ln.pop(0)
-        sp=l.split('_entry:')
-        entry_type=sp[0]
-        entry=sp[1].strip()
-        if not e.has_key(entry_type):
-            e[entry_type]={}
-        e[entry_type][entry]=e[entry_type].get(entry,{})
-            
-##         print >>fout, e[entry_type][entry]
-        cont=1
-        while cont:
-            l = ln.pop(0)[:-1]
-            l=l.strip()
-            if l=='' or l[0]=='!':
-                if len(ln)==0:
-                    cont=0
-                continue
-            sp=l.split('_entry:')
-            if len(sp)>1:
-                ln.insert(0,l+'\n')
-                cont=0
-            sp=l.split(':')
-            kw=sp[0].strip()
-            val=":".join(sp[1:]).split('!')[0].strip()
-            ## print  'dic is:',e[entry_type][entry]
-            if e[entry_type][entry].has_key(kw):
-                if kw in lists_kw:
-                    e[entry_type][entry][kw]="".join(e[entry_type][entry][kw])
-                e[entry_type][entry][kw]+=' '+val
-            else:
-                e[entry_type][entry][kw]=val
-##             print >>fout, 'After:',e[entry_type][entry][kw]
-            if kw in lists_kw:
-##                 print >>fout, 'splitting:',kw,e[entry_type][entry][kw].split()
-                e[entry_type][entry][kw]=e[entry_type][entry][kw].split()
-            if len(ln)==0:
-                cont=0
-    e['general']=gen_attributes
-##     for type in e.keys():
-##         print >>fout, 'Type:',type
-##         for k in e[type].keys():
-##             print >>fout, '\t Entry:',k
-##             for a in e[type][k].keys():
-##                 print >>fout, '\t\t',a,':',e[type][k][a]
-    return e
-
-
-def checkCMOR(fout,file,table,noerror=cmor.CMOR_CRITICAL,variable=None,from_bounds=None,other_tables=None,dodrs=True):
-
-    req_glbl_att = ['title','Conventions','source','experiment','source','institution','project_id','table_id','realization',]
-    opt_glbl_att = ['cmor_version','history','references','comment','parent_experiment']
-
-    nerr=0
-    nwarn=0
-    ncheck=0
-    IPCC_std_vars=[]
-    IPCC_std_axes=[]
-    
-    tables=[table,]
-    if other_tables is not None:
-        for t in other_tables:
-            if not t in tables and t is not None:
-                tables.append(t)
-
-    etables = []
-    for tbl in tables:
-        manageLog(fout,VERBOSE, 'Reading table:',tbl)
-        e=readTable(tbl)
-        etables.append(e)
-        Vars=e['variable']
-        Axes=e['axis']
-        extra_req = e['general'].get('required_global_attributes','').split()
-        for ex in extra_req:
-            if not ex in req_glbl_att:
-                req_glbl_att.append(ex)
-        for v in Vars.keys():
-            IPCC_std_vars.append(Vars[v].get('out_name',v))
-        for a in Axes.keys():
-            onm = Axes[a].get('out_name',a)
-            if not onm in IPCC_std_axes:
-                IPCC_std_axes.append(onm)
-    ##         if IPCC_std_axes[-1]=='lev' :
-    ##             IPCC_std_axes.pop(-1)
-    ##             IPCC_std_axes.append('eta')
-    ##             Axes[a]['out_name']='eta'
-
-    ver = e['general'].get('cmor_version',2.0)
-    spver = ver.split('.')
-    major = int(spver[0])
-    if major>1:
-        req_glbl_att+=["contact",'experiment_id','physics_version','initialization_method','institute_id','institution','tracking_id','product','frequency','model_id','creation_date','frequency','modeling_realm']
-    else:
-        opt_glbl_att+=["contact",'experiment_id','physics_version','initialization_method','institute_id','institution','tracking_id','product','frequency','model_id','forcing','creation_date','frequency','modeling_realm']
-    if isinstance(file,str):
-        fnm=file
-        file=cdms2.open(file)
-    elif isinstance(file,cdms2.dataset.CdmsFile):
-        fnm=str(file).split('file')[1].split(',')[0].strip()[1:-1]
-    else:
-        nerr+=manageLog(fout, noerror, 'You  must pass a file name or cdms2 file object')
-
-    if fnm.split("_")[-1]=="clim.nc":
-        is_clim = True
-    else:
-        is_clim = False
-
-
-    pthroot, shrt_fnm = os.path.split(fnm)
-    if variable is None:
-        manageLog(fout,VERBOSE, 'Checking file argument',IPCC_std_axes)
-        manageLog(fout,VERBOSE, 'Checking path structure for path:',pthroot)
-        manageLog(fout,VERBOSE, 'Checking file structure for file:',fnm)
-        print >> fout, 'Checking the file starts with variable name'
-        ok = False
-        for v in IPCC_std_vars:
-            n = len(v)
-            if shrt_fnm[:n] == v and shrt_fnm[n]=='_':
-                ok = True
-                break
-        if not ok:
-            nerr+=manageLog(fout, noerror, ''+shrt_fnm+' does not start with standard %s variable name followed by _' % file.project_id)
-        vf=v
-        #Check the variable is actually in the file
-        if not v in file.variables.keys():
-            nerr+=manageLog(fout,noerror,"Your file name says it contains variable",v,"but it is not in your file, your file contains:",file.variables.keys())
-        if hasattr(file,'cmor_version'):
-            up = False
-            rew = False
-            ver = getattr(file,'cmor_version')
-            if isinstance(ver,numpy.ndarray): ver = '%g' % float(ver[0])
-            spver = ver.split('.')
-            fmajor = int(spver[0])
-            if len(spver)>1 :
-                minor = int(spver[1])
-                if len(spver)>2:
-                    patch = int(spver[2])
-                else:
-                    patch = 0
-            else:
-                minor=0
-                patch=0
-            if fmajor>cmor.CMOR_VERSION_MAJOR:
-                up = True
-            elif fmajor<cmor.CMOR_VERSION_MAJOR:
-                rew=True
-            else: # Major matches
-                if minor>cmor.CMOR_VERSION_MINOR:
-                    up = True
-                elif minor<cmor.CMOR_VERSION_MINOR:
-                    rew = True
-                else: # minor matches
-                    if patch>cmor.CMOR_VERSION_PATCH:
-                        up = True
-                    elif patch<cmor.CMOR_VERSION_PATCH:
-                        rew = True
-
-            ncheck+=1
-            if up:
-                if fmajor==cmor.CMOR_VERSION_MAJOR:
-                    nwarn+=manageLog(fout,cmor.CMOR_WARNING,"You are using cmor version: %i.%i.%i, these files have been written with version: %i.%i.%i, you should upgrade your cmor" % (cmor.CMOR_VERSION_MAJOR,cmor.CMOR_VERSION_MINOR,cmor.CMOR_VERSION_PATCH,fmajor,minor,patch))
-                else:
-                    nerr+=manageLog(fout,noerror,"You are using cmor version: %i.%i.%i, these files have been written with version: %i.%i.%i, you need to upgrade cmor to check these files" % (cmor.CMOR_VERSION_MAJOR,cmor.CMOR_VERSION_MINOR,cmor.CMOR_VERSION_PATCH,fmajor,minor,patch))
-
-            ncheck+=1
-            if rew:
-                nwarn+=manageLog(fout,cmor.CMOR_WARNING,"You are using cmor version: %i.%i.%i, these files have been written with version: %i.%i.%i, you should consider rewriting these files" % (cmor.CMOR_VERSION_MAJOR,cmor.CMOR_VERSION_MINOR,cmor.CMOR_VERSION_PATCH,fmajor,minor,patch))
-                
-        ## 32bit systems only
-        ## if os.uname()[-1].find("64")==-1: # old way would fail on some system
-        if int(platform.architecture()[0].replace('bit', '')) < 64:
-            sz=os.path.getsize(fnm)
-            manageLog(fout,VERBOSE, 'Checking file size (32bit systems only):',sz)
-            if sz>2**31:
-                if major>1:
-                    ncheck+=1
-                    nwarn+=1
-                    ec =cmor.CMOR_WARNING
-                else:
-                    ec=noerror
-                manageLog(fout,ec, 'File size too large',sz,' (>2Gb)!')
-                #nerr+=manageLog(fout, noerror, 'file size too large (>2Gb)!')
-
-        manageLog(fout,VERBOSE, 'Checking that file contains required global attributes')
-        for att in req_glbl_att:
-            val=e['general'].get('expt_id_ok',None)
-            long_vals,shrt_vals = split_expt_ids(val)
-            if not hasattr(file,att) and not att in shrt_vals:
-                i = req_glbl_att.index(att)
-                if i==0 or req_glbl_att[i-1] not in shrt_vals:
-                    nerr+=manageLog(fout, noerror, 'File must have global attribute: '+att)
-                else:
-                    pr = req_gbl_att[i-1]
-                    expt = getattr(file,"experiment","")
-                    shrt = shrt_vals[long_vals.index(expt)]
-                    if shrt == pr:
-                        nerr+=manageLog(fout, noerror, 'File must have global attribute: '+att) 
-            fval=getattr(file,att,'')
-            if att=='experiment_id':
-                ok = False
-                for e in etables:
-                    val=e['general'].get('expt_id_ok',None)
-                    long_vals,shrt_vals = split_expt_ids(val)
-                    for lv in shrt_vals:
-                        if fval==lv or (lv[-4:] =='XXXX' and fval[:-4]==lv[:-4]) or (lv[-4:] =='DDHH' and fval[:-10]==lv[:-10]):
-                            ok = True
-                            break
-                if not ok: 
-                    nerr+=manageLog(fout, noerror, 'experiment_id file attribute must be one of : %s, you have: %s' % (str(shrt_vals), fval) )
-            elif att=='experiment':
-                ok = False
-                for e in etables:
-                    val=e['general'].get('expt_id_ok',None)
-                    long_vals,shrt_vals = split_expt_ids(val)
-                    for lv in long_vals:
-                        if fval==lv or (lv[-4:] =='XXXX' and fval[:-4]==lv[:-4]) or (lv[-4:] =='DDHH' and fval[:-10]==lv[:-10]):
-                            ok = True
-                            break
-                if not ok: 
-                    nerr+=manageLog(fout, noerror, 'experiment file attribute must be one of : %s, you have: %s' % (str(long_vals), fval) )
-            elif att=='parent_experiment_id':
-                if fval == getattr(file,"experiment_id",""):
-                    nerr+=manageLog(fout,noerror,"parent_experiment_id and experiment_id cannot be the same you have %s for both" % fval)
-                ok = False
-                for e in etables:
-                    val=e['general'].get('expt_id_ok',None)
-                    long_vals,shrt_vals = split_expt_ids(val)
-                    shrt_vals.append("N/A")
-                    for lv in shrt_vals:
-                        if fval==lv or (lv[-4:] =='XXXX' and fval[:-4]==lv[:-4]) or (lv[-4:] =='DDHH' and fval[:-10]==lv[:-10]):
-                            ok = True
-                            break
-                if not ok: 
-                    nerr+=manageLog(fout, noerror, 'parent_experiment_id file attribute must be one of : %s, you have: %s' % (str(shrt_vals), fval) )
-            elif att == 'forcing':
-                sp = fval.split("(")[0].split(',')
-                forcings=e['general'].get("forcings")
-                for vl in sp:
-                    if not vl.strip() in forcings:
-                        nerr+=manageLog(fout,noerror,"file attribute forcing must be a comma separated list with values in: %s, yours is: %s (offending value: %s)" % (forcings,fval,vl.strip()))
-            elif att == 'frequency':
-                if not fval in ['yr','mon','day','6hr','3hr','subhr','fx','monClim']:
-                    nerr+=manageLog(fout,noerror, 'frequency must be one of:','yr','mon','day','6hr','3hr','subhr','fx','monClim')
-            elif att in ['realization']:
-                if isinstance(fval,numpy.ndarray):
-                    if len(fval)>1:
-                        nerr+=manageLog(fout, noerror, 'realization attribute must be an integer')
-                    fval=fval[0]
-                if not isinstance(fval,(int,numpy.int,numpy.int32)):
-                    nerr+=manageLog(fout, noerror, 'realization attribute must be an integer')
-            elif att in ['table_id']:
-                manageLog(fout,VERBOSE, '\ttable_id is: ', fval)
-            elif att == "creation_date":
-                # checks that it matches: YYYY-MM-DDTHH:MM:SSZ
-                fmt = "%Y-%m-%dT%H:%M:%SZ"
-                try:
-                    t =time.strptime(fval,fmt)
-                except:
-                    nerr+=manageLog(fout, noerror, 'Creation Date must be in format: %s yours is: %s' % (fmt,fval))
-            elif att == "branch_time":
-                try:
-                    myval=float(fval)
-                except:
-                    nerr+=manageLog(fout, noerror, 'branch_time must be convertible to float, you have %s' % (fval))
-                if getattr(file,"parent_experiment_id","").strip()=="N/A":
-                    if float(fval)!=0.:
-                        nerr+=manageLog(fout, noerror, 'if global attribute parent_experiment_id is N/A then branch_time must be 0., you have %s' % (fval))
-
-                
-            elif att == "project_id":
-                if e['general'].get("project_id") != fval:
-                    nerr+=manageLog(fout, noerror, 'project_id must be %s' % (e['general'].get("project_id")))
-            else:
-                val=e['general'].get(att,None)
-                if isinstance(fval,str) : fval=fval.strip().lower()
-                if isinstance(val,str) : val=val.strip().lower()
-                if val is not None:
-                    if isinstance(fval,str):
-                        res=fval.find(val)
-                        if res==-1:
-                            res=False
-                        else:
-                            res=True
-                    else:
-                        res=fval==val
-                        manageLog(fout,VERBOSE, '**************',att,val,fval)
-                    if not res:
-                        nerr+=manageLog(fout, noerror, 'attribute '+att+' must be set to: -'+val+'- +'+fval+'+ '+str(res))
-
-
-        for att in opt_glbl_att:
-            ncheck+=1
-            if not hasattr(file,att):
-                nwarn+=1
-                manageLog(fout,cmor.CMOR_WARNING, '\t\tIt is often helpful to define the global attribute: ',att)
-
-        for att in file.attributes.keys():
-            ncheck+=1
-            if not att in req_glbl_att and not att in opt_glbl_att:
-                nwarn+=1
-                manageLog(fout,cmor.CMOR_WARNING, '\t\tYou have global attribute: %s which is neither required nor optional ' % att)
-
-
-        if major>=2: # more file structure there
-            try:
-                tmp_tbl_nm = getattr(file,'table_id')
-                tbl_id = tmp_tbl_nm.split()[1]
-                tbl_date= tmp_tbl_nm.split('(')[1].split(')')[0].strip()
-                try:
-                    tbl_md5 = tmp_tbl_nm.split('(')[1].split(')')[1].strip()
-                    if len(tbl_md5)==32:
-                        ncheck+=1
-                        #ok it looks like we got an md5 tag
-                        if tbl_md5!=e['general']['actual_md5']:
-                            nwarn+=1
-                            manageLog(fout,cmor.CMOR_WARNING, '\t\tYour file claims it has been generated with a table whose md5 was %s, but you are sending a table with md5: %s to the checker ' % (tbl_md5,e['general']['actual_md5']))
-                        ncheck+=1
-                        pmd5s=ctrl_md5s.get(file.project_id,{})
-                        if pmd5s=={}:
-                            nwarn+=1
-                            manageLog(fout,cmor.CMOR_WARNING, '\t\tCould not obtain any control md5s for any table for project %s ' % (file.project_id))
-                        else:
-                            ncheck+=1
-                            tmd5s=pmd5s.get(tbl_id,{})
-                            if tmd5s=={}:
-                                nwarn+=1
-                                manageLog(fout,cmor.CMOR_WARNING, '\t\tCould not obtain any control md5s for table %s for project %s ' % (tbl_id,file.project_id))
-                            else:
-                                ncheck+=1
-                                ctrlmd5=tmd5s.get(tbl_date,None)
-                                if ctrlmd5 is None:
-                                    nwarn+=1
-                                    manageLog(fout,cmor.CMOR_WARNING, '\t\tCould not obtain control md5s for table %s for project %s dated on %s, valid tables dates are: ' % (tbl_id,file.project_id,tbl_date),sorted(tmd5s.keys()))
-                                else:
-                                    ncheck+=1
-                                    if ctrlmd5!=tbl_md5:
-                                        nwarn+=1
-                                        manageLog(fout,cmor.CMOR_WARNING, '\t\tYour file claims it has been ran through table id %s, dated %s for project_id %s, with an md5 of: %s, but our control files indicate the md5 should be: %s' % (tbl_id,tbl_date,file.project_id,tbl_md5,ctrlmd5))
-                                        
-
-                        
-                except Exception,err:
-                    #no md5 stored in file
-                    pass
-                ttbl_id = e['general'].get("table_id").split()[1]
-                ttbl_date = e['general'].get("table_date").strip()
-                if tbl_date!=ttbl_date:
-                    nwarn+=1
-                    ncheck+=1
-                    manageLog(fout,cmor.CMOR_WARNING,"File says table date was %s, but the table you passed to the checker is dated from: %s" %( tbl_date,ttbl_date))
-
-                if tbl_id!=ttbl_id:
-                    nerr+=manageLog(fout, noerror, 'your file indicates a table id of %s while your table id is %s' % (tbl_id,ttbl_id))
-                
-            except:
-                manageLog(fout,VERBOSE,"File says table is %s, this is not a correct name, correct format is something like: Table 3hr (24 May 2010) af8b1d3d63376942a55d779d0fb9f504" % (tmp_tbl_nm))
-
-
-
-            sp = shrt_fnm.split(v)[1].split("_")
-            t = file[v].getTime()
-            if t is not None:
-                n=6
-                t=t.clone()
-            else:
-                n=4
-            if is_clim:
-                n+=1
-            expt = getattr(file,"experiment","")
-            try:
-                shrt = shrt_vals[long_vals.index(expt)]
-            except:
-                #Ok we must be in one of the XXXX or DDHH cases...
-                for i in range(len(long_vals)):
-                    if long_vals[i][:-4]==expt[:-4]:
-                        shrt=shrt_vals[i][:-4]+expt[-4:]
-                        break
-                    if long_vals[i][:-10]==expt[:-10]:
-                        shrt=shrt_vals[i][:-10]+expt[-10:]
-                        break
-
-            if shrt=="":
-                n-=1
-                spoffset=-1
-            else:
-                spoffset=0
-                
-            print len(sp)
-            if len(sp)<n:
-                nerr+=manageLog(fout, noerror, 'your file name does not seem to match the profile: varid_tableid_modelid_exptid_rid[iid][pid][_startdate-enddate][_suffix][_clim].nc')
-                
-            if sp[1]!=tbl_id:
-                nerr+=manageLog(fout, noerror, 'your file name indicates a table id of %s while your table id should be %s' % (sp[1],tbl_id))
-
-            if sp[2]!=getattr(file,'model_id'):
-                fmodid = hyphenize(getattr(file,'model_id'))
-                if sp[2]!=fmodid:
-                    nerr+=manageLog(fout, noerror, 'your file name indicates model_id is: %s but your file says it is: %s' % (sp[2],getattr(file,'model_id')))
-            if shrt!="":
-                if shrt!=sp[3]:
-                    nerr+=manageLog(fout, noerror, 'your file name indicates exp_id is: %s but your file says it should be: %s' % (sp[3],shrt))
-
-            real = sp[4+spoffset]
-            rsp=real.split("p")
-            if hasattr(file,"physics_version"):
-                if len(rsp)==1:
-                    nerr+=manageLog(fout, noerror, 'your file name does not indicate physics_version but your file says it should be: %s' % (file.physics_version))
-                elif int(rsp[0].split('i')[0][1:])!=int(file.physics_version):
-                    nerr+=manageLog(fout, noerror, 'your file name indicates physics_version is: %s but your file says it should be: %s' % (rsp[1],file.physics_version))
-            elif len(rsp)!=1:
-                    nerr+=manageLog(fout, noerror, 'your file name indicates physics_version to be %s but your file says it has not physics: %s' % (rsp[1]))
-
-            real=rsp[0]
-            rsp=real.split("i")
-            if hasattr(file,"initialization_method"):
-                if len(rsp)==1:
-                    nerr+=manageLog(fout, noerror, 'your file name does not indicate initialization_method but your file says it should be: %s' % (file.initialization_method))
-                elif int(rsp[1])!=int(file.initialization_method):
-                    nerr+=manageLog(fout, noerror, 'your file name indicates initialization_method is: %s but your file says it should be: %s' % (rsp[1],file.initialization_method))
-            elif len(rsp)!=1:
-                    nerr+=manageLog(fout, noerror, 'your file name indicates initialization_method to be %s but your file says it has not initialization_method: %s' % (rsp[1]))
-            real=rsp[0]
-                
-            if int(real[1:])!=int(getattr(file,'realization')):
-                nerr+=manageLog(fout, noerror, 'your file name indicates realization is: %s but your file says it is: %i' % (sp[3][3:],int(getattr(file,'realization'))))
-            ## skip the following if it has no time
-            if t is not None:
-                # here we check the clim b4 going further checking into date
-                clim_att = getattr(t,'climatology',None)
-                if clim_att is None:
-                    has_clim = False
-                else:
-                    has_clim = True
-                if is_clim!=has_clim:
-                    if is_clim:
-                        nerr+=manageLog(fout, noerror, 'your file name indicates climatology, but the time axis does not have the climatology attribute')
-                    else:
-                        nerr+=manageLog(fout, noerror, 'your file name does not indicates climatology (_clim.nc), but the time axis has the climatology attribute')
-
-
-                if is_clim:
-                    tmp = file(t.climatology,slice(0,1))
-                    ft0 = tmp[0][0]
-                    tmp = file(t.climatology,slice(-1,None))
-                    ft1 = tmp[-1][1]
-                else:
-                    ft0=t[0]
-                    ft1=t[-1]
-                ft0= cdtime.reltime(ft0,t.units).tocomp(t.getCalendar())
-                ft1= cdtime.reltime(ft1,t.units).tocomp(t.getCalendar())
-
-                dates = sp[5+spoffset].split("-")
-
-                # now determines the frequency
-                units = t.units.split("since")[0].strip()
-                interval = float(e['general'].get("approx_interval"))
-                interval = genutil.udunits(interval,units).to("s").value
-
-
-                # determine what the frequency drname should be
-                if (interval<2500.) :
-                    frequency = "subhr"
-                elif (interval<15000.):
-                    frequency = "3hr"
-                elif (interval<30000.):
-                    frequency = "6hr"
-                elif (interval<100000.):
-                    frequency = "day"
-                elif (interval<3.E6):
-                    frequency = "mon"
-                else:
-                    frequency  = "yr"
-      
-                if (interval == 0.):
-                    strcpy(tmp,"fx")
-
-                #Now checks the frequecny attribute matches the one we just decided
-                if file.frequency[-4:]=='Clim':
-                    frequency=frequency+"Clim"
-                if file.frequency!=frequency:
-                    nerr+=manageLog(fout, noerror, 'your file indicates a frequency of "%s" but the approximate_interval suggests it should be: "%s"' % (file.frequency,frequency))
-
-
-                try:
-                    yr0=int(dates[0][:4])
-                except:
-                        nerr+=manageLog(fout, noerror, 'could not convert the years section start date iun your file',dates[0][:4])
-
-                frequency = 'yr'
-                if interval<29.E6:
-                    frequency='mon'
-                    if len(dates[0])<6:
-                        nerr+=manageLog(fout, noerror, 'your file name indicates a start time with years only when the approximate interval says it should have months')
-                    try:
-                        m0 = int(dates[0][4:6])
-                    except:
-                        nerr+=manageLog(fout, noerror, 'could not convert the months section start date iun your file',dates[0][4:6])
-                else:
-                    m0=ft0.month
-
-                if interval < 2E6:
-                    frequency='mon'
-                    if len(dates[0])<8:
-                        nerr+=manageLog(fout, noerror, 'your file name indicates a start time with years and months only when the approximate interval says it should have days')
-                    try:
-                        d0 = int(dates[0][6:8])
-                    except:
-                        nerr+=manageLog(fout, noerror, 'could not convert the day section start date iun your file',dates[0][6:8])
-
-                else:
-                    d0=ft0.day
-
-                if interval < 86000:
-                    if len(dates[0])<12:
-                        nerr+=manageLog(fout, noerror, 'your file name indicates a start time with years, months, days and hours only when the approximate interval says it should have minutes')
-                    try:
-                        h0 = int(dates[0][8:10])
-                    except:
-                        nerr+=manageLog(fout, noerror, 'could not convert the hours section start date iun your file',dates[0][8:10])
-                    try:
-                        mn0 = int(dates[0][10:12])
-                    except:
-                        nerr+=manageLog(fout, noerror, 'could not convert the miuntes section start date iun your file',dates[0][10:12])
-                else:
-                    h0= ft0.hour
-                    mn0=ft0.minute
-
-                if interval < 3000:
-                    if len(dates[0])<14:
-                        nerr+=manageLog(fout, noerror, 'your file name indicates a start time with years, months, days, hours and minutes only when the approximate interval says it should have seconds')
-                    try:
-                        s0 = int(dates[0][12:14])
-                    except:
-                        nerr+=manageLog(fout, noerror, 'could not convert the seconds section start date iun your file',dates[0][12:14])
-
-                else:
-                    s0=ft0.second
-                t0 = cdtime.comptime(yr0,m0,d0,h0,mn0,s0)
-                try:
-                    yr1=int(dates[1][:4])
-                except:
-                    nerr+=manageLog(fout, noerror, 'could not convert the years section end date iun your file',dates[1][:4])
-
-                if interval<29.E6:
-                    if len(dates[1])<6:
-                        nerr+=manageLog(fout, noerror, 'your file name indicates a start time with years only when the approximate interval says it should have months')
-                    try:
-                        m1 = int(dates[1][4:6])
-                    except:
-                        nerr+=manageLog(fout, noerror, 'could not convert the months section end date iun your file',dates[1][4:6])
-
-                else:
-                    m1=ft1.month
-
-                if interval < 2.E6:
-                    if len(dates[1])<8:
-                        nerr+=manageLog(fout, noerror, 'your file name indicates a start time with years and months only when the approximate interval says it should have days')
-                    try:
-                        d1 = int(dates[1][6:8])
-                    except:
-                        nerr+=manageLog(fout, noerror, 'could not convert the days section end date iun your file',dates[1][6:8])
-                else:
-                    d1=ft1.day
-
-                if interval < 90000:
-                    if len(dates[1])<10:
-                        nerr+=manageLog(fout, noerror, 'your file name indicates a start time with years, months and days only when the approximate interval says it should have hours')
-                    try:
-                        h1 = int(dates[1][8:10])
-                    except:
-                        nerr+=manageLog(fout, noerror, 'could not convert the hours section end date iun your file',dates[1][8:10])
-
-                else:
-                    h1=ft1.hour
-                if interval < 4000:
-                    if len(dates[1])<12:
-                        nerr+=manageLog(fout, noerror, 'your file name indicates a start time with years, months, days and hours only when the approximate interval says it should have minutes')
-                    try:
-                        mn1 = int(dates[1][10:12])
-                    except:
-                        nerr+=manageLog(fout, noerror, 'could not convert the minutes section end date iun your file',dates[1][10:12])
-
-                else:
-                    mn1=ft1.minute
-                if interval < 100:
-                    if len(dates[1])<14:
-                        nerr+=manageLog(fout, noerror, 'your file name indicates a start time with years, months, days, hours and minutes only when the approximate interval says it should have seconds')
-                    try:
-                        s1 = int(dates[1][12:14])
-                    except:
-                        nerr+=manageLog(fout, noerror, 'could not convert the seconds section end date iun your file',dates[1][12:14])
-
-                else:
-                    s1=ft1.second
-                t1 = cdtime.comptime(yr1,m1,d1,h1,mn1,s1)
-
-
-                if (ft0.year!=t0.year) or (ft0.month!=t0.month) or (ft0.day!=t0.day):
-                    nerr+=manageLog(fout, noerror, 'your file name indicates a start time of %i-%i-%i but the actual value in the file says: %i-%i-%i' % (t0.year,t0.month,t0.day,ft0.year,ft0.month,ft0.day))
-                if (ft1.year!=t1.year) or (ft1.month!=t1.month) or (ft1.day!=t1.day):
-                    nerr+=manageLog(fout, noerror, 'your file name indicates an end time of %i-%i-%i but the actual value in the file says: %i-%i-%i' % (t1.year,t1.month,t1.day,ft1.year,ft1.month,ft1.day))
-
-
-        
-            
-        manageLog(fout,VERBOSE, 'Checking that file contains only 1 variable')
-        vars=file.listvariable()
-        ## removes dims and other complementary vars
-        # First bounds
-    ##     manageLog(fout,VERBOSE, vars)
-        vars2=file.listvariable()
-        vars3=[]
-        vars4=[]
-        for v in vars2:
-    ##         manageLog(fout,VERBOSE, v)
-            V=file[v]
-            b=getattr(V,'bounds',None)
-            if b is not None:
-                vars.pop(vars.index(b))
-            b=getattr(V,'ancillary_variables',None)
-            if b is not None:
-                for sp in b.split():
-                    if sp.trip() in vars:
-                        vars.pop(sp.strip())
-            for ax in V.getAxisList():
-                b=getattr(ax,'bounds',None)
-                if b is not None:
-                    if b in vars:
-                        vars.pop(vars.index(b))
-                    Ab=file[b] # recovers associated bounds with axis
-                    f=getattr(Ab,'formula_terms',None)
-                    if f is not None:
-                        ## figures out the names of formula_terms
-                        sp=f.split(':')
-    ##                     manageLog(fout,VERBOSE, sp)
-                        for t in sp:
-    ##                         manageLog(fout,VERBOSE, 't is:',t)
-                            t=t.split()[-1]
-    ##                         manageLog(fout,VERBOSE, 'Now it is:',t)
-                            sp2=f.split(t+':')[1].split()[0]
-                            if sp2 in vars:
-                                vars3.append(vars.pop(vars.index(sp2)))
-                                vars4.append(True)
-                f=getattr(ax,'formula_terms',None)
-                if f is not None:
-                    ## figures out the names of formula_terms
-                    sp=f.split(':')
-    ##                 manageLog(fout,VERBOSE, sp)
-                    for t in sp:
-    ##                     manageLog(fout,VERBOSE, 't is:',t)
-                        t=t.split()[-1]
-    ##                     manageLog(fout,VERBOSE, 'Now it is:',t)
-                        sp2=f.split(t+':')[1].split()[0]
-                        if sp2 in vars:
-                            vars3.append(vars.pop(vars.index(sp2)))
-                            vars4.append(False)
-
-
-            coords=getattr(V,'coordinates',None)
-            if coords is not None:
-                coords = coords.split()
-                for c in coords:
-                    if c in vars:
-                        vars.pop(vars.index(c))
-            if hasattr(V,"grid_mapping"):
-                if V.grid_mapping in vars:
-                    vars.pop(vars.index(V.grid_mapping))
-                manageLog(fout,VERBOSE, "Grid_mapping attribute found, we cannot check these files yet")
-                ncheck+=1
-                nwarn+=1
-                return nwarn,ncheck,nerr
-
-
-            t = V.getTime()
-            if t is not None and hasattr(t,"climatology"):
-                c = t.climatology
-                if c in vars:
-                    vars.pop(vars.index(c))
-
-        if len(vars)!=1:
-            nerr+=manageLog(fout, noerror, 'file must contain only 1 variable, you have: '+str(len(vars))+':'+str(vars))
-
-        var=vars[0]
-        if major>=2 and dodrs:
-            #Now checks for the DRS file structure
-            prj_id = file.project_id.strip().replace(" ","_")
-            prod = file.product
-            inst = file.institute_id
-            if inst == 'not specified' :
-                inst = "INSTITUTE_ID"
-            mod = file.model_id
-            exp = file.experiment_id
-            #by pass no sht for now...
-            noff=0
-                
-            fq = file.frequency
-            realm = file.modeling_realm
-            r = str(int(file.realization))
-            if hasattr(file,"initialization_method"):
-                r+="i"+str(int(file.initialization_method))
-            if hasattr(file,"physics_version"):
-                r+="p"+str(int(file.physics_version))
-            path = os.path.dirname(fnm).split("/")
-            nerr += drs_check_pos(1,path,fout,noerror,'r%s' % r, 'realization')
-            nerr += drs_check_pos(2,path,fout,noerror,var, 'variable')
-            nerr += drs_check_pos(3,path,fout,noerror,realm, 'modeling realm')
-            nerr += drs_check_pos(4,path,fout,noerror,fq, 'frequency')
-            if exp == file.experiment:
-                noff=1
-            else:
-                nerr += drs_check_pos(5,path,fout,noerror,exp, 'experiment id')
-            nerr += drs_check_pos(6-noff,path,fout,noerror,hyphenize(mod), 'model id')
-            nerr += drs_check_pos(7-noff,path,fout,noerror,inst, 'insitution id')
-            nerr += drs_check_pos(8-noff,path,fout,noerror,prod, 'product')
-            nerr += drs_check_pos(9-noff,path,fout,noerror,prj_id, 'project id')
-                            
-    fb=False
-    if variable is not None:
-        var=variable
-        fb=from_bounds
-        manageLog(fout,VERBOSE, 'Ok user asked to check the following variable:',variable,'with from bounds =',fb)
-    manageLog(fout,VERBOSE, 'Checking variable name is %s compliant' % file.project_id)
-    if not var in IPCC_std_vars:
-        if var in Vars.keys():
-            nerr+=manageLog(fout, noerror, var+' is not valid, did you mean :'+Vars[var]['out_name']+' ?')
-        else:
-            nerr+=manageLog(fout, noerror, 'Variable name :'+var+' is not %s compliant' % file.project_id)
-    if variable is None:
-        manageLog(fout,VERBOSE, 'Checking that variable name in file matches file indications')
-        if not var == vf:
-            nerr+=manageLog(fout, noerror, 'File indicates it stores variable:'+vf+' but actually '+var+' is stored in it')
-    
-    V=file[var]
-
-    axes=V.getAxisList()
-    hasLat=0
-    hasLon=0
-    hasTime=0
-    hasLevel=0
-
-    ax_dict_name=[]
-    for ax in axes:
-        manageLog(fout,VERBOSE, 'Checking axis name is valid for:',ax.id,'on var:',V.id)
-        if not ax.id in IPCC_std_axes:
-            if ax.id in Axes.keys():
-                if major <2:
-                    ncheck+=1
-                    nwarn+=1
-                    nerr+=manageLog(fout,cmor.CMOR_WARNING, '\t\t'+ax.id+' is not preferred. We suggest you rename it:'+Axes[ax.id]['out_name'])
-                else:
-                    manageLog(fout,noerror, '\t\tAxis name '+ax.id+' is not valid. We require you rename it:'+Axes[ax.id]['out_name'])
-            elif (fb == False) or (fb == True and V.rank()!=2):
-                nerr+=manageLog(fout, noerror, 'axis id: '+ax.id+' is not a valid IPCC name')
-        if ax.isLatitude():
-            hasLat=1
-        if ax.isLongitude():
-            hasLon=1
-        if ax.isTime():
-            hasTime=1
-        if ax.isLevel():
-            hasLevel=1
-
-    old_ordering=0
-    o=V.getOrder(ids=1)
-    if old_ordering:
-        manageLog(fout,VERBOSE, 'Checking dimensions order')
-        if hasTime:
-            manageLog(fout,VERBOSE, '\tChecking time position')
-            if o[0]=='t':
-                o=o[1:]
-            else:
-                nerr+=manageLog(fout, noerror, 'time must be first dimension your ordering is:'+o)
-
-        manageLog(fout,VERBOSE, '\tChecking none tzxy dims position')
-        sp=o.split('(')
-        if len(sp)>1:
-            if o[0]!='(':
-                nerr+=manageLog(fout, noerror, 'none zyx dimensions must come right after time dimension, you have:'+o)
-            o=o.split(')')[-1]
-        manageLog(fout,VERBOSE, '\tChecking level position')
-        if hasLevel:
-            if o[0]=='z':
-                o=o[1:]
-            else:
-                nerr+=manageLog(fout, noerror, 'level must be ordered after time your order is:'+o)
-        manageLog(fout,VERBOSE, '\tChecking latitude position')
-        if hasLat:
-            if o[0]=='y':
-                o=o[1:]
-            else:
-                nerr+=manageLog(fout, noerror, 'latitude must be ordered after time and level your order is:'+o)
-        manageLog(fout,VERBOSE, '\tChecking longitude position')
-        if hasLon:
-            if o[0]=='x':
-                o=o[1:]
-            else:
-                nerr+=manageLog(fout, noerror, 'longitude must be ordered after time, level and latitude your order is:'+o)
-        
-    g=None
-    if hasLat and hasLon:
-        manageLog(fout,VERBOSE, 'Checking grid')
-        g=V.getGrid()
-        if not isinstance(g,cdms2.grid.AbstractRectGrid):
-            nerr+=manageLog(fout, noerror, 'lat/lon variable ('+var+') must have Rectilinear grids')
-
-    axes_nmes=Vars[var].get('dimensions',None)
-
-    if axes_nmes is not None:
-        manageLog(fout,VERBOSE, 'Checking rest of things on axes')
-        axes_nmes=axes_nmes[::-1]
-        axes_nmes_for_ordering=Vars[var]['dimensions'][::-1]
-        coord=getattr(V,'coordinates',None)
-        for nm in axes_nmes:
-            req_Att=['standard_name','units']
-            anm = nm
-            if nm in [ 'zlevel',]+e['general'].get('generic_levels','').split():
-                gnm=nm
-                manageLog(fout,VERBOSE, '\tChecking special case %s, i.e' % (nm),'')
-                tmpax=V.getLevel()
-                print>>fout,  tmpax.id,tmpax.standard_name
-                for x in Axes.keys():
-                    tmp=Axes[x].get('standard_name',None)
-                    if tmp is not None: tmp=tmp.strip()
-                    if tmp is not None and tmp==tmpax.standard_name:
-                        nm=x
-                        Nm=Axes[x]['out_name']
-                        anm=x
-                        req_Att.append('formula')
-                        req_Att.append('formula_terms')
-                        if getattr(tmpax,"formula","")==Axes[x]['formula']:
-                            break
-                axes_nmes_for_ordering[axes_nmes_for_ordering.index(gnm)]=nm
-            elif not nm in V.getAxisIds():
-                try:
-                    Nm=Axes[nm]['out_name']
-                except:
-                    nerr+=manageLog(fout, noerror, 'with axis: '+nm+' not found for variable: '+var, noerror)
-            else:
-                Nm=nm
-            if major>1:
-                if Axes[anm].get("must_have_bounds","no")=="yes":
-                    req_Att.append("bounds")
-                if Axes[anm].get("axis",None) is not None:
-                    req_Att.append("axis")
-            else:
-                req_Att.append("bounds")
-
-            if nm == 'time' and is_clim:
-                req_Att.pop(req_Att.index("bounds"))
-                
-            manageLog(fout,VERBOSE, '\tChecking',Nm)
-            axindx=V.getAxisIndex(Nm)
-            val=Axes[nm].get('value',None)
-            if val is not None: #singleton dimension ?
-                manageLog(fout,VERBOSE, '\t\tSingleton dimension')
-                if val is None:
-                    nerr+=manageLog(fout, noerror, 'cannot retrieve needed axis:'+Nm)
-                else:
-                    val=float(val)
-                    if axindx!=-1:
-                        nerr+=manageLog(fout, noerror, 'singleton dimension '+Nm+' must be defined via coordinates attributes on variable '+var+' not as an axis')
-                    else:
-                        manageLog(fout,VERBOSE, '\t\tChecking coordinates attribute exists on '+var)
-                        aval=getattr(V,'coordinates',None)
-                        if aval is None:
-                            nerr+=manageLog(fout, noerror, 'singleton dimension must be defined via coordinates attribute')
-                        manageLog(fout,VERBOSE, '\t\tChecking coordinates attribute matches for '+var)
-                        if not Nm in aval.split():
-                            nerr+=manageLog(fout, noerror, 'coordinates atrtribute on '+var+' should be '+Nm+' it is '+aval)
-
-                        ax=file[Nm]
-                        mn,mx=Axes[nm].get('valid_min',None), Axes[nm].get('valid_max',None)
-                        manageLog(fout,VERBOSE, '\t\tChecks for value')
-                        if ax != val:
-                            manageLog(fout,VERBOSE, '\t\t\tNot matching, checking if valid range is defined in table')
-                            if mn is None and mx is None:
-                                nerr+=manageLog(fout, noerror, 'singleton dimension value for '+Nm+' must be '+str(val))
-                            manageLog(fout,VERBOSE, '\t\t\tChecking if value is within range defined in table')
-                            if mn is not None:
-                                if mx is not None:
-                                    if not( float(mn)<ax<float(mx)):
-                                        nerr+=manageLog(fout, noerror, 'invalid value for singleton dimension '+Nm+': '+str(ax)+' must be between '+mn+' and '+mx)
-                                elif ax<float(mn):
-                                    nerr+=manageLog(fout, noerror, 'invalid min for singleton dimension '+Nm+': '+str(ax)+' must be greater than '+mn)
-                            elif ax>float(mx):
-                                    nerr+=manageLog(fout, noerror, 'invalid max for singleton dimension '+Nm+': '+str(ax)+' must be less than '+mx)
-                        manageLog(fout,VERBOSE, '\t\tChecking for bounds information')
-                        b=getattr(ax,'bounds',None)
-                        bv=Axes[nm].get('bounds_values',None)
-                        if bv is not None:
-                            manageLog(fout,VERBOSE, '\t\t\tBounds information defined in table, checking vs file')
-                            bv=bv.split()
-                            bv=float(bv[0]),float(bv[1])
-                            if b is not None:
-                                manageLog(fout,VERBOSE, '\t\t\tBounds information defined in file, checking if matches')
-                                abv=file[b]
-                                ncheck+=1
-                                if abv[0]!=bv[0] or abv[1]!=bv[1]:
-                                    nwarn+=1
-                                    manageLog(fout,cmor.CMOR_WARNING, '\t\t\t\tbounds_value for singleton dimension '+Nm+': '+str(abv)+' do not match requested bounds:'+str(bv))
-                            else:
-                                nerr+=manageLog(fout, noerror, 'singleton dimension: '+Nm+' bounds required')
-                        else:
-                            ncheck+=1
-                            if b is not None:
-                                nwarn+=1
-                                manageLog(fout,cmor.CMOR_WARNING, '\t\t\t\tSingleton dimension: '+Nm+' bounds should not be included')
-
-                axes_nmes_for_ordering.pop(0)
-                continue # singleton dimension checked no need to continue further
-
-            if axindx==-1:
-                nerr+=manageLog(fout, noerror, 'Variable '+var+' should have an axis called '+Axes[Nm])
-            ax=V.getAxis(axindx)
-            manageLog(fout,VERBOSE, '\t\tChecking that dimension order is positioned:',axes_nmes_for_ordering.index(nm)+1,axes_nmes)
-            if axindx!=axes_nmes_for_ordering.index(nm):
-                nerr+=manageLog(fout, noerror, 'in ordering for dimension '+nm+' position is: '+str(axindx)+' but it should be: '+str(axes_nmes_for_ordering.index(nm)))
-            if ('cell_bounds' in Axes[nm].get('ignored',[])) or ('cell_bounds' in Axes[nm].get('forbidden',[])) or ('cell_bounds' in Axes[nm].get('optional',[])):
-                req_Att.pop(req_Att.index('bounds'))
-            if 'units' in Axes[nm].get('ignored',[]) or 'units' in Axes[nm].get('optional',[]):
-                try:
-                    req_Att.pop(req_Att.index('units'))
-                except:
-                    pass
-            ## Ok here we're trying to do the region thing, i.e coordinate attribute exist
-            docoord=False
-            if coord is not None:
-                for c in coord.split():
-                    nax=file[c]
-                    if ax.id in nax.getAxisIds():
-                        oldax=ax
-                        ax=nax
-                        docoord=True
-            manageLog(fout,VERBOSE, '\t\tChecking if required attributes are set:','')
-            for r in req_Att:
-                manageLog(fout,VERBOSE, r,'')
-                val=getattr(ax,r,None)
-                if val is None:
-                    print >>fout
-                    nerr+=manageLog(fout, noerror, 'attribute '+r+' is required for axis '+ax.id)
-                if r!='units':
-                    good_val=Axes[nm].get(r,None)
-                    if good_val is not None:
-                        if val!=good_val:
-                            nerr+=manageLog(fout, noerror, 'axis attribute '+r+' should be: '+str(good_val)+' but is:'+str(val))
-                if r=='formula_terms':
-                    print 'Formula:',Axes[anm]['formula'],val
-            print >>fout
-            if not 'units' in Axes[nm].get('ignored',[]):
-                if not 'units' in Axes[nm].get('optional',[]) or ('units' in Axes[nm].get('optional',[]) and hasattr(ax,'units')):
-                    if not ax.isTime():
-                        manageLog(fout,VERBOSE, '\t\tChecking units',ax.units)
-                        if major<2:
-                            u1=genutil.udunits(1,ax.units)
-                            try:
-                                u2=u1.to(Axes[nm]['units'])
-                                if u2.value!=1:
-                                    nerr+=manageLog(fout, noerror, 'units:'+ax.units+' are not compatible with required:'+Axes[nm]['units'])
-                            except:
-                                nerr+=manageLog(fout, noerror, 'units:'+ax.units+' are not compatible with required:'+Axes[nm]['units'])
-                        else:
-                            if ax.units != Axes[nm]['units']:
-                                nerr+=manageLog(fout, noerror, 'units: '+ax.units+' are not the required units:'+Axes[nm]['units'])
-
-                    else:
-                        manageLog(fout,VERBOSE, '\t\tChecking units',ax.units)
-                        if major>1:
-                            if ax.units.lower().find("days since")==-1:
-                                nerr+=manageLog(fout,noerror,'Time units must be in "days since", you have:',ax.units)
-                            bnds = ax.getBounds()
-                            if bnds is not None:
-                                for i in range(len(ax)):
-                                    if ax[i]!=(bnds[i][0]+bnds[i][1])/2.:
-                                        nerr+=manageLog(fout,noerror,"Time values are not average of time bounds")
-                        try:
-                            u=cdtime.reltime(1,ax.units)
-                        except:
-                            nerr+=manageLog(fout, noerror, 'invalid time units:'+ax.units+', should be in the form: "'+Axes[nm]['units']+'"')
-                        try:
-                            c=ax.calendar
-                        except:
-                            c='none'
-                        if not c in ["gregorian","standard", "proleptic_gregorian","noleap","365_day","360_day","julian","none","non_standard"]:
-                            nerr+=manageLog(fout,noerror,"calendar must be one of [","gregorian","standard", "proleptic_gregorian","noleap","365_day","360_day","julian","none","non_standard ] yours is",c)
-                        if c=='365_day':
-                            c=cdtime.NoLeapCalendar
-                        else:
-                            c=ax.getCalendar()
-                        manageLog(fout,VERBOSE, '\t\tView First and Last times:\t',ax.asComponentTime(c)[0],'\t',ax.asComponentTime(c)[-1])
-                        tmpbnds=ax.getBounds()
-                        if tmpbnds is not None:
-                            manageLog(fout,VERBOSE, '\t\tView Bounds for first time:\t',cdtime.reltime(tmpbnds[0,0],ax.units).tocomp(c),'\t',cdtime.reltime(tmpbnds[0,1],ax.units).tocomp(c))
-                            manageLog(fout,VERBOSE, '\t\tView Bounds for last time:\t',cdtime.reltime(tmpbnds[-1,0],ax.units).tocomp(c),'\t',cdtime.reltime(tmpbnds[-1,1],ax.units).tocomp(c))
-                        else:
-                            manageLog(fout,VERBOSE,'\t\tNo Bounds for time')
-                            
-
-            tp=Axes[nm].get('type','double')
-            manageLog(fout,VERBOSE, '\t\tChecking axis is type',tp)
-
-            if tp == 'double' : tp='d'
-            elif tp == 'real' : tp='f'
-            elif tp == 'character' : tp='c'
-            elif tp == 'integer' : tp='l'
-            else:
-                nerr+=manageLog(fout, noerror, 'encountered unknown type:'+tp)
-            if ax.typecode()!=tp:
-                nerr+=manageLog(fout, noerror, 'required typecode for '+Nm+' should be '+tp+' not '+ax.typecode())
-
-            if ax.isLongitude():
-                manageLog(fout,VERBOSE, '\t\tChecking for axis attribute')
-                a=getattr(ax,'axis',None)
-                if a is None:
-                    nerr+=manageLog(fout, noerror, 'longitude axis must have associated axis attribute')
-                if a!='X':
-                    nerr+=manageLog(fout, noerror, 'longitude axis must have associated axis attribute set to X not: '+a)
-                manageLog(fout,VERBOSE, '\t\tChecking name')
-                if not ax.id in ['lon','longitude']:
-                    nerr+=manageLog(fout, noerror, 'longitude axis name must be longitude or lon (prefered) not: '+ax.id)
-##                 else:
-##                     ncheck+=1
-##                     if ax.id=='longitude':
-##                         nwarn+=1
-##                         manageLog(fout,cmor.CMOR_WARNING, '\t\t\tWe recomend longitude axis name to be: "lon"')
-                manageLog(fout,VERBOSE, '\t\tChecking that the first point is >= 0')
-                if ax[0]<0:
-                    nerr+=manageLog(fout, noerror, 'first longitude must be >= 0 degrees_east')
-                manageLog(fout,VERBOSE, '\t\tChecking that the longitude are in degrees (not rads)')
-                min,max=genutil.minmax(ax[:])
-                if 0.<max-min<6.3:
-                    nerr+=manageLog(fout, noerror, 'longitude must be stored in degree span is:'+str(max-min)+' looks like rad')
-            elif ax.isLatitude():
-                manageLog(fout,VERBOSE, '\t\tChecking for axis attribute')
-                a=getattr(ax,'axis',None)
-                if a is None:
-                    nerr+=manageLog(fout, noerror, 'latitude axis must have associated axis attribute')
-                if a!='Y':
-                    nerr+=manageLog(fout, noerror, 'latitude axis must have associated axis attribute set to Y not: '+a)
-                manageLog(fout,VERBOSE, '\t\tChecking name')
-                if not ax.id in ['lat','latitude']:
-                    nerr+=manageLog(fout, noerror, 'latitude axis name must be latitude or lat (prefered) not: '+ax.id)
-##                 else:
-##                     ncheck+=1
-##                     if ax.id=='latitude':
-##                         nwarn+=1
-##                         manageLog(fout,cmor.CMOR_WARNING, '\t\t\tWe recomend latitude axis name to be: "lat"')
-                manageLog(fout,VERBOSE, '\t\tChecking that the latitude are in degrees (not rads)')
-                min,max=genutil.minmax(ax[:])
-                if 0.<max-min<3.2:
-                    print ax[:]
-                    nerr+=manageLog(fout, noerror, 'latitude must be stored in degree span is:'+str(max-min)+' looks like rad')
-            elif ax.isTime() and len(ax[:])>1:
-                manageLog(fout,VERBOSE, '\t\tChecking for axis attribute')
-                a=getattr(ax,'axis',None)
-                if a is None:
-                    nerr+=manageLog(fout, noerror, 'time axis must have associated axis attribute')
-                if a!='T':
-                    nerr+=manageLog(fout, noerror, 'time axis must have associated axis attribute set to T not: '+a)
-                manageLog(fout,VERBOSE, '\t\tView calendar attribute: ','')
-                c=getattr(ax,'calendar',None)
-                if c is None:
-                    print >>fout
-                    nerr+=manageLog(fout, noerror, 'calendar attribute must be defined on time axis')
-                else:
-                    manageLog(fout,VERBOSE, c)
-                    
-            elif ax.isLevel():
-                manageLog(fout,VERBOSE, '\t\tChecking for axis attribute')
-                a=getattr(ax,'axis',None)
-                if a is None:
-                    nerr+=manageLog(fout, noerror, 'vertical axis must have associated axis attribute')
-                if a!='Z':
-                    nerr+=manageLog(fout, noerror, 'vertical axis must have associated axis attribute set to Z not: '+a)
-                manageLog(fout,VERBOSE, '\t\tChecking that level are stored with first level closest from surface')
-                ## ???
-                manageLog(fout,VERBOSE, '\t\tChecking positive attribute')
-                p=getattr(ax,'positive',None)
-                if not nm in [ 'zlevel', 'alevel','olevel']:
-                    ncheck+=1
-                if p is None:
-                    if nm in ['zlevel','alevel','olevel']:
-                        nerr+=manageLog(fout, noerror, 'vertical dimensions must have positive attribute')
-                    else:
-                        nwarn+=1
-                        manageLog(fout,cmor.CMOR_WARNING, 'The "positive" attribute should be defined for vertical dimensions.','name was:',nm,gnm)
-                        
-                elif not p in ['up','down']:
-                    nerr+=manageLog(fout, noerror, 'positive attribute on vertical dimension must be be up or down not: '+p)
-                if hasattr(ax,'formula_terms'):
-                    ncheck+=1
-                    if not hasattr(ax,'formula'):
-                        manageLog(fout,cmor.CMOR_WARNING, '\t\t\tLevel dimension has no attribute formula!')
-                        nwarn+=1
-                    ncheck+=1
-                    manageLog(fout,VERBOSE, '\t\tChecking that formula terms variables are stored')
-                    ft=getattr(ax,'formula_terms',None)
-                    ## figures out the names of formula_terms
-                    sp=ft.split(':')
-    ##                 manageLog(fout,VERBOSE, sp)
-                    for t in sp:
-    ##                     manageLog(fout,VERBOSE, 't is:',t)
-                        t=t.split()[-1]
-    ##                     manageLog(fout,VERBOSE, 'Now it is:',t)
-                        sp2=ft.split(t+':')[1].split()[0]
-                        if not sp2 in file.variables.keys():
-                            nerr+=manageLog(fout, noerror, 'formula_terms attribute indicates variable '+sp2+' should be stored in file')
-
-            if not docoord:
-                dirc=Axes[nm].get('stored_direction','increasing').lower()
-                if dirc == 'increasing':
-                    func=numpy.greater
-                elif dirc == 'decreasing':
-                    func=numpy.less
-                else:
-                    nerr+=manageLog(fout, noerror, 'unknown value for stored_direction:',dirc)
-                manageLog(fout,VERBOSE, '\t\tChecking that axis is stored '+dirc+'ly')
-                prev=ax[0]
-                for a in ax[1:]:
-                    if not func(a,prev):
-                        nerr+=manageLog(fout, noerror, 'axis values for '+Nm+' must be stored:'+dirc+'ly')
-                    prev=a
-                Mn,Mx=genutil.minmax(ax[:])
-                mn=Axes[nm].get('valid_min',None)
-                if mn is not None:
-                    manageLog(fout,VERBOSE, '\t\tChecking valid min',mn)
-                    if Mn<float(mn):
-                        nerr+=manageLog(fout, noerror, 'axis '+Nm+' invalid min:'+str(Mn)+' cannot be less than:'+mn)
-                mx=Axes[nm].get('valid_max',None)
-                if mx is not None:
-                    manageLog(fout,VERBOSE, '\t\tChecking valid max',mx)
-                    if Mx>float(mx):
-                        nerr+=manageLog(fout, noerror, 'axis '+Nm+' invalid max:'+str(Mx)+' cannot be greater than:'+mx)
-            rq=Axes[nm].get('requested',None)
-            if rq is not None:
-                manageLog(fout,VERBOSE, '\t\tChecking that requested values are present:',rq)
-                tol=float(Axes[nm].get('tol_on_requests',1.e-3))
-                for ir in range(len(rq)):
-                    r=rq[ir]
-                    found=0
-                    if docoord:
-                        for iv in range(len(ax[:])):
-                            v=ax[iv]
-                            st=''
-                            for vv in v:
-                                st+=str(vv)
-                            if r.strip().lower()==st.strip().lower():
-                                found=1
-                                ifound=iv
-                                break
-                    else:
-                        r=float(r)
-                        for iv in range(len(ax[:])):
-                            v=ax[iv]
-                            if abs(v-r)<tol:
-                                found=1
-                                ifound=iv
-                                break
-                    if found==0:
-                        nerr+=manageLog(fout, noerror, 'on axis '+Nm+' requested value '+str(r)+' not found')
-##                     elif ifound!=ir:
-##                         nerr+=manageLog(fout, noerror, 'on axis '+Nm+' requested value "'+str(r)+'" present but not in the correct order, it is at position '+str(ifound)+' but should be ordered '+str(ir)+' ( actual order should be: '+str(rq)+' )')
-
-            if 'bounds' in req_Att:
-                manageLog(fout,VERBOSE, '\t\tChecking for bounds')
-                b=getattr(ax,'bounds',None)
-                if b is None:
-    ##                 if ax.isLevel():
-    ##                     manageLog(fout,cmor.CMOR_WARNING, '\t\t\tLevel dimension has no bounds!')
-    ##                     nwarn+=1
-    ##                     ncheck+=1
-    ##                 if ax.isTime():
-    ##                     manageLog(fout,cmor.CMOR_WARNING, '\t\t\tTime dimension has no bounds!')
-    ##                     nwarn+=1
-    ##                     ncheck+=1
-    ##                 else:
-                        nerr+=manageLog(fout, noerror, 'dimension:'+Nm+' has no associated bounds')
-                else:
-                    manageLog(fout,VERBOSE, '\t\tChecking that defined bounds variable is in file')
-                    if not b in file.variables.keys():
-                        nerr+=manageLog(fout, noerror, 'dimension '+Nm+' associated bounds are defined to be '+b+' but the variable is not present in file')
-                    if ax.isTime():
-                        interv = Axes[nm].get('interval',None)
-                        tinterv = e['general'].get('approx_interval',None)
-                        if float(tinterv) == 30. and interv!=0:
-                            manageLog(fout,VERBOSE, '\t\tChecking that bounds are at beg and end of month')
-                            bnds=ax.getBounds()
-                            for ib in range(len(ax[:])):
-                                b=bnds[ib]
-                                c=ax.calendar
-                                if c=='365_day':
-                                    c=cdtime.NoLeapCalendar
-                                else:
-                                    c=ax.getCalendar()
-
-##                                 print 'Used calendar:',c
-                                beg=cdtime.reltime(b[0],ax.units).tocomp(c)
-                                end=cdtime.reltime(b[1],ax.units).tocomp(c)
-                                mid=cdtime.reltime(ax[ib],ax.units).tocomp(c)
-                                if beg.month!=mid.month:
-                                    nerr+=manageLog(fout, noerror, 'at time value: '+str(mid)+' (index: '+str(ib)+' ) bounds do not start in the same month than time value: '+str(beg))
-                                if beg.cmp(cdtime.comptime(beg.year,beg.month))!=0:
-                                    nerr+=manageLog(fout, noerror, 'at time value: '+str(mid)+' (index: '+str(ib)+' ) bounds do not start at begining of the month: '+str(beg))
-                                if end.month!=mid.add(1,cdtime.Month).month:
-                                    nerr+=manageLog(fout, noerror, 'at time value: '+str(mid)+' (index: '+str(ib)+' ) bounds do not end in the following month than time value: '+str(end))
-                                if end.cmp(beg.add(1,cdtime.Month))!=0:
-                                    nerr+=manageLog(fout, noerror, 'at time value: '+str(mid)+' (index: '+str(ib)+' ) bounds do not end at end of the month: '+str(end))
-
-    manageLog(fout,VERBOSE, 'Checking variable:',var)
-    req_var_Att = ['standard_name','units']
-    opt_var_Att=['original_name','history','long_name','comment','coordinates','cell_methods','original_units',"cell_measures"]
-    for etmp in etables:
-        ev = etmp['variable']
-        for v in ev.keys():
-            if v == var:
-                for p in ev[v].get("optional",[]):
-                    if p in req_var_Att:
-                        req_var_Att.pop(req_var_Att.index(p))
-    if major >1 and variable is None:
-        req_var_Att.append("associated_files")
-        req_var_Att.append("associated_files")
-        req_var_Att.append("long_name")
-        opt_var_Att.append("missing_value")
-        opt_var_Att.append("_FillValue")
-    if major>1:
-        for att in ['units','standard_name']:
-            if ev[var].get(att,None) is None:
-                req_var_Att.pop(req_var_Att.index(att))
-        for att in ['cell_measures','cell_methods','flag_values']:
-            if ev[var].get(att,None) is not None:
-                req_var_Att.append(att)
-        
-        
-    for o in Vars[var].get('optional',[]):
-        if not o in opt_var_Att:
-            opt_var_Att.append(o)
-    manageLog(fout,VERBOSE, '\tChecking if required attributes are set:','')
-    for r in req_var_Att:
-        manageLog(fout,VERBOSE, r,'')
-        val = getattr(V,r,None)
-        if val is None:
-            nerr+=manageLog(fout, noerror, 'Attribute '+r+' is required but not set for var '+var)
-        elif r!='units' and r.strip().lower()!='standard_name':
-            good_val=Vars[var].get(r,None)
-            if good_val is not None:
-                if val!=good_val:
-                    nerr+=manageLog(fout, noerror, 'variable attribute '+r+' should be: '+str(good_val)+' but is:'+str(val))
-            elif r=='associated_files':
-                if val.find("baseURL:") == -1:
-                    nerr+=manageLog(fout,noerror,"associated_files attributes must contain a baseURL")
-                elif val.find(e['general']['baseURL'].replace("http","http:")) == -1:
-                    nerr+=manageLog(fout,noerror,"wrong baseURL, should be: '%s', you have: " % e['general']['baseURL'].replace("http","http:"),val)
-                if Vars[var].get("cell_measures",None) is not None:
-                    sp=Vars[var].get("cell_measures").split()
-                    for i in range(len(sp)/2):
-                        if val.find(sp[i+1]+"_")==-1:
-                            nerr+=manageLog(fout,noerror,"associated files should point to file containing:",sp[i+1],'you have:',val)
-                            
-    print >>fout
-    tp=Vars[V.id].get('type','real')
-    manageLog(fout,VERBOSE, '\tChecking Variable typecode is',tp)
-    if tp == 'double' : tp='d'
-    elif tp == 'real' : tp='f'
-    elif tp == 'character' : tp='c'
-    elif tp == 'integer' : tp='l'
-    else:
-        nerr+=manageLog(fout, noerror, 'encountered unknown type:'+tp)
-    if V.typecode()!=tp:
-        nerr+=manageLog(fout, noerror, 'variable typecode must be '+tp+', it is:'+V.typecode())
-
-    if 'units' in req_var_Att:
-        manageLog(fout,VERBOSE, '\tChecking defined units')
-        U1=unidata.udunits(1,V.units)
-        try:
-            U2=U1.to(Vars[var]['units'])
-            if U2.value!=1:
-                nerr+=manageLog(fout, noerror, 'variable units:'+V.units+' do not match IPCC units:'+Vars[var]['units']+'\n'+\
-                      '1 '+V.units+' is actually :'+str(U2))
-        except:
-            nerr+=manageLog(fout, noerror, 'variable units:'+V.units+' do not match IPCC units:'+Vars[var]['units'])
-    if 'standard_name' in Vars[var].keys():
-        manageLog(fout,VERBOSE, '\tChecking standard name (case independent)')
-        if getattr(V,'standard_name','').lower().strip()!=Vars[var]['standard_name']:
-            nerr+=manageLog(fout, noerror, 'standard_name for '+var+' should be:'+Vars[var]['standard_name'])
-
-##     if hasattr(V,'_FillValue'):
-##         manageLog(fout,VERBOSE, '\tChecking for _FillValue')
-##         tp=Vars[V.id].get('type','real')
-##         if tp == 'double' :
-##             tpv=numpy.array([float(e['general'].get('double_missing_value',1.e20)),],'d')
-##         elif tp == 'real' :
-##             tpv=numpy.array([float(e['general'].get('missing_value',1.e20)),],'f')
-##         elif tp == 'integer' :
-##             tpv=numpy.array([int(e['general'].get('integer_missing_value',-192837)),],'i')
-##         else:
-##             nerr+=manageLog(fout, noerror, 'encountered unknown type:'+tp)
-##         print V.id,'type is:',tp,V._FillValue,tpv
-##         if getattr(V,'_FillValue')!=tpv:
-##             nerr+=manageLog(fout, noerror, '_FillValue must be '+str(tpv)+' (in the typecode of variable)')
-
-    manageLog(fout,VERBOSE, '\tChecking for warnings')
-    if hasattr(V,'_FillValue'):
-        if not hasattr(V,'missing_value'):
-            if major<2:
-                ncheck+=1        
-                manageLog(fout,cmor.CMOR_WARNING, '\t\tYou defined _FillValue. We recommend you also define missing_value')
-                nwarn+=1
-            else:
-                manageLog(fout,cmor.CMOR_WARNING, '\t\tYou defined _FillValue, You must also define missing_value')
-        elif V.missing_value!=V._FillValue:
-            nerr+=manageLog(fout, noerror, 'missing_value and _FillValue attributes are different')
-    if hasattr(V,'missing_value'):
-        if not hasattr(V,'_FillValue'):
-            if major<2:
-                ncheck+=1        
-                manageLog(fout,cmor.CMOR_WARNING, '\t\tYou defined missing_value. We recommend you also define _FillValue')
-                nwarn+=1
-            else:
-                manageLog(fout,cmor.CMOR_WARNING, '\t\tYou defined missing_value, You must also define _FillValue')
-        elif V.missing_value!=V._FillValue:
-            nerr+=manageLog(fout, noerror, 'missing_value and _FillValue attributes are different')
-        elif V.missing_value!=1.e20:
-            nerr+=manageLog(fout,noerror,'missing_value and _FillValue must be set to 1.e20f')
-        
-    if variable is None:
-        cm=Vars[var].get('cell_methods',[])
-        if cm!=[]:
-            manageLog(fout,VERBOSE, '\tChecking for cell_methods: ','')
-            if not hasattr(V,'cell_methods'):
-                print >> fout
-                nerr+=manageLog(fout, noerror, 'Variable '+var+' should have "cell_methods" attribute')
-            else:
-                 print >> fout,V.cell_methods
-               
-            cmv=getattr(V,'cell_methods','')
-            sp=cm.split('(')
-            cm=sp[0]
-            for s in sp[1:]:
-                cm+=s.split(')')[-1]
-            sp=cmv.split('(')
-            cmv=sp[0]
-            for s in sp[1:]:
-                cmv+=s.split(')')[-1]
-            sp=cm.split(':')
-            dic={}
-            kw=sp[0].strip()
-            for s in sp[1:]:
-                dic[kw]=s.split()[0].strip()
-                kw=s.split()[-1].strip()
-            sp=cmv.split(':')
-            dicv={}
-            kw=sp[0].strip()
-            for s in sp[1:]:
-                dicv[kw]=s.split()[0].strip()
-                kw=s.split()[-1].strip()
-            for kw in dic.keys():
-                if not kw in dicv.keys():
-                    nerr+=manageLog(fout, noerror, 'cell_methods must include '+kw+' defined (to: '+dic[kw]+' )')
-                elif not dicv[kw]==dic[kw]:
-                    nerr+=manageLog(fout, noerror, 'cell_method: '+kw+' definition does not match table, it is :'+dicv[kw]+' but should be: '+dic[kw])
-        for att in opt_var_Att:
-            ncheck+=1
-            if not hasattr(V,att):
-                nwarn+=1
-                manageLog(fout,cmor.CMOR_WARNING, '\t\tWhen appropriate, it is often helpful to define the variable attribute: ',att)
-        for att in V.attributes.keys():
-            ncheck+=1
-            if not att in req_var_Att and not att in opt_var_Att:
-                nwarn+=1
-                manageLog(fout,cmor.CMOR_WARNING, '\t\tYou have attribute: %s, which is neither required nor optional ' % (att))
-
-        manageLog(fout,VERBOSE, '\n**********************************************************************************************\n')
-        manageLog(fout,VERBOSE, 'Done with main variable moving on to sub-variables')
-        for iv in range(len(vars3)):
-            manageLog(fout,VERBOSE, '\n----------------------------------------------------------------------------------------------\n')
-            v=vars3[iv]
-            fb=vars4[iv]
-            manageLog(fout,VERBOSE, 'Now Checking sub-variable:',v)
-            manageLog(fout,VERBOSE, '\n----------------------------------------------------------------------------------------------\n')
-            nwarn_add,ncheck_add,nerr_add=checkCMOR(fout,file,table,variable=v,from_bounds=fb,noerror=noerror)
-            nwarn+=nwarn_add
-            ncheck+=ncheck_add
-            nerr+=nerr
-        manageLog(fout,cmor.CMOR_WARNING, '%d warnings issued out of %d checked for (%5.2f%%)' % (nwarn,ncheck,float(nwarn)/ncheck*100))
-        if nerr!=0:
-            print 'Nerr:',nerr
-            raise CMORError,'%i CMOR errors were raise, please check output and correct your file !!!!' % (nerr)
-
-        file.close()
-    return nwarn,ncheck,nerr
-            
-if __name__=='__main__':
-    import getopt,sys
-
-    var=None
-
-    file='Test/tas_diurnal_A1_pcmdi-01_run01_20300101_20300301_clim.nc'
-    table='Test/climatology_test_table_A'
-    nargs = len(sys.argv)
-    
-    grid_table = None
-    
-    noerror=cmor.CMOR_CRITICAL
-    out='screen'
-    
-    help="""
-    Verify that a file is CMOR compliant
-
-    Usage:
-    """+sys.argv[0]+""" [--help] [-f /--file=filename] [-t /--table=tablename]
-    Where:
-      --help/-?/-h this message
-      --table/-t : specify table file to use
-      --file/-f specify file to check
-      --noerror/-e do not allow error on/off (default "on")
-      --out/-o screen or file name (file sends to inputfile.out)
-      """
-
-    kw=['file=','help','table=','noerror=','out=']
-    cmd='f:h?t:e:o:'
-    
-    opt=getopt.getopt(sys.argv[1:],cmd,kw)
-
-    if opt[1]!=[]:
-        file=opt[1][-1]
-    for o,p in opt[0]:
-        if o in ['--file','-f']:
-            file=p
-        if o in ['--table','-t']:
-            table=p
-        if o in ['--variable','-v']:
-            var=p
-        if o in ['--grid_table','-g']:
-            grid_table=p
-        if o in ['--help','-h','-?']:
-            print help
-            sys.exit()
-        if o in ['--noerror','-e']:
-            if p.lower() in ['off','0']:
-                noerror=cmor.VERBOSE
-            elif p.lower() in ['on','1']:
-                noerror=cmor.CMOR_CRITICAL
-        if o in ['--out','-o']:
-            out=p
-
-    print 'File is:',file,file.find('*')
-    if os.path.isdir(file):
-        files=os.popen('ls '+file+'/*.nc').readlines()
-    elif file.find('*')>=0:
-        files=os.popen('ls '+file).readlines()
-    else:
-        files=[file]
-    print 'Files:',files
-    for file in files:
-        print 'Dealing with ',file.strip()
-        if out.lower()=='screen':
-            fout=sys.stdout
-        elif out.lower()=='file':
-            fout=".".join(file.strip().split('.')[:-1])+'.out'
-            fout=open(fout,'w')
-        else:
-            fout=open(out,'w')
-        if noerror==VERBOSE:
-            checkCMOR(fout,file.strip(),table,other_tables=[grid_table,],noerror=noerror,variable=var)
-        else:
-            try:
-                checkCMOR(fout,file.strip(),table,other_tables=[grid_table,],noerror=noerror,variable=var)
-            except Exception,err:
-                print err
-           
diff --git a/Lib/convertCSVFile.py b/Lib/convertCSVFile.py
new file mode 100644
index 0000000..2898fed
--- /dev/null
+++ b/Lib/convertCSVFile.py
@@ -0,0 +1,88 @@
+import csv
+import re
+import pdb
+# ==============================================================
+#                     replaceString()
+# ==============================================================
+def replaceString(var_entry, var, field):
+    """
+       Replace a <field> with a string (deleting "<" and ">")
+    """
+    if(var == ''):
+        var_entry = re.sub(r"" + field + ":.*\n", "", var_entry)
+    var_entry = var_entry.replace("<" + field + ">", var)
+    return var_entry
+# ==============================================================
+#                     deleteLIne()
+# ==============================================================
+def deleteLine(var_entry, field):
+    """
+       delete line with <field>  in it
+    """
+    var_entry = re.sub(r"\n.*" + field + ".*\n", "\n", var_entry)
+    return var_entry
+
+# ==============================================================
+#                     deleteComa()
+# ==============================================================
+def deleteComa(var_entry):
+    """
+       delete last ',' char before '}'
+    """
+    var_entry = re.sub(r',(\s*)}', r'\n\1}',var_entry)
+    return var_entry
+
+
+
+expt_template ="""
+        "<experiment_id>": {
+                               "experiment":                "<title>",
+                               "sub_experiment_id":         "<sub_experiment_id>",
+                               "activity_id":               "<mip>",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "<required_source_type>",
+                               "additional_source_type":    "<add_source_type>",
+                               "parent_experiment_id" :     "<parent_experiment_id>",
+                               "parent_sub_experiment_id":  "<parent_sub_experiment_id>",
+                               "parent_activity_id ":       "<parent_activity_id>",
+                               "parent_mip_era ":           "CMIP6"
+                          },
+"""
+print "{"
+print "    \"experiment_ids\": { "
+with open('../Tables/CMIP6_expt_list_042716-1.csv', 'rU') as csvfile:
+    spamreader = csv.reader(csvfile, dialect=csv.excel)
+    for row in spamreader:
+        if row[5] == 'original label':
+           break
+    expt = ""
+    i=13
+    for  row in spamreader:    
+##        if (row[5] == "") & (row[22] != ""):
+##            print i
+        if (row[14] != "" ):
+            expt = expt + expt_template
+            expt = replaceString(expt, row[14], "experiment_id")
+            expt = replaceString(expt, row[23].replace('"', '\''), "title")
+            expt = replaceString(expt, row[19].replace('"', '\''), "sub_experiment_id")
+            expt = replaceString(expt, row[7], "mip")
+            expt = replaceString(expt, row[20], "required_source_type")
+            expt = replaceString(expt, row[21], "add_source_type")
+            expt = replaceString(expt, row[25], "parent_sub_experiment_id")
+            expt = replaceString(expt, row[26], "parent_activity_id")
+
+            if (row[24] != ""):
+                expt = replaceString(expt, row[24], "parent_experiment_id")
+            else:
+                expt = deleteLine(expt, "parent_experiment_id")
+                expt = deleteLine(expt, "parent_sub_experiment_id")
+                expt = deleteLine(expt, "parent_activity_id")
+                expt = deleteLine(expt, "parent_mip_era")
+                expt = deleteComa(expt )
+
+            i=i+1
+
+#nexpt = expt + "\"Dummy\":{}\n     }"
+expt = expt + "\n    }\n}"
+expt = deleteComa(expt )
+print expt
diff --git a/Lib/pywrapper.py b/Lib/pywrapper.py
index a5fbcd7..c06b342 100644
--- a/Lib/pywrapper.py
+++ b/Lib/pywrapper.py
@@ -1,5 +1,11 @@
 
 import cmor_const,numpy,os,_cmor
+import signal
+
+def sig_handler(signum, frame):
+    os.kill(os.getpid(),signal.SIGABRT)
+
+signal.signal(signal.SIGTERM, sig_handler)
 
 try:
     import cdtime
@@ -94,13 +100,13 @@ def grid(axis_ids,latitude=None,longitude=None,latitude_vertices=None,longitude_
     elif not isinstance(axis_ids, numpy.ndarray):
         raise Exception, "Error could not convert axis_ids list to a numpy array"
 
-    if numpy.rank(axis_ids)>1:
+    if numpy.ndim(axis_ids)>1:
         raise Exception, "error axes list/array must be 1D"
 
     if latitude is not None:
         latitude = _to_numpy(latitude, 'latitude')
             
-        if numpy.rank(latitude)!=len(axis_ids):
+        if numpy.ndim(latitude)!=len(axis_ids):
             raise Exception, "latitude's rank does not match number of axes passed via axis_ids"
 
         type = latitude.dtype.char
@@ -110,7 +116,7 @@ def grid(axis_ids,latitude=None,longitude=None,latitude_vertices=None,longitude_
 
         longitude = _to_numpy(longitude, 'longitude')
 
-        if numpy.rank(longitude)!=len(axis_ids):
+        if numpy.ndim(longitude)!=len(axis_ids):
             raise Exception, "longitude's rank does not match number of axes passed via axis_ids"
         
     ##     print 'longitude type:',longitude.dtype.char
@@ -128,7 +134,7 @@ def grid(axis_ids,latitude=None,longitude=None,latitude_vertices=None,longitude_
     if latitude_vertices is not None:
         latitude_vertices = _to_numpy(latitude_vertices, 'latitude_vertices')
 
-        if numpy.rank(latitude_vertices)!=len(axis_ids)+1:
+        if numpy.ndim(latitude_vertices)!=len(axis_ids)+1:
             raise Exception, "latitude_vertices's rank does not match number of axes passed via axis_ids +1 (for vertices)"
 ##         print 'latitude_vert type:',latitude_vertices.dtype.char
         if latitude_vertices.dtype.char!=type:
@@ -140,7 +146,7 @@ def grid(axis_ids,latitude=None,longitude=None,latitude_vertices=None,longitude_
         
     if longitude_vertices is not None:
         longitude_vertices = _to_numpy(longitude_vertices, 'longitude_vertices')
-        if numpy.rank(longitude_vertices)!=len(axis_ids)+1:
+        if numpy.ndim(longitude_vertices)!=len(axis_ids)+1:
             raise Exception, "longitude_vertices's rank does not match number of axes passed via axis_ids +1 (for vertices)"
 ##         print 'longitude_vert type:',longitude_vertices.dtype.char
         if longitude_vertices.dtype.char!=type:
@@ -288,7 +294,7 @@ def axis(table_entry,units=None,length=None,coord_vals=None,cell_bounds=None,int
         if not isinstance(coord_vals,numpy.ndarray):
             raise Exception, "Error coord_vals must be an array or cdms2 axis or list/tuple"
 
-        if numpy.rank(coord_vals)>1:
+        if numpy.ndim(coord_vals)>1:
             raise Exception, "Error, you must pass a 1D array!"
 
     if numpy.ma.isMA(cell_bounds):
@@ -303,9 +309,9 @@ def axis(table_entry,units=None,length=None,coord_vals=None,cell_bounds=None,int
         cell_bounds = numpy.ascontiguousarray(cell_bounds)
         
     if cell_bounds is not None:
-        if numpy.rank(cell_bounds)>2:
+        if numpy.ndim(cell_bounds)>2:
             raise Exception, "Error cell_bounds rank must be at most 2"
-        if numpy.rank(cell_bounds)==2:
+        if numpy.ndim(cell_bounds)==2:
             if cell_bounds.shape[0]!=coord_vals.shape[0]:
                 raise Exception, "Error, coord_vals and cell_bounds do not have the same length"
             if cell_bounds.shape[1]!=2:
@@ -393,7 +399,7 @@ def variable(table_entry,units,axis_ids,type='f',missing_value=None,tolerance =
     elif not isinstance(axis_ids, numpy.ndarray):
         raise Exception, "Error could not convert axis_ids list to a numpy array"
 
-    if numpy.rank(axis_ids)>1:
+    if numpy.ndim(axis_ids)>1:
         raise Exception, "error axis_ids list/array must be 1D"
 
     if not isinstance(type,str):
@@ -464,7 +470,7 @@ def zfactor(zaxis_id,zfactor_name,units="",axis_ids=None,type=None,zfactor_value
     elif not isinstance(axis_ids, numpy.ndarray):
         raise Exception, "Error could not convert axis_ids list to a numpy array"
 
-    if numpy.rank(axis_ids)>1:
+    if numpy.ndim(axis_ids)>1:
         raise Exception, "error axis_ids list/array must be 1D"
 
     if axis_ids is None:
@@ -525,9 +531,9 @@ def zfactor(zaxis_id,zfactor_name,units="",axis_ids=None,type=None,zfactor_value
             zfactor_bounds = numpy.ascontiguousarray(zfactor_bounds)
         elif not isinstance(zfactor_bounds, numpy.ndarray):
             raise Exception, "Error could not convert zfactor_bounds to a numpy array"
-        if numpy.rank(zfactor_bounds)>2:
+        if numpy.ndim(zfactor_bounds)>2:
             raise Exception, "error zfactor_bounds must be rank 2 at most"
-        elif numpy.rank(zfactor_bounds)==2:
+        elif numpy.ndim(zfactor_bounds)==2:
             if zfactor_bounds.shape[1]!=2:
                 raise Exception, "error zfactor_bounds' 2nd dimension must be of length 2"
             bnds =[]
@@ -651,9 +657,9 @@ def write(var_id,data,ntimes_passed=None,file_suffix="",time_vals=None,time_bnds
         elif not isinstance(time_bnds, numpy.ndarray):
             raise Exception, "Error could not convert time_bnds to a numpy array"
 
-        if numpy.rank(time_bnds)>2:
+        if numpy.ndim(time_bnds)>2:
             raise Exception, "bounds rank cannot be greater than 2"
-        elif numpy.rank(time_bnds)==2:
+        elif numpy.ndim(time_bnds)==2:
             if time_bnds.shape[1]!=2:
                 raise Exception, "error time_bnds' 2nd dimension must be of length 2"
             bnds =[]
@@ -664,7 +670,7 @@ def write(var_id,data,ntimes_passed=None,file_suffix="",time_vals=None,time_bnds
                 bnds = time_bnds.ravel()
             time_bnds=numpy.array(bnds)
         else: # ok it is a rank 1!
-            if numpy.rank(time_vals)==0:
+            if numpy.ndim(time_vals)==0:
                 ltv=1
             else:
                 ltv=len(time_vals)
@@ -687,7 +693,7 @@ def write(var_id,data,ntimes_passed=None,file_suffix="",time_vals=None,time_bnds
     if not type in ['f','d','i','l']:
         raise Exception, "Error data type must one of: 'f','d','i','l', please convert first"
 
-    return _cmor.write(var_id,data,type,file_suffix,ntimes_passed,time_vals,time_bnds,store_with)
+    return _cmor.write(var_id,data,type,ntimes_passed,time_vals,time_bnds,store_with)
 
 def _check_time_bounds_contiguous(time_bnds):
     '''
@@ -749,83 +755,16 @@ def load_table(table):
 ##         raise Exception, "Error, the table you specified (%s) does not exists" % table
     return _cmor.load_table(table)
 
-def dataset(experiment_id,institution,source,calendar,outpath='.',realization=1,contact="",history="",comment="",references="",leap_year=0,leap_month=0,month_lengths=None,model_id="",forcing="",initialization_method=None,physics_version=None,institute_id="",parent_experiment_id="",branch_time=None,parent_experiment_rip=""):
-    """ Initialize a cmor dataset 
+def dataset_json(rcfile):
+    """ load dataset JSON file
     Usage:
-    dataset(experiment_id,institution,source,outpath='.',calendar=None,realization=None,contact=None,history="",comment="",references="",leap_year=None,leap_month=None,month_lengths=None,model_id="",forcing="",initialization_method=None,physics_version=None,institute_id="",parent_experiment_id="",branch_time=None,parent_experiment_rip="")
+    dataset_json(rcfile)
     """
-
-    if isinstance(calendar,int):
-        if has_cdtime: # put this in a try loop in case cdtime is not available on the system 
-            if calendar == cdtime.Calendar360:
-                calendar = "360_day"
-            elif calendar == cdtime.ClimCalendar:
-                calendar = "clim"
-            elif calendar == cdtime.DefaultCalendar:
-                calendar = "standard"
-            elif calendar == cdtime.GregorianCalendar:
-                calendar = "proleptic_gregorian"
-            elif calendar == cdtime.JulianCalendar:
-                calendar = "julian"
-            elif calendar == cdtime.MixedCalendar:
-                calendar= "standard"
-            elif calendar == cdtime.NoLeapCalendar:
-                calendar = "noleap"
-            elif calendar == cdtime.StandardCalendar:
-                calendar = "proleptic_gregorian"
-            elif calendar == cdtime.ClimLeapCalendar:
-                calendar = "climleap"
-    elif calendar is None:
-        calendar ="none"
-                
-    for st in [outpath,experiment_id,institution,source,contact,history,comment,references,model_id,forcing,institute_id,parent_experiment_id,parent_experiment_rip]:
-        if not isinstance(st,str):
-            for o in dir():
-                if locals()[o] is st:
-                    raise Exception, "Error argument %s must be a string" % o
-
-    calendar = calendar.lower()
-    
-    for i in [realization,leap_year,leap_month]:
-        if not isinstance(i,int):
-            for o in dir():
-                if locals()[o] is i:
-                    raise Exception, "Error argument %s must be an integer" % o
-    if isinstance(month_lengths,(list,tuple)):
-        month_lengths = numpy.array(month_lengths)
-    elif has_cdms2 and cdms2.isVariable(month_lengths):
-        month_lengths = month_lengths.filled()
-    elif isinstance(month_lengths,(numpy.ma.core.MaskedArray)):
-        month_lengths = month_lengths.filled()
-    elif has_oldma and isinstance(month_lengths,numpy.oldnumeric.ma.MaskedArray):
-        month_lengths = month_lengths.filled()
-        
-    if isinstance(month_lengths,numpy.ndarray):
-        if not numpy.rank(month_lengths)==1:
-            raise Exception, "Error month_lengths must be 1D"
-        if len(month_lengths)!=12:
-            raise Exception, "Error month_lengths must have 12 elements exactly"
-        months_lengths = numpy.ascontiguousarray(month_lengths)
-    elif month_lengths is not None:
-        raise Exception, "Error month_lengths must be a 12 elts array or list"
-    if initialization_method is not None:
-        if not isinstance(initialization_method,int):
-            raise Exception, "initialization_method must be an int"
-    else:
-        initialization_method=0
-    if physics_version is not None:
-        if not isinstance(physics_version,int):
-            raise Exception, "physics_version must be an int"
-    else:
-        physics_version=0
-
-    if branch_time is not None:
-        if not isinstance(branch_time,(float,int,numpy.float,numpy.float32,numpy.int,numpy.int32)):
-            raise Exception,"branch_time must be a float"
-        else:
-            branch_time=float(branch_time)
-
-    return _cmor.dataset(outpath,experiment_id,institution,source,calendar,realization,contact,history,comment,references,leap_year,leap_month,month_lengths,model_id,forcing,initialization_method,physics_version,institute_id,parent_experiment_id,branch_time,parent_experiment_rip)
+    if not isinstance(rcfile,str):
+        raise Exception, "Error, must pass a string"
+##     if not os.path.exists(table):
+##         raise Exception, "Error, the table you specified (%s) does not exists" % table
+    return _cmor.dataset_json(rcfile)
 
 def set_table(table):
     if not isinstance(table,int):
@@ -912,6 +851,22 @@ def set_variable_attribute(var_id,name,value):
         val = str(value)
     return _cmor.set_variable_attribute(var_id,name,val)
 
+def set_deflate(var_id,shuffle,deflate,deflate_level):
+    """Sets shuffle/deflate on a cmor variable
+    Usage:
+      cmor.set_deflate(var_id, shuffle, deflate, deflate_level)
+    Where:
+      var_id: is cmor variable id
+      shuffle: if true, turn on netCDF the shuffle filter
+      deflate: if true, turn on the deflate filter at the level 
+               specified by the deflate_level parameter
+      deflate_level: if the deflate parameter is non-zero. 
+                     Set the deflate value. Must be between 0 and 9
+      
+    """
+
+    return _cmor.set_deflate(var_id, shuffle, deflate, deflate_level)
+
 def has_variable_attribute(var_id,name):
     """determines if the a cmor variable has an attribute
     Usage:
@@ -943,7 +898,11 @@ def get_variable_attribute(var_id,name):
     else:
         return None
     
-    
+def get_final_filename():
+   """ Retrieve renamed file after cmor.close() has been called.  This is useful to reopen the file in the same program.
+   """
+   return _cmor.get_final_filename()
+
 def create_output_path(varid):
     """returns the output path where a variable would be stored, given a varid (as returned by a call to cmor.variable)
     Usage:
diff --git a/Makefile.in b/Makefile.in
index bdd92db..18ea30c 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -36,7 +36,6 @@ MACROS=@MACROS@
 LIBNAME=libcmor.a
 
 # Library sources
-#LIBSOURCES=Src/cmor.c Src/cmor_variables.c Src/cmor_axes.c Src/cmor_tables.c Src/cmor_grids.c Src/cdTime/cdTimeConv.c Src/cdTime/cdUtil.c Src/cdTime/timeConv.c Src/cdTime/timeArith.c
 LIBSOURCES=@LIBSOURCES@
 LIBFSOURCES=@LIBFSOURCES@
 
@@ -64,6 +63,8 @@ cmor_tables.o: Src/cmor_tables.c include/cmor.h include/cmor_func_def.h
 	${CC} -c ${DEBUG} ${MACROS} ${CFLAGS} ${USERCFLAGS}  ${NCCFLAGS} ${UDUNITS2FLAGS} ${UUIDFLAGS} ${ZFLAGS} Src/cmor_tables.c
 cmor_grids.o: Src/cmor_grids.c include/cmor.h include/cmor_func_def.h
 	${CC} -c ${DEBUG} ${MACROS} ${CFLAGS} ${USERCFLAGS}  ${NCCFLAGS} ${UDUNITS2FLAGS} ${UUIDFLAGS} ${ZFLAGS} Src/cmor_grids.c
+cmor_CV.o: Src/cmor_CV.c include/cmor.h include/cmor_func_def.h 
+	${CC} -c ${DEBUG} ${MACROS} ${CFLAGS} ${USERCFLAGS}  ${NCCFLAGS} ${UDUNITS2FLAGS} ${UUIDFLAGS} ${ZFLAGS} Src/cmor_CV.c
 cmor_md5.o: Src/cmor_md5.c include/cmor.h include/cmor_func_def.h include/cmor_md5.h
 	${CC} -c ${DEBUG} ${MACROS} ${CFLAGS} ${USERCFLAGS}  ${NCCFLAGS} ${UDUNITS2FLAGS} ${UUIDFLAGS} ${ZFLAGS} Src/cmor_md5.c
 cmor_cfortran_interface.o: Src/cmor_cfortran_interface.c include/cmor.h include/cmor_func_def.h
@@ -76,6 +77,28 @@ timeConv.o: Src/cdTime/timeConv.c include/cmor.h include/cmor_func_def.h
 	${CC} -c ${DEBUG} ${MACROS} ${CFLAGS} ${USERCFLAGS}  ${NCCFLAGS} ${UDUNITS2FLAGS} ${UUIDFLAGS} ${ZFLAGS} Src/cdTime/timeConv.c
 timeArith.o:Src/cdTime/timeArith.c include/cmor.h include/cmor_func_def.h
 	${CC} -c ${DEBUG} ${MACROS} ${CFLAGS} ${USERCFLAGS}  ${NCCFLAGS} ${UDUNITS2FLAGS} ${UUIDFLAGS} ${ZFLAGS} Src/cdTime/timeArith.c
+arraylist.o:Src/json-c/
+	${CC} -c ${DEBUG} ${MACROS} ${CFLAGS} ${USERCFLAGS}  ${NCCFLAGS} ${UDUNITS2FLAGS} ${UUIDFLAGS} ${ZFLAGS}  Src/json-c/arraylist.c
+debug.o:Src/json-c/
+	${CC} -c ${DEBUG} ${MACROS} ${CFLAGS} ${USERCFLAGS}  ${NCCFLAGS} ${UDUNITS2FLAGS} ${UUIDFLAGS} ${ZFLAGS}  Src/json-c/debug.c
+json_c_version.o:Src/json-c/
+	${CC} -c ${DEBUG} ${MACROS} ${CFLAGS} ${USERCFLAGS}  ${NCCFLAGS} ${UDUNITS2FLAGS} ${UUIDFLAGS} ${ZFLAGS}  Src/json-c/json_c_version.c
+json_object.o:Src/json-c/
+	${CC} -c ${DEBUG} ${MACROS} ${CFLAGS} ${USERCFLAGS}  ${NCCFLAGS} ${UDUNITS2FLAGS} ${UUIDFLAGS} ${ZFLAGS}  Src/json-c/json_object.c
+json_object_iterator.o:Src/json-c/
+	${CC} -c ${DEBUG} ${MACROS} ${CFLAGS} ${USERCFLAGS}  ${NCCFLAGS} ${UDUNITS2FLAGS} ${UUIDFLAGS} ${ZFLAGS}  Src/json-c/json_object_iterator.c
+json_tokener.o:Src/json-c/
+	${CC} -c ${DEBUG} ${MACROS} ${CFLAGS} ${USERCFLAGS}  ${NCCFLAGS} ${UDUNITS2FLAGS} ${UUIDFLAGS} ${ZFLAGS}  Src/json-c/json_tokener.c
+json_util.o:Src/json-c/
+	${CC} -c ${DEBUG} ${MACROS} ${CFLAGS} ${USERCFLAGS}  ${NCCFLAGS} ${UDUNITS2FLAGS} ${UUIDFLAGS} ${ZFLAGS}  Src/json-c/json_util.c
+libjson.o:Src/json-c/
+	${CC} -c ${DEBUG} ${MACROS} ${CFLAGS} ${USERCFLAGS}  ${NCCFLAGS} ${UDUNITS2FLAGS} ${UUIDFLAGS} ${ZFLAGS}  Src/json-c/libjson.c
+linkhash.o:Src/json-c/
+	${CC} -c ${DEBUG} ${MACROS} ${CFLAGS} ${USERCFLAGS}  ${NCCFLAGS} ${UDUNITS2FLAGS} ${UUIDFLAGS} ${ZFLAGS}  Src/json-c/linkhash.c
+printbuf.o:Src/json-c/
+	${CC} -c ${DEBUG} ${MACROS} ${CFLAGS} ${USERCFLAGS}  ${NCCFLAGS} ${UDUNITS2FLAGS} ${UUIDFLAGS} ${ZFLAGS}  Src/json-c/printbuf.c
+random_seed.o:Src/json-c/
+	${CC} -c ${DEBUG} ${MACROS} ${CFLAGS} ${USERCFLAGS}  ${NCCFLAGS} ${UDUNITS2FLAGS} ${UUIDFLAGS} ${ZFLAGS}  Src/json-c/random_seed.c
 cmor_fortran_interface.o: Src/cmor_fortran_interface.f90
 	${FC} -c ${FCFLAGS} ${USERFFLAGS} ${DEBUG} ${MACROS} Src/cmor_fortran_interface.f90
 cmor:  $(LIBFILES) @MAKEDEPPYTHON@
@@ -221,6 +244,7 @@ test_fortran_old_cmor_tables: cmor
 	@env TEST_NAME="test_region" INPUT_FILE="Test/noinput" make test_case_old_cmor_tables
 	@env TEST_NAME="test_sigma" INPUT_FILE="Test/noinput" make test_case_old_cmor_tables
 	@env TEST_NAME="test_singleton" INPUT_FILE="Test/noinput" make test_case_old_cmor_tables
+	@env TEST_NAME="test_singleton_5D_tas" INPUT_FILE="Test/noinput" make test_case_old_cmor_tables
 	@env TEST_NAME="mytest_4d_r_big_array" INPUT_FILE="Test/noinput" make test_case_old_cmor_tables
 	@env TEST_NAME="mytest_4d_d_big_array_2" INPUT_FILE="Test/noinput" make test_case_old_cmor_tables
 	@env TEST_NAME="mytest_4d_d_big_array_3" INPUT_FILE="Test/noinput" make test_case_old_cmor_tables
@@ -261,6 +285,7 @@ test_fortran: cmor
 	@env TEST_NAME="test_region" INPUT_FILE="Test/noinput" make test_case
 	@env TEST_NAME="test_sigma" INPUT_FILE="Test/noinput" make test_case
 	@env TEST_NAME="test_singleton" INPUT_FILE="Test/noinput" make test_case
+	@env TEST_NAME="test_singleton_5D_tas" INPUT_FILE="Test/noinput" make test_case_old_cmor_tables
 	@env TEST_NAME="mytest_4d_r_big_array" INPUT_FILE="Test/noinput" make test_case
 	@env TEST_NAME="mytest_4d_d_big_array_2" INPUT_FILE="Test/noinput" make test_case
 	@env TEST_NAME="mytest_4d_d_big_array_3" INPUT_FILE="Test/noinput" make test_case
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..d9d23e2
--- /dev/null
+++ b/README.md
@@ -0,0 +1,12 @@
+# cmor
+Climate Model Output Rewriter
+
+CMOR 3.1 documentation can be found here: http://cmor.llnl.gov
+
+[![DOI](https://zenodo.org/badge/22688/PCMDI/cmor.svg)](https://zenodo.org/badge/latestdoi/22688/PCMDI/cmor)
+
+[![stable version](http://img.shields.io/badge/stable version-3.1.0-brightgreen.svg)](https://github.com/PCMDI/cmor/releases/tag/3.1.0)
+![platforms](http://img.shields.io/badge/platforms-linux | osx-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 4f5a4cc..b297cf0 100644
--- a/RELEASE-NOTES
+++ b/RELEASE-NOTES
@@ -1,3 +1,5 @@
+2016-06-14 : Release 3.1.0
+2015-12-23 : Clean up cmor code, preparation for cmor3.
 2013-12-03 : Tagging 2.9.1 for official release
 2012-12-14 : Tagging 2.9.0
 2013-11-20 : Merged Jamie's branch fixes #4
diff --git a/Src/_cmormodule.c b/Src/_cmormodule.c
index 8281dd4..3e84af6 100644
--- a/Src/_cmormodule.c
+++ b/Src/_cmormodule.c
@@ -1,816 +1,921 @@
 #include <Python.h>
 #include "numpy/arrayobject.h"
 #include "cmor.h"
-
-static PyObject *
-  PyCMOR_get_original_shape(PyObject *self,PyObject *args)
-{
-  int tmp,i,shape_array[CMOR_MAX_DIMENSIONS],var_id,blank_time;
-  i=CMOR_MAX_DIMENSIONS;
-  PyObject *mylist;
-  if (!PyArg_ParseTuple(args,"ii",&var_id,&blank_time))
-    return NULL;
-  tmp = cmor_get_original_shape(&var_id,&shape_array[0],&i,blank_time);
-
-  mylist = PyList_New(0); 
-  for (i=0;i<CMOR_MAX_DIMENSIONS;i++) {
-    if (shape_array[i]!=-1) {
-      PyList_Append(mylist,PyInt_FromLong(shape_array[i]));
-    }
-  }
-  Py_INCREF(mylist);
-  return mylist;
-}
-
-static PyObject *
-  PyCMOR_create_output_path(PyObject *self,PyObject *args)
-{
-  char path[CMOR_MAX_STRING];
-  int var_id;
-  if (!PyArg_ParseTuple(args,"i",&var_id))
-    return NULL;
-  cmor_create_output_path(var_id,path);
-  return Py_BuildValue("s",path);
+/************************************************************************/
+/*                     PyCMOR_get_original_shape()                      */
+/************************************************************************/
+
+static PyObject *PyCMOR_get_original_shape( PyObject * self,
+					    PyObject * args ) {
+    int  i, shape_array[CMOR_MAX_DIMENSIONS], var_id, blank_time;
+
+    i = CMOR_MAX_DIMENSIONS;
+    PyObject *mylist;
+
+    if( !PyArg_ParseTuple( args, "ii", &var_id, &blank_time ) )
+	return NULL;
+    cmor_get_original_shape( &var_id, &shape_array[0], &i,
+		                            blank_time );
+
+    mylist = PyList_New( 0 );
+    for( i = 0; i < CMOR_MAX_DIMENSIONS; i++ ) {
+	if( shape_array[i] != -1 ) {
+	    PyList_Append( mylist, PyInt_FromLong( shape_array[i] ) );
+	}
+    }
+    Py_INCREF( mylist );
+    return(mylist);
 }
-static PyObject *
-  PyCMOR_set_cur_dataset_attribute(PyObject *self,PyObject *args)
+/************************************************************************/
+/*                  PyCMOR_set_cur_dataset_attribute()                  */
+/************************************************************************/
+static PyObject *PyCMOR_set_cur_dataset_attribute(PyObject *self,
+                                                  PyObject *args)
 {
   char *name;
   char *value;
   int ierr;
-  if (!PyArg_ParseTuple(args,"ss",&name,&value))
-    return NULL;
-  ierr = cmor_set_cur_dataset_attribute(name,value,1);
+
+  if( !PyArg_ParseTuple( args, "ss", &name, &value ) )
+    return(NULL);
+
+  ierr = cmor_set_cur_dataset_attribute(name, value, 1);
+
   if (ierr != 0 ) return NULL;
-  /* Return NULL Python Object */
+
   Py_INCREF(Py_None);
-  return Py_None;
+
+  return(Py_None);
 }
-static PyObject *
-  PyCMOR_get_cur_dataset_attribute(PyObject *self,PyObject *args)
-{
-  char *name;
-  char value[CMOR_MAX_STRING];
-  int ierr;
-  if (!PyArg_ParseTuple(args,"s",&name))
-    return NULL;
-  ierr = cmor_get_cur_dataset_attribute(name,value);
-  if (ierr != 0 ) return NULL;
-  return Py_BuildValue("s",value);
+
+/************************************************************************/
+/*                  PyCMOR_get_cur_dataset_attribute()                  */
+/************************************************************************/
+static PyObject *PyCMOR_get_cur_dataset_attribute( PyObject * self,
+						   PyObject * args ) {
+    char *name;
+    char value[CMOR_MAX_STRING];
+    int ierr;
+
+    if( !PyArg_ParseTuple( args, "s", &name ) )
+	return NULL;
+    ierr = cmor_get_cur_dataset_attribute( name, value );
+    if( ierr != 0 )
+	return NULL;
+    return(Py_BuildValue( "s", value ) );
 }
 
-static PyObject *
-  PyCMOR_has_cur_dataset_attribute(PyObject *self,PyObject *args)
-{
-  char *name;
-  int ierr;
-  if (!PyArg_ParseTuple(args,"s",&name))
-    return NULL;
-  ierr = cmor_has_cur_dataset_attribute(name);
-  return Py_BuildValue("i",ierr);
+/************************************************************************/
+/*                  PyCMOR_has_cur_dataset_attribute()                  */
+/************************************************************************/
+static PyObject *PyCMOR_has_cur_dataset_attribute( PyObject * self,
+						   PyObject * args ) {
+    char *name;
+    int ierr;
+
+    if( !PyArg_ParseTuple( args, "s", &name ) )
+	return NULL;
+    ierr = cmor_has_cur_dataset_attribute( name );
+    return Py_BuildValue( "i", ierr );
 }
+/************************************************************************/
+/*                   PyCMOR_set_deflate()                    */
+/************************************************************************/
+static PyObject *PyCMOR_set_deflate( PyObject * self,
+                                     PyObject * args ) {
+    int ierr, var_id, shuffle, deflate, deflate_level;
 
+    if( !PyArg_ParseTuple( args, "iiii", &var_id, &shuffle, &deflate, &deflate_level ) )
+        return NULL;
+
+    ierr =  cmor_set_deflate( var_id, shuffle, deflate, deflate_level );
+    return Py_BuildValue( "i", ierr );
 
-static PyObject *
-  PyCMOR_set_variable_attribute(PyObject *self,PyObject *args)
-{
-  char *name;
-  char *value;
-  int ierr, var_id;
-  if (!PyArg_ParseTuple(args,"iss",&var_id,&name,&value))
-    return NULL;
-  ierr = cmor_set_variable_attribute(var_id,name,'c',(void *)value);
-  if (ierr != 0 ) return NULL;
-  /* Return NULL Python Object */
-  Py_INCREF(Py_None);
-  return Py_None;
 }
-static PyObject *
-  PyCMOR_get_variable_attribute(PyObject *self,PyObject *args)
-{
-  char *name;
-  char value[CMOR_MAX_STRING];
-  int ierr, var_id;
-  if (!PyArg_ParseTuple(args,"is",&var_id,&name))
-    return NULL;
-  ierr = cmor_get_variable_attribute(var_id,name,(void *)value);
-  if (ierr != 0 ) return NULL;
-  return Py_BuildValue("s",value);
+
+/************************************************************************/
+/*                   PyCMOR_set_variable_attribute()                    */
+/************************************************************************/
+static PyObject *PyCMOR_set_variable_attribute( PyObject * self,
+						PyObject * args ) {
+    char *name;
+    char *value;
+    int ierr, var_id;
+
+    if( !PyArg_ParseTuple( args, "iss", &var_id, &name, &value ) )
+	return NULL;
+    ierr =
+	cmor_set_variable_attribute( var_id, name, 'c', ( void * ) value );
+    if( ierr != 0 )
+	return NULL;
+    /* Return NULL Python Object */
+    Py_INCREF( Py_None );
+    return Py_None;
 }
 
-static PyObject *
-  PyCMOR_has_variable_attribute(PyObject *self,PyObject *args)
-{
-  char *name;
-  int ierr, var_id;
-  if (!PyArg_ParseTuple(args,"is",&var_id,&name))
-    return NULL;
-  ierr = cmor_has_variable_attribute(var_id,name);
-  return Py_BuildValue("i",ierr);
+
+/************************************************************************/
+/*                   PyCMOR_get_variable_attribute()                    */
+/************************************************************************/
+static PyObject *PyCMOR_get_variable_attribute( PyObject * self,
+						PyObject * args ) {
+    char *name;
+    char value[CMOR_MAX_STRING];
+    int ierr, var_id;
+
+    if( !PyArg_ParseTuple( args, "is", &var_id, &name ) )
+	return NULL;
+    ierr = cmor_get_variable_attribute( var_id, name, ( void * ) value );
+    if( ierr != 0 )
+	return NULL;
+    return Py_BuildValue( "s", value );
 }
 
-static PyObject *
-  PyCMOR_setup(PyObject *self,PyObject *args)
-{
-  int mode,ierr,netcdf,verbosity,createsub;
-  char *path;
-  char *logfile;
-  if (!PyArg_ParseTuple(args,"siiisi",&path,&netcdf,&verbosity,&mode,&logfile,&createsub))
-    return NULL;
-  if (strcmp(logfile,"")==0) {
-    ierr = cmor_setup(path,&netcdf,&verbosity,&mode,NULL,&createsub);
-  }
-  else {
-    ierr = cmor_setup(path,&netcdf,&verbosity,&mode,logfile,&createsub);
-  }
-  if (ierr != 0 ) return NULL;
-  /* Return NULL Python Object */
-  Py_INCREF(Py_None);
-  return Py_None;
+/************************************************************************/
+/*                   PyCMOR_has_variable_attribute()                    */
+/************************************************************************/
+static PyObject *PyCMOR_has_variable_attribute( PyObject * self,
+						PyObject * args ) {
+    char *name;
+    int ierr, var_id;
+
+    if( !PyArg_ParseTuple( args, "is", &var_id, &name ) )
+	return NULL;
+    ierr = cmor_has_variable_attribute( var_id, name );
+    return Py_BuildValue( "i", ierr );
 }
 
-static PyObject *
-  PyCMOR_getincvalues(PyObject *self,PyObject *args)
-{
-  char *att_name;
-
-  if (!PyArg_ParseTuple(args,"s",&att_name)) {
-    return NULL;
-  }
-  if (strcmp(att_name,"CMOR_MAX_STRING")==0) {
-    return Py_BuildValue("i",CMOR_MAX_STRING);
-  }
-  else if (strcmp(att_name,"CMOR_MAX_ELEMENTS")==0) {
-    return Py_BuildValue("i",CMOR_MAX_ELEMENTS);
-  }
-  else if (strcmp(att_name,"CMOR_MAX_AXES")==0) {
-    return Py_BuildValue("i",CMOR_MAX_AXES);
-  }
-  else if (strcmp(att_name,"CMOR_MAX_VARIABLES")==0) {
-    return Py_BuildValue("i",CMOR_MAX_VARIABLES);
-  }
-  else if (strcmp(att_name,"CMOR_MAX_GRIDS")==0) {
-    return Py_BuildValue("i",CMOR_MAX_GRIDS);
-  }
-  else if (strcmp(att_name,"CMOR_MAX_DIMENSIONS")==0) {
-    return Py_BuildValue("i",CMOR_MAX_DIMENSIONS);
-  }
-  else if (strcmp(att_name,"CMOR_MAX_ATTRIBUTES")==0) {
-    return Py_BuildValue("i",CMOR_MAX_ATTRIBUTES);
-  }
-  else if (strcmp(att_name,"CMOR_MAX_ERRORS")==0) {
-    return Py_BuildValue("i",CMOR_MAX_ERRORS);
-  }
-  else if (strcmp(att_name,"CMOR_MAX_TABLES")==0) {
-    return Py_BuildValue("i",CMOR_MAX_TABLES);
-  }
-  else if (strcmp(att_name,"CMOR_MAX_GRID_ATTRIBUTES")==0) {
-    return Py_BuildValue("i",CMOR_MAX_GRID_ATTRIBUTES);
-  }
-  else if (strcmp(att_name,"CMOR_QUIET")==0) {
-    return Py_BuildValue("i",CMOR_QUIET);
-  }
-  else if (strcmp(att_name,"CMOR_EXIT_ON_MAJOR")==0) {
-    return Py_BuildValue("i",CMOR_EXIT_ON_MAJOR);
-  }
-  else if (strcmp(att_name,"CMOR_EXIT")==0) {
-    return Py_BuildValue("i",CMOR_EXIT);
-  }
-  else if (strcmp(att_name,"CMOR_EXIT_ON_WARNING")==0) {
-    return Py_BuildValue("i",CMOR_EXIT_ON_WARNING);
-  }
-  else if (strcmp(att_name,"CMOR_VERSION_MAJOR")==0) {
-    return Py_BuildValue("i",CMOR_VERSION_MAJOR);
-  }
-  else if (strcmp(att_name,"CMOR_VERSION_MINOR")==0) {
-    return Py_BuildValue("i",CMOR_VERSION_MINOR);
-  }
-  else if (strcmp(att_name,"CMOR_VERSION_PATCH")==0) {
-    return Py_BuildValue("i",CMOR_VERSION_PATCH);
-  }
-  else if (strcmp(att_name,"CMOR_CF_VERSION_MAJOR")==0) {
-    return Py_BuildValue("i",CMOR_CF_VERSION_MAJOR);
-  }
-  else if (strcmp(att_name,"CMOR_CF_VERSION_MINOR")==0) {
-    return Py_BuildValue("i",CMOR_CF_VERSION_MINOR);
-  }
-  else if (strcmp(att_name,"CMOR_WARNING")==0) {
-    return Py_BuildValue("i",CMOR_WARNING);
-  }
-  else if (strcmp(att_name,"CMOR_NORMAL")==0) {
-    return Py_BuildValue("i",CMOR_NORMAL);
-  }
-  else if (strcmp(att_name,"CMOR_CRITICAL")==0) {
-    return Py_BuildValue("i",CMOR_CRITICAL);
-  }
-  else if (strcmp(att_name,"CMOR_N_VALID_CALS")==0) {
-    return Py_BuildValue("i",CMOR_N_VALID_CALS);
-  }
-  else if (strcmp(att_name,"CMOR_PRESERVE")==0) {
-    return Py_BuildValue("i",CMOR_PRESERVE);
-  }
-  else if (strcmp(att_name,"CMOR_APPEND")==0) {
-    return Py_BuildValue("i",CMOR_APPEND);
-  }
-  else if (strcmp(att_name,"CMOR_REPLACE")==0) {
-    return Py_BuildValue("i",CMOR_REPLACE);
-  }
-  else if (strcmp(att_name,"CMOR_PRESERVE_3")==0) {
-    return Py_BuildValue("i",CMOR_PRESERVE_3);
-  }
-  else if (strcmp(att_name,"CMOR_APPEND_3")==0) {
-    return Py_BuildValue("i",CMOR_APPEND_3);
-  }
-  else if (strcmp(att_name,"CMOR_REPLACE_3")==0) {
-    return Py_BuildValue("i",CMOR_REPLACE_3);
-  }
-  else if (strcmp(att_name,"CMOR_PRESERVE_4")==0) {
-    return Py_BuildValue("i",CMOR_PRESERVE_4);
-  }
-  else if (strcmp(att_name,"CMOR_APPEND_4")==0) {
-    return Py_BuildValue("i",CMOR_APPEND_4);
-  }
-  else if (strcmp(att_name,"CMOR_REPLACE_4")==0) {
-    return Py_BuildValue("i",CMOR_REPLACE_4);
-  }
-  else {
+/************************************************************************/
+/*                            PyCMOR_setup()                            */
+/************************************************************************/
+static PyObject *PyCMOR_setup( PyObject * self, PyObject * args ) {
+    int mode, ierr, netcdf, verbosity, createsub;
+    char *path;
+    char *logfile;
+
+    if( !PyArg_ParseTuple
+	( args, "siiisi", &path, &netcdf, &verbosity, &mode, &logfile,
+	  &createsub ) )
+	return NULL;
+    if( strcmp( logfile, "" ) == 0 ) {
+	ierr =
+	    cmor_setup( path, &netcdf, &verbosity, &mode, NULL,
+			&createsub );
+    } else {
+	ierr =
+	    cmor_setup( path, &netcdf, &verbosity, &mode, logfile,
+			&createsub );
+    }
+    if( ierr != 0 )
+	return NULL;
     /* Return NULL Python Object */
-    Py_INCREF(Py_None);
+    Py_INCREF( Py_None );
     return Py_None;
-  }
 }
-static PyObject *
-  PyCMOR_dataset(PyObject *self,PyObject *args)
-{
-  char *outpath; 
-  char *experiment_id; 
-  char *institution; 
-  char *source; 
-  char *calendar; 
-  int  realization; 
-  char *contact; 
-  char *history; 
-  char *comment; 
-  char *references; 	 
-  char *model_id; 	 
-  char *forcing; 
-  char *institute_id;	 
-  char *parent_exp_id;	 
-  char *parent_exp_rip;	 
-  int  leap_year; 
-  int  leap_month; 
-  int  *month_lengths;
-  int initialization_method;
-  int physics_version;
-  int ierr;
-  double *branch_time=NULL,bt;
-  PyObject *month_lengths_obj;
-  PyObject *branch_time_obj;
-  PyArrayObject *month_lengths_array_obj=NULL;
-
-  if (!PyArg_ParseTuple(args,"sssssissssiiOssiissOs",&outpath,&experiment_id,&institution,&source,&calendar,&realization,&contact,&history,&comment,&references,&leap_year,&leap_month,&month_lengths_obj,&model_id,&forcing,&initialization_method,&physics_version,&institute_id,&parent_exp_id,&branch_time_obj,&parent_exp_rip))
-    return NULL;
-  if (month_lengths_obj == Py_None) {
-    month_lengths = NULL;
-  }
-  else {
-    month_lengths_array_obj =(PyArrayObject *) PyArray_ContiguousFromObject(month_lengths_obj,PyArray_NOTYPE,1,0);
-    month_lengths = (int *)month_lengths_array_obj->data;
-  }
-  if (branch_time_obj == Py_None) {
-    branch_time = NULL;
-  }
-  else {
-    bt = (double) PyFloat_AsDouble(branch_time_obj);
-    branch_time = &bt;
-  }
-    
-  ierr = cmor_dataset(outpath,experiment_id,institution,source,calendar,realization,contact,history,comment,references,leap_year,leap_month,month_lengths,model_id,forcing,initialization_method,physics_version,institute_id,parent_exp_id,branch_time,parent_exp_rip);
-  if (month_lengths_array_obj!=NULL) {Py_DECREF(month_lengths_array_obj);}
-  if (ierr != 0 ) return NULL;
-  /* Return NULL Python Object */
-  Py_INCREF(Py_None);
-  return Py_None;
+
+/************************************************************************/
+/*                        PyCMOR_getincvalues()                         */
+/************************************************************************/
+
+static PyObject *PyCMOR_getincvalues( PyObject * self, PyObject * args ) {
+    char *att_name;
+
+    if( !PyArg_ParseTuple( args, "s", &att_name ) ) {
+	return NULL;
+    }
+    if( strcmp( att_name, "CMOR_MAX_STRING" ) == 0 ) {
+	return Py_BuildValue( "i", CMOR_MAX_STRING );
+    } else if( strcmp( att_name, "CMOR_MAX_ELEMENTS" ) == 0 ) {
+	return Py_BuildValue( "i", CMOR_MAX_ELEMENTS );
+    } else if( strcmp( att_name, "CMOR_MAX_AXES" ) == 0 ) {
+	return Py_BuildValue( "i", CMOR_MAX_AXES );
+    } else if( strcmp( att_name, "CMOR_MAX_VARIABLES" ) == 0 ) {
+	return Py_BuildValue( "i", CMOR_MAX_VARIABLES );
+    } else if( strcmp( att_name, "CMOR_MAX_GRIDS" ) == 0 ) {
+	return Py_BuildValue( "i", CMOR_MAX_GRIDS );
+    } else if( strcmp( att_name, "CMOR_MAX_DIMENSIONS" ) == 0 ) {
+	return Py_BuildValue( "i", CMOR_MAX_DIMENSIONS );
+    } else if( strcmp( att_name, "CMOR_MAX_ATTRIBUTES" ) == 0 ) {
+	return Py_BuildValue( "i", CMOR_MAX_ATTRIBUTES );
+    } else if( strcmp( att_name, "CMOR_MAX_ERRORS" ) == 0 ) {
+	return Py_BuildValue( "i", CMOR_MAX_ERRORS );
+    } else if( strcmp( att_name, "CMOR_MAX_TABLES" ) == 0 ) {
+	return Py_BuildValue( "i", CMOR_MAX_TABLES );
+    } else if( strcmp( att_name, "CMOR_MAX_GRID_ATTRIBUTES" ) == 0 ) {
+	return Py_BuildValue( "i", CMOR_MAX_GRID_ATTRIBUTES );
+    } else if( strcmp( att_name, "CMOR_QUIET" ) == 0 ) {
+	return Py_BuildValue( "i", CMOR_QUIET );
+    } else if( strcmp( att_name, "CMOR_EXIT_ON_MAJOR" ) == 0 ) {
+	return Py_BuildValue( "i", CMOR_EXIT_ON_MAJOR );
+    } else if( strcmp( att_name, "CMOR_EXIT" ) == 0 ) {
+	return Py_BuildValue( "i", CMOR_EXIT );
+    } else if( strcmp( att_name, "CMOR_EXIT_ON_WARNING" ) == 0 ) {
+	return Py_BuildValue( "i", CMOR_EXIT_ON_WARNING );
+    } else if( strcmp( att_name, "CMOR_VERSION_MAJOR" ) == 0 ) {
+	return Py_BuildValue( "i", CMOR_VERSION_MAJOR );
+    } else if( strcmp( att_name, "CMOR_VERSION_MINOR" ) == 0 ) {
+	return Py_BuildValue( "i", CMOR_VERSION_MINOR );
+    } else if( strcmp( att_name, "CMOR_VERSION_PATCH" ) == 0 ) {
+	return Py_BuildValue( "i", CMOR_VERSION_PATCH );
+    } else if( strcmp( att_name, "CMOR_CF_VERSION_MAJOR" ) == 0 ) {
+	return Py_BuildValue( "i", CMOR_CF_VERSION_MAJOR );
+    } else if( strcmp( att_name, "CMOR_CF_VERSION_MINOR" ) == 0 ) {
+	return Py_BuildValue( "i", CMOR_CF_VERSION_MINOR );
+    } else if( strcmp( att_name, "CMOR_WARNING" ) == 0 ) {
+	return Py_BuildValue( "i", CMOR_WARNING );
+    } else if( strcmp( att_name, "CMOR_NORMAL" ) == 0 ) {
+	return Py_BuildValue( "i", CMOR_NORMAL );
+    } else if( strcmp( att_name, "CMOR_CRITICAL" ) == 0 ) {
+	return Py_BuildValue( "i", CMOR_CRITICAL );
+    } else if( strcmp( att_name, "CMOR_N_VALID_CALS" ) == 0 ) {
+	return Py_BuildValue( "i", CMOR_N_VALID_CALS );
+    } else if( strcmp( att_name, "CMOR_PRESERVE" ) == 0 ) {
+	return Py_BuildValue( "i", CMOR_PRESERVE );
+    } else if( strcmp( att_name, "CMOR_APPEND" ) == 0 ) {
+	return Py_BuildValue( "i", CMOR_APPEND );
+    } else if( strcmp( att_name, "CMOR_REPLACE" ) == 0 ) {
+	return Py_BuildValue( "i", CMOR_REPLACE );
+    } else if( strcmp( att_name, "CMOR_PRESERVE_3" ) == 0 ) {
+	return Py_BuildValue( "i", CMOR_PRESERVE_3 );
+    } else if( strcmp( att_name, "CMOR_APPEND_3" ) == 0 ) {
+	return Py_BuildValue( "i", CMOR_APPEND_3 );
+    } else if( strcmp( att_name, "CMOR_REPLACE_3" ) == 0 ) {
+	return Py_BuildValue( "i", CMOR_REPLACE_3 );
+    } else if( strcmp( att_name, "CMOR_PRESERVE_4" ) == 0 ) {
+	return Py_BuildValue( "i", CMOR_PRESERVE_4 );
+    } else if( strcmp( att_name, "CMOR_APPEND_4" ) == 0 ) {
+	return Py_BuildValue( "i", CMOR_APPEND_4 );
+    } else if( strcmp( att_name, "CMOR_REPLACE_4" ) == 0 ) {
+	return Py_BuildValue( "i", CMOR_REPLACE_4 );
+    } else {
+	/* Return NULL Python Object */
+	Py_INCREF( Py_None );
+	return Py_None;
+    }
 }
 
-static PyObject *
-  PyCMOR_load_table(PyObject *self,PyObject *args)
-{
-  int ierr,table_id;
-  char *table;
-  if (!PyArg_ParseTuple(args,"s",&table))
-    return NULL;
-  ierr = cmor_load_table(table,&table_id);
-  if (ierr != 0 ) {
-    return NULL;
-  }
-  return Py_BuildValue("i",table_id);
+/************************************************************************/
+/*                       PyCMOR_getFinalFilename()                      */
+/************************************************************************/
+
+static PyObject *PyCMOR_getFinalFilename( PyObject * self, PyObject * args ) {
+    return(Py_BuildValue( "s", cmor_getFinalFilename()));
+
 }
 
-static PyObject *
-  PyCMOR_axis(PyObject *self,PyObject *args)
-{
-  int ierr,axis_id,n=0;
-  char *name; 
-  char *units; 
-  char *interval; 
-  int length;
-  char type;
-  void *coord_vals;
-  void *cell_bounds;
-  int cell_bounds_ndim;
-  char *tmpstr=NULL;
-  PyObject *coords_obj,*bounds_obj;
-  PyArrayObject *coords=NULL,*bounds=NULL;
-
-  /* HUGE assumtion here is that the data is contiguous! */
-  if (!PyArg_ParseTuple(args,"ssiOcOis",&name,&units,&length,&coords_obj,&type,&bounds_obj,&cell_bounds_ndim,&interval))
-    return NULL;
-
-  if (coords_obj == Py_None) {
-    coord_vals = NULL;
-  }
-  else {
-    coords =(PyArrayObject *) PyArray_ContiguousFromObject(coords_obj,PyArray_NOTYPE,1,0);
-
-    if (coords->nd!=1) {
-      printf("ok we need to pass contiguous flattened arrays only!\n");
-      return NULL;
-    }
-    
-    if (type!='c') {
-      coord_vals = (void *)coords->data;
-      n = cell_bounds_ndim;
-    }
-    else {
-      tmpstr=(char *)malloc(sizeof(char)*length*(cell_bounds_ndim+1));
-      for (ierr=0;ierr<length;ierr++) {
-	coord_vals = (void *)PyArray_GETPTR1(coords,ierr);
-	strncpy(&tmpstr[ierr*(cell_bounds_ndim+1)],coord_vals,cell_bounds_ndim);
-	tmpstr[ierr*(cell_bounds_ndim+1)+cell_bounds_ndim]='\0';
-      }
-      coord_vals=&tmpstr[0];
-      n = cell_bounds_ndim + 1;
-      for (ierr=0;ierr<length;ierr++) {
-      }
-    }
-  }
-
-  if (bounds_obj == Py_None) {
-    cell_bounds = NULL;
-  }
-  else {
-    bounds =(PyArrayObject *) PyArray_ContiguousFromObject(bounds_obj,PyArray_NOTYPE,1,0);
-    if (bounds->nd!=1) {
-      printf("ok we need to pass contiguous flattened arrays only!\n");
-      return NULL;
-    }
-    cell_bounds = (void *)bounds->data;
-  }
-  
-  ierr = cmor_axis(&axis_id,name,units,length,coord_vals,type,cell_bounds,n,interval);
-
-
-  if (coords!=NULL) {Py_DECREF(coords);}
-  if (bounds!=NULL) {Py_DECREF(bounds);}
+/************************************************************************/
+/*                       PyCMOR_dataset_json()                          */
+/************************************************************************/
 
-  if (ierr != 0 ) return NULL;
+static PyObject *PyCMOR_dataset_json( PyObject * self, PyObject * args ) {
+    int ierr;
+    char *rcfile;
 
-  if (type=='c') {
-    free(tmpstr);
-  }
+    if( !PyArg_ParseTuple( args, "s", &rcfile ) ) {
+        return NULL;
+    }
 
+    ierr = cmor_dataset_json( rcfile );
+    if( ierr != 0 ) {
+        return NULL;
+    }
 
-  return Py_BuildValue("i",axis_id);
+    return Py_None;
 }
 
-static PyObject *
-  PyCMOR_set_table(PyObject *self,PyObject *args)
-{
-  int table,ierr;
-  if (!PyArg_ParseTuple(args,"i",&table))
-    return NULL;
-  ierr = cmor_set_table(table);
-  if (ierr != 0 ) return NULL;
-  /* Return NULL Python Object */
-  Py_INCREF(Py_None);
-  return Py_None;
-}
+/************************************************************************/
+/*                         PyCMOR_load_table()                          */
+/************************************************************************/
 
-static PyObject *
-  PyCMOR_variable(PyObject *self,PyObject *args)
-{
-  int ierr,var_id;
-  char *name; 
-  char *units; 
-  char *comment; 
-  char *positive;
-  char *original_name;
-  char *history;
-  int ndims;
-  char type;
-  double missing;
-  float fmissing;
-  int imissing;
-  long lmissing;
-  double tol;
-  void *pass_missing=NULL;
-  int *axes_ids;
-  PyObject *axes_obj,*missing_obj;
-  PyArrayObject *axes=NULL;
-
-  /* HUGE assumtion here is that the data is contiguous! */
-  if (!PyArg_ParseTuple(args,"ssiOcOdssss",&name,&units,&ndims,&axes_obj,&type,&missing_obj,&tol,&positive,&original_name,&history,&comment))
-    return NULL;
-
-  axes =(PyArrayObject *) PyArray_ContiguousFromObject(axes_obj,PyArray_NOTYPE,1,0);
-
-  if (axes->nd!=1) {
-    printf("ok we need to pass contiguous flattened arrays only!\n");
-    return NULL;
-  }
-  axes_ids = (int *)axes->data;
-
-  if (missing_obj == Py_None) {
-    pass_missing = NULL;
-  }
-  else {
-    missing = PyFloat_AsDouble(missing_obj);
-    if (type=='d') pass_missing=&missing;
-    else if (type=='f') {
-      fmissing = (float)missing;
-      pass_missing=&fmissing;
-    }
-    else if (type=='l') {
-      lmissing = (long)missing;
-      pass_missing=&lmissing;
-    }
-    else if (type=='i') {
-      imissing = (int)missing;
-      pass_missing=&imissing;
-    }
-  }
-  
-  ierr = cmor_variable(&var_id,name, units, ndims, axes_ids, type, pass_missing, &tol, positive, original_name, history, comment) ;
-  if (axes!=NULL) {Py_DECREF(axes);}
-  if (ierr != 0 ) return NULL;
-  return Py_BuildValue("i",var_id);
+static PyObject *PyCMOR_load_table( PyObject * self, PyObject * args ) {
+    int ierr, table_id;
+    char *table;
+
+    if( !PyArg_ParseTuple( args, "s", &table ) )
+	return NULL;
+    ierr = cmor_load_table( table, &table_id );
+    if( ierr != 0 ) {
+	return NULL;
+    }
+    return Py_BuildValue( "i", table_id );
 }
 
-static PyObject *
-  PyCMOR_zfactor(PyObject *self,PyObject *args)
-{
-  int ierr,zvar_id;
-  int itmp;
-  int axis_id;
-  char *name; 
-  char *units; 
-  int ndims;
-  char type;
-  int *axes_ids;
-  void *values,*bounds;
-  PyObject *axes_obj,*values_obj,*bounds_obj;
-  PyArrayObject *axes=NULL, *values_array=NULL, *bounds_array=NULL;
-
-  /* HUGE assumtion here is that the data is contiguous! */
-  if (!PyArg_ParseTuple(args,"issiOcOO",&axis_id,&name,&units,&ndims,&axes_obj,&type,&values_obj,&bounds_obj))
-    return NULL;
-
-  if (axes_obj == Py_None) {
-    axes_ids = NULL;
-  }
-  else {
-    if (ndims>1) {
-      axes =(PyArrayObject *) PyArray_ContiguousFromObject(axes_obj,PyArray_NOTYPE,1,0);
-      axes_ids = (void *)axes->data;
-    }
-    else {
-      itmp = (int) PyInt_AsLong(axes_obj);
-      axes_ids = &itmp;
-    }
-  }
-
-
-  if (values_obj == Py_None) {
-    values = NULL;
-  }
-  else {
-    values_array =(PyArrayObject *) PyArray_ContiguousFromObject(values_obj,PyArray_NOTYPE,1,0);
-    values = (void *)values_array->data;
-  }
-
-  if (bounds_obj == Py_None) {
-    bounds = NULL;
-  }
-  else {
-    bounds_array =(PyArrayObject *) PyArray_ContiguousFromObject(bounds_obj,PyArray_NOTYPE,1,0);
-    bounds = (void *)bounds_array->data;
-  }
-  
-  ierr = cmor_zfactor(&zvar_id,axis_id, name, units, ndims, axes_ids, type, values, bounds);
-  if (axes!=NULL) {Py_DECREF(axes);}
-  if (values_array!=NULL) {Py_DECREF(values_array);}
-  if (bounds_array!=NULL) {Py_DECREF(bounds_array);}
-  if (ierr != 0 ) return NULL;
-  return Py_BuildValue("i",zvar_id);
+/************************************************************************/
+/*                            PyCMOR_axis()                             */
+/************************************************************************/
+
+static PyObject *PyCMOR_axis( PyObject * self, PyObject * args ) {
+    int ierr, axis_id, n = 0;
+    char *name;
+    char *units;
+    char *interval;
+    int length;
+    char type;
+    void *coord_vals;
+    void *cell_bounds;
+    int cell_bounds_ndim;
+    char *tmpstr = NULL;
+    PyObject *coords_obj, *bounds_obj;
+    PyArrayObject *coords = NULL, *bounds = NULL;
+
+/************************************************************************/
+/*         HUGE assumtion here is that the data is contiguous!          */
+/************************************************************************/
+
+    if( !PyArg_ParseTuple
+	( args, "ssiOcOis", &name, &units, &length, &coords_obj, &type,
+	  &bounds_obj, &cell_bounds_ndim, &interval ) )
+	return NULL;
+
+    if( coords_obj == Py_None ) {
+	coord_vals = NULL;
+    } else {
+	coords =
+	    ( PyArrayObject * ) PyArray_ContiguousFromObject( coords_obj,
+							      NPY_NOTYPE,
+							      1, 0 );
+
+	if( coords->nd != 1 ) {
+	    printf
+		( "ok we need to pass contiguous flattened arrays only!\n" );
+	    return NULL;
+	}
+
+	if( type != 'c' ) {
+	    coord_vals = ( void * ) coords->data;
+	    n = cell_bounds_ndim;
+	} else {
+	    tmpstr =
+		( char * ) malloc( sizeof ( char ) * length *
+				   ( cell_bounds_ndim + 1 ) );
+	    for( ierr = 0; ierr < length; ierr++ ) {
+		coord_vals = ( void * ) PyArray_GETPTR1( coords, ierr );
+		strncpy( &tmpstr[ierr * ( cell_bounds_ndim + 1 )],
+			 coord_vals, cell_bounds_ndim );
+		tmpstr[ierr * ( cell_bounds_ndim + 1 ) +
+		       cell_bounds_ndim] = '\0';
+	    }
+	    coord_vals = &tmpstr[0];
+	    n = cell_bounds_ndim + 1;
+	    for( ierr = 0; ierr < length; ierr++ ) {
+	    }
+	}
+    }
+
+    if( bounds_obj == Py_None ) {
+	cell_bounds = NULL;
+    } else {
+	bounds =
+	    ( PyArrayObject * ) PyArray_ContiguousFromObject( bounds_obj,
+							      NPY_NOTYPE,
+							      1, 0 );
+	if( bounds->nd != 1 ) {
+	    printf
+		( "ok we need to pass contiguous flattened arrays only!\n" );
+	    return NULL;
+	}
+	cell_bounds = ( void * ) bounds->data;
+    }
+
+    ierr =
+	cmor_axis( &axis_id, name, units, length, coord_vals, type,
+		   cell_bounds, n, interval );
+
+
+    if( coords != NULL ) {
+	Py_DECREF( coords );
+    }
+    if( bounds != NULL ) {
+	Py_DECREF( bounds );
+    }
+
+    if( ierr != 0 )
+	return NULL;
+
+    if( type == 'c' ) {
+	free( tmpstr );
+    }
+
+
+    return Py_BuildValue( "i", axis_id );
 }
 
+/************************************************************************/
+/*                          PyCMOR_set_table()                          */
+/************************************************************************/
 
-static PyObject *
-  PyCMOR_grid_mapping(PyObject *self,PyObject *args)
-{
-  int ierr;
-  PyObject *param_nm_obj,*param_val_obj,*param_un_obj,*tmp;
-  PyArrayObject *param_val_arr=NULL;
-  void *param_val;
-  char *name;
-  int gid,i,n;
-  char nms[CMOR_MAX_GRID_ATTRIBUTES][CMOR_MAX_STRING];
-  char units[CMOR_MAX_GRID_ATTRIBUTES][CMOR_MAX_STRING];
-  /* HUGE assumtion here is that the data is contiguous! */
-  if (!PyArg_ParseTuple(args,"isOOO",&gid,&name,&param_nm_obj,&param_val_obj,&param_un_obj))
-    return NULL;
-
-  param_val_arr = (PyArrayObject *) PyArray_ContiguousFromObject(param_val_obj,PyArray_NOTYPE,1,0);
-  param_val = param_val_arr->data;
-  
-  n = PyList_Size(param_nm_obj);
-  for(i=0;i<n;i++) {
-    tmp  =PyList_GetItem(param_nm_obj,i);
-    strcpy(nms[i],PyString_AsString(tmp));
-    //Py_DECREF(tmp); //Not needed get_item does not increase ref
-    tmp  =PyList_GetItem(param_un_obj,i);
-    strcpy(units[i],PyString_AsString(tmp));
-    //Py_DECREF(tmp); // Not need get_item does not incref
-  }
-  
-  ierr = cmor_set_grid_mapping(gid,name,n,(char **)nms,CMOR_MAX_STRING,param_val,(char **)units,CMOR_MAX_STRING);
-
-  if (param_val_arr!=NULL) {Py_DECREF(param_val_arr);}
-
-  if (ierr!=0) {
-    return NULL;
-  }
-  else {
-    /* Return NULL Python Object */
-    Py_INCREF(Py_None);
+static PyObject *PyCMOR_set_table( PyObject * self, PyObject * args ) {
+    int table, ierr;
+
+    if( !PyArg_ParseTuple( args, "i", &table ) )
+	return NULL;
+    ierr = cmor_set_table( table );
+    if( ierr != 0 )
+	return NULL;
+/* -------------------------------------------------------------------- */
+/*      Return NULL Python Object                                       */
+/* -------------------------------------------------------------------- */
+
+    Py_INCREF( Py_None );
     return Py_None;
-  }
 }
-static PyObject *
-  PyCMOR_write(PyObject *self,PyObject *args)
-{
-  int ierr,var_id;
-  PyObject *data_obj=NULL;
-  PyArrayObject *data_array=NULL;
-  void *data;
-  char *suffix,*itype; 
-  char type;
-  int ntimes;
-  PyObject *times_obj=NULL;
-  PyArrayObject *times_array=NULL;
-  void *times;
-  double itime;
-  PyObject *times_bnds_obj=NULL;
-  PyArrayObject *times_bnds_array=NULL;
-  void *times_bnds;
-  PyObject *ref_obj;
-  int *ref;
-  int iref;
-
-  /* HUGE assumtion here is that the data is contiguous! */
-  if (!PyArg_ParseTuple(args,"iOssiOOO",&var_id,&data_obj,&itype,&suffix,&ntimes,&times_obj,&times_bnds_obj,&ref_obj))
-    return NULL;
-
-  data_array =(PyArrayObject *) PyArray_ContiguousFromObject(data_obj,PyArray_NOTYPE,1,0);
-  data = data_array->data;
-
-  if (times_obj == Py_None) {
-    times = NULL;
-  }
-  else {
-    if (ntimes>1) {
-      times_array =(PyArrayObject *) PyArray_ContiguousFromObject(times_obj,PyArray_NOTYPE,1,0);
-      times = (void *)times_array->data;
-    }
-    else {
-      itime = (double) PyFloat_AsDouble(times_obj);
-      times = &itime;
-    }
-  }
-
-  if (times_bnds_obj == Py_None) {
-    times_bnds = NULL;
-  }
-  else {
-    times_bnds_array =(PyArrayObject *) PyArray_ContiguousFromObject(times_bnds_obj,PyArray_NOTYPE,1,0);
-    times_bnds = (void *)times_bnds_array->data;
-  }
-
-  if (ref_obj == Py_None) {
-    ref = NULL;
-  }
-  else {
-    iref = (int) PyInt_AsLong(ref_obj);
-    ref = &iref;
-  }
-  type = itype[0];
-/*   printf("going in, suffix is: -%s-\n",suffix); */
-  ierr = 0;
-  ierr = cmor_write(var_id, data, type, suffix, ntimes, times, times_bnds, ref);
-  Py_DECREF(data_array);
-  if (times_array!=NULL) {Py_DECREF(times_array);}
-  if (times_bnds_array!=NULL) {Py_DECREF(times_bnds_array);}
 
-  if (ierr != 0 ) return NULL;
-  /* Return NULL Python Object */
- 
-  Py_INCREF(Py_None);
-  return Py_None;
+static PyObject *PyCMOR_variable( PyObject * self, PyObject * args ) {
+    int ierr, var_id;
+    char *name;
+    char *units;
+    char *comment;
+    char *positive;
+    char *original_name;
+    char *history;
+    int ndims;
+    char type;
+    double missing;
+    float fmissing;
+    int imissing;
+    long lmissing;
+    double tol;
+    void *pass_missing = NULL;
+    int *axes_ids;
+    PyObject *axes_obj, *missing_obj;
+    PyArrayObject *axes = NULL;
+
+    /* HUGE assumtion here is that the data is contiguous! */
+    if( !PyArg_ParseTuple
+	( args, "ssiOcOdssss", &name, &units, &ndims, &axes_obj, &type,
+	  &missing_obj, &tol, &positive, &original_name, &history,
+	  &comment ) )
+	return NULL;
+
+    axes =
+	( PyArrayObject * ) PyArray_ContiguousFromObject( axes_obj,
+							  NPY_NOTYPE,
+							  1, 0 );
+
+    if( axes->nd != 1 ) {
+	printf( "ok we need to pass contiguous flattened arrays only!\n" );
+	return NULL;
+    }
+    axes_ids = ( int * ) axes->data;
+
+    if( missing_obj == Py_None ) {
+	pass_missing = NULL;
+    } else {
+	missing = PyFloat_AsDouble( missing_obj );
+	if( type == 'd' )
+	    pass_missing = &missing;
+	else if( type == 'f' ) {
+	    fmissing = ( float ) missing;
+	    pass_missing = &fmissing;
+	} else if( type == 'l' ) {
+	    lmissing = ( long ) missing;
+	    pass_missing = &lmissing;
+	} else if( type == 'i' ) {
+	    imissing = ( int ) missing;
+	    pass_missing = &imissing;
+	}
+    }
+
+    ierr =
+	cmor_variable( &var_id, name, units, ndims, axes_ids, type,
+		       pass_missing, &tol, positive, original_name,
+		       history, comment );
+    if( axes != NULL ) {
+	Py_DECREF( axes );
+    }
+    if( ierr != 0 )
+	return NULL;
+    return Py_BuildValue( "i", var_id );
 }
-static PyObject *
-  PyCMOR_close(PyObject *self,PyObject *args)
-{
-  PyObject *var;
-  int varid,ierr;
-  int dofile=0;
-  int dopreserve=0;
-  int preserved_id;
-  char file_name[CMOR_MAX_STRING];
-  if (!PyArg_ParseTuple(args,"Oii",&var,&dofile,&dopreserve)) {
-    return NULL;
-  }
-  
-  if (var == Py_None ) {
-    ierr = cmor_close();
-    if (ierr!=0) {
-      return NULL;
-    }
-    else {
-      return Py_BuildValue("i",ierr);
-    }
-  }
-  else {
-    varid = (int)PyInt_AsLong(var);
-
-    if (dopreserve==1) {
-      if (dofile==1) { 
-	ierr = cmor_close_variable(varid,&file_name[0],&preserved_id);
-      }
-      else {
-	ierr = cmor_close_variable(varid,NULL,&preserved_id);
-      }
-    }
-    else {
-      if (dofile==1) { 
-	ierr = cmor_close_variable(varid,&file_name[0],NULL);
-      }
-      else {
-	ierr = cmor_close_variable(varid,NULL,NULL);
-      }
-    }
-  }
-
-  if (ierr!=0) {
-    return NULL;
-  }
-  else {
-    if (dofile==1) {
-      return Py_BuildValue("s",file_name);
-    }
-    else {
-      return Py_BuildValue("i",ierr);
-    }
-  }
+
+static PyObject *PyCMOR_zfactor( PyObject * self, PyObject * args ) {
+    int ierr, zvar_id;
+    int itmp;
+    int axis_id;
+    char *name;
+    char *units;
+    int ndims;
+    char type;
+    int *axes_ids;
+    void *values, *bounds;
+    PyObject *axes_obj, *values_obj, *bounds_obj;
+    PyArrayObject *axes = NULL, *values_array = NULL, *bounds_array = NULL;
+
+/* -------------------------------------------------------------------- */
+/*      HUGE assumtion here is that the data is contiguous!             */
+/* -------------------------------------------------------------------- */
+
+    if( !PyArg_ParseTuple
+	( args, "issiOcOO", &axis_id, &name, &units, &ndims, &axes_obj,
+	  &type, &values_obj, &bounds_obj ) )
+	return NULL;
+
+    if( axes_obj == Py_None ) {
+	axes_ids = NULL;
+    } else {
+	if( ndims > 1 ) {
+	    axes =
+		( PyArrayObject * ) PyArray_ContiguousFromObject( axes_obj,
+								  NPY_NOTYPE,
+								  1, 0 );
+	    axes_ids = ( void * ) axes->data;
+	} else {
+	    itmp = ( int ) PyInt_AsLong( axes_obj );
+	    axes_ids = &itmp;
+	}
+    }
+
+
+    if( values_obj == Py_None ) {
+	values = NULL;
+    } else {
+	values_array =
+	    ( PyArrayObject * ) PyArray_ContiguousFromObject( values_obj,
+							      NPY_NOTYPE,
+							      1, 0 );
+	values = ( void * ) values_array->data;
+    }
+
+    if( bounds_obj == Py_None ) {
+	bounds = NULL;
+    } else {
+	bounds_array =
+	    ( PyArrayObject * ) PyArray_ContiguousFromObject( bounds_obj,
+							      NPY_NOTYPE,
+							      1, 0 );
+	bounds = ( void * ) bounds_array->data;
+    }
+
+    ierr =
+	cmor_zfactor( &zvar_id, axis_id, name, units, ndims, axes_ids,
+		      type, values, bounds );
+    if( axes != NULL ) {
+	Py_DECREF( axes );
+    }
+    if( values_array != NULL ) {
+	Py_DECREF( values_array );
+    }
+    if( bounds_array != NULL ) {
+	Py_DECREF( bounds_array );
+    }
+    if( ierr != 0 )
+	return NULL;
+    return Py_BuildValue( "i", zvar_id );
 }
 
-    
-static PyObject *
-  PyCMOR_time_varying_grid_coordinate(PyObject *self,PyObject *args)
-{
-  int ierr,grid_id,coord_var_id;
-  char *table_entry;
-  char *units;
-  char type;
-  double missing;
-  PyObject *missing_obj;
-  void *pass_missing;
-
- /* HUGE assumtion here is that the data is contiguous! */
-  if (!PyArg_ParseTuple(args,"isscO",&grid_id,&table_entry,&units,&type,&missing_obj))
-    return NULL;
-  if (missing_obj == Py_None) {
-    pass_missing = NULL;
-  }
-  else {
-    missing = PyFloat_AsDouble(missing_obj);
-    pass_missing=(void *)&missing;
-  }
-  ierr = cmor_time_varying_grid_coordinate(&coord_var_id,grid_id, table_entry, units, type, pass_missing, NULL);
 
-  if (ierr != 0 ) return NULL;
-  return Py_BuildValue("i",coord_var_id);  
+static PyObject *PyCMOR_grid_mapping( PyObject * self, PyObject * args ) {
+    int ierr;
+    PyObject *param_nm_obj, *param_val_obj, *param_un_obj, *tmp;
+    PyArrayObject *param_val_arr = NULL;
+    void *param_val;
+    char *name;
+    int gid, i, n;
+    char nms[CMOR_MAX_GRID_ATTRIBUTES][CMOR_MAX_STRING];
+    char units[CMOR_MAX_GRID_ATTRIBUTES][CMOR_MAX_STRING];
+
+    /* HUGE assumtion here is that the data is contiguous! */
+    if( !PyArg_ParseTuple
+	( args, "isOOO", &gid, &name, &param_nm_obj, &param_val_obj,
+	  &param_un_obj ) )
+	return NULL;
+
+    param_val_arr =
+	( PyArrayObject * ) PyArray_ContiguousFromObject( param_val_obj,
+							  NPY_NOTYPE,
+							  1, 0 );
+    param_val = param_val_arr->data;
+
+    n = PyList_Size( param_nm_obj );
+    for( i = 0; i < n; i++ ) {
+	tmp = PyList_GetItem( param_nm_obj, i );
+	strcpy( nms[i], PyString_AsString( tmp ) );
+	//Py_DECREF(tmp); //Not needed get_item does not increase ref
+	tmp = PyList_GetItem( param_un_obj, i );
+	strcpy( units[i], PyString_AsString( tmp ) );
+	//Py_DECREF(tmp); // Not need get_item does not incref
+    }
+
+    ierr =
+	cmor_set_grid_mapping( gid, name, n, ( char ** ) nms,
+			       CMOR_MAX_STRING, param_val,
+			       ( char ** ) units, CMOR_MAX_STRING );
+
+    if( param_val_arr != NULL ) {
+	Py_DECREF( param_val_arr );
+    }
+
+    if( ierr != 0 ) {
+	return NULL;
+    } else {
+	/* Return NULL Python Object */
+	Py_INCREF( Py_None );
+	return Py_None;
+    }
 }
-static PyObject *
-  PyCMOR_grid(PyObject *self,PyObject *args)
-{
-  int ierr;
-  PyObject *axes_obj,*lat_obj,*lon_obj,*blat_obj,*blon_obj;
-  PyArrayObject *axes_arr=NULL,*lat_arr=NULL,*lon_arr=NULL,*blat_arr=NULL,*blon_arr=NULL;
-  void *axes,*lon,*lat,*blon,*blat;
-  char type;
-  int nvert,ndims;
-  int id;
-  char itype;
-
-  /* HUGE assumtion here is that the data is contiguous! */
-  if (!PyArg_ParseTuple(args,"iOcOOiOO",&ndims,&axes_obj,&itype,&lat_obj,&lon_obj,&nvert,&blat_obj,&blon_obj))
-    return NULL;
-
-  type = itype;
-  axes_arr = (PyArrayObject *) PyArray_ContiguousFromObject(axes_obj,PyArray_NOTYPE,1,0);
-  axes = (void *) axes_arr->data;
-
-  if (lat_obj == Py_None) {
-    lat = NULL;
-  }
-  else {
-    lat_arr = (PyArrayObject *) PyArray_ContiguousFromObject(lat_obj,PyArray_NOTYPE,1,0);
-    lat = (void *)lat_arr->data;
-  }
-
-  if (lon_obj == Py_None) {
-    lon = NULL;
-  }
-  else {
-    lon_arr = (PyArrayObject *) PyArray_ContiguousFromObject(lon_obj,PyArray_NOTYPE,1,0);
-    lon = (void *)lon_arr->data;
-  }
-
-  if (blat_obj == Py_None) {
-    blat = NULL;
-  }
-  else {
-      blat_arr = (PyArrayObject *) PyArray_ContiguousFromObject(blat_obj,PyArray_NOTYPE,1,0);
-      blat = (void *)blat_arr->data;
-  }
-  if (blon_obj == Py_None) {
-    blon = NULL;
-  }
-  else {
-      blon_arr = (PyArrayObject *) PyArray_ContiguousFromObject(blon_obj,PyArray_NOTYPE,1,0);
-      blon = (void *)blon_arr->data;
-  }
-
-  ierr = cmor_grid(&id,ndims,axes,type,lat,lon,nvert,blat,blon);
-
-  if (axes_arr!=NULL) {Py_DECREF(axes_arr);}
-  if (lat_arr!=NULL) {Py_DECREF(lat_arr);}
-  if (blat_arr!=NULL) {Py_DECREF(blat_arr);}
-  if (lon_arr!=NULL) {Py_DECREF(lon_arr);}
-  if (blon_arr!=NULL) {Py_DECREF(blon_arr);}
-  if (ierr != 0 ) return NULL;
-  return Py_BuildValue("i",id);
+
+/************************************************************************/
+/*                            PyCMOR_write()                            */
+/************************************************************************/
+
+static PyObject *PyCMOR_write( PyObject * self, PyObject * args ) {
+    int ierr, var_id;
+    PyObject *data_obj = NULL;
+    PyArrayObject *data_array = NULL;
+    void *data;
+    char *itype;
+    char type;
+    int ntimes;
+    PyObject *times_obj = NULL;
+    PyArrayObject *times_array = NULL;
+    void *times;
+    double itime;
+    PyObject *times_bnds_obj = NULL;
+    PyArrayObject *times_bnds_array = NULL;
+    void *times_bnds;
+    PyObject *ref_obj;
+    int *ref;
+    int iref;
+
+
+    if( !PyArg_ParseTuple
+	( args, "iOsiOOO", &var_id, &data_obj, &itype,  &ntimes,
+	  &times_obj, &times_bnds_obj, &ref_obj ) )
+	return NULL;
+
+    data_array =
+	( PyArrayObject * ) PyArray_ContiguousFromObject( data_obj,
+							  NPY_NOTYPE,
+							  1, 0 );
+    data = data_array->data;
+
+    if( times_obj == Py_None ) {
+	times = NULL;
+    } else {
+	if( ntimes > 1 ) {
+	    times_array =
+		( PyArrayObject * )
+		PyArray_ContiguousFromObject( times_obj, NPY_NOTYPE, 1,
+					      0 );
+	    times = ( void * ) times_array->data;
+	} else {
+	    itime = ( double ) PyFloat_AsDouble( times_obj );
+	    times = &itime;
+	}
+    }
+
+    if( times_bnds_obj == Py_None ) {
+	times_bnds = NULL;
+    } else {
+	times_bnds_array =
+	    ( PyArrayObject * )
+	    PyArray_ContiguousFromObject( times_bnds_obj, NPY_NOTYPE,
+					  1, 0 );
+	times_bnds = ( void * ) times_bnds_array->data;
+    }
+
+    if( ref_obj == Py_None ) {
+	ref = NULL;
+    } else {
+	iref = ( int ) PyInt_AsLong( ref_obj );
+	ref = &iref;
+    }
+    type = itype[0];
+
+    ierr = 0;
+    ierr =
+	cmor_write( var_id, data, type,  ntimes, times, times_bnds,
+		    ref );
+    Py_DECREF( data_array );
+    if( times_array != NULL ) {
+	Py_DECREF( times_array );
+    }
+    if( times_bnds_array != NULL ) {
+	Py_DECREF( times_bnds_array );
+    }
+
+    if( ierr != 0 )
+	return NULL;
+
+
+    Py_INCREF( Py_None );
+    return Py_None;
 }
 
+/************************************************************************/
+/*                            PyCMOR_close()                            */
+/************************************************************************/
 
-static PyMethodDef MyExtractMethods[]= {
-  {"setup", PyCMOR_setup , METH_VARARGS},
-  {"dataset", PyCMOR_dataset , METH_VARARGS},
-  {"load_table", PyCMOR_load_table , METH_VARARGS},
-  {"axis", PyCMOR_axis , METH_VARARGS},
-  {"set_table", PyCMOR_set_table , METH_VARARGS},
-  {"variable", PyCMOR_variable , METH_VARARGS},
-  {"zfactor", PyCMOR_zfactor , METH_VARARGS},
-  {"write", PyCMOR_write , METH_VARARGS},
-  {"grid", PyCMOR_grid , METH_VARARGS},
-  {"time_varying_grid_coordinate", PyCMOR_time_varying_grid_coordinate , METH_VARARGS},
-  {"set_grid_mapping", PyCMOR_grid_mapping , METH_VARARGS},
-  {"getCMOR_defaults_include",PyCMOR_getincvalues, METH_VARARGS},
-  {"close", PyCMOR_close , METH_VARARGS},
-  {"set_cur_dataset_attribute",PyCMOR_set_cur_dataset_attribute, METH_VARARGS},
-  {"get_cur_dataset_attribute",PyCMOR_get_cur_dataset_attribute, METH_VARARGS},
-  {"has_cur_dataset_attribute",PyCMOR_has_cur_dataset_attribute, METH_VARARGS},
-  {"set_variable_attribute",PyCMOR_set_variable_attribute, METH_VARARGS},
-  {"get_variable_attribute",PyCMOR_get_variable_attribute, METH_VARARGS},
-  {"has_variable_attribute",PyCMOR_has_variable_attribute, METH_VARARGS},
-  {"create_output_path",PyCMOR_create_output_path, METH_VARARGS},
-  {"get_original_shape",PyCMOR_get_original_shape, METH_VARARGS},
-  {NULL, NULL} /*sentinel */
-};
+static PyObject *PyCMOR_close( PyObject * self, PyObject * args ) {
+    PyObject *var;
+    int varid, ierr;
+    int dofile = 0;
+    int dopreserve = 0;
+    int preserved_id;
+    char file_name[CMOR_MAX_STRING];
 
-PyMODINIT_FUNC init_cmor(void)
-{
-  (void) Py_InitModule("_cmor", MyExtractMethods);
-  import_array();
-  
+    if( !PyArg_ParseTuple( args, "Oii", &var, &dofile, &dopreserve ) ) {
+	return NULL;
+    }
+
+    if( var == Py_None ) {
+	ierr = cmor_close(  );
+	if( ierr != 0 ) {
+	    return NULL;
+	} else {
+	    return Py_BuildValue( "i", ierr );
+	}
+    } else {
+	varid = ( int ) PyInt_AsLong( var );
+
+	if( dopreserve == 1 ) {
+	    if( dofile == 1 ) {
+		ierr =
+		    cmor_close_variable( varid, &file_name[0],
+					 &preserved_id );
+	    } else {
+		ierr = cmor_close_variable( varid, NULL, &preserved_id );
+	    }
+	} else {
+	    if( dofile == 1 ) {
+		ierr = cmor_close_variable( varid, &file_name[0], NULL );
+	    } else {
+		ierr = cmor_close_variable( varid, NULL, NULL );
+	    }
+	}
+    }
+
+    if( ierr != 0 ) {
+	return NULL;
+    } else {
+	if( dofile == 1 ) {
+	    return Py_BuildValue( "s", file_name );
+	} else {
+	    return Py_BuildValue( "i", ierr );
+	}
+    }
 }
 
-/* int main(int argc,char **argv) */
-/* { */
-/*   Py_SetProgramName(argv[0]); */
-/*   Py_Initialize(); */
-/*   init_cmor(); */
-/*   return 0; */
-/* } */
+/************************************************************************/
+/*                PyCMOR_time_varying_grid_coordinate()                 */
+/************************************************************************/
+
+static PyObject *PyCMOR_time_varying_grid_coordinate( PyObject * self,
+						      PyObject * args ) {
+    int ierr, grid_id, coord_var_id;
+    char *table_entry;
+    char *units;
+    char type;
+    double missing;
+    PyObject *missing_obj;
+    void *pass_missing;
+
+    /* HUGE assumtion here is that the data is contiguous! */
+    if( !PyArg_ParseTuple
+	( args, "isscO", &grid_id, &table_entry, &units, &type,
+	  &missing_obj ) )
+	return NULL;
+    if( missing_obj == Py_None ) {
+	pass_missing = NULL;
+    } else {
+	missing = PyFloat_AsDouble( missing_obj );
+	pass_missing = ( void * ) &missing;
+    }
+    ierr =
+	cmor_time_varying_grid_coordinate( &coord_var_id, grid_id,
+					   table_entry, units, type,
+					   pass_missing, NULL );
+
+    if( ierr != 0 )
+	return NULL;
+    return Py_BuildValue( "i", coord_var_id );
+}
 
+/************************************************************************/
+/*                            PyCMOR_grid()                             */
+/************************************************************************/
+
+static PyObject *PyCMOR_grid( PyObject * self, PyObject * args ) {
+    int ierr;
+    PyObject *axes_obj, *lat_obj, *lon_obj, *blat_obj, *blon_obj;
+    PyArrayObject *axes_arr = NULL, *lat_arr = NULL, *lon_arr =
+	NULL, *blat_arr = NULL, *blon_arr = NULL;
+    void *axes, *lon, *lat, *blon, *blat;
+    char type;
+    int nvert, ndims;
+    int id;
+    char itype;
+
+    if( !PyArg_ParseTuple
+	( args, "iOcOOiOO", &ndims, &axes_obj, &itype, &lat_obj, &lon_obj,
+	  &nvert, &blat_obj, &blon_obj ) )
+	return NULL;
+
+    type = itype;
+    axes_arr =
+	( PyArrayObject * ) PyArray_ContiguousFromObject( axes_obj,
+							  NPY_NOTYPE,
+							  1, 0 );
+    axes = ( void * ) axes_arr->data;
+
+    if( lat_obj == Py_None ) {
+	lat = NULL;
+    } else {
+	lat_arr =
+	    ( PyArrayObject * ) PyArray_ContiguousFromObject( lat_obj,
+							      NPY_NOTYPE,
+							      1, 0 );
+	lat = ( void * ) lat_arr->data;
+    }
+
+    if( lon_obj == Py_None ) {
+	lon = NULL;
+    } else {
+	lon_arr =
+	    ( PyArrayObject * ) PyArray_ContiguousFromObject( lon_obj,
+							      NPY_NOTYPE,
+							      1, 0 );
+	lon = ( void * ) lon_arr->data;
+    }
+
+    if( blat_obj == Py_None ) {
+	blat = NULL;
+    } else {
+	blat_arr =
+	    ( PyArrayObject * ) PyArray_ContiguousFromObject( blat_obj,
+							      NPY_NOTYPE,
+							      1, 0 );
+	blat = ( void * ) blat_arr->data;
+    }
+    if( blon_obj == Py_None ) {
+	blon = NULL;
+    } else {
+	blon_arr =
+	    ( PyArrayObject * ) PyArray_ContiguousFromObject( blon_obj,
+							      NPY_NOTYPE,
+							      1, 0 );
+	blon = ( void * ) blon_arr->data;
+    }
+
+    ierr =
+	cmor_grid( &id, ndims, axes, type, lat, lon, nvert, blat, blon );
+
+    if( axes_arr != NULL ) {
+	Py_DECREF( axes_arr );
+    }
+    if( lat_arr != NULL ) {
+	Py_DECREF( lat_arr );
+    }
+    if( blat_arr != NULL ) {
+	Py_DECREF( blat_arr );
+    }
+    if( lon_arr != NULL ) {
+	Py_DECREF( lon_arr );
+    }
+    if( blon_arr != NULL ) {
+	Py_DECREF( blon_arr );
+    }
+    if( ierr != 0 )
+	return NULL;
+    return Py_BuildValue( "i", id );
+}
+
+
+static PyMethodDef MyExtractMethods[] = {
+    {"setup", PyCMOR_setup, METH_VARARGS},
+    {"dataset_json", PyCMOR_dataset_json, METH_VARARGS},
+    {"load_table", PyCMOR_load_table, METH_VARARGS},
+    {"axis", PyCMOR_axis, METH_VARARGS},
+    {"set_table", PyCMOR_set_table, METH_VARARGS},
+    {"variable", PyCMOR_variable, METH_VARARGS},
+    {"zfactor", PyCMOR_zfactor, METH_VARARGS},
+    {"write", PyCMOR_write, METH_VARARGS},
+    {"grid", PyCMOR_grid, METH_VARARGS},
+    {"time_varying_grid_coordinate", PyCMOR_time_varying_grid_coordinate,
+     METH_VARARGS},
+    {"set_grid_mapping", PyCMOR_grid_mapping, METH_VARARGS},
+    {"getCMOR_defaults_include", PyCMOR_getincvalues, METH_VARARGS},
+    {"close", PyCMOR_close, METH_VARARGS},
+    {"set_cur_dataset_attribute",PyCMOR_set_cur_dataset_attribute,
+     METH_VARARGS},
+    {"get_cur_dataset_attribute", PyCMOR_get_cur_dataset_attribute,
+     METH_VARARGS},
+    {"has_cur_dataset_attribute", PyCMOR_has_cur_dataset_attribute,
+     METH_VARARGS},
+    {"set_variable_attribute", PyCMOR_set_variable_attribute,
+     METH_VARARGS},
+    {"get_variable_attribute", PyCMOR_get_variable_attribute,
+     METH_VARARGS},
+    {"has_variable_attribute", PyCMOR_has_variable_attribute,
+     METH_VARARGS},
+    {"get_original_shape", PyCMOR_get_original_shape, METH_VARARGS},
+    {"get_final_filename", PyCMOR_getFinalFilename, METH_VARARGS},
+    {"set_deflate", PyCMOR_set_deflate, METH_VARARGS},
+    {NULL, NULL}		/*sentinel */
+};
+
+PyMODINIT_FUNC init_cmor( void ) {
+    ( void ) Py_InitModule( "_cmor", MyExtractMethods );
+    import_array(  );
+
+}
diff --git a/Src/cdTime/cdRegTrfm.c b/Src/cdTime/cdRegTrfm.c
index cd88441..cf5de41 100644
--- a/Src/cdTime/cdRegTrfm.c
+++ b/Src/cdTime/cdRegTrfm.c
@@ -31,9 +31,19 @@
  *
  */
 
+#include <string.h>
 #include <stdio.h>
 #include <cdmsint.h>
 #include <isdb.h>
+extern void   xy_index(REG_GEOM *, long *, long *, long *, int *);
+extern void   latlon_index(REG_GEOM *, double *, double *, long *, int *);
+extern void   index_xy(REG_GEOM *, long *, long *, long *, int *);
+extern void   index_latlon(REG_GEOM *, long *, double *, double *, int *);
+extern void   xy_latlon(REG_GEOM *, double *, double *, double *, double *, int *);
+extern void   latlon_xy(REG_GEOM *, double *, double *, double *, double *, int *);
+extern void   getf_latlon(REG_GEOM *, double *, double *, float *, float *, int *);
+extern void   putf_latlon(REG_GEOM *, double *, double *, float *, float *, int *);
+
 					     /* copy CDMS geom to NEONS ngeom */
 void
 CdCopyGeom(CdRegGeom *geom, REG_GEOM *ngeom)
diff --git a/Src/cdTime/cdTimeConv.c b/Src/cdTime/cdTimeConv.c
index 3a557b4..1ab6ab3 100644
--- a/Src/cdTime/cdTimeConv.c
+++ b/Src/cdTime/cdTimeConv.c
@@ -518,6 +518,7 @@ cdRel2Comp(cdCalenType timetype, char* relunits, double reltime, cdCompTime* com
 		}
 	}
 
+    baseunits = cdMonth;
 	switch(unit){
 	  case cdSecond:
 		delta = reltime/3600.0;
diff --git a/Src/cdTime/reg_trfm.c b/Src/cdTime/reg_trfm.c
index e7a5cee..7e51005 100644
--- a/Src/cdTime/reg_trfm.c
+++ b/Src/cdTime/reg_trfm.c
@@ -2,6 +2,7 @@
 /*
  * set of routines to transform between x-y and lat-lon on registered grids
  */
+#include <string.h>
 #include <stdio.h> 
 #include <math.h> 
 #include <isdb.h> 
@@ -15,6 +16,23 @@
 #define MIN_LON  -180.
 #define MAX_LON   180.
 
+extern void   xy_index(REG_GEOM *, long *, long *, long *, int *);
+extern void   latlon_index(REG_GEOM *, double *, double *, long *, int *);
+extern void   index_xy(REG_GEOM *, long *, long *, long *, int *);
+extern void   index_latlon(REG_GEOM *, long *, double *, double *, int *);
+extern void   xy_latlon(REG_GEOM *, double *, double *, double *, double *, int *);
+extern void   latlon_xy(REG_GEOM *, double *, double *, double *, double *, int *);
+extern void   getf_latlon(REG_GEOM *, double *, double *, float *, float *, int *);
+extern void   putf_latlon(REG_GEOM *, double *, double *, float *, float *, int *);
+extern void   CdLookup(double *, long , double , long *);
+extern void   get_int_dis(REG_GEOM *, double *, double *, double *, double *, int *);
+extern void   grid_map(REG_GEOM *, REG_GEOM *, float *, float *, int *);
+
+
+
+
+
+
 /***************************************************************/
 /*
  * transform from x, y coordinates within a registered grid to the index
@@ -78,7 +96,7 @@ int	 *status;		/* return status */
 
 /*  Check index is within 1, nx*ny */
     if ((*index < 1) || (*index > geom->nx * geom->ny)) {
-	fprintf(stderr, "Error in index_xy;  index: %d  nx*ny: %d\n",
+	fprintf(stderr, "Error in index_xy;  index: %ld  nx*ny: %ld\n",
 		*index, geom->nx * geom->ny);
 	*status = -1;
 	return;
@@ -126,7 +144,6 @@ double	 *x;			/* x coord in units of columns, left col is 1 */
 double	 *y;			/* y coord in units of rows, top row is 1 */
 int	 *status;		/* return status */
 {
-    extern void CdLookup(double *, long, double, long *);
     double temp1, temp2, temp3, temp4, temp5, *tempp;	/* temporary variables */
     double sign;		/* temporary variable containing sign */
     double diff_lon;		/* longitude difference holder */
@@ -198,7 +215,7 @@ int	 *status;		/* return status */
 		len = T106_LEN;
 		break;
 	  default:
-		  fprintf(stderr, "Error in latlon_xy; no Gaussian latitude of length %d\n",
+		  fprintf(stderr, "Error in latlon_xy; no Gaussian latitude of length %ld\n",
 			  geom->ny);
 		  *status = -1;
 		  return;
@@ -363,7 +380,7 @@ int	 *status;
 
 /*  Check if x is within 0, nx + 1 */
     if ((*x < 0.) || (*x > (double) geom->nx + 1.)) { 
-	fprintf(stderr, "Error in xy_latlon;  x: %lf  not in  0, %d\n",
+	fprintf(stderr, "Error in xy_latlon;  x: %lf  not in  0, %ld\n",
 		*x, geom->nx + 1);
 	*status = -1;
 	return;
@@ -371,7 +388,7 @@ int	 *status;
 
 /*  Check if y is within 0, ny + 1 */
     if ((*y < 0.) || (*y > (double) geom->ny + 1.)) { 
-	fprintf(stderr, "Error in xy_latlon;  y: %lf  not in  0, %d\n",
+	fprintf(stderr, "Error in xy_latlon;  y: %lf  not in  0, %ld\n",
 		*y, geom->ny + 1);
 	*status = -1;
 	return;
@@ -414,7 +431,7 @@ int	 *status;
 		tempp = t106Lats+i;
 		break;
 	  default:
-		  fprintf(stderr, "Error in xy_latlon; no Gaussian latitude of length %d\n",
+		  fprintf(stderr, "Error in xy_latlon; no Gaussian latitude of length %ld\n",
 			  geom->ny);
 		  *status = -1;
 		  return;
@@ -535,7 +552,6 @@ int	 *status;
     double y;			/* y coord in units of rows, top row is 1 */
     long  ix;			/* column number, left column is 1 */
     long  iy;			/* row number, top row is 1 */
-    extern void index_xy(), xy_latlon();
 
 /*  Convert from index to ix, iy */
     index_xy(geom, index, &ix, &iy, status);
@@ -575,7 +591,6 @@ int	 *status;		/* return status */
     double y;			/* y coord in units of rows, top row is 1 */
     long   ix;			/* column number, left column is 1 */
     long   iy;			/* row number, top row is 1 */
-    extern void latlon_xy(), xy_index();
 
    
 /*  Convert from lat, lon to x, y */
@@ -619,7 +634,6 @@ int	 *status;		/* return status */
     long   iy, iy1;		/* row number, top row is 1 */
     double x;			/* x coord in units of columns, left col is 1 */
     double y;			/* y coord in units of rows, top row is 1 */
-    extern void latlon_xy(), xy_index();
 
     *fpixel = 0.;
 
@@ -698,7 +712,6 @@ int	 *status;		/* return status */
     long   iy, iy1;		/* row number, top row is 1 */
     double x;			/* x coord in units of columns, left col is 1 */
     double y;			/* y coord in units of rows, top row is 1 */
-    extern void latlon_xy(), xy_index();
 
 /*  Convert from lat, lon to x, y */
     latlon_xy(geom, lat, lon, &x, &y, status);
@@ -792,7 +805,7 @@ int	 *status;		/* return status */
 
 /*  Check y value different from y of origin */
     if (fabs(*y - (double) geom->orig_iy) < 1.e-5) {
-	fprintf(stderr, "Error in get_int_dis;  y: %f  equals  orig_iy: %d\n",
+	fprintf(stderr, "Error in get_int_dis;  y: %f  equals  orig_iy: %ld\n",
 		*y, geom->orig_iy);
 	*status = -1;
 	return;
@@ -800,7 +813,7 @@ int	 *status;		/* return status */
 
 /*  Check x value different from x of origin */
     if (fabs(*x - (double) geom->orig_ix) < 1.e-5) {
-	fprintf(stderr, "Error in get_int_dis;  x: %f  equals  orig_ix: %d\n",
+	fprintf(stderr, "Error in get_int_dis;  x: %f  equals  orig_ix: %ld\n",
 		*x, geom->orig_ix);
 	*status = -1;
 	return;
@@ -891,9 +904,6 @@ int	  *status;	        /* return status from routine */
     double	lat;			/* latitude in degrees */
     double	lon;			/* longitude in degrees */
 
-    extern void   xy_index();
-    extern void   xy_latlon();
-    extern void   getf_latlon();
 
 /*  Loop over gridpoints of output grid */
     for(j = 1; j <= geom_b->ny; j++){
@@ -953,7 +963,7 @@ void CdLookup(double tab[], long n, double x, long *k)
 	incr=(tab[n-1] > tab[0]);
 	while (kupper-klower > 1) {
 		kmid=(kupper+klower) >> 1;
-		if (x > tab[kmid] == incr)
+		if ( (x > tab[kmid]) == incr)
 			klower=kmid;
 		else
 			kupper=kmid;
diff --git a/Src/cmor.c b/Src/cmor.c
index 660a073..2949df4 100644
--- a/Src/cmor.c
+++ b/Src/cmor.c
@@ -1,47 +1,91 @@
 #include <stdio.h>
 #include <stdlib.h>
-#include<sys/stat.h>
+#include <sys/stat.h>
 #include "uuid.h"
-#include<unistd.h>
+#include <unistd.h>
 #include <string.h>
+#include "json.h"
+#include "json_tokener.h"
 #include "cmor.h"
+#include "cmor_locale.h"
 #include <netcdf.h>
 #include <udunits2.h>
 #include <time.h>
 #include <errno.h>
 #include <math.h>
+#include <limits.h>
+#include <regex.h>
 
 #include <sys/types.h>
-#define _POSIX_SOURCE
 #include <unistd.h>
+#include <signal.h>
 
-/* this is defining NETCDF4 variable if we are using NETCDF3 not used anywhere else*/
 
+/* ==================================================================== */
+/*      this is defining NETCDF4 variable if we are                     */
+/*      using NETCDF3 not used anywhere else                            */
+/* ==================================================================== */
 #ifndef NC_NETCDF4
 #define NC_NETCDF4 0
 #define NC_CLASSIC_MODEL 0
-int nc_def_var_deflate(int i,int j,int k,int l, int m) {return 0;};
-int nc_def_var_chunking(int i,int j,int k,size_t *l) {return 0;};
+int nc_def_var_deflate( int i, int j, int k, int l, int m ) {
+    return( 0 );
+};
+int nc_def_var_chunking( int i, int j, int k, size_t * l ) {
+    return( 0 );
+};
 #endif
 
-extern int cmor_set_cur_dataset_attribute_internal(char *name, char *value, int optional);
-extern int cmor_set_variable_attribute_internal(int id, char *attribute_name, char type, void *value);
-extern int cmor_history_contains(int var_id,char *add);
-extern void cdCompAdd(cdCompTime comptime, double value, cdCalenType calendar, cdCompTime *result);
-extern void cdCompAddMixed(cdCompTime ct, double value, cdCompTime *result);
+/* -------------------------------------------------------------------- */
+/*      function declaration                                            */
+/* -------------------------------------------------------------------- */
+extern int cmor_set_cur_dataset_attribute_internal( char *name,
+						    char *value,
+						    int optional );
+
+extern int cmor_set_variable_attribute_internal( int id,
+						 char *attribute_name,
+						 char type, void *value );
+extern int cmor_history_contains( int var_id, char *add );
 
+extern void cdCompAdd( cdCompTime comptime,
+		       double value,
+		       cdCalenType calendar, cdCompTime * result );
+
+extern void cdCompAddMixed( cdCompTime ct,
+			    double value, cdCompTime * result );
+
+/* -------------------------------------------------------------------- */
+/*      Global Variable                                                 */
+/* -------------------------------------------------------------------- */
 int USE_NETCDF_4;
-int cleanup_varid=-1;
+int cleanup_varid = -1;
+
+const char CMOR_VALID_CALENDARS[CMOR_N_VALID_CALS][CMOR_MAX_STRING] =
+    { "gregorian",
+    "standard",
+    "proleptic_gregorian",
+    "noleap",
+    "365_day",
+    "360_day",
+    "julian",
+    "none"
+};
 
-const char CMOR_VALID_CALENDARS[CMOR_N_VALID_CALS][CMOR_MAX_STRING] = { "gregorian","standard", "proleptic_gregorian","noleap","365_day","360_day","julian","none"};
+int CMOR_HAS_BEEN_SETUP = 0;
+ut_system *ut_read = NULL;
+FILE *output_logfile;
 
-const char cmor_tracking_prefix_project_filter[CMOR_MAX_TRACKING_PREFIX_PROJECT_FILTER][CMOR_MAX_STRING] = { "CMIP6" };
 
+/* -------------------------------------------------------------------- */
+/*      Variable related to cmor                                        */
+/* -------------------------------------------------------------------- */
 cmor_dataset_def cmor_current_dataset;
 cmor_table_t cmor_tables[CMOR_MAX_TABLES];
 cmor_var_t cmor_vars[CMOR_MAX_VARIABLES];
 cmor_axis_t cmor_axes[CMOR_MAX_AXES];
 cmor_grid_t cmor_grids[CMOR_MAX_GRIDS];
+
 int CMOR_MODE;
 int CMOR_TABLE;
 int CMOR_VERBOSITY;
@@ -62,4055 +106,5806 @@ int CMOR_CREATE_SUBDIRECTORIES = 1;
 char cmor_input_path[CMOR_MAX_STRING];
 char cmor_traceback_info[CMOR_MAX_STRING];
 
-/* is src in dest?*/
-
-int cmor_stringinstring (char* dest, char* src) {
-  /* returns 1 if dest contains the words of src.
-     the end of a word is either a space, a period or null.
-     
-     this will not give the desired results if period is used
-     internal to a word.
- */
-  char* pstr=dest;
-  while ((pstr=strstr(pstr, src))) {
-    /* if this word is at the beginning of msg or preceeded by a space */
-    if (pstr==dest || pstr[-1]==' ') {
-      /* if it isn't a substring match */
-      if ((pstr[strlen(src)] == ' ') ||
-          (pstr[strlen(src)] == 0) ||
-	  (pstr[strlen(src)] == '.')) {
-        /* then return 1 to indicate string found */
-        return 1;
-      }
-    }
-    pstr++;/* In which case, skip to the next char */
-  }
-  /* nothing like src is in dest, and so return the location of the end of string*/
-  return 0;
+/**************************************************************************/
+/*                cmor_mkdir()                                            */
+/**************************************************************************/
+int cmor_mkdir(const char *dir) {
+        char tmp[PATH_MAX];
+        char *p = NULL;
+        size_t len;
+        int ierr;
+        cmor_add_traceback( "cmor_mkdir" );
+
+        snprintf(tmp, sizeof(tmp),"%s",dir);
+        len = strlen(tmp);
+        if(tmp[len - 1] == '/')
+                tmp[len - 1] = 0;
+        for(p = tmp + 1; *p; p++){
+                if(*p == '/') {
+                        *p = 0;
+                        mkdir(tmp, ( S_IRWXU | S_IRWXG | S_IRWXO ));
+                        *p = '/';
+                }
+        }
+        ierr = mkdir(tmp, ( S_IRWXU | S_IRWXG | S_IRWXO ));
+        cmor_pop_traceback(  );
+        return(ierr);
 }
 
-void cmor_cat_unique_string (char* dest, char* src) {
-  int offset;
-  int spare_space;
-  /* if this string is in msg */
-  if (cmor_stringinstring(dest, src)) {
-    /* do nothing */
-  } else {
-    if ((offset=strlen(dest))) {
-      strcat(dest+offset, " ");
-      offset++;
-      spare_space=CMOR_MAX_STRING-offset-1;
-      strncat(dest+offset, src, spare_space);
-    } else {
-      strncpy(dest, src, CMOR_MAX_STRING);
-    }
-  }
+
+/**************************************************************************/
+/*                                                                        */
+/*                 cmorstringstring()                                     */
+/*                                                                        */
+/**************************************************************************/
+int cmor_stringinstring( char *dest, char *src ) {
+/* -------------------------------------------------------------------- */
+/*      returns 1 if dest contains the words of src.                    */
+/*      The end of a word is either a space, a period or null.          */
+/*                                                                      */
+/*      This will not give the desired results if                       */
+/*      period is used internal to a word.                              */
+/* -------------------------------------------------------------------- */
+    char *pstr = dest;
+    cmor_add_traceback( "cmor_stringinstring" );
+
+    while( ( pstr = strstr( pstr, src ) ) ) {
+/* -------------------------------------------------------------------- */
+/*      if this word is at the beginning of msg or preceeded by a       */
+/*      space                                                           */
+/* -------------------------------------------------------------------- */
+
+	if( pstr == dest || pstr[-1] == ' ' ) {
+/* -------------------------------------------------------------------- */
+/*      if it isn't a substring match                                   */
+/* -------------------------------------------------------------------- */
+	    if( ( pstr[strlen( src )] == ' ' ) ||
+		( pstr[strlen( src )] == 0 ) ||
+		( pstr[strlen( src )] == '.' ) ) {
+/* -------------------------------------------------------------------- */
+/*      then return( 1 ) to indicate string found                          */
+/* -------------------------------------------------------------------- */
+		return( 1 );
+	    }
+	}
+	pstr++;			/* In which case, skip to the next char */
+    }
+/* -------------------------------------------------------------------- */
+/*      nothing like src is in dest, and so return the location of the end*/
+/*      of string                                                       */
+/* -------------------------------------------------------------------- */
+    cmor_pop_traceback(  );
+    return( 0 );
 }
 
-void  cmor_check_forcing_validity(int table_id,char *value) {
-  int i,j,n,found=0;
-  char msg[CMOR_MAX_STRING];
-  char astr[CMOR_MAX_STRING];
-  char **bstr;
-
-
-  if (cmor_tables[table_id].nforcings==0) return;
-
-  strcpy(astr,value);
-  found=0;
-  for (i=0;i<strlen(astr);i++) {
-    if (astr[i]==',') astr[i]=' ';
-    /* removes everything  after first paranthesis */
-    if (astr[i]=='(') astr[i]='\0';
-  }
-  cmor_convert_string_to_list(astr,'c',(void **)&bstr,&n);
-  if (n==0) return;
-
-  for (i=0;i<n;i++) {
-    found=0;
-    for(j=0;j<cmor_tables[table_id].nforcings;j++) {
-      if (strcmp(bstr[i],cmor_tables[table_id].forcings[j])==0) {
-	found=1;
-	break;
-      }
-    }
-    if (found==0) {
-      sprintf(msg,"forcing attribute elt %i (%s) is not valid for table %s, valid values are:",i,bstr[i],cmor_tables[table_id].table_id);
-      for(j=0;j<cmor_tables[table_id].nforcings;j++) {
-	strncat(msg," ",CMOR_MAX_STRING-strlen(msg));
-	strncat(msg,cmor_tables[table_id].forcings[j],CMOR_MAX_STRING-strlen(msg));
-	strncat(msg,",",CMOR_MAX_STRING-strlen(msg));
-      }
-      msg[strlen(msg)-1]='\0';
-      cmor_handle_error(msg,CMOR_CRITICAL);
-    }
-  }
-  /* Ok now we need to clean up the memory allocations.... */
-  for (i=0;i<n;i++) {
-    free(bstr[i]);
-  }
-  free(bstr);
-  return;
+/************************************************************************/
+/*                                                                      */
+/*      cmor_cat_unique_string()                                        */
+/*                                                                      */
+/************************************************************************/
+void cmor_cat_unique_string( char *dest, char *src ) {
+    int offset;
+    int spare_space;
+    cmor_add_traceback( "cmor_cat_unique_string" );
+
+/* -------------------------------------------------------------------- */
+/*      if this string is in msg                                        */
+/* -------------------------------------------------------------------- */
+    if( !cmor_stringinstring( dest, src ) ) {
+	if( ( offset = strlen( dest ) ) ) {
+	    strcat( dest + offset, " " );
+	    offset++;
+	    spare_space = CMOR_MAX_STRING - offset - 1;
+	    strncat( dest + offset, src, spare_space );
+	} else {
+	    strncpy( dest, src, CMOR_MAX_STRING );
+	}
+    }
+    cmor_pop_traceback();
 }
 
-int cmor_check_expt_id(char *expt_id, int table_id, char *gbl_lng, char *gbl_sht) {
-  int i,j,k,l,m;
-  char msg[CMOR_MAX_STRING];
-  char ctmp[CMOR_MAX_STRING];
-
-  cmor_add_traceback("cmor_check_expt_id");
-  j=0;
-  for (i=0;i<=cmor_tables[table_id].nexps;i++) {
-    k=strlen(expt_id);
-    l = strlen(cmor_tables[table_id].expt_ids[i]);
-    m = strlen(cmor_tables[table_id].sht_expt_ids[i]);
-    if ((l>4)&&(k>4)) {
-      strncpy(msg,&cmor_tables[table_id].expt_ids[i][strlen(cmor_tables[table_id].expt_ids[i])-4],4);
-      msg[4]='\0';
+/**************************************************************************/
+/*                                                                        */
+/*             cmor_check_forcing_validity()                              */
+/*                                                                        */
+/**************************************************************************/
+void cmor_check_forcing_validity( int table_id, char *value ) {
+    int i, j, n, found = 0;
+    char msg[CMOR_MAX_STRING];
+    char astr[CMOR_MAX_STRING];
+    char **bstr;
+
+    cmor_add_traceback("cmor_check_forcing_validity");
+    if( cmor_tables[table_id].nforcings == 0 ) {
+        cmor_pop_traceback();
+	return;
+    }
+    strcpy( astr, value );
+    found = 0;
+    
+    for( i = 0; i < strlen( astr ); i++ ) {
+	if( astr[i] == ',' )
+	    astr[i] = ' ';
+
+/* -------------------------------------------------------------------- */
+/*      removes everything  after first paranthesis                     */
+/* -------------------------------------------------------------------- */
+	if( astr[i] == '(' )
+	    astr[i] = '\0';
+    }
+    cmor_convert_string_to_list( astr, 'c', ( void ** ) &bstr, &n );
+    if( n == 0 ){
+        cmor_pop_traceback();
+	return;
+    }
+    for( i = 0; i < n; i++ ) {
+	found = 0;
+	for( j = 0; j < cmor_tables[table_id].nforcings; j++ ) {
+	    if( strcmp( bstr[i], cmor_tables[table_id].forcings[j] ) == 0 ) {
+		found = 1;
+		break;
+	    }
+	}
+	if( found == 0 ) {
+	    sprintf( msg, "forcing attribute elt %i (%s) is not valid for\n! "
+		     "table %s, valid values are:", i,
+		     bstr[i], cmor_tables[table_id].szTable_id );
+	    for( j = 0; j < cmor_tables[table_id].nforcings; j++ ) {
+		strncat( msg, " ", CMOR_MAX_STRING - strlen( msg ) );
+		strncat( msg, cmor_tables[table_id].forcings[j],
+			 CMOR_MAX_STRING - strlen( msg ) );
+		strncat( msg, ",", CMOR_MAX_STRING - strlen( msg ) );
+	    }
+	    msg[strlen( msg ) - 1] = '\0';
+	    cmor_handle_error( msg, CMOR_CRITICAL );
+	}
     }
-    else {
-      strcpy(msg,"nope");
-    }
-    if (strcmp(msg,"XXXX")==0) { /* we have one of these weird expt nms thing... */
-      /* ok now we can compare */
-      if ((strncmp(cmor_tables[table_id].expt_ids[i],expt_id,l-4)==0) || 
-	  (strncmp(cmor_tables[table_id].sht_expt_ids[i],expt_id,m-4)==0)) {
-	j=1;
-	l=strlen(cmor_tables[table_id].expt_ids[i]);
-	strncpy(ctmp,cmor_tables[table_id].expt_ids[i],l-4);
-	/* but we need to replace the last 4 char from X to the actual 4 dgits */
-	strncpy(&ctmp[l-4],&expt_id[k-4],4); /* ok the sht_Exp id with the right digits */
-	ctmp[l]='\0';
-	/* Ok and now use this to reset the global attribute */
-	cmor_set_cur_dataset_attribute_internal(gbl_lng,ctmp,0);
-	l=strlen(cmor_tables[table_id].sht_expt_ids[i]);
-	strncpy(ctmp,cmor_tables[table_id].sht_expt_ids[i],l-4);
-	/* but we need to replace the last 4 char from X to the actual 4 dgits */
-	strncpy(&ctmp[l-4],&expt_id[k-4],4); /* ok the sht_Exp id with the right digits */
-	ctmp[l]='\0';
-	/* Ok and now use this to reset the global attribute */
-	cmor_set_cur_dataset_attribute_internal(gbl_sht,ctmp,1);
-	strncpy(expt_id,ctmp,CMOR_MAX_STRING);
-	break;
-      }
-    }
-    else if (strcmp(msg,"DDHH")==0) { /* we have one of these weird expt nms thing... */
-      /* ok now we can compare */
-      if ((strncmp(cmor_tables[table_id].expt_ids[i],expt_id,l-10)==0) || 
-	  (strncmp(cmor_tables[table_id].sht_expt_ids[i],expt_id,m-10)==0)) {
-	j=1;
-	l=strlen(cmor_tables[table_id].expt_ids[i]);
-	strncpy(ctmp,cmor_tables[table_id].expt_ids[i],l-10);
-	/* but we need to replace the last 10 char from X to the actual 10 dgits */
-	strncpy(&ctmp[l-10],&expt_id[k-10],10); /* ok the sht_Exp id with the right digits */
-	ctmp[l]='\0';
-	/* Ok and now use this to reset the global attribute */
-	cmor_set_cur_dataset_attribute_internal(gbl_lng,ctmp,0);
-	l=strlen(cmor_tables[table_id].sht_expt_ids[i]);
-	strncpy(ctmp,cmor_tables[table_id].sht_expt_ids[i],l-4);
-	/* but we need to replace the last 4 char from X to the actual 4 dgits */
-	strncpy(&ctmp[l-10],&expt_id[k-10],10); /* ok the sht_Exp id with the right digits */
-	ctmp[l]='\0';
-	/* Ok and now use this to reset the global attribute */
-	cmor_set_cur_dataset_attribute_internal(gbl_sht,ctmp,1);
-	strncpy(expt_id,ctmp,CMOR_MAX_STRING);
-	break;
-      }
+/* -------------------------------------------------------------------- */
+/*      Ok now we need to clean up the memory allocations....           */
+/* -------------------------------------------------------------------- */
+    for( i = 0; i < n; i++ ) {
+	free( bstr[i] );
     }
-    else {
-      if ((strncmp(cmor_tables[table_id].expt_ids[i],expt_id,CMOR_MAX_STRING)==0) 
-	  || (strncmp(cmor_tables[table_id].sht_expt_ids[i],expt_id,CMOR_MAX_STRING)==0) ) {
-	j=1;
-	cmor_set_cur_dataset_attribute_internal(gbl_lng,cmor_tables[table_id].expt_ids[i],0);
-	cmor_set_cur_dataset_attribute_internal(gbl_sht,cmor_tables[table_id].sht_expt_ids[i],1);
-	strncpy(expt_id,cmor_tables[table_id].sht_expt_ids[i],CMOR_MAX_STRING); /* make sure it is the short id */
-	break;
-      }
-    }
-  } 
-  cmor_pop_traceback();
-  if (j==0) return 1;
-  return 0;
+    free( bstr );
+    cmor_pop_traceback();
+    return;
 }
 
+/**************************************************************************/
+/*                  cmor_check_expt_id()                                  */
+/**************************************************************************/
+int cmor_check_expt_id( char *szExptID, int nTableID,
+			char *szGblAttLong, char *szGblAttShort ) {
+    int i, j;
+    char szTableExptID[CMOR_MAX_STRING];
+    char szTableShtExptID[CMOR_MAX_STRING];
+
+    cmor_add_traceback( "cmor_check_expt_id" );
+    j = 1;
+    for( i = 0; i <= cmor_tables[nTableID].nexps; i++ ) {
+
+        strncpy(szTableExptID,
+                cmor_tables[nTableID].expt_ids[i],
+                CMOR_MAX_STRING);
+
+        strncpy(szTableShtExptID,
+                cmor_tables[nTableID].sht_expt_ids[i],
+                CMOR_MAX_STRING);
+
+	if( ( strncmp( szTableExptID, szExptID, CMOR_MAX_STRING ) == 0 ) ||
+	    ( strncmp( szTableShtExptID, szExptID, CMOR_MAX_STRING ) == 0 ) ) {
+		j = 0;
+		cmor_set_cur_dataset_attribute_internal( szGblAttLong,
+							 szTableExptID, 0 );
+		cmor_set_cur_dataset_attribute_internal( szGblAttShort,
+							 szTableShtExptID, 1 );
+		strncpy( szExptID, szTableShtExptID,CMOR_MAX_STRING );
+		break;
+	    }
+    }
 
-int strncpytrim(char *out, char *in, int max) {
-  int i,n,j,k;
-  j=0;
-  n=strlen(in);
-  if (n>max)  n=max;
-  while ((in[j]==' ') && (j<n)) {
-    j++;
-  }
-  k=n-1;
-  while ((in[k]==' ') && (k>0)) {
-    k--;
-  }
-  for(i=j;i<=k;i++) {
-    out[i-j]=in[i];
-  }
-  out[i-j]='\0';
-
-  return 0;   
-}
+    cmor_pop_traceback();
 
-int strncattrim(char *in, char *add, int max) {
-  int i,n,j,n2,k;
-  j=0;
-  n=strlen(add);
-  n2=strlen(in);
-  if (n>max) n=max;
-  while ((add[j]==' ') && (j<n)) {
-    j++;
-  }
-  k=n-1;
-  while ((add[k]==' ') && (k>0)) {
-    k--;
-  }
-  n2=strlen(in);
-  for(i=j;i<=k;i++) {
-    in[n2+i-j]=add[i];
-  }
-  in[n2+i-j]='\0';
-  return 0;   
+    return( j );
 }
 
-/* int strcmptrim(char *in1,char *in2) { */
-/*   char tmp1[CMOR_MAX_STRING]; */
-/*   char tmp2[CMOR_MAX_STRING]; */
-/*   strncpytrim(&tmp1,in1,CMOR_MAX_STRING); */
-/*   strncpytrim(&tmp2,in2,CMOR_MAX_STRING); */
-/*   return strcmp(tmp1,tmp2); */
-/* } */
-
-
-int cmor_filter_tracking_prefix(char *project_id) {
-  // Checks given project_id string against values from constant array
-  // containing allowed projects. Returns 1 if there is an exact match.
-  int i;
-  for (i = 0; i < CMOR_MAX_TRACKING_PREFIX_PROJECT_FILTER; i++) {
-    if ( (strlen(project_id) == strlen(cmor_tracking_prefix_project_filter[i]))
-        && (strcmp(project_id, cmor_tracking_prefix_project_filter[i]) == 0)) return 1;
-  }
-  return 0;
+/************************************************************************/
+/*                            strncpytrim()                             */
+/************************************************************************/
+int strncpytrim( char *out, char *in, int max ) {
+
+    int i, n, j, k;
+
+    cmor_add_traceback("strncpytrim");
+    j = 0;
+    n = strlen( in );
+
+    if( n > max ) {
+	n = max;
+    }
+
+/* -------------------------------------------------------------------- */
+/*      Look for first space position and last space position and       */
+/*      copy interval characters in out.                                */
+/* -------------------------------------------------------------------- */
+    while( ( in[j] == ' ' ) && ( j < n ) ) {
+	j++;
+    }
+
+    k = n - 1;
+
+    while( ( in[k] == ' ' ) && ( k > 0 ) ) {
+	k--;
+    }
+
+    for( i = j; i <= k; i++ ) {
+	out[i - j] = in[i];
+    }
+
+    out[i - j] = '\0';
+
+    cmor_pop_traceback();
+    return( 0 );
 }
 
-int CMOR_HAS_BEEN_SETUP=0;
-ut_system *ut_read=NULL;
-FILE  *output_logfile;
-
-void cmor_is_setup(void){
-  extern int CMOR_HAS_BEEN_SETUP;
-  char msg[CMOR_MAX_STRING];
-  extern void cmor_handle_error(char error_msg[CMOR_MAX_STRING],int level);
-  cmor_add_traceback("cmor_is_setup");
-  if (CMOR_HAS_BEEN_SETUP==0) {
-    snprintf(msg,CMOR_MAX_STRING,"You need to run cmor_setup before calling any cmor_function");
-    cmor_handle_error(msg,CMOR_CRITICAL);
-  }
-  cmor_pop_traceback();
-  return;
+
+/************************************************************************/
+/*                           cmor_is_setup()                            */
+/************************************************************************/
+void cmor_is_setup( void ) {
+
+    extern int CMOR_HAS_BEEN_SETUP;
+    char msg[CMOR_MAX_STRING];
+    extern void cmor_handle_error( char error_msg[CMOR_MAX_STRING],
+				   int level );
+
+    cmor_add_traceback( "cmor_is_setup" );
+
+    if( CMOR_HAS_BEEN_SETUP == 0 ) {
+	snprintf( msg, CMOR_MAX_STRING,
+		"You need to run cmor_setup before calling any cmor_function" );
+	cmor_handle_error( msg, CMOR_NOT_SETUP );
+    }
+    cmor_pop_traceback(  );
+    return;
 }
 
-void cmor_add_traceback(char *name) {
-  char tmp[CMOR_MAX_STRING];
-/*   printf("ok entering traceback for: %i %s\n",strlen(cmor_traceback_info),name); */
-  if (strlen(cmor_traceback_info)==0) {
-    sprintf(cmor_traceback_info,"%s\n",name);
-  }
-  else {
-    sprintf(tmp,"%s\ncalled from: %s",name,cmor_traceback_info);
-    strncpy(cmor_traceback_info,tmp,CMOR_MAX_STRING);
-  }
-  return;
+/************************************************************************/
+/*                         cmor_add_traceback()                         */
+/************************************************************************/
+void cmor_add_traceback( char *name ) {
+    char tmp[CMOR_MAX_STRING];
+
+
+    if( strlen( cmor_traceback_info ) == 0 ) {
+        sprintf( cmor_traceback_info, "%s\n! ", name );
+    } else {
+        sprintf( tmp, "%s\n! called from: %s", name, cmor_traceback_info );
+        strncpy( cmor_traceback_info, tmp, CMOR_MAX_STRING );
+    }
+    return;
 }
-void cmor_pop_traceback(void) {
-  int i;
-  char tmp[CMOR_MAX_STRING];
-  strcpy(tmp,"");
-/*   printf("ok removing a traceback from ---%i---\n",strlen(cmor_traceback_info)); */
-  for (i=0;i<strlen(cmor_traceback_info);i++) {
-    if (strncmp(&cmor_traceback_info[i],"called from: ",13)==0) {
-/*       printf("ok we have i at: %i and tb at: %s\n",i,cmor_traceback_info); */
-/*       printf("ok we have i at: %i and tb at: %s\n",i,&cmor_traceback_info[i+13]); */
-      strcpy(tmp,&cmor_traceback_info[i+13]);
-      break;
-    }
-  }
-  strcpy(cmor_traceback_info,tmp);
-/*   printf("we are left with: --%i---\n",strlen(cmor_traceback_info)); */
-  return;
+
+/************************************************************************/
+/*                         cmor_pop_traceback()                         */
+/************************************************************************/
+void cmor_pop_traceback( void ) {
+    int i;
+    char tmp[CMOR_MAX_STRING];
+
+    strcpy( tmp, "" );
+    for( i = 0; i < strlen( cmor_traceback_info ); i++ ) {
+	if( strncmp( &cmor_traceback_info[i], "called from: ", 13 ) == 0 ) {
+	    strcpy( tmp, &cmor_traceback_info[i + 13] );
+	    break;
+	}
+    }
+    strcpy( cmor_traceback_info, tmp );
+    return;
 }
 
-int cmor_prep_units(char *uunits, char *cunits, ut_unit **user_units,ut_unit **cmor_units,cv_converter **ut_cmor_converter)
-{
-  extern ut_system *ut_read;
-  char local_unit[CMOR_MAX_STRING];
-  char msg[CMOR_MAX_STRING];
-  extern void cmor_handle_error(char error_msg[CMOR_MAX_STRING],int level);
-  cmor_add_traceback("cmor_prep_units");
-  cmor_is_setup();
-  *cmor_units = ut_parse(ut_read, cunits,UT_ASCII);
-  if (ut_get_status() != UT_SUCCESS ) {
-    snprintf(msg,CMOR_MAX_STRING,"Udunits: analyzing units from cmor (%s)",cunits);
-    cmor_handle_error(msg,CMOR_CRITICAL);
-    cmor_pop_traceback();
-    return 1;
-  }
-  strncpy(local_unit,uunits,CMOR_MAX_STRING);
-  ut_trim(local_unit,UT_ASCII);
-  *user_units = ut_parse(ut_read, local_unit, UT_ASCII);
-  if (ut_get_status() != UT_SUCCESS ) {
-    snprintf(msg,CMOR_MAX_STRING,"Udunits: analyzing units from user (%s)",local_unit);
-    cmor_handle_error(msg,CMOR_CRITICAL);
-    cmor_pop_traceback();
-    return 1;
-  }
-  if (ut_are_convertible(*cmor_units,*user_units)==0 ) {
-    snprintf(msg,CMOR_MAX_STRING,"Udunits: cmor and user units are incompatible: %s and %s",cunits,uunits);
-    cmor_handle_error(msg,CMOR_CRITICAL);
+/************************************************************************/
+/*                         cmor_have_NetCDF4()                          */
+/************************************************************************/
+int cmor_have_NetCDF4( void ) {
+    char version[50];
+    int major;
+
     cmor_pop_traceback();
-    return 1;
-  }
-  *ut_cmor_converter=ut_get_converter(*user_units,*cmor_units);
-  if (*ut_cmor_converter == NULL) {
-  }
-  if (ut_get_status() != UT_SUCCESS ) {
-    snprintf(msg,CMOR_MAX_STRING,"Udunits: Error getting converter from %s to %s",cunits,local_unit);
-    cmor_handle_error(msg,CMOR_CRITICAL);
+    strncpy( version, nc_inq_libvers(  ), 50 );
+    sscanf( version, "%1d%*s", &major );
+    if( major != 4 ){
+        cmor_pop_traceback();
+	return( 1 );
+    }
     cmor_pop_traceback();
-    return 1;
-  }
 
-  cmor_pop_traceback();
-  return 0;
+    return( 0 );
 }
 
-int cmor_have_NetCDF4(void) {
-  char version[50];
-  int major;
-  strncpy(version,nc_inq_libvers(),50);
-  sscanf(version,"%1d%*s",&major);
-  if (major!=4) return 1;
-  return 0;
-}
-int cmor_have_NetCDF41min(void) {
-  char version[50];
-  int major,minor;
-  strncpy(version,nc_inq_libvers(),50);
-  sscanf(version,"%1d%*c%1d%*s",&major,&minor);
-  if (major>4) return 0;
-  if (major<4) return 1;
-  if (minor<1) return 1;
-  return 0;
-}
-int cmor_have_NetCDF3(void) {
-  char version[50];
-  int major;
-  strncpy(version,nc_inq_libvers(),50);
-  if (version[0]!='"') return 1;
-  sscanf(version,"%*c%1d%*s",&major);
-  if (major!=3) return 1;
-  return 0;
+
+/************************************************************************/
+/*                          cmor_prep_units()                           */
+/************************************************************************/
+int cmor_prep_units( char *uunits,
+                     char *cunits,
+                     ut_unit ** user_units,
+                     ut_unit ** cmor_units,
+                     cv_converter ** ut_cmor_converter ) {
+
+    extern ut_system *ut_read;
+    char local_unit[CMOR_MAX_STRING];
+    char msg[CMOR_MAX_STRING];
+    extern void cmor_handle_error( char error_msg[CMOR_MAX_STRING],
+                                   int level );
+    cmor_add_traceback( "cmor_prep_units" );
+    cmor_is_setup(  );
+    *cmor_units = ut_parse( ut_read, cunits, UT_ASCII );
+    if( ut_get_status(  ) != UT_SUCCESS ) {
+        snprintf( msg, CMOR_MAX_STRING,
+                  "Udunits: analyzing units from cmor (%s)", cunits );
+        cmor_handle_error( msg, CMOR_CRITICAL );
+        cmor_pop_traceback(  );
+        return( 1 );
+    }
+
+    strncpy( local_unit, uunits, CMOR_MAX_STRING );
+    ut_trim( local_unit, UT_ASCII );
+    *user_units = ut_parse( ut_read, local_unit, UT_ASCII );
+
+    if( ut_get_status(  ) != UT_SUCCESS ) {
+        snprintf( msg, CMOR_MAX_STRING,
+                  "Udunits: analyzing units from user (%s)", local_unit );
+        cmor_handle_error( msg, CMOR_CRITICAL );
+        cmor_pop_traceback(  );
+        return( 1 );
+    }
+
+    if( ut_are_convertible( *cmor_units, *user_units ) == 0 ) {
+        snprintf( msg, CMOR_MAX_STRING,
+                  "Udunits: cmor and user units are incompatible: %s and %s",
+                  cunits, uunits );
+        cmor_handle_error( msg, CMOR_CRITICAL );
+        cmor_pop_traceback(  );
+        return( 1 );
+    }
+
+    *ut_cmor_converter = ut_get_converter( *user_units, *cmor_units );
+
+    if( *ut_cmor_converter == NULL ) {
+    }
+
+    if( ut_get_status(  ) != UT_SUCCESS ) {
+        snprintf( msg, CMOR_MAX_STRING,
+                  "Udunits: Error getting converter from %s to %s", cunits,
+                  local_unit );
+        cmor_handle_error( msg, CMOR_CRITICAL );
+        cmor_pop_traceback(  );
+        return( 1 );
+    }
+
+    cmor_pop_traceback(  );
+    return( 0 );
 }
-int cmor_have_NetCDF363(void) {
-  char version[50];
-  int major,minor,patch;
-  strncpy(version,nc_inq_libvers(),50);
-  sscanf(version,"%*c%1d%*c%1d%*c%1d%*s",&major,&minor,&patch);
-  if ( (major==3) && (minor==6) && (patch==3)) return 0;
-  return 1;
+
+
+/************************************************************************/
+/*                       cmor_have_NetCDF41min()                        */
+/************************************************************************/
+int cmor_have_NetCDF41min( void ) {
+    char version[50];
+    int major, minor;
+
+    cmor_add_traceback("cmor_have_NetCDF41min");
+    strncpy( version, nc_inq_libvers(  ), 50 );
+    sscanf( version, "%1d%*c%1d%*s", &major, &minor );
+    if( major > 4 ){
+        cmor_pop_traceback();
+	return( 0 );
+    }
+    if( major < 4 ) {
+        cmor_pop_traceback();
+	return( 1 );
+    }
+    if( minor < 1 ) {
+        cmor_pop_traceback();
+	return( 1 );
+    }
+    cmor_pop_traceback();
+    return( 0 );
 }
 
-void cmor_handle_error(char error_msg[CMOR_MAX_STRING],int level)
-{
-  int i,n;
-  char msg[CMOR_MAX_STRING];
-  extern FILE *output_logfile;
-
-  if (output_logfile == NULL) output_logfile = stderr;
-
-  msg[0]='\0';
-  if (CMOR_VERBOSITY!=CMOR_QUIET) {
-    fprintf(output_logfile,"\n");
-  }
-  if (level == CMOR_WARNING) {
-    cmor_nwarnings++; 
-    if (CMOR_VERBOSITY!=CMOR_QUIET) {
+/************************************************************************/
+/*                         cmor_handle_error()                          */
+/************************************************************************/
+void cmor_handle_error( char error_msg[CMOR_MAX_STRING], int level ) {
+    int i;
+    char msg[CMOR_MAX_STRING];
+    extern FILE *output_logfile;
+
+    if( output_logfile == NULL )
+	output_logfile = stderr;
+
+    msg[0] = '\0';
+    if( CMOR_VERBOSITY != CMOR_QUIET ) {
+	fprintf( output_logfile, "\n" );
+    }
+    if( level == CMOR_WARNING ) {
+	cmor_nwarnings++;
+	if( CMOR_VERBOSITY != CMOR_QUIET ) {
+	    
 #ifdef COLOREDOUTPUT
-      fprintf (output_logfile,"%c[%d;%dm",0X1B,2,34);
+	    fprintf( output_logfile, "%c[%d;%dm", 0X1B, 2, 34 );
 #endif
-      fprintf (output_logfile,"C Traceback:\nIn function: %s",cmor_traceback_info);
+	    
+	    fprintf( output_logfile, "C Traceback:\nIn function: %s",
+		     cmor_traceback_info );
+	    
 #ifdef COLOREDOUTPUT
-      fprintf (output_logfile,"%c[%dm",0X1B,0);
+	    fprintf( output_logfile, "%c[%dm", 0X1B, 0 );
 #endif
-    fprintf (output_logfile,"\n\n");
+	    
+	    fprintf( output_logfile, "\n\n" );
+	    
 #ifdef COLOREDOUTPUT
-      fprintf (output_logfile,"%c[%d;%d;%dm",0X1B,1,34,47);
+	    fprintf( output_logfile, "%c[%d;%d;%dm", 0X1B, 1, 34, 47 );
 #endif
-      snprintf (msg,CMOR_MAX_STRING, "! Warning: %s  !",error_msg);
-    }
-  }
-  else {
-    cmor_nerrors++;
+	    
+	    snprintf( msg, CMOR_MAX_STRING, "! Warning: %s", error_msg );
+	}
+    } else {
+	cmor_nerrors++;
+	
 #ifdef COLOREDOUTPUT
-    fprintf (output_logfile,"%c[%d;%d;%dm",0X1B,2,31,47);
+	fprintf( output_logfile, "%c[%d;%d;%dm", 0X1B, 2, 31, 47 );
 #endif
-    fprintf (output_logfile,"C Traceback:\nIn function: %s",cmor_traceback_info);
+	
+	fprintf( output_logfile, "C Traceback:\n! In function: %s",
+		 cmor_traceback_info );
+
 #ifdef COLOREDOUTPUT
-    fprintf (output_logfile,"%c[%dm",0X1B,0);
+	fprintf( output_logfile, "%c[%dm", 0X1B, 0 );
 #endif
-    fprintf (output_logfile,"\n\n");
+
+	fprintf( output_logfile, "\n\n" );
+
 #ifdef COLOREDOUTPUT
-    fprintf (output_logfile,"%c[%d;%d;%dm",0X1B,1,31,47);
+	fprintf( output_logfile, "%c[%d;%d;%dm", 0X1B, 1, 31, 47 );
 #endif
-    snprintf(msg,CMOR_MAX_STRING,"! Error: %s !",error_msg);
-  }
-  n = strlen(msg);
-  if (CMOR_VERBOSITY!=CMOR_QUIET || level!=CMOR_WARNING) {
-    for( i=0;i<n;i++) fprintf(output_logfile,"!");
-    fprintf(output_logfile,"\n");
-    fprintf(output_logfile,"!");
-    for( i=0;i<n-2;i++) fprintf(output_logfile," ");
-    fprintf(output_logfile,"!\n");
-    fprintf(output_logfile,"%s\n",msg);
-    fprintf(output_logfile,"!");
-    for( i=0;i<n-2;i++) fprintf(output_logfile," ");
-    fprintf(output_logfile,"!\n");
-    for( i=0;i<n;i++) fprintf(output_logfile,"!");
+
+	snprintf( msg, CMOR_MAX_STRING, "! Error: %s", error_msg );
+    }
+    if( CMOR_VERBOSITY != CMOR_QUIET || level != CMOR_WARNING ) {
+	for( i = 0; i < 25; i++ ) {
+	    fprintf( output_logfile, "!" );
+	}
+	fprintf( output_logfile, "\n" );
+	fprintf( output_logfile, "!\n" );
+	fprintf( output_logfile, "%s\n", msg );
+	fprintf( output_logfile, "!\n" );
+	
+	for( i = 0; i < 25; i++ )
+	    fprintf( output_logfile, "!" );
+	
 #ifdef COLOREDOUTPUT
-    fprintf (output_logfile,"%c[%dm",0X1B,0);
+	fprintf( output_logfile, "%c[%dm", 0X1B, 0 );
 #endif
-    fprintf (output_logfile,"\n\n");
-  }
-  if ((CMOR_MODE == CMOR_EXIT_ON_WARNING) || (level == CMOR_CRITICAL ) ) {
-    //if (cleanup_varid!=-1) remove(cmor_vars[cleanup_varid].current_path);
-    exit(1);
-  }
+	
+	fprintf( output_logfile, "\n\n" );
+    }
+    
+    if( level == CMOR_NOT_SETUP) {
+        exit(1);
+    }
+    if( ( CMOR_MODE == CMOR_EXIT_ON_WARNING )
+	|| ( level == CMOR_CRITICAL ) ) {
+        kill(getpid(), SIGINT);
+    }
 }
 
 
-int cmor_convert_char_to_hyphen(char c)
-{
-  if ((c==' ') || (c=='_') || (c=='(') || (c==')') || (c=='.') || 
-      (c==';') || (c==',') || (c=='[') || (c==']') || (c==':') ||
-      (c=='/') || (c=='*') || (c=='?') || (c=='<') || (c=='>') ||
-      (c=='"') || (c=='\'') || (c=='{') || (c=='}') || (c=='&'))
-    return 1;
-  return 0;
-}
+/************************************************************************/
+/*                        cmor_reset_variable()                         */
+/************************************************************************/
+void cmor_reset_variable( int var_id ) {
+    extern cmor_var_t cmor_vars[];
+    int j;
+
+    cmor_vars[var_id].self                             = -1;
+    cmor_vars[var_id].grid_id                          = -1;
+    cmor_vars[var_id].sign                             =  1;
+    cmor_vars[var_id].zfactor                          = -1;
+    cmor_vars[var_id].ref_table_id                     = -1;
+    cmor_vars[var_id].ref_var_id                       = -1;
+    cmor_vars[var_id].initialized                      = -1;
+    cmor_vars[var_id].closed                           =  0;
+    cmor_vars[var_id].nc_var_id                        = -999;
+    
+    for( j = 0; j < CMOR_MAX_VARIABLES; j++ ) {
+	cmor_vars[var_id].nc_zfactors[j]               = -999;
+    }
+    
+    cmor_vars[var_id].nzfactor                         = 0;
+    cmor_vars[var_id].ntimes_written                   = 0;
+    
+    for( j = 0; j < 10; j++ ) {
+	cmor_vars[var_id].ntimes_written_coords[j]     = -1;
+	cmor_vars[var_id].associated_ids[j]            = -1;
+	cmor_vars[var_id].ntimes_written_associated[j] = 0;
+    }
+    
+    cmor_vars[var_id].time_nc_id                       = -999;
+    cmor_vars[var_id].time_bnds_nc_id                  = -999;
+    cmor_vars[var_id].id[0]                            = '\0';
+    cmor_vars[var_id].ndims                            = 0;
+    
+    for( j = 0; j < CMOR_MAX_DIMENSIONS; j++ ) {
+/* -------------------------------------------------------------------- */
+/*      place holder for singleton axes ids                             */
+/* -------------------------------------------------------------------- */
+	cmor_vars[var_id].singleton_ids[j]             = -1;
+	cmor_vars[var_id].axes_ids[j]                  = -1;
+	cmor_vars[var_id].original_order[j]            = -1;
 
-void substitute_chars_with_hyphens(char *strin, char *strout, char *name, int var_id) {
-  char msg[CMOR_MAX_STRING];
-  int i;
-
-  //strncpy(strin,strout,CMOR_MAX_STRING);
-
-  for (i=0;i<strlen(strin);i++) {
-    strout[i]=strin[i];
-    if (cmor_convert_char_to_hyphen(strin[i])==1) {
-      if (var_id!=-1) {
-	snprintf(msg,CMOR_MAX_STRING,"writing variable %s (table %s), %s (%s) contains the character '%c' it will be replaced with a hyphen in the filename and output directories\n",cmor_vars[var_id].id,cmor_tables[cmor_vars[var_id].ref_table_id].table_id,name,strin,strin[i]);
-      }
-      else {
-	snprintf(msg,CMOR_MAX_STRING,"global attribute %s (%s) contains the character '%c' it will be replaced with a hyphen in output directories\n",name,strin,strin[i]);
-      }
-      cmor_handle_error(msg,CMOR_WARNING);
-      strout[i]='-';
-    }
-  }
-  strout[i]='\0';
-  /* removes trailing "-" */
-  for (i=strlen(strin)-1;i>0;i--) {
-    if (strout[i]=='-') {
-      strout[i]='\0';
     }
-    else {
-      break;
+    
+    for( j = 0; j < CMOR_MAX_ATTRIBUTES; j++ ) {
+	cmor_vars[var_id].attributes_values_char[j][0] = '\0';
+	cmor_vars[var_id].attributes_values_num[j]     = -999.;
+	cmor_vars[var_id].attributes_type[j]           = '\0';
+	cmor_vars[var_id].attributes[j][0]             = '\0';
     }
-  }
-  return;
+    
+    cmor_vars[var_id].nattributes                      = 0;
+    cmor_vars[var_id].type                             = '\0';
+    cmor_vars[var_id].itype                            = 'N';
+    cmor_vars[var_id].missing                          = 1.e20;
+    cmor_vars[var_id].omissing                         = 1.e20;
+    cmor_vars[var_id].tolerance                        = 1.e-4;
+    cmor_vars[var_id].valid_min                        = 1.e20;
+    cmor_vars[var_id].valid_max                        = 1.e20;
+    cmor_vars[var_id].ok_min_mean_abs                  = 1.e20;
+    cmor_vars[var_id].ok_max_mean_abs                  = 1.e20;
+    cmor_vars[var_id].shuffle                          = 0;
+    cmor_vars[var_id].deflate                          = 1;
+    cmor_vars[var_id].deflate_level                    = 1;
+    cmor_vars[var_id].nomissing                        = 1;
+    cmor_vars[var_id].iunits[0]                        = '\0';
+    cmor_vars[var_id].ounits[0]                        = '\0';
+    cmor_vars[var_id].isbounds                         = 0;
+    cmor_vars[var_id].needsinit                        = 1;
+    cmor_vars[var_id].zaxis                            = -1;
+    
+    if( cmor_vars[var_id].values != NULL ) {
+	free( cmor_vars[var_id].values );
+    }
+    
+    cmor_vars[var_id].values                           = NULL;
+    cmor_vars[var_id].first_time                       = -999.;
+    cmor_vars[var_id].last_time                        = -999.;
+    cmor_vars[var_id].first_bound                      = 1.e20;
+    cmor_vars[var_id].last_bound                       = 1.e20;
+    cmor_vars[var_id].base_path[0]                     = '\0';
+    cmor_vars[var_id].current_path[0]                  = '\0';
+    cmor_vars[var_id].suffix[0]                        = '\0';
+    cmor_vars[var_id].suffix_has_date                  = 0;
 }
 
 
+/************************************************************************/
+/*                             cmor_setup()                             */
+/************************************************************************/
+int cmor_setup( char *path,
+		int *netcdf,
+		int *verbosity,
+		int *mode,
+		char *logfile,
+		int *create_subdirectories ) {
+
+
+    extern cmor_axis_t cmor_axes[];
+    extern int CMOR_TABLE, cmor_ntables;
+    extern ut_system *ut_read;
+    extern cmor_dataset_def cmor_current_dataset;
+
+    ut_unit *dimlessunit = NULL, *perunit = NULL, *newequnit = NULL;
+    ut_status myutstatus;
+
+    int i, j;
+    char msg[CMOR_MAX_STRING];
+    char msg2[CMOR_MAX_STRING];
+    char tmplogfile[CMOR_MAX_STRING];
+    time_t lt;
+
+    struct stat buf;
+    struct tm *ptr;
+    extern FILE *output_logfile;
+    extern int did_history;
+
+    strcpy( cmor_traceback_info, "" );
+    cmor_add_traceback( "cmor_setup" );
+
+/* -------------------------------------------------------------------- */
+/*      ok we need to know if we are using NC3 or 4                     */
+/* -------------------------------------------------------------------- */
+    USE_NETCDF_4 = -1;
+    if( cmor_have_NetCDF4( ) == 0 ) {
+        USE_NETCDF_4 = 1;
+        if( cmor_have_NetCDF41min( ) != 0 ) {
+            sprintf( msg,
+                    "You are using a wrong version of NetCDF4 (%s), \n! "
+                    "you need 4.1",
+                    nc_inq_libvers( ) );
+            cmor_handle_error( msg, CMOR_CRITICAL );
+        }
+    } else {
+        sprintf( msg,
+                "You are using a wrong version of NetCDF (%s), you need 3.6.3\n! "
+                "or 4.1",
+                nc_inq_libvers( ) );
+        cmor_handle_error( msg, CMOR_CRITICAL );
+    }
+    did_history = 0;
+    CMOR_HAS_BEEN_SETUP = 1;
+    CMOR_TABLE = -1;
+    cmor_ngrids = -1;
+    cmor_nvars = -1;
+    cmor_naxes = -1;
+    cmor_ntables = -1;
+    cmor_nerrors = 0;
+    cmor_nwarnings = 0;
+
+    if (logfile == NULL) {
+        output_logfile = NULL;
+    } else {
 
-void cmor_reset_variable(int var_id) {
-  extern cmor_var_t cmor_vars[];
-  int j;
-  cmor_vars[var_id].self=-1;
-  cmor_vars[var_id].grid_id=-1;
-  cmor_vars[var_id].sign=1;
-  cmor_vars[var_id].zfactor=-1;
-  cmor_vars[var_id].ref_table_id=-1;
-  cmor_vars[var_id].ref_var_id=-1;
-  cmor_vars[var_id].initialized=-1;
-  cmor_vars[var_id].closed=0;
-  cmor_vars[var_id].nc_var_id=-999;
-  for (j=0;j<CMOR_MAX_VARIABLES;j++) cmor_vars[var_id].nc_zfactors[j]=-999;
-  cmor_vars[var_id].nzfactor=0;
-  cmor_vars[var_id].ntimes_written=0;
-  for (j=0;j<10;j++) {
-    cmor_vars[var_id].ntimes_written_coords[j]=-1;
-    cmor_vars[var_id].associated_ids[j]=-1;
-    cmor_vars[var_id].ntimes_written_associated[j]=0;
-  }
-  cmor_vars[var_id].time_nc_id=-999;
-  cmor_vars[var_id].time_bnds_nc_id=-999;
-  cmor_vars[var_id].id[0]='\0';
-  cmor_vars[var_id].ndims=0;
-  for (j=0;j<CMOR_MAX_DIMENSIONS;j++) {
-    cmor_vars[var_id].singleton_ids[j]=-1; /* place holder for singleton axes ids */
-    cmor_vars[var_id].axes_ids[j]=-1; /* place holder for singleton axes ids */
-    cmor_vars[var_id].original_order[j]=-1; /* place holder for singleton axes ids */
-  }
-  for (j=0;j<CMOR_MAX_ATTRIBUTES;j++) {
-    cmor_vars[var_id].attributes_values_char[j][0]='\0';
-    cmor_vars[var_id].attributes_values_num[j]=-999.;
-    cmor_vars[var_id].attributes_type[j]='\0';
-    cmor_vars[var_id].attributes[j][0]='\0';
-  }
-  cmor_vars[var_id].nattributes=0;
-  cmor_vars[var_id].type='\0';
-  cmor_vars[var_id].itype='N';
-  cmor_vars[var_id].missing=1.e20;
-  cmor_vars[var_id].omissing=1.e20;
-  cmor_vars[var_id].tolerance=1.e-4;
-  cmor_vars[var_id].valid_min=1.e20;
-  cmor_vars[var_id].valid_max=1.e20;
-  cmor_vars[var_id].ok_min_mean_abs=1.e20;
-  cmor_vars[var_id].ok_max_mean_abs=1.e20;
-  cmor_vars[var_id].shuffle=0;
-  cmor_vars[var_id].deflate=1;
-  cmor_vars[var_id].deflate_level=1;
-  cmor_vars[var_id].nomissing=1;
-  cmor_vars[var_id].iunits[0]='\0';
-  cmor_vars[var_id].ounits[0]='\0';
-  cmor_vars[var_id].isbounds=0;
-  cmor_vars[var_id].needsinit=1;
-  cmor_vars[var_id].zaxis=-1;
-  if (cmor_vars[var_id].values != NULL) free(cmor_vars[var_id].values);
-  cmor_vars[var_id].values = NULL;
-  cmor_vars[var_id].first_time=-999.;
-  cmor_vars[var_id].last_time=-999.;
-  cmor_vars[var_id].first_bound=1.e20;
-  cmor_vars[var_id].last_bound=1.e20;
-  cmor_vars[var_id].base_path[0]='\0';
-  cmor_vars[var_id].current_path[0]='\0';
-  cmor_vars[var_id].suffix[0]='\0';
-  cmor_vars[var_id].suffix_has_date=0;
-}
-
-int cmor_setup(char *path,int *netcdf, int *verbosity, int *mode, char *logfile, int *create_subdirectories)
-{
-  extern cmor_axis_t cmor_axes[];
-  extern int CMOR_TABLE,cmor_ntables;
-  extern ut_system *ut_read;
-  ut_unit *dimlessunit=NULL,*perunit=NULL,*newequnit=NULL;
-  ut_status myutstatus;
-  extern cmor_dataset_def cmor_current_dataset;
-  int i,j,ierr;
-  char msg[CMOR_MAX_STRING];
-  char msg2[CMOR_MAX_STRING];
-  char tmplogfile[CMOR_MAX_STRING];
-  uuid_t *myuuid;
-  uuid_fmt_t fmt;
-  void *myuuid_str=NULL;
-  size_t uuidlen;
-  struct stat buf;
-  time_t lt;
-  struct tm *ptr;
-  extern FILE *output_logfile;
-  extern int did_history;
-
-  strcpy(cmor_traceback_info,"");
-  cmor_add_traceback("cmor_setup");
-
-  /* ok we need to know if we are using NC3 or 4 */
-  USE_NETCDF_4 = -1;
-  if (cmor_have_NetCDF3()==0) {
-    USE_NETCDF_4 = 0;
-    /* Now we need to make sure it's 3.6.3 */
-    if (cmor_have_NetCDF363()!=0) {
-      sprintf(msg,"You are using an older version of NetCDF3 (%s), you need 3.6.3",nc_inq_libvers());
-      cmor_handle_error(msg,CMOR_CRITICAL);
-    }
-  }
-  else if (cmor_have_NetCDF4()==0) {
-    USE_NETCDF_4 = 1;
-    if (cmor_have_NetCDF41min()!=0) {
-      sprintf(msg,"You are using a wrong version of NetCDF4 (%s), you need 4.1",nc_inq_libvers());
-      cmor_handle_error(msg,CMOR_CRITICAL);
-    }
-  }
-  else {
-    sprintf(msg,"You are using a wrong version of NetCDF (%s), you need 3.6.3 or 4.1",nc_inq_libvers());
-    cmor_handle_error(msg,CMOR_CRITICAL);
-  }
-
-  did_history=0;
-  CMOR_HAS_BEEN_SETUP=1;
-  CMOR_TABLE=-1;
-  cmor_ngrids=-1;
-  cmor_nvars=-1;
-  cmor_naxes=-1;
-  cmor_ntables=-1;
-  cmor_nerrors = 0 ;
-  cmor_nwarnings = 0 ;
-  if (logfile==NULL) {
-    output_logfile = NULL;
-  }
-  else {
 #ifdef COLOREDOUTPUT
 #undef COLOREDOUTPUT
 #endif
-    cmor_trim_string(logfile,tmplogfile);
-/*     printf("got in : -%s-\n",logfile); */
-/*     printf("got out: -%s-\n",tmplogfile); */
-    output_logfile = NULL;
-    output_logfile = fopen(tmplogfile,"r");
-    if (output_logfile!=NULL) {
-      /* logfile already exists need to rename it */
-      /* Figure out the time */
-      stat(tmplogfile,&buf);
-      lt = buf.st_ctime;
-      ptr = localtime(&lt);
-      snprintf(msg,CMOR_MAX_STRING,"%s_%.4i-%.2i-%.2iT%.2i:%.2i:%.2i",tmplogfile,ptr->tm_year+1900,ptr->tm_mon+1,ptr->tm_mday,ptr->tm_hour,ptr->tm_min,ptr->tm_sec);
-      fclose(output_logfile);
-      rename(tmplogfile,msg);
-      snprintf(msg2,CMOR_MAX_STRING,"Logfile %s already existed. Renamed to: %s",tmplogfile,msg);
-      output_logfile = NULL;
-      output_logfile = fopen(tmplogfile,"w");
-      if (output_logfile == NULL) {
-	snprintf(msg2,CMOR_MAX_STRING,"Could not open logfile %s for writing", tmplogfile);
-	cmor_handle_error(msg2,CMOR_CRITICAL);
-      }
-      cmor_handle_error(msg2,CMOR_WARNING);
-    }
-    else {
-      output_logfile = fopen(tmplogfile,"w");
-      if (output_logfile == NULL) {
-	snprintf(msg2,CMOR_MAX_STRING,"Could not open logfile %s for writing", tmplogfile);
-	cmor_handle_error(msg2,CMOR_CRITICAL);
-      }
-    }
-  }
-
-  if (mode==NULL) {
-    CMOR_MODE=CMOR_NORMAL;
-  }
-  else {
-    if (*mode!=CMOR_EXIT_ON_WARNING && *mode!=CMOR_EXIT_ON_MAJOR && *mode!=CMOR_NORMAL ) {
-      snprintf(msg,CMOR_MAX_STRING,"exit mode can be either CMOR_EXIT_ON_WARNING CMOR_NORMAL or CMOR_EXIT_ON_MAJOR");
-      cmor_handle_error(msg,CMOR_CRITICAL);
-    }
-    CMOR_MODE=*mode;
-  }
-  if (verbosity==NULL) {
-    CMOR_VERBOSITY = CMOR_NORMAL;
-  }
-  else {
-    if (*verbosity!=CMOR_QUIET && *verbosity!=CMOR_NORMAL ) {
-      snprintf(msg,CMOR_MAX_STRING,"verbosity mode can be either CMOR_QUIET or CMOR_NORMAL");
-      cmor_handle_error(msg,CMOR_NORMAL);
-    }
-    CMOR_VERBOSITY=*verbosity;
-  }
-  if (netcdf == NULL) {
-    CMOR_NETCDF_MODE = CMOR_PRESERVE;
-  }
-  else {
-    if (*netcdf!=CMOR_PRESERVE_4 && *netcdf!=CMOR_APPEND_4 && *netcdf!=CMOR_REPLACE_4 && *netcdf!=CMOR_PRESERVE_3 && *netcdf!=CMOR_APPEND_3 && *netcdf!=CMOR_REPLACE_3) {
-      snprintf(msg,CMOR_MAX_STRING,"file mode can be either CMOR_PRESERVE, CMOR_APPEND, CMOR_REPLACE, CMOR_PRESERVE_4, CMOR_APPEND_4, CMOR_REPLACE_4, CMOR_PRESERVE_3, CMOR_APPEND_3 or CMOR_REPLACE_3");
-      cmor_handle_error(msg,CMOR_CRITICAL);
-    }
-    CMOR_NETCDF_MODE = *netcdf;
-  }
-
-  /* Make sure we are not trying to use NETCDF4 mode while linked against NetCDF3 */
-  if (((CMOR_NETCDF_MODE==CMOR_PRESERVE_4)||(CMOR_NETCDF_MODE==CMOR_REPLACE_4)||(CMOR_NETCDF_MODE==CMOR_APPEND_4)) && (USE_NETCDF_4==0)) {
-    sprintf(msg,"You are trying to use a NetCDF4 mode but linked against NetCDF3 libraries");
-    cmor_handle_error(msg,CMOR_CRITICAL);
-  }
-
-
-  if ((path == NULL) || (strcmp(path,"")==0 )) {
-    strncpy(cmor_input_path,".",CMOR_MAX_STRING);
-  }
-  else {
-    strncpytrim(cmor_input_path,path,CMOR_MAX_STRING);
-  }
-  for (i=0;i<CMOR_MAX_VARIABLES;i++) {
-    cmor_reset_variable(i);
-  }
-
-  for (i=0;i<CMOR_MAX_AXES;i++) {
-    cmor_axes[i].ref_table_id=-1;
-    cmor_axes[i].ref_axis_id=-1;
-    cmor_axes[i].isgridaxis=-1;
-    cmor_axes[i].axis='\0';
-    cmor_axes[i].iunits[0]='\0';
-    cmor_axes[i].id[0]='\0';
-    if (cmor_axes[i].values != NULL) free(cmor_axes[i].values);
-    cmor_axes[i].values = NULL;
-    if (cmor_axes[i].bounds != NULL) free(cmor_axes[i].bounds);
-    cmor_axes[i].bounds = NULL;
-    if (cmor_axes[i].cvalues != NULL) {
-      for (j=0;j<cmor_axes[i].length;j++) {
-	if (cmor_axes[i].cvalues[j]!=NULL) {
-	  free(cmor_axes[i].cvalues[j]);
-	  cmor_axes[i].cvalues[j]=NULL;
-	}
-      }
-      free(cmor_axes[i].cvalues);
-    }
-    cmor_axes[i].cvalues = NULL;
-    cmor_axes[i].length=0;
-    cmor_axes[i].revert=1; /* 1 means no reverse -1 means reverse */
-    cmor_axes[i].offset=0;
-    cmor_axes[i].type='\0';
-    for (j=0;j<CMOR_MAX_ATTRIBUTES;j++) {
-      cmor_axes[i].attributes_values_char[j][0]='\0'; 
-      cmor_axes[i].attributes_values_num[j]=-999.; 
-      cmor_axes[i].attributes_type[j]='\0'; 
-      cmor_axes[i].attributes[j][0]='\0'; 
-    }
-    cmor_axes[i].nattributes=0;
-    cmor_axes[i].hybrid_in=0;
-    cmor_axes[i].hybrid_out=0;
-    cmor_axes[i].store_in_netcdf = 1;
-    cmor_axes[i].wrapping = NULL;
-    ierr = cmor_set_axis_attribute(i,"units",'c',"");
-    ierr = cmor_set_axis_attribute(i,"interval",'c',"");
-  }
-
-  if (create_subdirectories != NULL) {
-    CMOR_CREATE_SUBDIRECTORIES = *create_subdirectories;
-  }
-
-  if ((CMOR_CREATE_SUBDIRECTORIES!=1) && (CMOR_CREATE_SUBDIRECTORIES!=0)) {
-    snprintf(msg,CMOR_MAX_STRING,"cmor_setup: create_subdirectories must be 0 or 1");
-    cmor_handle_error(msg,CMOR_CRITICAL);
-  }
-
-  /* initialize the udunits */
-  /*   printf("ok init utread\n"); */
-  if (ut_read!=NULL) {
-    ut_free_system(ut_read);
-  }
-  ut_set_error_message_handler(ut_ignore);
-  ut_read = ut_read_xml(NULL);
-  if (ut_get_status() != UT_SUCCESS) {
-    snprintf(msg,CMOR_MAX_STRING,"Udunits: Error reading units system");
-    cmor_handle_error(msg,CMOR_CRITICAL);
-  }
-  ut_set_error_message_handler(ut_ignore);
-  if (newequnit!= NULL) ut_free(newequnit);
-  newequnit = ut_new_base_unit(ut_read);
-  if (ut_get_status() != UT_SUCCESS) {
-    snprintf(msg,CMOR_MAX_STRING,"Udunits: creating dimlessnew base unit");
-    cmor_handle_error(msg,CMOR_CRITICAL);
-  }
-  myutstatus = ut_map_name_to_unit("eq",UT_ASCII,newequnit);
-  if (newequnit!= NULL) ut_free(newequnit);
-  if (myutstatus != UT_SUCCESS) {
-    snprintf(msg,CMOR_MAX_STRING,"Udunits: Error mapping dimless 'eq' unit");
-    cmor_handle_error(msg,CMOR_CRITICAL);
-  }
-  if (dimlessunit!= NULL) ut_free(dimlessunit);
-  dimlessunit = ut_new_dimensionless_unit(ut_read);
-  if (ut_get_status() != UT_SUCCESS) {
-    snprintf(msg,CMOR_MAX_STRING,"Udunits: creating dimless unit");
-    cmor_handle_error(msg,CMOR_CRITICAL);
-  }
-  myutstatus = ut_map_name_to_unit("dimless",UT_ASCII,dimlessunit);
-  if (myutstatus != UT_SUCCESS) {
-    snprintf(msg,CMOR_MAX_STRING,"Udunits: Error mapping dimless unit");
-    cmor_handle_error(msg,CMOR_CRITICAL);
-  }
-  if (perunit!=NULL) ut_free(perunit);
-  perunit = ut_scale(.01,dimlessunit);
-  if (dimlessunit!= NULL) ut_free(dimlessunit);
-  if (myutstatus != UT_SUCCESS) {
-    snprintf(msg,CMOR_MAX_STRING,"Udunits: Error creating percent unit");
-    cmor_handle_error(msg,CMOR_CRITICAL);
-  }
-  myutstatus = ut_map_name_to_unit("%",UT_ASCII,perunit);
-  if (perunit!=NULL) ut_free(perunit);
-  if (myutstatus != UT_SUCCESS) {
-    snprintf(msg,CMOR_MAX_STRING,"Udunits: Error mapping percent unit");
-    cmor_handle_error(msg,CMOR_CRITICAL);
-  }
-  /* initialized dataset */
-  for (i=0;i<CMOR_MAX_ATTRIBUTES;i++) {
-    cmor_current_dataset.attributes_names[i][0]='\0';
-    cmor_current_dataset.attributes_values[i][0]='\0';
-  }
-  cmor_current_dataset.nattributes=0;
-  cmor_current_dataset.realization=0;
-  cmor_current_dataset.leap_year=0;
-  cmor_current_dataset.leap_month=0;
-  cmor_current_dataset.associate_file=0;
-  cmor_current_dataset.associated_file=-1;
-  /* generates a unique id */
-  uuid_create(&myuuid);
-  uuid_make(myuuid,4);
-  myuuid_str = NULL;
-  fmt = UUID_FMT_STR;
-  uuid_export(myuuid,fmt,&myuuid_str,&uuidlen);
-  strncpy(cmor_current_dataset.tracking_id,(char *)myuuid_str,CMOR_MAX_STRING);
-  free(myuuid_str);
-  uuid_destroy(myuuid);
-  strncpy(cmor_current_dataset.associated_file_name,"",CMOR_MAX_STRING);
-  for (i=0;i<12;i++) cmor_current_dataset.month_lengths[i]=0;
-  cmor_current_dataset.initiated=0;
-
-  for (i=0;i<CMOR_MAX_GRIDS;i++) {
-    strncpy(cmor_grids[i].mapping,"",CMOR_MAX_STRING);
-    cmor_grids[i].ndims=0;
-    cmor_grids[i].nattributes=0;
-    for(j=0;j<CMOR_MAX_GRID_ATTRIBUTES;j++) {
-      cmor_grids[i].attributes_values[j]=1.e20;
-      cmor_grids[i].attributes_names[j][0]='\0';
-    }
-
-    if (cmor_grids[i].lats!=NULL) free(cmor_grids[i].lats);
-    if (cmor_grids[i].lons!=NULL) free(cmor_grids[i].lons);
-    if (cmor_grids[i].blats!=NULL) free(cmor_grids[i].blats);
-    if (cmor_grids[i].blons!=NULL) free(cmor_grids[i].blons);
-/*     if (cmor_grids[i].area!=NULL) free(cmor_grids[i].area); */
-
-    cmor_grids[i].lats  = NULL;
-    cmor_grids[i].lons  = NULL;
-    cmor_grids[i].blats = NULL;
-    cmor_grids[i].blons = NULL;
-/*     cmor_grids[i].area  = NULL; */
-
-    cmor_grids[i].istimevarying=0;
-    cmor_grids[i].nvertices=0;
-
-    for (j=0;j<6;j++) cmor_grids[i].associated_variables[j]=-1;
-  }
-  cmor_pop_traceback();
-  return 0;
-}
+        cmor_trim_string(logfile, tmplogfile);
+        output_logfile = NULL;
+        output_logfile = fopen(tmplogfile, "r");
+        if (output_logfile != NULL) {
+/* -------------------------------------------------------------------- */
+/*      logfile already exists need to rename it                        */
+/*      Figure out the time                                             */
+/* -------------------------------------------------------------------- */
+            stat(tmplogfile, &buf);
+            lt = buf.st_ctime;
+            ptr = localtime(&lt);
+
+            snprintf(msg, CMOR_MAX_STRING, "%s_%.4i-%.2i-%.2iT%.2i:%.2i:%.2i",
+                    tmplogfile, ptr->tm_year + 1900, ptr->tm_mon + 1,
+                    ptr->tm_mday, ptr->tm_hour, ptr->tm_min, ptr->tm_sec);
+
+            fclose(output_logfile);
+            rename(tmplogfile, msg);
+
+            snprintf(msg2, CMOR_MAX_STRING,
+                    "Logfile %s already existed. Renamed to: %s", tmplogfile,
+                    msg);
+            output_logfile = NULL;
+            output_logfile = fopen(tmplogfile, "w");
+
+            if (output_logfile == NULL) {
+                snprintf(msg2, CMOR_MAX_STRING,
+                        "Could not open logfile %s for writing", tmplogfile);
+                cmor_handle_error(msg2, CMOR_CRITICAL);
+            }
+            cmor_handle_error(msg2, CMOR_WARNING);
+        } else {
+            output_logfile = fopen(tmplogfile, "w");
 
-int cmor_put_nc_num_attribute(int ncid,int nc_var_id,char *name, char type, double value, char *var_name) {
-  char msg[CMOR_MAX_STRING];
-  int ierr;
-  cmor_add_traceback("cmor_put_nc_num_attribute");
-  ierr = 0;
-  if (type == 'i') {
-    ierr = nc_put_att_double(ncid,nc_var_id,name,NC_INT,1,&value);
-  }
-  else if (type == 'l') {
-    ierr = nc_put_att_double(ncid,nc_var_id,name,NC_INT,1,&value);
-  }
-  else if (type == 'f') {
-    ierr = nc_put_att_double(ncid,nc_var_id,name,NC_FLOAT,1,&value);
-  }
-  else if (type == 'd') {
-    ierr = nc_put_att_double(ncid,nc_var_id,name,NC_DOUBLE,1,&value);
-  }
-  if (ierr != NC_NOERR) {
-    snprintf(msg,CMOR_MAX_STRING,"NetCDF Error (%i: %s) setting numerical attribute %s on variable %s",ierr,nc_strerror(ierr),name,var_name);
-    cmor_handle_error(msg,CMOR_CRITICAL);
-  }
-  cmor_pop_traceback();
-  return ierr;
-}
-int cmor_put_nc_char_attribute(int ncid,int nc_var_id,char *name,char *value,char *var_name) {
-  int  k,ierr;
-  char msg[CMOR_MAX_STRING];
-  ierr=0;
-  cmor_add_traceback("cmor_put_nc_char_attribute");
-  k = strlen(value);
-  if (k!=0) {
-    value[k]='\0';
-    ierr = nc_put_att_text(ncid,nc_var_id,name,k+1,value);
-    if (ierr != NC_NOERR) {
-      snprintf(msg,CMOR_MAX_STRING,"NetCDF Error (%i: %s) setting attribute: '%s' on variable (%s)",ierr,nc_strerror(ierr),name,var_name);
-    cmor_handle_error(msg,CMOR_CRITICAL);
+            if (output_logfile == NULL) {
+                snprintf(msg2, CMOR_MAX_STRING,
+                        "Could not open logfile %s for writing", tmplogfile);
+                cmor_handle_error(msg2, CMOR_CRITICAL);
+            }
+        }
     }
-  }
-  cmor_pop_traceback();
-  return ierr;
-}
 
-int cmor_set_cur_dataset_attribute(char *name, char *value, int optional) {
-  char msg[CMOR_MAX_STRING];
-  cmor_add_traceback("cmor_set_cur_dataset_attribute_internal");
-  /* We need to make sure it is not an attribute that can be set via a call to cmor_dataset */
-  if (
-      (strcmp(name,"tracking_id")==0) ||
-      (strcmp(name,"product")==0) ||
-      (strcmp(name,"creation_date")==0) ||
-      (strcmp(name,"table_id")==0) ||
-      (strcmp(name,"modeling_realm")==0) ||
-      (strcmp(name,"experiment_id")==0) ||
-      (strcmp(name,"institution")==0) ||
-      (strcmp(name,"source")==0) ||
-      (strcmp(name,"calendar")==0) ||
-      (strcmp(name,"realization")==0) ||
-      (strcmp(name,"contact")==0) ||
-      (strcmp(name,"history")==0) ||
-      (strcmp(name,"comment")==0) ||
-      (strcmp(name,"references")==0) ||
-      (strcmp(name,"model_id")==0) ||
-      (strcmp(name,"forcing")==0) ||
-      (strcmp(name,"initialization_method")==0) ||
-      (strcmp(name,"physics_version")==0) ||
-      (strcmp(name,"insitute_id")==0) ||
-      (strcmp(name,"parent_experiment_id")==0) ||
-      (strcmp(name,"branch_time")==0) ||
-      (strcmp(name,"parent_experiment_rip")==0) ||
-      (strcmp(name,"parent_experiment")==0) 
-      ) {
-    snprintf(msg,CMOR_MAX_STRING,"you are trying to set dataset attribute: %s this must be set via a call to cmor_dataset or is set internally by CMOR via the tables",name);
-    cmor_handle_error(msg,CMOR_NORMAL);
-    cmor_pop_traceback();
-    return 1;
-  }
-  cmor_pop_traceback();
-  return cmor_set_cur_dataset_attribute_internal(name,value,optional);
-}
-int cmor_set_cur_dataset_attribute_internal(char *name, char *value, int optional) {
-  int i,n;
-  char msg[CMOR_MAX_STRING];
-  extern cmor_dataset_def cmor_current_dataset;
-  cmor_add_traceback("cmor_set_cur_dataset_attribute_internal");
-  cmor_is_setup();
+    if (mode == NULL) {
+        CMOR_MODE = CMOR_NORMAL;
+
+    } else {
+
+        if (*mode != CMOR_EXIT_ON_WARNING && *mode != CMOR_EXIT_ON_MAJOR
+                && *mode != CMOR_NORMAL) {
+
+            snprintf(msg, CMOR_MAX_STRING,
+                    "exit mode can be either CMOR_EXIT_ON_WARNING CMOR_NORMAL "
+                    "or CMOR_EXIT_ON_MAJOR");
+            cmor_handle_error(msg, CMOR_CRITICAL);
+        }
+
+        CMOR_MODE = *mode;
 
-  cmor_trim_string(value,msg);
-  if ((int)strlen(name)>CMOR_MAX_STRING) {
-    snprintf(msg,CMOR_MAX_STRING,"CMOR Dataset error, attribute name: %s; length (%i) is greater than limit: %i", name, (int)strlen(name),CMOR_MAX_STRING);
-    cmor_handle_error(msg,CMOR_NORMAL);
-    cmor_pop_traceback();
-    return 1;
-  }
-  if ((value==NULL) || (msg[0]=='\0')) {
-    if (optional==1) {
-      cmor_pop_traceback();
-      return 0;
     }
-    else {
-      snprintf(msg,CMOR_MAX_STRING,"CMOR Dataset error, required attribute %s was not passed or blanked", name);
-      cmor_handle_error(msg,CMOR_CRITICAL);
-      cmor_pop_traceback();
-      return 1;
-    }
-  }
-  cmor_trim_string(name,msg);
-  n = cmor_current_dataset.nattributes;
-  for (i=0;i<=cmor_current_dataset.nattributes;i++) { 
-    if (strcmp(msg,cmor_current_dataset.attributes_names[i])==0) {
-      n=i;
-      cmor_current_dataset.nattributes-=1;
-      break;
-    }
-  }
-  if (n>=CMOR_MAX_ATTRIBUTES) {
-    sprintf(msg,"Setting dataset attribute: %s, we already have %i elements set which is the max, this element won't be set",name,CMOR_MAX_ELEMENTS);
-    cmor_handle_error(msg,CMOR_NORMAL);
-    cmor_pop_traceback();
-    return 1;
-  }
-  strncpy(cmor_current_dataset.attributes_names[n],msg,CMOR_MAX_STRING);
-  cmor_trim_string(value,msg);
-  strncpytrim(cmor_current_dataset.attributes_values[n],msg,CMOR_MAX_STRING);
-  cmor_current_dataset.nattributes+=1;
-  cmor_pop_traceback();
-  return 0;
-}
-int cmor_get_cur_dataset_attribute(char *name, char *value) {
-  int i,n;
-  char msg[CMOR_MAX_STRING];
-  extern cmor_dataset_def cmor_current_dataset;
-  cmor_add_traceback("cmor_get_cur_dataset_attribute");
-  cmor_is_setup();
-  if (strlen(name)>CMOR_MAX_STRING) {
-    snprintf(msg,CMOR_MAX_STRING,"CMOR Dataset: %s length is greater than limit: %i", name, CMOR_MAX_STRING);
-    cmor_handle_error(msg,CMOR_NORMAL);
-    cmor_pop_traceback();
-    return 1;
-  }
-  n = -1;
-  for (i=0;i<=cmor_current_dataset.nattributes;i++) { 
-    if (strcmp(name,cmor_current_dataset.attributes_names[i])==0) n=i;
-  }
-  if (n==-1) {
-    snprintf(msg,CMOR_MAX_STRING,"CMOR Dataset: current dataset does not have attribute : %s",name);
-    cmor_handle_error(msg,CMOR_NORMAL);
-    cmor_pop_traceback();
-    return 1;
-  }
-  strncpy(value,cmor_current_dataset.attributes_values[n],CMOR_MAX_STRING);
-  cmor_pop_traceback();
-  return 0;
-}
-void cmor_has_required_global_attributes(int table_id) {
-  int i,j,n,found;
-  char msg[CMOR_MAX_STRING];
-  char msg2[CMOR_MAX_STRING];
-  char ctmp[CMOR_MAX_STRING];
-  char expt_id[CMOR_MAX_STRING];
-  cmor_add_traceback("cmor_has_required_global_attributes");
-  if (cmor_tables[table_id].required_gbl_att[0]=='\0') {
-    cmor_pop_traceback();
-    return; /* not required */
-  }
-  cmor_get_cur_dataset_attribute("experiment_id",expt_id);
-  /* ok we want to make sure it is the sht id */
-  for (j=0;j<=cmor_tables[table_id].nexps;j++) {
-    if (strcmp(expt_id,cmor_tables[table_id].expt_ids[j])==0) {
-      strncpy(expt_id,cmor_tables[table_id].sht_expt_ids[j],CMOR_MAX_STRING);
-      break;
-    }
-  }
-
-
-  n =strlen(cmor_tables[table_id].required_gbl_att);
-
-  msg[0]='\0';
-  j=0;
-  i=0;
-  msg2[0]='\0';
-  while (i<n) {
-    while((cmor_tables[table_id].required_gbl_att[i]!=' ') && (cmor_tables[table_id].required_gbl_att[i]!='\0'))  {
-      msg[j]=cmor_tables[table_id].required_gbl_att[i];
-      msg[j+1]='\0';
-      j++;
-      i++;
-    }
-    i++;
-    found = 0 ;
-    /* for (j=0;j<=cmor_tables[table_id].nexps;j++) { */
-    /*   if (strcmp(msg,cmor_tables[table_id].sht_expt_ids[j])==0) { */
-    /* 	found = 1; */
-    /* 	break; */
-    /*   } */
-    /* } */
-
-    for (j=0;j<cmor_current_dataset.nattributes;j++) {
-      if (strcmp(msg,cmor_current_dataset.attributes_names[j])==0) {
-	cmor_get_cur_dataset_attribute(msg,ctmp);
-	if (strcmp(ctmp,"not specified")!=0) {
-	  found = 1;
-	  break;
-	}
-      }
-    }
-    /* if (found == 0) { /\* now we check if it was actually required for this exp *\/ */
-    /*   found = 1; */
-    /*   for (j=0;j<=cmor_tables[table_id].nexps;j++) { */
-    /* 	/\* msg2 is the previous keyword, i.e possible the sht_expt_id *\/ */
-    /* 	if (strcmp(msg2,expt_id)==0) { */
-    /* 	  /\* it is a match, therefore it WAS indeed required for this dataset *\/ */
-    /* 	  found = 0; */
-    /* 	  break; */
-    /* 	} */
-    /*   } */
-    /* } */
-    if (found == 0) {
-      snprintf(ctmp,CMOR_MAX_STRING,"Required global attribute %s is missing please check call(s) to cmor_dataset and/or cmor_set_cur_dataset_attribute",msg);
-      cmor_handle_error(ctmp,CMOR_CRITICAL);
-    }
-    strncpy(msg2,msg,CMOR_MAX_STRING);
-    j=0;
-  }
-  cmor_pop_traceback();
-  return;
-}
+    if (verbosity == NULL) {
+        CMOR_VERBOSITY = CMOR_NORMAL;
 
-int cmor_is_required_global_attribute(char *name, int table_id) {
-  int i,j,n,req;
-  char msg[CMOR_MAX_STRING];
-  cmor_add_traceback("cmor_is_required_global_attribute");
-  if (cmor_tables[table_id].required_gbl_att[0]=='\0') {
-    cmor_pop_traceback();
-    return 1; /* not required */
-  }
-
-  n =strlen(cmor_tables[table_id].required_gbl_att);
-
-  msg[0]='\0';
-  i=0;
-  j=0;
-  req = 1;
-  while (i<n) {
-    while((cmor_tables[table_id].required_gbl_att[i]!=' ')&&(cmor_tables[table_id].required_gbl_att[i]!='\0'))  {
-      msg[j]=cmor_tables[table_id].required_gbl_att[i];
-      msg[j+1]='\0';
-      j++;
-      i++;
-    }
-    i++;
-    j=0;
-    if (strcmp(msg,name)==0) {
-      req = 0;
-      i=n;
-    }
-  }
-  cmor_pop_traceback();
-  return req;
-}
+    } else {
 
-int cmor_has_cur_dataset_attribute(char *name) {
-  int i,n;
-  char msg[CMOR_MAX_STRING];
-  extern cmor_dataset_def cmor_current_dataset;
-  cmor_add_traceback("cmor_has_cur_dataset_attribute");
-  cmor_is_setup();
-  if ((int)strlen(name)>CMOR_MAX_STRING) {
-    snprintf(msg,CMOR_MAX_STRING,"CMOR Dataset: attribute name (%s) length (%i) is greater than limit: %i", name, (int)strlen(name), CMOR_MAX_STRING);
-    cmor_handle_error(msg,CMOR_NORMAL);
-    cmor_pop_traceback();
-    return 1;
-  }
-  n = -1;
-  for (i=0;i<=cmor_current_dataset.nattributes;i++) { 
-    if (strcmp(name,cmor_current_dataset.attributes_names[i])==0) n=i;
-  }
-  if (n==-1) {
-    cmor_pop_traceback();
-    return 1;
-  }
-  cmor_pop_traceback();
-  return 0;
-}
+        if (*verbosity != CMOR_QUIET && *verbosity != CMOR_NORMAL) {
+            snprintf(msg, CMOR_MAX_STRING,
+                    "verbosity mode can be either CMOR_QUIET or CMOR_NORMAL");
+            cmor_handle_error(msg, CMOR_NORMAL);
+        }
+        CMOR_VERBOSITY = *verbosity;
+    }
 
-int cmor_dataset(char *outpath, 
-		 char *experiment_id,
-		 char *institution, 
-		 char *source,   
-		 char *calendar, 
-		 int realization, 
-		 char *contact, 
-		 char *history, 
-		 char *comment, 
-		 char *references,	 
-		 int leap_year, 
-		 int leap_month, 
-		 int month_lengths[12],
-		 char *model_id,
-		 char *forcing,
-		 int initialization_method,
-		 int physics_version,
-		 char *institute_id,
-		 char *parent_experiment_id,
-		 double *branch_time,
-		 char *parent_experiment_rip)
-{
-  extern cmor_dataset_def cmor_current_dataset;
-  char msg[CMOR_MAX_STRING];
-  int i,found;
-  struct stat buf;
-  FILE *test_file=NULL;
+    if (netcdf == NULL) {
+        CMOR_NETCDF_MODE = CMOR_PRESERVE;
+
+    } else {
+        if (*netcdf != CMOR_PRESERVE_4 && *netcdf != CMOR_APPEND_4
+                && *netcdf != CMOR_REPLACE_4 && *netcdf != CMOR_PRESERVE_3
+                && *netcdf != CMOR_APPEND_3 && *netcdf != CMOR_REPLACE_3) {
+            snprintf(msg, CMOR_MAX_STRING,
+                    "file mode can be either CMOR_PRESERVE, CMOR_APPEND, "
+                    "CMOR_REPLACE, CMOR_PRESERVE_4, CMOR_APPEND_4, "
+                    "CMOR_REPLACE_4, CMOR_PRESERVE_3, CMOR_APPEND_3 or "
+                    "CMOR_REPLACE_3");
+            cmor_handle_error(msg, CMOR_CRITICAL);
+        }
+        CMOR_NETCDF_MODE = *netcdf;
 
-  cmor_add_traceback("cmor_dataset");
-  cmor_is_setup();
-  strncpytrim(cmor_current_dataset.outpath,outpath,CMOR_MAX_STRING);
-  cmor_set_cur_dataset_attribute_internal("institution",institution,0);
-
-  /* Very first thing is to make sure the output path does exist */
-  if (stat(cmor_current_dataset.outpath,&buf)==0) {
-    if (S_ISREG(buf.st_mode)!=0) {
-      sprintf(msg,"You defined your output directory to be: '%s', but it appears to be a regular file not a directory",cmor_current_dataset.outpath);
-      cmor_handle_error(msg,CMOR_CRITICAL);
-    }
-    else if (S_ISDIR(buf.st_mode)==0) {
-      sprintf(msg,"You defined your output directory to be: '%s', but it appears to be a special file not a directory",cmor_current_dataset.outpath);
-      cmor_handle_error(msg,CMOR_CRITICAL);
-    }
-    /* ok if not root then test permssions */
-    if (getuid()!=0) {
-      strcpy(msg,cmor_current_dataset.outpath);
-      strncat(msg,"/tmp.cmor.test",CMOR_MAX_STRING);
-      test_file = fopen(msg,"w");
-      if (test_file == NULL) {
-
-      /* if (buf.st_uid == getuid()) { */
-      /* 	if (!((buf.st_mode & S_IRUSR) && (buf.st_mode & S_IWUSR))) { */
-      /* 	  sprintf(msg,"You defined your output directory to be: '%s', but you do not have read/write permissions on it",cmor_current_dataset.outpath); */
-      /* 	  cmor_handle_error(msg,CMOR_CRITICAL); */
-      /* 	} */
-      /* } */
-      /* else if (buf.st_gid == getgid()) { */
-      /* 	if (!((buf.st_mode & S_IRGRP) && (buf.st_mode & S_IWGRP))) { */
-      /* 	  sprintf(msg,"You defined your output directory to be: '%s', but you do not have read/write permissions on it",cmor_current_dataset.outpath); */
-      /* 	  cmor_handle_error(msg,CMOR_CRITICAL); */
-      /* 	} */
-      /* } else if (!((buf.st_mode & S_IROTH) && (buf.st_mode & S_IWOTH))) { */
-	sprintf(msg,"You defined your output directory to be: '%s', but you do not have read/write permissions on it",cmor_current_dataset.outpath);
-	cmor_handle_error(msg,CMOR_CRITICAL);
-      }
-      else {
-	fclose(test_file);
-	remove(msg);
-      }
-      /* /\* Ok now we need to see if we can read/write/access the directory *\/ */
-      /* if (buf.st_uid == getuid()) { */
-      /*   /\* ok user is owner of the directory *\/ */
-      /*   printf("ok you own it, flag is: %i\n */
-    }
-  }
-  else if (errno == ENOENT) {
-    sprintf(msg,"You defined your output directory to be: '%s', but this directory does not exist",cmor_current_dataset.outpath);
-    cmor_handle_error(msg,CMOR_CRITICAL);
-  }
-  else if (errno == EACCES ) {
-    sprintf(msg,"You defined your output directory to be: '%s', but we cannot access it, please check permissions",cmor_current_dataset.outpath);
-    cmor_handle_error(msg,CMOR_CRITICAL);
-  }
-
-  /* just to be sure initialize the dataset institude_id" */
-  if (institute_id!=NULL) {
-    cmor_trim_string(institute_id,msg);
-    if (strcmp(msg,"")==0) {
-      strcpy(msg,"not specified");
-    }
-  }
-  else {
-    strcpy(msg,"not specified");
-  }
-  cmor_set_cur_dataset_attribute_internal("institute_id",msg,1);
-
-  cmor_set_cur_dataset_attribute_internal("experiment_id",experiment_id,1);
-
-  /* ok we need to check it is a valid experiment have to do it at cmor_write time though*/
-  cmor_set_cur_dataset_attribute_internal("source",source,0);  
-  cmor_set_cur_dataset_attribute_internal("calendar",calendar,0);
-  cmor_set_cur_dataset_attribute_internal("model_id",model_id,1);
-  cmor_set_cur_dataset_attribute_internal("forcing",forcing,1);
-  cmor_set_cur_dataset_attribute_internal("parent_experiment_id",parent_experiment_id,1);
-  cmor_set_cur_dataset_attribute_internal("parent_experiment_rip",parent_experiment_rip,1);
-  if (branch_time == NULL) {
-    if (cmor_is_required_global_attribute("branch_time",CMOR_TABLE)==0) {
-      sprintf(msg,"You did not provide required attribute: branch_time");
-      cmor_handle_error(msg,CMOR_CRITICAL);
-    }
-  }
-  else {
-    sprintf(msg,"%lf",*branch_time);
-    cmor_set_cur_dataset_attribute_internal("branch_time",msg,1);
-  }
-
-  /* check if calendar is actually valid! */
-  found=0;
-  for (i=0;i<CMOR_N_VALID_CALS;i++) {
-    strncpytrim(msg,calendar,CMOR_MAX_STRING);
-    if (strcmp(msg,CMOR_VALID_CALENDARS[i])==0) found=1;
-  }
-  if ((month_lengths!=NULL) || (leap_year!=0) || (leap_month!=0)) {
-    /* user passed calendar definitions */
-    if (found == 1 ) {
-    snprintf(msg,CMOR_MAX_STRING,"You passed calendar: %s therefore we will ignore any user defined value you also set for month_lentgths and leap_months", calendar);
-    cmor_handle_error(msg,CMOR_WARNING);
     }
-    else {
-      snprintf(msg,CMOR_MAX_STRING,"You defined a non_standard calendar while this used to be ok in CMOR version 1 it is no longer supported in this version, please contact us at: cmor at lists.llnl.gov so we can work on fixing this issue");
-      cmor_handle_error(msg,CMOR_CRITICAL);
-      /* if (strcmp(calendar,"non_standard")!=0) { */
-      /* 	snprintf(msg,CMOR_MAX_STRING,"CMOR_DATASET: You defined a non_standard calendar, its name should be: 'non_standard', you passed: '%s'",calendar); */
-      /* 	cmor_handle_error(msg,CMOR_CRITICAL); */
-      /* } */
-      /* /\* dealing with user specified calendar *\/ */
-      /* if (month_lengths!=NULL) { */
-      /* 	/\* user defined months length *\/ */
-      /* 	for (i=0;i<12;i++) { */
-      /* 	  if ((month_lengths[i]>50)||(month_lengths[i]<20)) { */
-      /* 	    snprintf(msg,CMOR_MAX_STRING,"CMOR_DATASET: month_lengths must be between 20 and 50, index %i has value %i",i,month_lengths[i]); */
-      /* 	    cmor_handle_error(msg,CMOR_WARNING); */
-      /* 	  } */
-      /* 	  cmor_current_dataset.month_lengths[i]=month_lengths[i]; */
-      /* 	} */
-      /* } */
-      /* if (leap_year!=0) { */
-      /* 	if ((leap_month>12) || (leap_month<1)) { */
-      /* 	  snprintf(msg,CMOR_MAX_STRING,"CMOR_DATASET: user defined a leap_year (%i), but an invalid corresponding leap_month (%i)",leap_year,leap_month) ; */
-      /* 	  cmor_handle_error(msg,CMOR_CRITICAL); */
-      /* 	  cmor_pop_traceback(); */
-      /* 	  return 1; */
-      /* 	} */
-      /* 	cmor_current_dataset.leap_year = leap_year; */
-      /* 	cmor_current_dataset.leap_month = leap_month; */
-      /* } */
-      /* else { */
-      /* 	if (leap_month!=0) { */
-      /* 	  /\* user defined a leap_month *\/ */
-      /* 	  if ((leap_month>12) || (leap_month<1)) { */
-      /* 	    snprintf(msg,CMOR_MAX_STRING,"CMOR_DATASET: user defined an invalid leap_month (%i)",leap_month) ; */
-      /* 	    cmor_handle_error(msg,CMOR_CRITICAL); */
-      /* 	    cmor_pop_traceback(); */
-      /* 	    return 1; */
-      /* 	  } */
-      /* 	  /\* ok here we have valid defined leap_month but no leap year *\/ */
-      /* 	  snprintf(msg,CMOR_MAX_STRING,"CMOR_DATASET: user defined a leap_month (%i), but no corresponding leap_year",leap_month) ; */
-      /* 	  cmor_handle_error(msg,CMOR_CRITICAL); */
-      /* 	  cmor_pop_traceback(); */
-      /* 	  return 1; */
-      /* 	} */
-      /* } */
-    }
-  }
-  else if (found==0) {
-    snprintf(msg,CMOR_MAX_STRING,"Unknown calendar: %s (calendar are case sensitive)", calendar);
-    cmor_handle_error(msg,CMOR_CRITICAL);
-  }
-  cmor_set_cur_dataset_attribute_internal("contact",contact,1);
-  cmor_set_cur_dataset_attribute_internal("history",history,1);
-  cmor_set_cur_dataset_attribute_internal("comment",comment,1);
-  cmor_set_cur_dataset_attribute_internal("references",references,1);
-  if (realization < 0) {
-    snprintf(msg,CMOR_MAX_STRING,"Error realization number is negative, expected a positive number or 0 (i.e. ignored)");
-    cmor_handle_error(msg,CMOR_CRITICAL);
-    cmor_pop_traceback();
-    return 1;
-  }
-  else {
-    cmor_current_dataset.realization=realization;
-  }
-  if (initialization_method>0) {
-    sprintf(msg,"%i",initialization_method);
-    cmor_set_cur_dataset_attribute_internal("initialization_method",msg,0);
-  }
-  else {
-    cmor_set_cur_dataset_attribute_internal("initialization_method","1",0);
-  }
-  if (physics_version>0) {
-    sprintf(msg,"%i",physics_version);
-    cmor_set_cur_dataset_attribute_internal("physics_version",msg,0);
-  }
-  else {
-    cmor_set_cur_dataset_attribute_internal("physics_version","1",0);
-  }
-
-  cmor_current_dataset.initiated=1;
-  cmor_set_cur_dataset_attribute_internal("tracking_id",cmor_current_dataset.tracking_id,0);
-  cmor_pop_traceback();
-  return 0;
-}
 
-int cmor_convert_string_to_list(char *invalues,char type, void **target, int *nelts) {
-  int i,j,k,itmp;
-  long l;
-  double d;
-  float f;
-  char values[CMOR_MAX_STRING];
-  char msg[CMOR_MAX_STRING];
-  char msg2[CMOR_MAX_STRING];
-  j = 1;
-  cmor_add_traceback("cmor_convert_string_to_list");
-  /* trim this so no extra spaces after or before */
-  strncpytrim(values,invalues,CMOR_MAX_STRING);
-  k=1; /* 1 means we are on characters */
-  for (i=0;i<strlen(values);i++) {
-    if (values[i]==' ') {
-      if (k==1) {
-	j++;
-	k=0;
-      }
-      while (values[i+1]==' ') i++;
+    /* Make sure we are not trying to use NETCDF4 mode while linked against NetCDF3 */
+    if (((CMOR_NETCDF_MODE == CMOR_PRESERVE_4)
+            || (CMOR_NETCDF_MODE == CMOR_REPLACE_4)
+            || (CMOR_NETCDF_MODE == CMOR_APPEND_4)) && (USE_NETCDF_4 == 0)) {
+        sprintf(msg,
+                "You are trying to use a NetCDF4 mode but linked against "
+                "NetCDF3 libraries");
+        cmor_handle_error(msg, CMOR_CRITICAL);
+
     }
-    else {
-      k=1;
-    }
-  }
-  *nelts =j;
-
-  if (type == 'i' ) *target = malloc(j*sizeof(int));
-  else if (type == 'f') *target = malloc(j*sizeof(float));
-  else if (type == 'l') *target = malloc(j*sizeof(long));
-  else if (type == 'd') *target = malloc(j*sizeof(double));
-  else if (type == 'c') *target = (char **) malloc(j*sizeof(char *));
-  else {
-    snprintf(msg, CMOR_MAX_STRING,"unknown conversion '%c' for list: %s",type,values);
-    cmor_handle_error(msg,CMOR_CRITICAL);
-  }
-
-  if (*target==NULL) {
-    snprintf(msg, CMOR_MAX_STRING,"mallocing '%c' for list: %s",type,values);
-    cmor_handle_error(msg,CMOR_CRITICAL);
-  }
-
-  j=0;
-  msg[0]='\0';
-  k=0;
-  itmp=1;
-  for (i=0;i<strlen(values);i++) {
-    if (values[i]==' ') { /* ok next world */
-      if (itmp==1) {
-	itmp = 0 ;
-	msg[i-k]='\0';
-	strncpytrim(msg2,msg,CMOR_MAX_STRING);
-	if (type=='i') {
-	  sscanf(msg2,"%d",&itmp);
-	  ((int *)*target)[j] = (int)itmp;
-	}
-	else if (type=='l') {
-	  sscanf(msg2,"%ld",&l);
-	  ((long *)*target)[j] = (long)l;
-	}
-	else if (type=='f') {
-	  sscanf(msg2,"%f",&f);
-	  ((float *)*target)[j] = (float)f;
-	}
-	else if (type=='d') {
-	  sscanf(msg2,"%lf",&d);
-	  ((double *)*target)[j] = (double)d;
-	}
-	else if (type=='c') {
-	  ((char **)*target)[j]=(char *)malloc(13*sizeof(char));
-	  strncpy(((char **)*target)[j],msg2,12);
-	}
-	j++;
-      }
-      while(values[i+1]==' ') i++;
-      k=i+1;
+
+    if ((path == NULL) || (strcmp(path, "") == 0)) {
+        strncpy(cmor_input_path, ".", CMOR_MAX_STRING);
+    } else {
+        strncpytrim(cmor_input_path, path, CMOR_MAX_STRING);
     }
-    else {
-      msg[i-k]=values[i];
-      itmp=1;
-    }
-  }
-  /* ok now the last one */
-  msg[i-k]='\0';
-
-  strncpytrim(msg2,msg,CMOR_MAX_STRING);
-  if (type=='i') {
-    sscanf(msg2,"%d",&itmp);
-    ((int *)*target)[j] = (int)itmp;
-  }
-  else if (type=='l') {
-    sscanf(msg2,"%ld",&l);
-    ((long *)*target)[j] = (long)l;
-  }
-  else if (type=='f') {
-    sscanf(msg2,"%f",&f);
-    ((float *)*target)[j] = (float)f;
-  }
-  else if (type=='d') {
-    sscanf(msg2,"%lf",&d);
-    ((double *)*target)[j] = (double)d;
-  }
-  else if (type=='c') {
-    ((char **)*target)[j] = (char *)malloc(13*sizeof(char));
-    strncpy(((char **)*target)[j],msg2,12);
-  }
-  cmor_pop_traceback();
-  return 0;
-}
 
-int cmor_define_zfactors_vars(int var_id,int ncid, int *nc_dim,char *formula_terms,int *nzfactors, int *zfactors, int *nc_zfactors,int i,int dim_bnds)
-{
-  char msg[CMOR_MAX_STRING];
-  char ctmp[CMOR_MAX_STRING];
-  int ierr=0,l,m,k,n,j,m2,found,nelts,*int_list=NULL;
-  int dim_holder[CMOR_MAX_VARIABLES];
-  int lnzfactors;
-  int ics,icd,icdl,ia;
-
-  cmor_add_traceback("cmor_define_zfactors_vars");
-  cmor_is_setup();
-  lnzfactors = *nzfactors;
-  /* now figures out the variables for z_factor and loops thru it*/
-  n = strlen(formula_terms);
-  for (j=0;j<n;j++) {
-    while((formula_terms[j]!=':') && (j<n)) {j++;}
-    /* at this point we skiped the name thingy */
-    j++;
-    while(formula_terms[j]==' ') {j++;} /* ok we skipped the blanks as well */
-    /* ok now we can start scanning the zvar name */
-    k=j;
-    while((formula_terms[j]!=' ')&&(formula_terms[j]!='\0')) {ctmp[j-k]=formula_terms[j];j++;} 
-    /* all right here we reach a  blank, the name is finsihed */
-    ctmp[j-k]='\0';
-    /* here we try to match with the actual variable */
-    l=-1;
-    for (k=0;k<cmor_nvars+1;k++) {
-      /* printf("checking: %s vs %s\n",ctmp,cmor_vars[k].id); */
-      if (strcmp(ctmp,cmor_vars[k].id)==0) {
-	/* ok that is not enough! We need to know if the dims match! */
-	nelts=0;
-	for (m=0;m<cmor_vars[k].ndims;m++) {
-	  for (m2=0;m2<cmor_vars[var_id].ndims;m2++) {
-	    if (cmor_vars[k].axes_ids[m]==cmor_vars[var_id].axes_ids[m2]) {
-	      nelts+=1;
-	      break;
-	    }
-	  }
-	}
-	if (nelts == cmor_vars[k].ndims) {
-	  l=k;
-	  break;
-	}
-      }
-    }
-    if (l==-1) {
-      /* ok this looks bad! last hope is that the zfactor is actually a coordinate! */
-      found = 0;
-      for (m=0;m<cmor_vars[var_id].ndims;m++) {
-	if (strcmp(cmor_axes[cmor_vars[var_id].axes_ids[m]].id,ctmp)==0) {
-	  found = 1;
-	  break;
-	}
-	if (cmor_axes[cmor_vars[var_id].axes_ids[m]].bounds!=NULL) { /* ok this axes has bounds let's check against his name + _bnds then */
-	  sprintf(msg,"%s_bnds",cmor_axes[cmor_vars[var_id].axes_ids[m]].id);
-	  if (strcmp(msg,ctmp)==0) {
-	    found=1;
-	    break;
-	  }
-	}
-      }
-      if (found==0) {
-	snprintf(msg,CMOR_MAX_STRING,"could not find the zfactor variable: %s, please define it first, while defining zfactors for variable %s (table %s)",ctmp,cmor_vars[var_id].id,cmor_tables[cmor_vars[var_id].ref_table_id].table_id);
-	cmor_handle_error(msg,CMOR_CRITICAL);
-	cmor_pop_traceback();
-	return 1;
-      }
+    for (i = 0; i < CMOR_MAX_VARIABLES; i++) {
+        cmor_reset_variable(i);
     }
-    else {
-      found=0;
-    }
-    /*now figure out if we already defined this zfactor var */
-    for(k=0;k<lnzfactors;k++) if (zfactors[k]==l) found=1;
-    if (found==0) {
-      /* ok it is a new one */
-      zfactors[lnzfactors]=l;
-      /* ok we need to figure out the dimensions of that zfactor */
-      /* and then define the variable */
-      for(k=0;k<cmor_vars[l].ndims;k++) {
-	found = 0;
-	/* printf("checking for axis: %s on var: %i, %s\n",cmor_axes[cmor_vars[l].axes_ids[k]].id,l,cmor_vars[l].id); */
-	for (m=0;m<cmor_vars[var_id].ndims;m++) {
-	  /* printf("ok comparing: %i,%s and %i,%s\n",cmor_vars[var_id].axes_ids[m],cmor_axes[cmor_vars[var_id].axes_ids[m]].id,cmor_vars[l].axes_ids[k],cmor_axes[cmor_vars[l].axes_ids[k]].id); */
-	  if (strcmp(cmor_axes[cmor_vars[var_id].axes_ids[m]].id,cmor_axes[cmor_vars[l].axes_ids[k]].id)==0) {
-	    found =1;
-	    dim_holder[k]=nc_dim[m];
-	    /* ok here we mark this factor has time varying if necessary so that we can count the number of time written and make sure it matches the variable */
-	    if (cmor_axes[cmor_vars[var_id].axes_ids[m]].axis=='T') {
-	      for (ia=0;ia<10;ia++) {
-		if (cmor_vars[var_id].associated_ids[ia]==-1) {
-		  cmor_vars[var_id].associated_ids[ia]=l;
-		  break;
-		}
-	      }
-	    }
-	    break;
-	  }
-	}
-	if (found==0) {
-	  snprintf(msg,CMOR_MAX_STRING,"variable \"%s\" (table: %s) has axis \"%s\" defined with formula terms, but term \"%s\" depends on axis \"%s\" which is not part of the variable",cmor_vars[var_id].id,cmor_tables[cmor_vars[var_id].ref_table_id].table_id,cmor_axes[cmor_vars[var_id].axes_ids[i]].id,ctmp,cmor_axes[cmor_vars[l].axes_ids[k]].id);
-	  cmor_handle_error(msg,CMOR_CRITICAL);
-	}
-      }
-      /* at that point we can define the var */
-      if (dim_bnds==-1) { /* we are not defining a bnds one */
-	if (cmor_vars[l].type == 'd') ierr = nc_def_var(ncid,cmor_vars[l].id,NC_DOUBLE,cmor_vars[l].ndims,&dim_holder[0],&nc_zfactors[lnzfactors]);
-	else if (cmor_vars[l].type == 'f') ierr = nc_def_var(ncid,cmor_vars[l].id,NC_FLOAT,cmor_vars[l].ndims,&dim_holder[0],&nc_zfactors[lnzfactors]);
-	else if (cmor_vars[l].type == 'l') ierr = nc_def_var(ncid,cmor_vars[l].id,NC_INT,cmor_vars[l].ndims,&dim_holder[0],&nc_zfactors[lnzfactors]);
-	else if (cmor_vars[l].type == 'i') ierr = nc_def_var(ncid,cmor_vars[l].id,NC_INT,cmor_vars[l].ndims,&dim_holder[0],&nc_zfactors[lnzfactors]);
-	if (ierr != NC_NOERR) {
-	  snprintf(msg,CMOR_MAX_STRING, "NC Error (%i: %s) for variable %s (table %s) error defining zfactor var: %i (%s)",ierr,nc_strerror(ierr),cmor_vars[var_id].id,cmor_tables[cmor_vars[var_id].ref_table_id].table_id,lnzfactors,cmor_vars[l].id);
-	  cmor_handle_error(msg,CMOR_CRITICAL);
-	}
 
-	/* Compression stuff */
-	if ((CMOR_NETCDF_MODE != CMOR_REPLACE_3) && (CMOR_NETCDF_MODE != CMOR_PRESERVE_3) && (CMOR_NETCDF_MODE != CMOR_APPEND_3)) {
-	  if (cmor_vars[l].ndims>0) {
-	    ics = cmor_tables[cmor_vars[l].ref_table_id].vars[cmor_vars[l].ref_var_id].shuffle;
-	    icd = cmor_tables[cmor_vars[l].ref_table_id].vars[cmor_vars[l].ref_var_id].deflate;
-	    icdl = cmor_tables[cmor_vars[l].ref_table_id].vars[cmor_vars[l].ref_var_id].deflate_level;
-	    ierr = nc_def_var_deflate(ncid,nc_zfactors[lnzfactors],ics,icd,icdl);
-	    if (ierr != NC_NOERR) {
-	      snprintf(msg,CMOR_MAX_STRING,"NCError (%i: %s) defining compression parameters for zfactor variable %s for variable '%s' (table %s)",ierr,nc_strerror(ierr),cmor_vars[l].id,cmor_vars[var_id].id,cmor_tables[cmor_vars[var_id].ref_table_id].table_id);
-	      cmor_handle_error(msg,CMOR_CRITICAL);
-	    }
-	  }
-	}
+    for (i = 0; i < CMOR_MAX_AXES; i++) {
+        cmor_axes[i].ref_table_id = -1;
+        cmor_axes[i].ref_axis_id = -1;
+        cmor_axes[i].isgridaxis = -1;
+        cmor_axes[i].axis = '\0';
+        cmor_axes[i].iunits[0] = '\0';
+        cmor_axes[i].id[0] = '\0';
 
-/* 	printf("defined variable %s to nc_var_id: %i\n",cmor_vars[l].id,nc_zfactors[lnzfactors]); */
+        if (cmor_axes[i].values != NULL)
+            free(cmor_axes[i].values);
 
-	/* Creates attribute related to that variable */
-	for (k=0;k<cmor_vars[l].nattributes;k++){
-	    /* first of all we need to make sure it is not an empty attribute */
-	    if (cmor_has_variable_attribute(l,cmor_vars[l].attributes[k])!=0) {
-	      /* deleted attribute continue on */
-	      continue;
-	    }
-	  if (strcmp(cmor_vars[l].attributes[k],"flag_values")==0) {
-	    /* ok we need to convert the string to a list of int */
-	    ierr = cmor_convert_string_to_list(cmor_vars[l].attributes_values_char[k],'i',(void *)&int_list,&nelts);
-	    ierr = nc_put_att_int(ncid,nc_zfactors[lnzfactors] ,"flag_values",NC_INT,nelts,int_list);
-	    if (ierr != NC_NOERR) {
-	      snprintf(msg,CMOR_MAX_STRING,"NetCDF Error (%i: %s) setting flags numerical attribute on zfactor variable %s for variable %s (table %s)",ierr,nc_strerror(ierr),cmor_vars[l].id,cmor_vars[var_id].id,cmor_tables[cmor_vars[var_id].ref_table_id].table_id);
-	      cmor_handle_error(msg,CMOR_CRITICAL);
-	    }
-	    free(int_list);
-	  }
-	  else if (cmor_vars[l].attributes_type[k] == 'c') {
-	    ierr = cmor_put_nc_char_attribute(ncid,nc_zfactors[lnzfactors],cmor_vars[l].attributes[k],cmor_vars[l].attributes_values_char[k],cmor_vars[l].id) ;
-	  }
-	  else {
-	    ierr = cmor_put_nc_num_attribute(ncid,nc_zfactors[lnzfactors],cmor_vars[l].attributes[k],cmor_vars[l].attributes_type[k],cmor_vars[l].attributes_values_num[k],cmor_vars[l].id);
-	  }
-	}
-	lnzfactors+=1;
-      }
-      else {
-	/* ok now we need to see if we have bounds on that variable */
-	/* 	strncpy(msg,cmor_vars[l].id,CMOR_MAX_STRING); */
-	/* 	strncat(msg,"_bnds",CMOR_MAX_STRING); */
-	dim_holder[cmor_vars[l].ndims]=dim_bnds;
-	if (cmor_vars[l].type == 'd') ierr = nc_def_var(ncid,cmor_vars[l].id,NC_DOUBLE,cmor_vars[l].ndims+1,&dim_holder[0],&nc_zfactors[lnzfactors]);
-	else if (cmor_vars[l].type == 'f') ierr = nc_def_var(ncid,cmor_vars[l].id,NC_FLOAT,cmor_vars[l].ndims+1,&dim_holder[0],&nc_zfactors[lnzfactors]);
-	else if (cmor_vars[l].type == 'l') ierr = nc_def_var(ncid,cmor_vars[l].id,NC_INT,cmor_vars[l].ndims+1,&dim_holder[0],&nc_zfactors[lnzfactors]);
-	else if (cmor_vars[l].type == 'i') ierr = nc_def_var(ncid,cmor_vars[l].id,NC_INT,cmor_vars[l].ndims+1,&dim_holder[0],&nc_zfactors[lnzfactors]);
-	if (ierr != NC_NOERR) {snprintf(msg,CMOR_MAX_STRING, "NC Error (%i: %s) for variable %s (table: %s),error defining zfactor var: %i (%s)",ierr,nc_strerror(ierr),cmor_vars[var_id].id,cmor_tables[cmor_vars[var_id].ref_table_id].table_id,lnzfactors,cmor_vars[l].id);cmor_handle_error(msg,CMOR_CRITICAL);}
-
-	/* Compression stuff */
-	if ((CMOR_NETCDF_MODE != CMOR_REPLACE_3) && (CMOR_NETCDF_MODE != CMOR_PRESERVE_3) && (CMOR_NETCDF_MODE != CMOR_APPEND_3)) {
-	  ics = cmor_tables[cmor_vars[l].ref_table_id].vars[cmor_vars[l].ref_var_id].shuffle;
-	  icd = cmor_tables[cmor_vars[l].ref_table_id].vars[cmor_vars[l].ref_var_id].deflate;
-	  icdl = cmor_tables[cmor_vars[l].ref_table_id].vars[cmor_vars[l].ref_var_id].deflate_level;
-	  ierr = nc_def_var_deflate(ncid,nc_zfactors[lnzfactors],ics,icd,icdl);
-	  if (ierr != NC_NOERR) {
-	    snprintf(msg,CMOR_MAX_STRING,"NCError (%i: %s) defining compression parameters for zfactor variable %s for variable '%s' (table %s)",ierr,nc_strerror(ierr),cmor_vars[l].id,cmor_vars[var_id].id,cmor_tables[cmor_vars[var_id].ref_table_id].table_id);
-	    cmor_handle_error(msg,CMOR_CRITICAL);
-	  }
-	}
+        cmor_axes[i].values = NULL;
 
-	/* Creates attribute related to that variable */
-	for (k=0;k<cmor_vars[l].nattributes;k++){
-	    /* first of all we need to make sure it is not an empty attribute */
-	    if (cmor_has_variable_attribute(l,cmor_vars[l].attributes[k])!=0) {
-	      /* deleted attribute continue on */
-	      continue;
-	    }
-	  if (strcmp(cmor_vars[l].attributes[k],"flag_values")==0) {
-	    /* ok we need to convert the string to a list of int */
-	    ierr = cmor_convert_string_to_list(cmor_vars[l].attributes_values_char[k],'i',(void *)&int_list,&nelts);
-	    ierr = nc_put_att_int(ncid,nc_zfactors[lnzfactors] ,"flag_values",NC_INT,nelts,int_list);
-	    if (ierr != NC_NOERR) {
-	      snprintf(msg,CMOR_MAX_STRING,"NetCDF Error (%i: %s) setting flags numerical attribute on zfactor variable %s for variable %s (table: %s)",ierr,nc_strerror(ierr),cmor_vars[l].id,cmor_vars[var_id].id,cmor_tables[cmor_vars[var_id].ref_table_id].table_id);
-	      cmor_handle_error(msg,CMOR_CRITICAL);
-	    }
-	    free(int_list);
-	  }
-	  else if (cmor_vars[l].attributes_type[k] == 'c') {
-	    ierr = cmor_put_nc_char_attribute(ncid,nc_zfactors[lnzfactors],cmor_vars[l].attributes[k],cmor_vars[l].attributes_values_char[k],cmor_vars[l].id) ;
-	  }
-	  else {
-	    ierr = cmor_put_nc_num_attribute(ncid,nc_zfactors[lnzfactors],cmor_vars[l].attributes[k],cmor_vars[l].attributes_type[k],cmor_vars[l].attributes_values_num[k],cmor_vars[l].id);
-	  }
-	}
+        if (cmor_axes[i].bounds != NULL)
+            free(cmor_axes[i].bounds);
+
+        cmor_axes[i].bounds = NULL;
+
+        if (cmor_axes[i].cvalues != NULL) {
+            for (j = 0; j < cmor_axes[i].length; j++) {
+                if (cmor_axes[i].cvalues[j] != NULL) {
+                    free(cmor_axes[i].cvalues[j]);
+                    cmor_axes[i].cvalues[j] = NULL;
+                }
+            }
+            free(cmor_axes[i].cvalues);
+        }
+
+        cmor_axes[i].cvalues = NULL;
+        cmor_axes[i].length = 0;
+        cmor_axes[i].revert = 1; /* 1 means no reverse -1 means reverse */
+        cmor_axes[i].offset = 0;
+        cmor_axes[i].type = '\0';
+
+        for (j = 0; j < CMOR_MAX_ATTRIBUTES; j++) {
+            cmor_axes[i].attributes_values_char[j][0] = '\0';
+            cmor_axes[i].attributes_values_num[j] = -999.;
+            cmor_axes[i].attributes_type[j] = '\0';
+            cmor_axes[i].attributes[j][0] = '\0';
+        }
 
-	lnzfactors+=1;
-      }
+        cmor_axes[i].nattributes = 0;
+        cmor_axes[i].hybrid_in = 0;
+        cmor_axes[i].hybrid_out = 0;
+        cmor_axes[i].store_in_netcdf = 1;
+        cmor_axes[i].wrapping = NULL;
+        cmor_set_axis_attribute(i, "units", 'c', "");
+        cmor_set_axis_attribute(i, "interval", 'c', "");
     }
-    
-    while((formula_terms[j]==' ')&&(formula_terms[j]!='\0')) {j++;} /* skip the other whites */
-  }
-  *nzfactors=lnzfactors;
-  cmor_pop_traceback();
-  return 0;
-}
 
+    if (create_subdirectories != NULL) {
+        CMOR_CREATE_SUBDIRECTORIES = *create_subdirectories;
+    }
 
-void cmor_flip_hybrid(int var_id, int i,char *a, char *b, char *abnds, char *bbnds) {
-  int doflip,j,k,l=0;
-  double tmp;
-  extern cmor_var_t cmor_vars[CMOR_MAX_VARIABLES];
-  extern cmor_axis_t cmor_axes[CMOR_MAX_AXES];
-  cmor_add_traceback("cmor_flip_hybrid");
-  /* here we need to look and see if we need to flip the levels again since we overwrote this stuff */
-
-  doflip=0;
-  if (cmor_tables[cmor_axes[cmor_vars[var_id].axes_ids[i]].ref_table_id].axes[cmor_axes[cmor_vars[var_id].axes_ids[i]].ref_axis_id].stored_direction=='d') {
-    /* decrease stuff */
-    if (cmor_axes[cmor_vars[var_id].axes_ids[i]].values[1]>cmor_axes[cmor_vars[var_id].axes_ids[i]].values[0]) doflip = 1;
-  }
-  else {
-    if (cmor_axes[cmor_vars[var_id].axes_ids[i]].values[1]<cmor_axes[cmor_vars[var_id].axes_ids[i]].values[0]) doflip = 1;
-  }
-  if (doflip==1) {
-    /* look for a coeff */
-    k=-1;
-    for(j=0;j<=cmor_nvars;j++) if ((strcmp(cmor_vars[j].id,a)==0) && (cmor_vars[j].zaxis==cmor_vars[var_id].axes_ids[i])) { k=j; break;}
-    /* look for b coeff */
-    if (b!=NULL) {
-      l=-1;
-      for(j=0;j<=cmor_nvars;j++) if ((strcmp(cmor_vars[j].id,b)==0) && (cmor_vars[j].zaxis==cmor_vars[var_id].axes_ids[i])) { l=j; break;}
-    }
-    for (j=0;j<cmor_axes[cmor_vars[var_id].axes_ids[i]].length/2;j++) {
-      tmp = cmor_axes[cmor_vars[var_id].axes_ids[i]].values[j];
-      cmor_axes[cmor_vars[var_id].axes_ids[i]].values[j]=cmor_axes[cmor_vars[var_id].axes_ids[i]].values[cmor_axes[cmor_vars[var_id].axes_ids[i]].length-1-j];
-      cmor_axes[cmor_vars[var_id].axes_ids[i]].values[cmor_axes[cmor_vars[var_id].axes_ids[i]].length-1-j]=tmp;
-      tmp = cmor_vars[k].values[j];
-      cmor_vars[k].values[j] = cmor_vars[k].values[cmor_axes[cmor_vars[var_id].axes_ids[i]].length-1-j];
-      cmor_vars[k].values[cmor_axes[cmor_vars[var_id].axes_ids[i]].length-1-j]=tmp;
-      if (b!=NULL) {
-	tmp = cmor_vars[l].values[j];
-	cmor_vars[l].values[j] = cmor_vars[l].values[cmor_axes[cmor_vars[var_id].axes_ids[i]].length-1-j];
-	cmor_vars[l].values[cmor_axes[cmor_vars[var_id].axes_ids[i]].length-1-j]=tmp;
-      }
-    }
-    if (cmor_axes[cmor_vars[var_id].axes_ids[i]].bounds!=NULL) {
-      k=-1;
-      for(j=0;j<=cmor_nvars;j++) if ((strcmp(cmor_vars[j].id,abnds)==0) && (cmor_vars[j].zaxis==cmor_vars[var_id].axes_ids[i])) { k=j; break;}
-      if (bbnds!=NULL) {
-	l=-1;
-	for(j=0;j<=cmor_nvars;j++) if ((strcmp(cmor_vars[j].id,bbnds)==0) && (cmor_vars[j].zaxis==cmor_vars[var_id].axes_ids[i])) { l=j; break;}
-      }
-      for (j=0;j<cmor_axes[cmor_vars[var_id].axes_ids[i]].length;j++) {
-	tmp = cmor_axes[cmor_vars[var_id].axes_ids[i]].bounds[j];
-	cmor_axes[cmor_vars[var_id].axes_ids[i]].bounds[j]=cmor_axes[cmor_vars[var_id].axes_ids[i]].bounds[cmor_axes[cmor_vars[var_id].axes_ids[i]].length*2-1-j];
-	cmor_axes[cmor_vars[var_id].axes_ids[i]].bounds[cmor_axes[cmor_vars[var_id].axes_ids[i]].length*2-1-j]=tmp;
-	tmp = cmor_vars[k].values[j];
-	cmor_vars[k].values[j] = cmor_vars[k].values[cmor_axes[cmor_vars[var_id].axes_ids[i]].length*2-1-j];
-	cmor_vars[k].values[cmor_axes[cmor_vars[var_id].axes_ids[i]].length*2-1-j]=tmp;
-	if (bbnds!=NULL) {
-	  tmp = cmor_vars[l].values[j];
-	  cmor_vars[l].values[j] = cmor_vars[l].values[cmor_axes[cmor_vars[var_id].axes_ids[i]].length*2-1-j];
-	  cmor_vars[l].values[cmor_axes[cmor_vars[var_id].axes_ids[i]].length*2-1-j]=tmp;
-	}
-      }
+    if ((CMOR_CREATE_SUBDIRECTORIES != 1)
+            && (CMOR_CREATE_SUBDIRECTORIES != 0)) {
+        snprintf(msg, CMOR_MAX_STRING,
+                "cmor_setup: create_subdirectories must be 0 or 1");
+        cmor_handle_error(msg, CMOR_CRITICAL);
     }
-  }
-  cmor_pop_traceback();
-  return;
-}
 
-int cmor_write(int var_id,void *data, char type, char *suffix, int ntimes_passed, double *time_vals, double *time_bounds, int *refvar) 
-{
-  extern cmor_var_t cmor_vars[CMOR_MAX_VARIABLES];
-  extern cmor_axis_t cmor_axes[CMOR_MAX_AXES];
-  extern int cmor_nvars;
-  extern cmor_dataset_def cmor_current_dataset;
-
-  int i,j,k,ierr=0,ncid,n,l,m,ncafid,m2[5];
-  size_t nctmp;
-  char outname[CMOR_MAX_STRING];
-  char ctmp[CMOR_MAX_STRING];
-  char ctmp2[CMOR_MAX_STRING];
-  char ctmp3[CMOR_MAX_STRING];
-  char ctmp4[CMOR_MAX_STRING];
-  char ctmp5[CMOR_MAX_STRING];
-  char ctmp6[CMOR_MAX_STRING];
-  char msg[CMOR_MAX_STRING];
-  char appending_to[CMOR_MAX_STRING];
-  int nc_dim[CMOR_MAX_AXES];
-  size_t nc_dim_chunking[CMOR_MAX_AXES];
-  int tmp_dims[2];
-  size_t starts[2],counts[2];
-  int nc_dim_af[CMOR_MAX_AXES];
-  int nc_vars[CMOR_MAX_VARIABLES];
-  int nc_vars_af[CMOR_MAX_VARIABLES];
-  int nc_associated_vars[6];
-  int nc_dims_associated[CMOR_MAX_AXES];
-  int nc_bnds_vars[CMOR_MAX_VARIABLES];
-  int cmode;
-  int dim_bnds;
-  int dims_bnds_ids[2];
-  int nc_singletons[CMOR_MAX_DIMENSIONS];
-  int nc_singletons_bnds[CMOR_MAX_DIMENSIONS];
-  char mtype;
-  int nzfactors=0;
-  int zfactors[CMOR_MAX_VARIABLES];
-  int nc_zfactors[CMOR_MAX_VARIABLES];
-  int varid;
-  int ho;
-  double tmps[2];
-  FILE *fperr;
-  struct tm *ptr;
-  time_t lt;
-  float afloat,d;
-  int ics,icd,icdl,itmpmsg,itmp2,itmp3, *int_list=NULL,nelts;
-  int isfixed=0;
-  int origRealization=0;
-  uuid_t *myuuid;
-  uuid_fmt_t fmt;
-  void *myuuid_str=NULL;
-  size_t uuidlen;
-  int tracking_id_set;
-
-  extern int cmor_convert_char_to_hyphen(char c);
-
-  cmor_add_traceback("cmor_write");
-
-  strcpy(appending_to,""); /* initialize to nothing */
-  strcpy(outname,"");
-  strcpy(ctmp,"");
-  strcpy(msg,"");
-  strcpy(ctmp2,"");
+/* -------------------------------------------------------------------- */
+/*      initialize the udunits                                          */
+/* -------------------------------------------------------------------- */
+    if (ut_read != NULL) {
+        ut_free_system(ut_read);
+    }
 
-  cmor_is_setup();
-  if (var_id>cmor_nvars) {
-    cmor_handle_error("var_id %i not defined",CMOR_CRITICAL);
-    cmor_pop_traceback();
-    return -1;
-  };
-  varid = var_id;
-
-  /* here we check that the variable actually has all the required attributes set */
-  cmor_has_required_variable_attributes(varid);
-  if (refvar!=NULL) {
-    varid=(int) *refvar;
-/*     printf("ok passing with a refvar: %i\n",varid); */
-    if (cmor_vars[varid].initialized==-1) {
-      snprintf(msg,CMOR_MAX_STRING, "You are trying to write variable \"%s\" in association with variable \"%s\" (table %s), but you you need to write the associated variable first in order to initialize the file and dimensinos",cmor_vars[varid].id,cmor_vars[var_id].id,cmor_tables[cmor_vars[var_id].ref_table_id].table_id);
-      cmor_handle_error(msg,CMOR_CRITICAL);
-    }
-    /* ok now we need to scan the netcdf file to figure the ncvarid associated */
-    ierr = nc_inq_varid(cmor_vars[varid].initialized,cmor_vars[var_id].id,&cmor_vars[var_id].nc_var_id);
-    if (ierr!=NC_NOERR) {
-      sprintf(msg,"Could not find variable: '%s' (table: %s) in file of associated variable: '%s'",cmor_vars[var_id].id,cmor_tables[cmor_vars[var_id].ref_table_id].table_id,cmor_vars[*refvar].id);
-      cmor_handle_error(msg,CMOR_CRITICAL);
-    }
-    cmor_vars[var_id].ntimes_written = cmor_vars[varid].ntimes_written - ntimes_passed;
-  }
-
-  /* Here we check that the types are consitent between the missing value passed and the type passed now */
-  if (cmor_vars[varid].nomissing==0) {
-    if (cmor_vars[varid].itype!=type) {
-      snprintf(msg,CMOR_MAX_STRING,"You defined variable \"%s\" (table %s) with a missing value of type \"%c\", but you are now writing data of type: \"%c\" this may lead to some spurious handling of the missing values",cmor_vars[varid].id,cmor_tables[cmor_vars[var_id].ref_table_id].table_id,cmor_vars[varid].itype,type);
-      cmor_handle_error(msg,CMOR_WARNING);
-    }
-  }
-  if (cmor_vars[varid].initialized==-1) { /* Variable never been thru cmor_write, we need to define everything */
-
-    if (cmor_vars[varid].type!=type) {
-      snprintf(msg,CMOR_MAX_STRING,"Converted type from '%c' to '%c'",type,cmor_vars[varid].type);
-      cmor_update_history(varid,msg);
-    }
-
-
-    if (cmor_has_cur_dataset_attribute("forcing")==0) {
-      cmor_get_cur_dataset_attribute("forcing",ctmp2);
-      cmor_check_forcing_validity(cmor_vars[var_id].ref_table_id,ctmp2);
-    }
-
-    /* need to store the prodcut type */
-    strncpy(ctmp2,cmor_tables[cmor_vars[var_id].ref_table_id].product,CMOR_MAX_STRING);
-    cmor_set_cur_dataset_attribute_internal("product",ctmp2,1);
-
-    /* we will need the expt_id for the filename so we check its validity here */
-    cmor_get_cur_dataset_attribute("experiment_id",ctmp2);
-    /* ok here we check the exptid is ok */
-    if (cmor_check_expt_id(ctmp2,cmor_vars[var_id].ref_table_id,"experiment","experiment_id")!=0) {
-      snprintf(msg,CMOR_MAX_STRING,"Invalid dataset experiment id: %s, while writing variable %s, check against table: %s",ctmp2,cmor_vars[var_id].id,cmor_tables[cmor_vars[var_id].ref_table_id].table_id);
-      cmor_handle_error(msg,CMOR_NORMAL);
-      cmor_pop_traceback();
-      return 1;
-    }
-    strcpy(ctmp4,ctmp2); /*copy the expid for later use with gridspec files etc */
-    /* here we test to see if the user passed a suffix and this suffix points to a file and if we are in append mode */
-    if (suffix!=NULL) {
-      strncpytrim(appending_to,suffix,CMOR_MAX_STRING);
-      if (strncmp(appending_to,"",CMOR_MAX_STRING)!=0) {
-	if ((CMOR_NETCDF_MODE == CMOR_APPEND_4) ||(CMOR_NETCDF_MODE == CMOR_APPEND_3)) {
-	  fperr = NULL;
-	  fperr=fopen(appending_to,"r"); /*ok is the suffix a real suffix or a file name? */
-	  if ( fperr != NULL) { /* file exists we are appending to tihs */
-	    fclose(fperr);
-	  }
-	  else { /* file does not exists it is a suffix */
-	    /* we need to check if the CMOR table used is not for a cmor 2 */
-	    if (cmor_tables[cmor_vars[var_id].ref_table_id].cmor_version>=2.) {
-	      sprintf(msg,"You passed '%s' as file_suffix while writing variable %s (table %s), suffix are not allowed in CMOR2.0 and newer. Were you trying to append to a non-existing file?",appending_to,cmor_vars[var_id].id,cmor_tables[cmor_vars[var_id].ref_table_id].table_id);
-	      cmor_handle_error(msg,CMOR_CRITICAL);
-	    }
-	    else {
-	      strcpy(appending_to,"");
-	    }
-	  }
-	}
-	else {
-	  /* we need to check if the CMOR table used is not for a cmor 2 */
-	  if (cmor_tables[cmor_vars[var_id].ref_table_id].cmor_version>=2.) {
-	    sprintf(msg,"Suffix are not allowed in CMOR 2.0 and greater, suffix %s encountered while writing variable %s (table %s)",suffix,cmor_vars[var_id].id,cmor_tables[cmor_vars[var_id].ref_table_id].table_id);
-	    cmor_handle_error(msg,CMOR_CRITICAL);
-	  }
-	  else {
-	    strcpy(appending_to,"");
-	  }
-	}
-      }
+    ut_set_error_message_handler(ut_ignore);
+
+    ut_read = ut_read_xml(NULL);
+
+    if (ut_get_status() != UT_SUCCESS) {
+        snprintf(msg, CMOR_MAX_STRING, "Udunits: Error reading units system");
+        cmor_handle_error(msg, CMOR_CRITICAL);
     }
-	
-    /* Figures out file name */
-    if (CMOR_CREATE_SUBDIRECTORIES == 1) {
-      isfixed = cmor_create_output_path(var_id,outname);
+
+    ut_set_error_message_handler(ut_ignore);
+
+    if (newequnit != NULL) {
+        ut_free(newequnit);
     }
-    else {
-      isfixed = cmor_create_output_path(var_id,msg);
-      strncpytrim(outname,cmor_current_dataset.outpath,CMOR_MAX_STRING);
-    }
-    strncat(outname,"/",CMOR_MAX_STRING-strlen(outname));
-    for (i=0;i<strlen(cmor_vars[var_id].id);i++) {
-      if ((cmor_vars[var_id].id[i]=='_')||(cmor_vars[var_id].id[i]=='-')) {
-	snprintf(outname,CMOR_MAX_STRING,"var_id cannot contain %c you passed: %s (table: %s). Please check your input tables\n",cmor_vars[var_id].id[i],cmor_vars[var_id].id,cmor_tables[cmor_vars[var_id].ref_table_id].table_id);
-	cmor_handle_error(outname,CMOR_CRITICAL);
-      }
-    }
-    strncattrim(outname,cmor_vars[var_id].id,CMOR_MAX_STRING-strlen(outname));
-    strncat(outname,"_",CMOR_MAX_STRING-strlen(outname));
-    strncattrim(outname,cmor_tables[cmor_vars[var_id].ref_table_id].table_id,CMOR_MAX_STRING-strlen(outname));
-    if ( cmor_has_cur_dataset_attribute("model_id")==0) {
-      cmor_get_cur_dataset_attribute("model_id",msg);
-      substitute_chars_with_hyphens(msg,ctmp5,"model_id",var_id);
-      strncat(outname,"_",CMOR_MAX_STRING-strlen(outname));
-      strncat(outname,ctmp5,CMOR_MAX_STRING-strlen(outname));
-    }
-    if ( strcmp(ctmp2,"")!=0) { /* we have a short name for the expt_id */
-      strncat(outname,"_",CMOR_MAX_STRING-strlen(outname));
-      strncat(outname,ctmp2,CMOR_MAX_STRING-strlen(outname));
-    }
-    strncat(outname,"_",CMOR_MAX_STRING-strlen(outname));
-    /* is it a fixed field ? */
-    if (isfixed==1) {
-      strncat(outname,"r0i0p0",CMOR_MAX_STRING-strlen(outname) );
-      origRealization = cmor_current_dataset.realization;
-      cmor_current_dataset.realization=0;
-      cmor_set_cur_dataset_attribute_internal("physics_version","0",0);
-      cmor_set_cur_dataset_attribute_internal("initialization_method","0",0);
+
+    newequnit = ut_new_base_unit(ut_read);
+
+    if (ut_get_status() != UT_SUCCESS) {
+        snprintf(msg, CMOR_MAX_STRING,
+                "Udunits: creating dimlessnew base unit");
+        cmor_handle_error(msg, CMOR_CRITICAL);
     }
-    else {
-      snprintf(msg,CMOR_MAX_STRING,"r%d",cmor_current_dataset.realization);
-      strncat(outname,msg,CMOR_MAX_STRING-strlen(outname) );
-      
-      /* initialization id (optional) */
-      if ( cmor_has_cur_dataset_attribute("initialization_method")==0) {
-	cmor_get_cur_dataset_attribute("initialization_method",ctmp2);
-	sscanf(ctmp2,"%i",&j);
-	snprintf(msg,CMOR_MAX_STRING,"i%d",j);
-	strncat(outname,msg,CMOR_MAX_STRING-strlen(outname) );
-      }
-      
-      /* physics id (optional) */
-      if ( cmor_has_cur_dataset_attribute("physics_version")==0) {
-	cmor_get_cur_dataset_attribute("physics_version",ctmp2);
-	sscanf(ctmp2,"%i",&j);
-	snprintf(msg,CMOR_MAX_STRING,"p%d",j);
-	strncat(outname,msg,CMOR_MAX_STRING-strlen(outname) );
-      }
-    }
-
-    strncpytrim(cmor_vars[var_id].base_path,outname,CMOR_MAX_STRING);
-    if (strcmp(appending_to,"")!=0) { /* we are appending to an existing file */
-      k = strlen(appending_to); /* what's the length of that file name */
-      j=0;
-      for (i=k-1;i>=0;i--) {
-	if (appending_to[i]=='/') {/* ok this marks the beg of the actual file name */
-	  j=i+1;
-	  break;
-	}
-      }
-      /* now does the same thing for "_" this should mark our suffix section */
-      /* we need to count how many are there and the index of the last one */
-      l=0;
-      for (i=k-1;i>=j;i--) {
-	if (appending_to[i]=='_') {/* ok this marks the beg of the actual suffix */
-	  l++;
-	}
-      }
-      if ( cmor_has_cur_dataset_attribute("model_id")==0) {
-	i=5;
-      }
-      else {
-	i=4;
-      }
-      if (l>i) {
-	/* we have extra _ that means suffix */
-	for (i=k-1;i>=j;i--) {
-	  if (appending_to[i]=='_') {/* ok this marks the beg of the actual suffix */
-	    l=i+1;
-	    break;
-	  }
-	}
-	for(i=l;i<k-3;i++) {
-	  msg[i-l]=appending_to[i];
-	}
-	msg[i-l]='\0'; /*termination char */
-      }
-      else {
-	msg[0]='\0';
-      }
-    }
-    else { /*ok let's copy the suffix to msg */
-      if (suffix!=NULL) strncpytrim(msg,suffix,CMOR_MAX_STRING);
-      else msg[0]='\0';
-    }
-    if (msg[0]!='\0') {
-      /* test for "_" in suffix , it s not allowed */
-      for (i=0;i<strlen(msg);i++) {
-	if (msg[i]=='_') {
-	  if ((CMOR_NETCDF_MODE == CMOR_APPEND_4) ||(CMOR_NETCDF_MODE == CMOR_APPEND_3)) {
-	    snprintf(ctmp2,CMOR_MAX_STRING,"While writing variable %s (table %s), suffix cannot contain the '_' character, you passed: %s. Is it possible you are trying to append to a file and the file is not actually here?",cmor_vars[var_id].id,cmor_tables[cmor_vars[var_id].ref_table_id].table_id,msg);
-	    cmor_handle_error(ctmp2,CMOR_CRITICAL);
-	  }
-	  else {
-	    snprintf(ctmp2,CMOR_MAX_STRING,"suffix cannot contain the '_' character, you passed: %s, while writing variable %s (table: %s)",msg,cmor_vars[var_id].id,cmor_tables[cmor_vars[var_id].ref_table_id].table_id);
-	    cmor_handle_error(ctmp2,CMOR_CRITICAL);
-	  }
-	}
-      }
-      strncat(outname,"_",CMOR_MAX_STRING-strlen(outname));
-      strncat(outname,msg,CMOR_MAX_STRING-strlen(outname));
-      strncpy(cmor_vars[var_id].suffix,msg,CMOR_MAX_STRING);
+
+    myutstatus = ut_map_name_to_unit("eq", UT_ASCII, newequnit);
+    ut_free(newequnit);
+
+    if (myutstatus != UT_SUCCESS) {
+        snprintf(msg, CMOR_MAX_STRING,
+                "Udunits: Error mapping dimless 'eq' unit");
+        cmor_handle_error(msg, CMOR_CRITICAL);
     }
 
-    /* Add Process ID and a random number to filename */
-    sprintf(msg,"%d",(int) getpid());
-    strncat(outname,"_",CMOR_MAX_STRING-strlen(outname));
-    strncat(outname,msg,CMOR_MAX_STRING-strlen(outname));
-    
-    /* Add the '.nc' extension */
-    strncat(outname,".nc",CMOR_MAX_STRING-strlen(outname) );
-
-    /* at this point we need to rename the original file name to this so that the rest of the code works */
-    if (appending_to[0]!='\0') {
-      if (strncmp(outname,appending_to,CMOR_MAX_STRING)!=0) {
-	if (rename(appending_to,outname)!=0) {
-	  snprintf(msg,CMOR_MAX_STRING,"could not rename your existing file: %s to temporary file: %s",appending_to,outname);
-	  cmor_handle_error(msg,CMOR_CRITICAL);
-	}
-      }
-      snprintf(msg,CMOR_MAX_STRING,"Appended to original file: %s",appending_to);
-      cmor_update_history(var_id,msg);
+    if (dimlessunit != NULL)
+        ut_free(dimlessunit);
+
+    dimlessunit = ut_new_dimensionless_unit(ut_read);
+
+    if (ut_get_status() != UT_SUCCESS) {
+        snprintf(msg, CMOR_MAX_STRING, "Udunits: creating dimless unit");
+        cmor_handle_error(msg, CMOR_CRITICAL);
     }
 
-    strncpytrim(cmor_vars[var_id].current_path,outname,CMOR_MAX_STRING);
-    /* Decides NetCDF mode */
-    if (USE_NETCDF_4 == 1) {
-      cmode = NC_NETCDF4 | NC_CLASSIC_MODEL;
-      if ((CMOR_NETCDF_MODE == CMOR_REPLACE_3) ||(CMOR_NETCDF_MODE == CMOR_PRESERVE_3) ||(CMOR_NETCDF_MODE == CMOR_APPEND_3)) {
-	cmode = NC_CLOBBER;
-      }
+    myutstatus = ut_map_name_to_unit("dimless", UT_ASCII, dimlessunit);
+
+    if (myutstatus != UT_SUCCESS) {
+        snprintf(msg, CMOR_MAX_STRING, "Udunits: Error mapping dimless unit");
+        cmor_handle_error(msg, CMOR_CRITICAL);
     }
-    else {
-      cmode = NC_CLOBBER;
-    }
-
-    if ((CMOR_NETCDF_MODE == CMOR_REPLACE_4) || (CMOR_NETCDF_MODE == CMOR_REPLACE_3)) {
-      ierr = nc_create(outname,NC_CLOBBER|cmode,&ncid);
-    }
-    else if ((CMOR_NETCDF_MODE == CMOR_PRESERVE_4) || (CMOR_NETCDF_MODE == CMOR_PRESERVE_3)) {
-     /* ok first let's check if the file does exists or not */
-      fperr = NULL;
-      fperr=fopen(outname,"r");
-      if ( fperr != NULL) {
-	snprintf(msg,CMOR_MAX_STRING,"Output file ( %s ) already exists, remove file or use CMOR_REPLACE or CMOR_APPEND for CMOR_NETCDF_MODE value in cmor_setup",outname);
-	cmor_handle_error(msg,CMOR_CRITICAL);
-      }
-      ierr = nc_create(outname,NC_NOCLOBBER|cmode,&ncid); 
-    }
-    else if ((CMOR_NETCDF_MODE == CMOR_APPEND_4) || (CMOR_NETCDF_MODE == CMOR_APPEND_3)) {
-      /* ok first let's check if the file does exists or not */
-      fperr = NULL;
-      fperr = fopen(outname,"r");
-      if (fperr == NULL) {
-	/* ok it does not exists... we will open as new */
-	ierr = nc_create(outname,NC_CLOBBER|cmode,&ncid);
-      }
-      else { /*ok it was there already */
-	ierr = fclose(fperr);
-	/*cmor_vars[var_id].suffix_has_date=1;*/
-	ierr = nc_open(outname,NC_WRITE,&ncid);
-	if (ierr != NC_NOERR) {snprintf(msg,CMOR_MAX_STRING,"NetCDF Error (%i: %s) opening file: %s",ierr,nc_strerror(ierr),outname); cmor_handle_error(msg,CMOR_CRITICAL);}
-	ierr = nc_inq_dimid(ncid,"time",&i);
-	if (ierr != NC_NOERR) {snprintf(msg,CMOR_MAX_STRING,"NetCDF Error (%i: %s) looking for time dimension in file: %s",ierr,nc_strerror(ierr),outname); cmor_handle_error(msg,CMOR_CRITICAL);}
-	ierr = nc_inq_dimlen(ncid,i,&nctmp);
-	cmor_vars[var_id].ntimes_written=(int)nctmp;
-	if (ierr != NC_NOERR) {snprintf(msg,CMOR_MAX_STRING,"NetCDF Error (%i: %s) looking for time dimension length in file: %s",ierr,nc_strerror(ierr),outname); cmor_handle_error(msg,CMOR_CRITICAL);}
-	ierr = nc_inq_varid(ncid,cmor_vars[var_id].id,&cmor_vars[var_id].nc_var_id);
-	if (ierr != NC_NOERR) {snprintf(msg,CMOR_MAX_STRING,"NetCDF Error (%i: %s) looking for variable '%s' in file: %s",ierr,nc_strerror(ierr),cmor_vars[var_id].id,outname); cmor_handle_error(msg,CMOR_CRITICAL);}
-	ierr = nc_inq_varid(ncid,"time",&cmor_vars[var_id].time_nc_id);
-	if (ierr != NC_NOERR) {snprintf(msg,CMOR_MAX_STRING,"NetCDF Error (%i: %s) looking for time of variable '%s' in file: %s",ierr,nc_strerror(ierr),cmor_vars[var_id].id,outname); cmor_handle_error(msg,CMOR_CRITICAL);}
-	/* ok now we need to read the first time in here */
-	starts[0]=0;
-	ierr = nc_get_var1_double(ncid,cmor_vars[var_id].time_nc_id,&starts[0],&cmor_vars[var_id].first_time);
-        starts[0]=cmor_vars[var_id].ntimes_written-1;
-        ierr = nc_get_var1_double(ncid,cmor_vars[var_id].time_nc_id,&starts[0],&cmor_vars[var_id].last_time);
-	ierr = nc_inq_varid(ncid,"time_bnds",&i);
-	if (ierr != NC_NOERR) {
-	  snprintf(msg,CMOR_MAX_STRING,"NetCDF Error (%i: %s) looking for time bounds of variable '%s' in file: %s",ierr,nc_strerror(ierr),cmor_vars[var_id].id,outname);
-	  cmor_handle_error(msg,CMOR_WARNING);
-	  ierr = NC_NOERR;
-	}
-	else {
-	  cmor_vars[var_id].time_bnds_nc_id=i;
-          /* Here I need to store first/last bounds for appending issues */
-          starts[0]=cmor_vars[var_id].ntimes_written-1;
-          starts[1]=1;
-          ierr = nc_get_var1_double(ncid,cmor_vars[var_id].time_bnds_nc_id,&starts[0],&cmor_vars[var_id].last_bound);
-          starts[1]=0;
-          ierr = nc_get_var1_double(ncid,cmor_vars[var_id].time_bnds_nc_id,&starts[0],&cmor_vars[var_id].first_bound);
-         /*  printf("ok we read back in: %f, %f, associated: %i\n",cmor_vars[var_id].first_bound,cmor_vars[var_id].last_bound,cmor_vars[var_id].associated_ids[0]);*/
-	}
-	cmor_vars[var_id].initialized=ncid;
-      }
+
+    if (perunit != NULL)
+        ut_free(perunit);
+
+    perunit = ut_scale(.01, dimlessunit);
+    if (ut_get_status() != UT_SUCCESS) {
+        snprintf(msg, CMOR_MAX_STRING, "Udunits: Error creating percent unit");
+        cmor_handle_error(msg, CMOR_CRITICAL);
     }
-    else {
-      snprintf(msg,CMOR_MAX_STRING,"Unknown CMOR_NETCDF_MODE file mode: %i",CMOR_NETCDF_MODE);
-      cmor_handle_error(msg,CMOR_CRITICAL);
+    myutstatus = ut_map_name_to_unit("%", UT_ASCII, perunit);
+    if (myutstatus != UT_SUCCESS) {
+        snprintf(msg, CMOR_MAX_STRING, "Udunits: Error mapping percent unit");
+        cmor_handle_error(msg, CMOR_CRITICAL);
     }
-    if (ierr != NC_NOERR) {snprintf(msg,CMOR_MAX_STRING,"NetCDF Error (%i: %s) creating file: %s",ierr,nc_strerror(ierr),outname); cmor_handle_error(msg,CMOR_CRITICAL);}
-  }
-  /* we closed and reopened the same test, in case we were appending, in which case all decalration have been done if the open loop */
-  if (cmor_vars[varid].initialized==-1) { /* Variable never been thru cmor_write, we need to define everything */
-    /* define global attributes */
-    if (cmor_current_dataset.initiated==0) {
-      snprintf(msg,CMOR_MAX_STRING, "you need to initialize the dataset by calling cmor_dataset before calling cmor_write");
-      cmor_handle_error(msg,CMOR_NORMAL);
-      cmor_pop_traceback();
-      return 1;
+    ut_free(dimlessunit);
+    ut_free(perunit);
+
+/* -------------------------------------------------------------------- */
+/*      initialized dataset                                             */
+/* -------------------------------------------------------------------- */
+    for (i = 0; i < CMOR_MAX_ATTRIBUTES; i++) {
+        cmor_current_dataset.attributes[i].names[0] = '\0';
+        cmor_current_dataset.attributes[i].values[0] = '\0';
     }
+    cmor_current_dataset.nattributes = 0;
+    cmor_current_dataset.leap_year = 0;
+    cmor_current_dataset.leap_month = 0;
+    cmor_current_dataset.associate_file = 0;
+    cmor_current_dataset.associated_file = -1;
+/* -------------------------------------------------------------------- */
+/*      generates a unique id                                           */
+/* -------------------------------------------------------------------- */
+    cmor_generate_uuid();
+    strncpy(cmor_current_dataset.associated_file_name, "", CMOR_MAX_STRING);
+    strncpy(cmor_current_dataset.finalfilename, "", CMOR_MAX_STRING);
 
-    cleanup_varid = var_id;
+    for (i = 0; i < 12; i++)
+        cmor_current_dataset.month_lengths[i] = 0;
+    cmor_current_dataset.initiated = 0;
+
+    for (i = 0; i < CMOR_MAX_GRIDS; i++) {
+        strncpy(cmor_grids[i].mapping, "", CMOR_MAX_STRING);
+        cmor_grids[i].ndims = 0;
+        cmor_grids[i].nattributes = 0;
+
+        for (j = 0; j < CMOR_MAX_GRID_ATTRIBUTES; j++) {
+            cmor_grids[i].attributes_values[j] = 1.e20;
+            cmor_grids[i].attributes_names[j][0] = '\0';
+        }
 
-    /* Do we need to create the associated file or not ? */
-/*     if (cmor_current_dataset.associate_file == 1) {     */
-/*       if (cmor_current_dataset.associate_file == -1) { */
-/* 	/\* Creates the associated file *\/ */
-/* 	strncpytrim(cmor_current_dataset.associated_file_name,cmor_current_dataset.outpath,CMOR_MAX_STRING); */
-/* 	strncat(cmor_current_dataset.associated_file_name,"/metadata_file.nc",CMOR_MAX_STRING-strlen(cmor_current_dataset.associated_file_name)); */
-/* 	ierr = nc_create(cmor_current_dataset.associated_file_name,cmode,&cmor_current_dataset.associate_file); */
-/* 	if (ierr != NC_NOERR) { */
-/* 	  snprintf(msg,CMOR_MAX_STRING,"NetCDF Error (%i) creating metadata file: %s",ierr,cmor_current_dataset.associated_file_name);  */
-/* 	  cmor_handle_error(msg,CMOR_CRITICAL); */
-/* 	} */
-/*       } */
-/*       ncafid = cmor_current_dataset.associate_file; */
-/*       cmor_set_variable_attribute(var_id,"associated_files",'c',cmor_current_dataset.associated_file_name); */
-/*     } */
-/*     else { */
-/*       ncafid = ncid; */
-/*       cmor_set_variable_attribute_internal(var_id,"associated_files",'c',"self"); */
-/*     } */
-    ncafid = ncid;
-    /* Ok we need to set the associated_files attributes */
-    if (strcmp(cmor_tables[cmor_vars[var_id].ref_table_id].URL,"")==0) {
-      snprintf(msg,CMOR_MAX_STRING,"Your table (%s) does not contain a reference URL, please consider adding it",cmor_tables[cmor_vars[var_id].ref_table_id].table_id);
-      cmor_handle_error(msg,CMOR_WARNING);
-      strncpy(ctmp,"",CMOR_MAX_STRING);
+        if (cmor_grids[i].lats != NULL)
+            free(cmor_grids[i].lats);
+        if (cmor_grids[i].lons != NULL)
+            free(cmor_grids[i].lons);
+        if (cmor_grids[i].blats != NULL)
+            free(cmor_grids[i].blats);
+        if (cmor_grids[i].blons != NULL)
+            free(cmor_grids[i].blons);
+
+        cmor_grids[i].lats = NULL;
+        cmor_grids[i].lons = NULL;
+        cmor_grids[i].blats = NULL;
+        cmor_grids[i].blons = NULL;
+
+        cmor_grids[i].istimevarying = 0;
+        cmor_grids[i].nvertices = 0;
+
+        for (j = 0; j < 6; j++)
+            cmor_grids[i].associated_variables[j] = -1;
     }
-    else {
-      strncpy(ctmp2,cmor_current_dataset.outpath,CMOR_MAX_STRING); /* remembers the path to stick it back later */
-/*       strncpy(cmor_current_dataset.outpath,cmor_tables[cmor_vars[var_id].ref_table_id].URL,CMOR_MAX_STRING); */
-/*       cmor_create_output_path(var_id,ctmp3); */
-/*       strncpy(cmor_current_dataset.outpath,ctmp2,CMOR_MAX_STRING); /\* puts back the right base path *\/ */
-      strncpy(ctmp3,cmor_tables[cmor_vars[var_id].ref_table_id].URL,CMOR_MAX_STRING);
-      strcpy(ctmp,"baseURL: ");
-      strncat(ctmp,ctmp3,CMOR_MAX_STRING-strlen(ctmp));
-      strncat(ctmp," ",CMOR_MAX_STRING-strlen(ctmp));
-
-    }
-
-    /* prepares the common suffix for all fixed file */
-    strcpy(ctmp2,"");
-    /* realm */
-    /* first check if the variable itslef has a realm */
-    if (cmor_tables[cmor_vars[var_id].ref_table_id].vars[cmor_vars[var_id].ref_var_id].realm[0]!='\0') {
-      /* we want to copy only the first realm here */
-      for (i=0;i<strlen(cmor_tables[cmor_vars[var_id].ref_table_id].vars[cmor_vars[var_id].ref_var_id].realm);i++) {
-	if (cmor_tables[cmor_vars[var_id].ref_table_id].vars[cmor_vars[var_id].ref_var_id].realm[i]!=' ') {
-	  ctmp3[i]=cmor_tables[cmor_vars[var_id].ref_table_id].vars[cmor_vars[var_id].ref_var_id].realm[i];
-	  ctmp3[i+1]='\0';
-	}
-	else {
-	  break;
+
+    cmor_pop_traceback();
+    return( 0 );
+
+}
+
+/************************************************************************/
+/*                     cmor_open_inpathFile()                           */
+/************************************************************************/
+json_object *cmor_open_inpathFile(char *szFilename ) {
+    FILE *table_file;
+    char szFullName[CMOR_MAX_STRING];
+    char msg[CMOR_MAX_STRING];
+    char *buffer;
+    int  nFileSize;
+    json_object *oJSON;
+
+    cmor_add_traceback( "cmor_open_inpathFile" );
+
+    /* -------------------------------------------------------------------- */
+    /*      Try to find file in current directory or in cmor_iput_path      */
+    /* -------------------------------------------------------------------- */
+    strcpy(szFullName, szFilename);
+    table_file = fopen( szFullName, "r" );
+    int read_size;
+
+    if( table_file == NULL ) {
+        if( szFilename[0] != '/' ) {
+            snprintf( szFullName, CMOR_MAX_STRING, "%s/%s", cmor_input_path,
+                      szFilename );
+            table_file = fopen( szFullName, "r" );
+        }
+
+        if( table_file == NULL ) {
+            snprintf( szFullName, CMOR_MAX_STRING, "Could not find file: %s",
+                      szFilename );
+            cmor_handle_error( szFullName, CMOR_NORMAL );
+            cmor_ntables -= 1;
+            cmor_pop_traceback(  );
+            return( NULL );
+        }
+    }
+
+/* -------------------------------------------------------------------- */
+/*      Read the entire file in memory                                 */
+/* -------------------------------------------------------------------- */
+    fseek(table_file,0,SEEK_END);
+    nFileSize = ftell( table_file );
+    rewind( table_file );
+    buffer = (char *) malloc( sizeof(char) * (nFileSize + 1) );
+    read_size = fread( buffer, sizeof(char), nFileSize, table_file );
+    buffer[nFileSize] = '\0';
+
+/* -------------------------------------------------------------------- */
+/*      print errror and exist if this is not a JSON file               */
+/* -------------------------------------------------------------------- */
+    if(buffer[0]!= '{') {
+        free(buffer);
+        buffer=NULL;
+        snprintf( msg, CMOR_MAX_STRING,
+                  "Could not understand file \"%s\" Is this a JSON CMOR table?",
+                   szFullName  );
+            cmor_handle_error( msg, CMOR_CRITICAL );
+            cmor_ntables--;
+            cmor_pop_traceback(  );
+        return(NULL);
+    }
+/* -------------------------------------------------------------------- */
+/*      print error and exit if file was not completely read            */
+/* -------------------------------------------------------------------- */
+    if( nFileSize != read_size ) {
+        free(buffer);
+        buffer=NULL;
+        snprintf( msg, CMOR_MAX_STRING,
+                  "Could not read file %s check file permission",
+                   szFullName  );
+            cmor_handle_error( msg, CMOR_CRITICAL );
+            cmor_ntables--;
+            cmor_pop_traceback(  );
+        return(NULL);
+    }
+
+/* -------------------------------------------------------------------- */
+/*     parse buffer into json object                                    */
+/* -------------------------------------------------------------------- */
+    oJSON = json_tokener_parse(buffer);
+    if( oJSON == NULL ){
+        snprintf( msg, CMOR_MAX_STRING,
+                "Please validate JSON File!\n! "
+                "USE: http://jsonlint.com/\n! "
+                "Syntax Error in file: %s\n!  "
+                "%s",szFullName, buffer );
+        cmor_handle_error( msg, CMOR_CRITICAL );
+    }
+    cmor_pop_traceback();
+    if(buffer != NULL) {
+        free(buffer);
+        buffer=NULL;
+    }
+    return(oJSON);
+}
+
+/************************************************************************/
+/*                         cmor_dataset_json()                          */
+/************************************************************************/
+int cmor_dataset_json(char * ressource){
+    extern cmor_dataset_def cmor_current_dataset;
+
+    int ierr;
+    cmor_add_traceback( "cmor_dataset_json" );
+    cmor_is_setup();
+
+    char szVal[CMOR_MAX_STRING];
+    json_object *json_obj;
+
+    strncpytrim( cmor_current_dataset.path_template,
+                        CMOR_DEFAULT_PATH_TEMPLATE,
+                        CMOR_MAX_STRING);
+
+    strncpytrim( cmor_current_dataset.file_template,
+                        CMOR_DEFAULT_FILE_TEMPLATE,
+                        CMOR_MAX_STRING );
+
+    strncpytrim( cmor_current_dataset.furtherinfourl,
+                 CMOR_DEFAULT_FURTHERURL_TEMPLATE,
+                        CMOR_MAX_STRING );
+
+    json_obj = cmor_open_inpathFile(ressource);
+    if(json_obj == NULL) {
+        cmor_handle_error( "JSON resource file not found", CMOR_CRITICAL );
+        cmor_pop_traceback();
+        return( 1 );
+    }
+    cmor_set_cur_dataset_attribute_internal(CMOR_INPUTFILENAME, ressource, 1);
+    cmor_set_cur_dataset_attribute_internal(GLOBAL_CV_FILENAME,
+                                            TABLE_CONTROL_FILENAME, 1);
+
+    json_object_object_foreach(json_obj, key, value) {
+        if(key[0] == '#') {
+            continue;
+        }
+        strcpy(szVal, json_object_get_string(value));
+
+        if(strcmp(key, FILE_OUTPUTPATH) == 0 ) {
+            strncpytrim( cmor_current_dataset.outpath,
+                    szVal,
+                    CMOR_MAX_STRING );
+            continue;
+        } else if(strcmp(key, FILE_PATH_TEMPLATE ) == 0 ){
+            strncpytrim( cmor_current_dataset.path_template,
+                    szVal,
+                    CMOR_MAX_STRING );
+            continue;
+        } else if(strcmp(key, FILE_NAME_TEMPLATE) == 0 ){
+            strncpytrim( cmor_current_dataset.file_template,
+                    szVal,
+                    CMOR_MAX_STRING );
+            continue;
+        } else if(strcmp(key, GLOBAL_ATT_FURTHERINFOURL) == 0 ){
+            strncpytrim( cmor_current_dataset.furtherinfourl,
+                    szVal,
+                    CMOR_MAX_STRING );
+
+        }
+
+        cmor_set_cur_dataset_attribute_internal(key, szVal, 1);
+    }
+
+    cmor_current_dataset.initiated = 1;
+    cmor_generate_uuid();
+/* -------------------------------------------------------------------- */
+/*  Verify if the output directory exist                                */
+/* -------------------------------------------------------------------- */
+    ierr =   cmor_outpath_exist(cmor_current_dataset.outpath);
+    if( ierr ) {
+        cmor_pop_traceback();
+        return (1);
+    }
+    if(json_obj != NULL) {
+        json_object_put(json_obj);
+    }
+    cmor_pop_traceback();
+    return( 0 );
+}
+
+/************************************************************************/
+/*                     cmor_put_nc_num_attribute()                      */
+/************************************************************************/
+int cmor_put_nc_num_attribute(int ncid, int nc_var_id, char *name, char type,
+        double value, char *var_name) {
+    char msg[CMOR_MAX_STRING];
+    int ierr;
+
+    cmor_add_traceback("cmor_put_nc_num_attribute");
+    ierr = 0;
+    if (type == 'i') {
+        ierr = nc_put_att_double(ncid, nc_var_id, name, NC_INT, 1, &value);
+    } else if (type == 'l') {
+        ierr = nc_put_att_double(ncid, nc_var_id, name, NC_INT, 1, &value);
+    } else if (type == 'f') {
+        ierr = nc_put_att_double(ncid, nc_var_id, name, NC_FLOAT, 1, &value);
+    } else if (type == 'd') {
+        ierr = nc_put_att_double(ncid, nc_var_id, name, NC_DOUBLE, 1, &value);
+    }
+    if (ierr != NC_NOERR) {
+        snprintf(msg, CMOR_MAX_STRING,
+                "NetCDF Error (%i: %s) setting numerical attribute"
+                        " %s on variable %s", ierr, nc_strerror(ierr), name,
+                var_name);
+        cmor_handle_error(msg, CMOR_CRITICAL);
+    }
+    cmor_pop_traceback();
+    return( ierr );
+}
+
+/************************************************************************/
+/*                     cmor_put_nc_char_attribute()                     */
+/************************************************************************/
+int cmor_put_nc_char_attribute(int ncid,
+        int nc_var_id,
+        char *name,
+        char *value,
+        char *var_name) {
+    int k, ierr;
+    char msg[CMOR_MAX_STRING];
+
+    ierr = 0;
+    cmor_add_traceback("cmor_put_nc_char_attribute");
+    k = strlen(value);
+    if (k != 0) {
+        value[k] = '\0';
+        ierr = nc_put_att_text(ncid, nc_var_id, name, k + 1, value);
+        if (ierr != NC_NOERR) {
+            snprintf(msg, CMOR_MAX_STRING,
+                    "NetCDF Error (%i: %s) setting attribute: '%s' "
+                    "on variable (%s)",
+                    ierr, nc_strerror(ierr), name, var_name);
+            cmor_handle_error(msg, CMOR_CRITICAL);
+        }
+    }
+    cmor_pop_traceback();
+    return( ierr) ;
+}
+/************************************************************************/
+/*                  cmor_set_cur_dataset_attribute()                    */
+/************************************************************************/
+int cmor_set_cur_dataset_attribute(char *name, char *value, int optional) {
+  int rc;
+  cmor_add_traceback("cmor_set_cur_dataset_attribute");
+  cmor_is_setup();
+
+  rc = cmor_set_cur_dataset_attribute_internal(name, value, optional);
+
+  cmor_pop_traceback();
+  return(rc);
+}
+
+/************************************************************************/
+/*              cmor_set_cur_dataset_attribute_internal()               */
+/************************************************************************/
+int cmor_set_cur_dataset_attribute_internal(char *name, char *value,
+        int optional) {
+    int i, n;
+    char msg[CMOR_MAX_STRING];
+    extern cmor_dataset_def cmor_current_dataset;
+
+    cmor_add_traceback("cmor_set_cur_dataset_attribute_internal");
+    cmor_is_setup();
+
+    cmor_trim_string(value, msg);
+
+    if ((int) strlen(name) > CMOR_MAX_STRING) {
+        snprintf(msg, CMOR_MAX_STRING,
+                "CMOR Dataset error, attribute name: %s; length (%i) is "
+                "greater than limit: %i",
+                name, (int) strlen(name), CMOR_MAX_STRING);
+        cmor_handle_error(msg, CMOR_NORMAL);
+        cmor_pop_traceback();
+        return( 1 );
+    }
+
+    if ((value == NULL) || (msg[0] == '\0')) {
+        if (optional == 1) {
+            cmor_pop_traceback();
+            return( 0 );
+        } else {
+            snprintf(msg, CMOR_MAX_STRING,
+                    "CMOR Dataset error, required attribute %s was not "
+                    "passed or blanked",
+                    name);
+            cmor_handle_error(msg, CMOR_CRITICAL);
+            cmor_pop_traceback();
+            return( 1 );
+        }
+    }
+
+    cmor_trim_string(name, msg);
+    n = cmor_current_dataset.nattributes;
+
+    for (i = 0; i <= cmor_current_dataset.nattributes; i++) {
+        if (strcmp(msg, cmor_current_dataset.attributes[i].names) == 0) {
+            n = i;
+            cmor_current_dataset.nattributes -= 1;
+            break;
+        }
+    }
+
+    if (n >= CMOR_MAX_ATTRIBUTES) {
+        sprintf(msg,
+                "Setting dataset attribute: %s, we already have %i "
+                "elements set which is the max, this element won't be set",
+                name, CMOR_MAX_ELEMENTS);
+        cmor_handle_error(msg, CMOR_NORMAL);
+        cmor_pop_traceback();
+        return( 1 );
+    }
+
+    strncpy(cmor_current_dataset.attributes[n].names, msg, CMOR_MAX_STRING);
+    cmor_trim_string(value, msg);
+    strncpytrim(cmor_current_dataset.attributes[n].values, msg, CMOR_MAX_STRING);
+    cmor_current_dataset.nattributes += 1;
+    cmor_pop_traceback();
+    return( 0 );
+}
+
+/************************************************************************/
+/*                   cmor_get_cur_dataset_attribute()                   */
+/************************************************************************/
+int cmor_get_cur_dataset_attribute( char *name, char *value ) {
+    int i, n;
+    char msg[CMOR_MAX_STRING];
+    extern cmor_dataset_def cmor_current_dataset;
+
+    cmor_add_traceback( "cmor_get_cur_dataset_attribute" );
+    cmor_is_setup(  );
+    if( strlen( name ) > CMOR_MAX_STRING ) {
+	snprintf( msg, CMOR_MAX_STRING,
+		  "CMOR Dataset: %s length is greater than limit: %i",
+		  name, CMOR_MAX_STRING );
+	cmor_handle_error( msg, CMOR_NORMAL );
+	cmor_pop_traceback(  );
+	return( 1 );
+    }
+    n = -1;
+    for( i = 0; i <= cmor_current_dataset.nattributes; i++ ) {
+	if( strcmp( name, cmor_current_dataset.attributes[i].names ) == 0 )
+	    n = i;
+    }
+    if( n == -1 ) {
+	snprintf( msg, CMOR_MAX_STRING,
+		  "CMOR Dataset: current dataset does not have attribute : %s",
+		  name );
+	cmor_handle_error( msg, CMOR_NORMAL );
+	cmor_pop_traceback(  );
+	return( 1 );
+    }
+    strncpy( value, cmor_current_dataset.attributes[n].values,
+	     CMOR_MAX_STRING );
+    cmor_pop_traceback(  );
+    return( 0 );
+}
+
+
+
+
+
+/************************************************************************/
+/*                   cmor_has_cur_dataset_attribute()                   */
+/************************************************************************/
+int cmor_has_cur_dataset_attribute( char *name ) {
+    int i, n;
+    char msg[CMOR_MAX_STRING];
+    extern cmor_dataset_def cmor_current_dataset;
+
+    cmor_add_traceback( "cmor_has_cur_dataset_attribute" );
+    cmor_is_setup(  );
+    if( ( int ) strlen( name ) > CMOR_MAX_STRING ) {
+	snprintf( msg, CMOR_MAX_STRING,
+		  "CMOR Dataset: attribute name (%s) length\n! "
+	          "(%i) is greater than limit: %i",
+		  name, ( int ) strlen( name ), CMOR_MAX_STRING );
+	cmor_handle_error( msg, CMOR_NORMAL );
+	cmor_pop_traceback(  );
+	return( 1 );
+    }
+    n = -1;
+    for( i = 0; i <= cmor_current_dataset.nattributes; i++ ) {
+	if( strcmp( name, cmor_current_dataset.attributes[i].names ) == 0 )
+	    n = i;
+    }
+    if( n == -1 ) {
+	cmor_pop_traceback(  );
+	return( 1 );
+    }
+    cmor_pop_traceback(  );
+    return( 0 );
+}
+
+/************************************************************************/
+/*                      cmor_outpath_exist()                            */
+/************************************************************************/
+int  cmor_outpath_exist(char *outpath) {
+    struct stat buf;
+    char msg[CMOR_MAX_STRING];
+    FILE *test_file = NULL;
+
+    cmor_add_traceback( "cmor_outpath_exist" );
+    cmor_is_setup(  );
+
+/* -------------------------------------------------------------------- */
+/*      Very first thing is to make sure the output path does exist     */
+/* -------------------------------------------------------------------- */
+    if( stat( cmor_current_dataset.outpath, &buf ) == 0 ) {
+        if( S_ISREG( buf.st_mode ) != 0 ) {
+            sprintf( msg,
+                     "You defined your output directory to be: '%s',\n! "
+                     "but it appears to be a regular file not a directory",
+                     cmor_current_dataset.outpath );
+            cmor_handle_error( msg, CMOR_CRITICAL );
+            cmor_pop_traceback(  );
+            return(1);
+        } else if( S_ISDIR( buf.st_mode ) == 0 ) {
+            sprintf( msg,
+                     "You defined your output directory to be: '%s',\n! "
+                     "but it appears to be a special file not a directory",
+                     cmor_current_dataset.outpath );
+            cmor_handle_error( msg, CMOR_CRITICAL );
+            cmor_pop_traceback(  );
+            return(1);
+
+        }
+/* -------------------------------------------------------------------- */
+/*      ok if not root then test permssions                             */
+/* -------------------------------------------------------------------- */
+        if( getuid(  ) != 0 ) {
+            strcpy( msg, cmor_current_dataset.outpath );
+            strncat( msg, "/tmp.cmor.test", CMOR_MAX_STRING );
+            test_file = fopen( msg, "w" );
+            if( test_file == NULL ) {
+
+                sprintf( msg,
+                         "You defined your output directory to be: '%s', but\n! "
+                        "you do not have read/write permissions on it",
+                         cmor_current_dataset.outpath );
+                cmor_handle_error( msg, CMOR_CRITICAL );
+                cmor_pop_traceback(  );
+                return(1);
+
+            } else {
+                fclose( test_file );
+                remove( msg );
+            }
+        }
+    } else if( errno == ENOENT ) {
+        sprintf( msg,
+                 "You defined your output directory to be: '%s', but this\n! "
+                "directory does not exist",
+                 cmor_current_dataset.outpath );
+        cmor_handle_error( msg, CMOR_CRITICAL );
+        cmor_pop_traceback(  );
+        return(1);
+
+
+    } else if( errno == EACCES ) {
+        sprintf( msg,
+                 "You defined your output directory to be: '%s', but we\n! "
+                "cannot access it, please check permissions",
+                 cmor_current_dataset.outpath );
+        cmor_handle_error( msg, CMOR_CRITICAL );
+        cmor_pop_traceback(  );
+        return(1);
+
+    }
+    cmor_pop_traceback(  );
+    return(0);
+}
+
+
+/************************************************************************/
+/*                    cmor_convert_string_to_list()                     */
+/************************************************************************/
+int cmor_convert_string_to_list( char *invalues, char type, void **target,
+				 int *nelts ) {
+    int i, j, k, itmp;
+    long l;
+    double d;
+    float f;
+    char values[CMOR_MAX_STRING];
+    char msg[CMOR_MAX_STRING];
+    char msg2[CMOR_MAX_STRING];
+
+    j = 1;
+    cmor_add_traceback( "cmor_convert_string_to_list" );
+    
+/* -------------------------------------------------------------------- */
+/*      trim this so no extra spaces after or before                    */
+/* -------------------------------------------------------------------- */
+    strncpytrim( values, invalues, CMOR_MAX_STRING );
+    k = 1;			/* 1 means we are on characters */
+    for( i = 0; i < strlen( values ); i++ ) {
+	if( values[i] == ' ' ) {
+	    if( k == 1 ) {
+		j++;
+		k = 0;
+	    }
+	    while( values[i + 1] == ' ' )
+		i++;
+	} else {
+	    k = 1;
 	}
-      }
-      strncattrim(ctmp2,ctmp3,CMOR_MAX_STRING-strlen(ctmp2));
     }
-    else { /*ok it didn't so we're using the value from the table */
-      strncattrim(ctmp2,cmor_tables[cmor_vars[var_id].ref_table_id].realm,CMOR_MAX_STRING-strlen(ctmp2));
+
+    *nelts = j;
+
+    if( type == 'i' )
+	*target = malloc( j * sizeof ( int ) );
+    else if( type == 'f' )
+	*target = malloc( j * sizeof ( float ) );
+    else if( type == 'l' )
+	*target = malloc( j * sizeof ( long ) );
+    else if( type == 'd' )
+	*target = malloc( j * sizeof ( double ) );
+    else if( type == 'c' )
+	*target = ( char ** ) malloc( j * sizeof ( char * ) );
+    else {
+	snprintf( msg, CMOR_MAX_STRING,
+		  "unknown conversion '%c' for list: %s", type, values );
+	cmor_handle_error( msg, CMOR_CRITICAL );
+    }
+
+    if( *target == NULL ) {
+	snprintf( msg, CMOR_MAX_STRING, "mallocing '%c' for list: %s",
+		  type, values );
+	cmor_handle_error( msg, CMOR_CRITICAL );
+    }
+
+    j = 0;
+    msg[0] = '\0';
+    k = 0;
+    itmp = 1;
+    for( i = 0; i < strlen( values ); i++ ) {
+	if( values[i] == ' ' ) {	/* ok next world */
+	    if( itmp == 1 ) {
+		itmp = 0;
+		msg[i - k] = '\0';
+		strncpytrim( msg2, msg, CMOR_MAX_STRING );
+		if( type == 'i' ) {
+		    sscanf( msg2, "%d", &itmp );
+		    ( ( int * ) *target )[j] = ( int ) itmp;
+		} else if( type == 'l' ) {
+		    sscanf( msg2, "%ld", &l );
+		    ( ( long * ) *target )[j] = ( long ) l;
+		} else if( type == 'f' ) {
+		    sscanf( msg2, "%f", &f );
+		    ( ( float * ) *target )[j] = ( float ) f;
+		} else if( type == 'd' ) {
+		    sscanf( msg2, "%lf", &d );
+		    ( ( double * ) *target )[j] = ( double ) d;
+		} else if( type == 'c' ) {
+		    ( ( char ** ) *target )[j] =
+			( char * ) malloc( 13 * sizeof ( char ) );
+		    strncpy( ( ( char ** ) *target )[j], msg2, 12 );
+		}
+		j++;
+	    }
+	    while( values[i + 1] == ' ' )
+		i++;
+	    k = i + 1;
+	} else {
+	    msg[i - k] = values[i];
+	    itmp = 1;
+	}
     }
-    strncattrim(ctmp2,"_",CMOR_MAX_STRING-strlen(ctmp2));
+/* -------------------------------------------------------------------- */
+/*      ok now the last one                                             */
+/* -------------------------------------------------------------------- */
+    msg[i - k] = '\0';
+
+    strncpytrim( msg2, msg, CMOR_MAX_STRING );
+    if( type == 'i' ) {
+	sscanf( msg2, "%d", &itmp );
+	( ( int * ) *target )[j] = ( int ) itmp;
+    } else if( type == 'l' ) {
+	sscanf( msg2, "%ld", &l );
+	( ( long * ) *target )[j] = ( long ) l;
+    } else if( type == 'f' ) {
+	sscanf( msg2, "%f", &f );
+	( ( float * ) *target )[j] = ( float ) f;
+    } else if( type == 'd' ) {
+	sscanf( msg2, "%lf", &d );
+	( ( double * ) *target )[j] = ( double ) d;
+    } else if( type == 'c' ) {
+	( ( char ** ) *target )[j] =
+	    ( char * ) malloc( 13 * sizeof ( char ) );
+	strncpy( ( ( char ** ) *target )[j], msg2, 12 );
+    }
+    cmor_pop_traceback(  );
+    return( 0 );
+}
+
+/************************************************************************/
+/*                     cmor_define_zfactors_vars()                      */
+/************************************************************************/
+int cmor_define_zfactors_vars( int var_id, int ncid, int *nc_dim,
+			       char *formula_terms, int *nzfactors,
+			       int *zfactors, int *nc_zfactors, int i,
+			       int dim_bnds ) {
+    char msg[CMOR_MAX_STRING];
+    char ctmp[CMOR_MAX_STRING];
+    int ierr = 0, l, m, k, n, j, m2, found, nelts, *int_list = NULL;
+    int dim_holder[CMOR_MAX_VARIABLES];
+    int lnzfactors;
+    int ics, icd, icdl, ia;
+
+    cmor_add_traceback( "cmor_define_zfactors_vars" );
+    cmor_is_setup(  );
+    lnzfactors = *nzfactors;
     
-    /* now appends the part to the gridspec file */
-    strncat(ctmp,"gridspecFile: ",CMOR_MAX_STRING-strlen(ctmp));
-    /* add the variable name */
-/*     strncat(ctmp3,"gridspec/r0/gridspec_",CMOR_MAX_STRING-strlen(ctmp3)); */
-    /* strncat(ctmp3,"gridspec",CMOR_MAX_STRING-strlen(ctmp3)); */
-    /* strncat(ctmp3,cmor_tables[cmor_vars[var_id].ref_table_id].table_id,CMOR_MAX_STRING-strlen(ctmp3)); */
-    /* Put here code for gridspec name */
-    strncpy(ctmp3,"gridspec_",CMOR_MAX_STRING);
-    strncat(ctmp3,ctmp2,CMOR_MAX_STRING-strlen(ctmp3));
-    strncat(ctmp3,"fx_",CMOR_MAX_STRING-strlen(ctmp3));
-    cmor_get_cur_dataset_attribute("model_id",msg);
-    for (i=0;i<strlen(msg);i++) {
-      if (cmor_convert_char_to_hyphen(msg[i])==1) {
-	msg[i]='-';
-      }
-    }
-    /* removes trailing "-" */
-    for (i=strlen(msg)-1;i>0;i--) {
-      if (msg[i]=='-') {
-	msg[i]='\0';
-      }
-      else {
-	break;
-      }
-    }
-    strncat(ctmp3,msg,CMOR_MAX_STRING-strlen(ctmp3));
-    if (strcmp(ctmp4,"")!=0) {
-      strncat(ctmp3,"_",CMOR_MAX_STRING-strlen(ctmp3));
-      strncat(ctmp3,ctmp4,CMOR_MAX_STRING-strlen(ctmp3));
-    }
-    strncat(ctmp3,"_r0i0p0.nc",CMOR_MAX_STRING-strlen(ctmp3));
-
-    strncat(ctmp,ctmp3,CMOR_MAX_STRING-strlen(ctmp));
-
-    if (cmor_has_variable_attribute(var_id,"cell_measures")==0) {
-      /*Ok does it contain "area" */
-      cmor_get_variable_attribute(var_id,"cell_measures",&ctmp5[0]);
-      k=-1;
-      if (strlen(ctmp5)>5) {
-	for (i=0;i<strlen(ctmp5)-5;i++) {
-	  if (strncmp(&ctmp5[i],"area:",5)==0) {
-	    k=i+6;
-	    break;
-	  }
+/* -------------------------------------------------------------------- */
+/*      now figures out the variables for z_factor and loops thru it    */
+/* -------------------------------------------------------------------- */
+    n = strlen( formula_terms );
+    for( j = 0; j < n; j++ ) {
+	while( ( formula_terms[j] != ':' ) && ( j < n ) ) {
+	    j++;
 	}
-      }
-      if (k!=-1) { /*ok we have this guy, let's figure out the name */
-	for(i=k;i<strlen(ctmp5);i++) {
-	  if ((ctmp5[i]==' ') || (ctmp5[i]=='\0')) break;
-	  ctmp6[i-k]=ctmp5[i];
+/* -------------------------------------------------------------------- */
+/*      at this point we skipped the name thingy                        */
+/* -------------------------------------------------------------------- */
+	j++;
+	while( formula_terms[j] == ' ' ) {
+	    j++;
+	}			/* ok we skipped the blanks as well */
+	/* ok now we can start scanning the zvar name */
+	k = j;
+	while( ( formula_terms[j] != ' ' ) && ( formula_terms[j] != '\0' ) ) {
+	    ctmp[j - k] = formula_terms[j];
+	    j++;
 	}
-	ctmp6[i-k]='\0';
 	
-	/* now appends the part to the area file */
-	strncat(ctmp," ",CMOR_MAX_STRING-strlen(ctmp));
-	strncat(ctmp,ctmp6,CMOR_MAX_STRING-strlen(ctmp));
-	strncat(ctmp,": ",CMOR_MAX_STRING-strlen(ctmp));
-	/* add the variable name */
-	/*     strncat(ctmp3,"cellArea/r0/cellArea_",CMOR_MAX_STRING-strlen(ctmp3)); */
-	strncpy(ctmp3,ctmp6,CMOR_MAX_STRING);
-	strncat(ctmp3,"_fx_",CMOR_MAX_STRING-strlen(ctmp3));
-	/* strncat(ctmp3,cmor_tables[cmor_vars[var_id].ref_table_id].table_id,CMOR_MAX_STRING-strlen(ctmp3)); */
-	/* strncat(ctmp3,"_",CMOR_MAX_STRING-strlen(ctmp3)); */
-	cmor_get_cur_dataset_attribute("model_id",msg);
-	for (i=0;i<strlen(msg);i++) {
-	  if (cmor_convert_char_to_hyphen(msg[i])==1) {
-	    msg[i]='-';
-	  }
+/* -------------------------------------------------------------------- */
+/*      all right here we reach a  blank, the name is finsihed          */
+/* -------------------------------------------------------------------- */
+	ctmp[j - k] = '\0';
+	
+/* -------------------------------------------------------------------- */
+/*      here we try to match with the actual variable                   */
+/* -------------------------------------------------------------------- */
+	l = -1;
+	for( k = 0; k < cmor_nvars + 1; k++ ) {
+	    if( strcmp( ctmp, cmor_vars[k].id ) == 0 ) {
+/* -------------------------------------------------------------------- */
+/*      ok that is not enough! We need to know if the dims match!       */
+/* -------------------------------------------------------------------- */
+		nelts = 0;
+		for( m = 0; m < cmor_vars[k].ndims; m++ ) {
+		    for( m2 = 0; m2 < cmor_vars[var_id].ndims; m2++ ) {
+			if( cmor_vars[k].axes_ids[m] ==
+			    cmor_vars[var_id].axes_ids[m2] ) {
+			    nelts += 1;
+			    break;
+			}
+		    }
+		}
+		if( nelts == cmor_vars[k].ndims ) {
+		    l = k;
+		    break;
+		}
+	    }
 	}
-	/* removes trailing "-" */
-	for (i=strlen(msg)-1;i>0;i--) {
-	  if (msg[i]=='-') {
-	    msg[i]='\0';
-	  }
-	  else {
-	    break;
-	  }
+
+	if( l == -1 ) {
+/* -------------------------------------------------------------------- */
+/*      ok this looks bad! last hope is that the                        */
+/*      zfactor is actually a coordinate!                               */
+/* -------------------------------------------------------------------- */
+	    found = 0;
+	    for( m = 0; m < cmor_vars[var_id].ndims; m++ ) {
+		if( strcmp( cmor_axes[cmor_vars[var_id].axes_ids[m]].id,
+		        ctmp ) == 0 ) {
+		    found = 1;
+		    break;
+		}
+/* -------------------------------------------------------------------- */
+/*      ok this axes has bounds let's check against his name + _bnds then*/
+/* -------------------------------------------------------------------- */
+		if( cmor_axes[cmor_vars[var_id].axes_ids[m]].bounds != NULL ) {
+
+		    sprintf( msg, "%s_bnds",
+			     cmor_axes[cmor_vars[var_id].axes_ids[m]].id );
+		    if( strcmp( msg, ctmp ) == 0 ) {
+			found = 1;
+			break;
+		    }
+		}
+	    }
+	    if( found == 0 ) {
+		snprintf( msg, CMOR_MAX_STRING,
+		        "could not find the zfactor variable: %s,\n! "
+		        "please define it first, while defining zfactors\n! "
+		        "for variable %s (table %s)",
+		        ctmp, cmor_vars[var_id].id,
+		        cmor_tables[cmor_vars[var_id].
+		                    ref_table_id].szTable_id );
+		cmor_handle_error( msg, CMOR_CRITICAL );
+		cmor_pop_traceback(  );
+		return( 1 );
+	    }
+	} else {
+	    found = 0;
 	}
-	strncat(ctmp3,msg,CMOR_MAX_STRING-strlen(ctmp3));
-	if (strcmp(ctmp4,"")!=0) {
-	  strncat(ctmp3,"_",CMOR_MAX_STRING-strlen(ctmp3));
-	  strncat(ctmp3,ctmp4,CMOR_MAX_STRING-strlen(ctmp3));
+/* -------------------------------------------------------------------- */
+/*      now figure out if we already defined this zfactor var           */
+/* -------------------------------------------------------------------- */
+
+	for( k = 0; k < lnzfactors; k++ )
+	    if( zfactors[k] == l )
+		found = 1;
+	if( found == 0 ) {
+/* -------------------------------------------------------------------- */
+/*      ok it is a new one                                              */
+/* -------------------------------------------------------------------- */
+
+	    zfactors[lnzfactors] = l;
+/* -------------------------------------------------------------------- */
+/*      ok we need to figure out the dimensions of that zfactor         */
+/*      and then define the variable                                    */
+/* -------------------------------------------------------------------- */
+	    for( k = 0; k < cmor_vars[l].ndims; k++ ) {
+		found = 0;
+		for( m = 0; m < cmor_vars[var_id].ndims; m++ ) {
+		    if( strcmp
+			( cmor_axes[cmor_vars[var_id].axes_ids[m]].id,
+			  cmor_axes[cmor_vars[l].axes_ids[k]].id ) == 0 ) {
+			found = 1;
+			dim_holder[k] = nc_dim[m];
+/* -------------------------------------------------------------------- */
+/*      ok here we mark this factor has time varying if necessary       */
+/*      so that we can count the number of time written and make        */
+/*      sure it matches the variable                                    */
+/* -------------------------------------------------------------------- */
+			if( cmor_axes[cmor_vars[var_id].axes_ids[m]].axis=='T'){
+			    for( ia = 0; ia < 10; ia++ ) {
+				if( cmor_vars[var_id].associated_ids[ia]== -1) {
+				    cmor_vars[var_id].associated_ids[ia] = l;
+				    break;
+				}
+			    }
+			}
+			break;
+		    }
+		}
+		if( found == 0 ) {
+		    snprintf( msg, CMOR_MAX_STRING,
+		            "variable \"%s\" (table: %s) has axis \"%s\"\n! "
+		            "defined with formula terms, but term \"%s\"\n! "
+		            "depends on axis \"%s\" which is not part of\n! "
+		            "the variable",
+		            cmor_vars[var_id].id,
+		            cmor_tables[cmor_vars[var_id].
+		                        ref_table_id].szTable_id,
+		                        cmor_axes[cmor_vars[var_id].axes_ids[i]].id,
+		                        ctmp,
+		                        cmor_axes[cmor_vars[l].axes_ids[k]].id );
+		    cmor_handle_error( msg, CMOR_CRITICAL );
+		}
+	    }
+/* -------------------------------------------------------------------- */
+/*      at that point we can define the var                             */
+/* -------------------------------------------------------------------- */
+	    if( dim_bnds == -1 ) {	/* we are not defining a bnds one */
+		if( cmor_vars[l].type == 'd' )
+		    ierr =
+			nc_def_var( ncid, cmor_vars[l].id, NC_DOUBLE,
+				    cmor_vars[l].ndims, &dim_holder[0],
+				    &nc_zfactors[lnzfactors] );
+		else if( cmor_vars[l].type == 'f' )
+		    ierr =
+			nc_def_var( ncid, cmor_vars[l].id, NC_FLOAT,
+				    cmor_vars[l].ndims, &dim_holder[0],
+				    &nc_zfactors[lnzfactors] );
+		else if( cmor_vars[l].type == 'l' )
+		    ierr =
+			nc_def_var( ncid, cmor_vars[l].id, NC_INT,
+				    cmor_vars[l].ndims, &dim_holder[0],
+				    &nc_zfactors[lnzfactors] );
+		else if( cmor_vars[l].type == 'i' )
+		    ierr =
+			nc_def_var( ncid, cmor_vars[l].id, NC_INT,
+				    cmor_vars[l].ndims, &dim_holder[0],
+				    &nc_zfactors[lnzfactors] );
+		if( ierr != NC_NOERR ) {
+		    snprintf( msg, CMOR_MAX_STRING,
+		            "NC Error (%i: %s) for variable %s (table %s)\n! "
+		            "error defining zfactor var: %i (%s)",
+		            ierr, nc_strerror( ierr ),
+		            cmor_vars[var_id].id,
+		            cmor_tables[cmor_vars[var_id].
+		                        ref_table_id].szTable_id,
+		                        lnzfactors, cmor_vars[l].id );
+		    cmor_handle_error( msg, CMOR_CRITICAL );
+		}
+
+/* -------------------------------------------------------------------- */
+/*      Compression stuff                                               */
+/* -------------------------------------------------------------------- */
+		if( ( CMOR_NETCDF_MODE != CMOR_REPLACE_3 ) &&
+		     ( CMOR_NETCDF_MODE != CMOR_PRESERVE_3 ) &&
+		     ( CMOR_NETCDF_MODE != CMOR_APPEND_3 ) ) {
+		    if( cmor_vars[l].ndims > 0 ) {
+		        int nTableID = cmor_vars[l].ref_table_id;
+			ics =
+			    cmor_tables[nTableID].vars[nTableID].shuffle;
+			icd =
+			    cmor_tables[nTableID].vars[nTableID].deflate;
+			icdl =
+			    cmor_tables[nTableID].vars[nTableID].deflate_level;
+			ierr = nc_def_var_deflate( ncid,
+			        nc_zfactors[lnzfactors],
+			        ics, icd, icdl );
+
+			if( ierr != NC_NOERR ) {
+			    snprintf( msg, CMOR_MAX_STRING,
+			            "NCError (%i: %s) defining compression\n! "
+			            "parameters for zfactor variable %s for\n! "
+			            "variable '%s' (table %s)",
+			            ierr, nc_strerror( ierr ),
+			            cmor_vars[l].id,
+			            cmor_vars[var_id].id,
+			            cmor_tables[nTableID].szTable_id );
+			    cmor_handle_error( msg, CMOR_CRITICAL );
+			}
+		    }
+		}
+
+/* -------------------------------------------------------------------- */
+/*      Creates attribute related to that variable                      */
+/* -------------------------------------------------------------------- */
+		for( k = 0; k < cmor_vars[l].nattributes; k++ ) {
+/* -------------------------------------------------------------------- */
+/*      first of all we need to make sure it is not an empty attribute  */
+/* -------------------------------------------------------------------- */
+		    if( cmor_has_variable_attribute
+			( l, cmor_vars[l].attributes[k] ) != 0 ) {
+/* -------------------------------------------------------------------- */
+/*      deleted attribute continue on                                   */
+/* -------------------------------------------------------------------- */
+			continue;
+		    }
+		    if( strcmp( cmor_vars[l].attributes[k], "flag_values" )
+			== 0 ) {
+/* -------------------------------------------------------------------- */
+/*      ok we need to convert the string to a list of int               */
+/* -------------------------------------------------------------------- */
+			ierr = cmor_convert_string_to_list(
+			        cmor_vars[l].attributes_values_char[k],
+			        'i',
+			        ( void * ) &int_list,
+			        &nelts );
+
+			ierr = nc_put_att_int(
+			        ncid,
+			        nc_zfactors[lnzfactors],
+			        "flag_values",
+			        NC_INT,
+			        nelts,
+			        int_list );
+
+			if( ierr != NC_NOERR ) {
+			    snprintf( msg, CMOR_MAX_STRING,
+				      "NetCDF Error (%i: %s) setting flags\n! "
+			              "numerical attribute on zfactor\n! "
+			              "variable %s for variable %s (table %s)",
+				      ierr, nc_strerror( ierr ),
+				      cmor_vars[l].id,
+				      cmor_vars[var_id].id,
+				      cmor_tables[cmor_vars[var_id].ref_table_id].
+				      szTable_id );
+			    cmor_handle_error( msg, CMOR_CRITICAL );
+			}
+			free( int_list );
+		    } else if( cmor_vars[l].attributes_type[k] == 'c' ) {
+			ierr = cmor_put_nc_char_attribute(
+			        ncid,
+			        nc_zfactors[lnzfactors],
+			        cmor_vars[l].attributes[k],
+			        cmor_vars[l].attributes_values_char[k],
+			        cmor_vars[l].id );
+		    } else {
+			ierr = cmor_put_nc_num_attribute(
+			        ncid,
+			        nc_zfactors[lnzfactors],
+			        cmor_vars[l].attributes[k],
+			        cmor_vars[l].attributes_type[k],
+			        cmor_vars[l].attributes_values_num[k],
+			        cmor_vars[l].id );
+		    }
+		}
+		lnzfactors += 1;
+	    } else {
+/* -------------------------------------------------------------------- */
+/*      ok now we need to see if we have bounds on that variable        */
+/* -------------------------------------------------------------------- */
+		dim_holder[cmor_vars[l].ndims] = dim_bnds;
+		if( cmor_vars[l].type == 'd' )
+		    ierr =
+			nc_def_var( ncid, cmor_vars[l].id, NC_DOUBLE,
+				    cmor_vars[l].ndims + 1, &dim_holder[0],
+				    &nc_zfactors[lnzfactors] );
+		else if( cmor_vars[l].type == 'f' )
+		    ierr =
+			nc_def_var( ncid, cmor_vars[l].id, NC_FLOAT,
+				    cmor_vars[l].ndims + 1, &dim_holder[0],
+				    &nc_zfactors[lnzfactors] );
+		else if( cmor_vars[l].type == 'l' )
+		    ierr =
+			nc_def_var( ncid, cmor_vars[l].id, NC_INT,
+				    cmor_vars[l].ndims + 1, &dim_holder[0],
+				    &nc_zfactors[lnzfactors] );
+		else if( cmor_vars[l].type == 'i' )
+		    ierr =
+			nc_def_var( ncid, cmor_vars[l].id, NC_INT,
+				    cmor_vars[l].ndims + 1, &dim_holder[0],
+				    &nc_zfactors[lnzfactors] );
+		if( ierr != NC_NOERR ) {
+		    snprintf( msg, CMOR_MAX_STRING,
+			      "NC Error (%i: %s) for variable %s (table: %s),\n! "
+		            "error defining zfactor var: %i (%s)",
+			      ierr, nc_strerror( ierr ),
+			      cmor_vars[var_id].id,
+			      cmor_tables[cmor_vars[var_id].
+					  ref_table_id].szTable_id,
+			      lnzfactors, cmor_vars[l].id );
+		    cmor_handle_error( msg, CMOR_CRITICAL );
+		}
+
+/* -------------------------------------------------------------------- */
+/*      Compression stuff                                               */
+/* -------------------------------------------------------------------- */
+
+		if( ( CMOR_NETCDF_MODE != CMOR_REPLACE_3 ) &&
+		    ( CMOR_NETCDF_MODE != CMOR_PRESERVE_3 ) &&
+		    ( CMOR_NETCDF_MODE != CMOR_APPEND_3 ) ) {
+                    int nTableID = cmor_vars[l].ref_table_id;
+
+		    ics = cmor_tables[nTableID].vars[nTableID].shuffle;
+		    icd = cmor_tables[nTableID].vars[nTableID].deflate;
+		    icdl = cmor_tables[nTableID].vars[nTableID].deflate_level;
+		    ierr = nc_def_var_deflate( ncid, nc_zfactors[lnzfactors],
+		            ics, icd, icdl );
+
+		    if( ierr != NC_NOERR ) {
+			snprintf( msg, CMOR_MAX_STRING,
+				  "NCError (%i: %s) defining\n! "
+			          "compression parameters\n! "
+			          "for zfactor variable %s for\n! "
+			          "variable '%s' (table %s)",
+				  ierr, nc_strerror( ierr ),
+				  cmor_vars[l].id, cmor_vars[var_id].id,
+				  cmor_tables[cmor_vars[var_id].ref_table_id].
+				  szTable_id );
+			cmor_handle_error( msg, CMOR_CRITICAL );
+		    }
+		}
+
+/* -------------------------------------------------------------------- */
+/*      Creates attribute related to that variable                      */
+/* -------------------------------------------------------------------- */
+		for( k = 0; k < cmor_vars[l].nattributes; k++ ) {
+/* -------------------------------------------------------------------- */
+/*      first of all we need to make sure it is not an empty attribute  */
+/* -------------------------------------------------------------------- */
+		    if( cmor_has_variable_attribute( l,
+		            cmor_vars[l].attributes[k] ) != 0 ) {
+/* -------------------------------------------------------------------- */
+/*      deleted attribute continue on                                   */
+/* -------------------------------------------------------------------- */
+			continue;
+		    }
+		    if(strcmp(cmor_vars[l].attributes[k], "flag_values")== 0 ) {
+/* -------------------------------------------------------------------- */
+/*      ok we need to convert the string to a list of int               */
+/* -------------------------------------------------------------------- */
+			ierr =cmor_convert_string_to_list(
+			        cmor_vars[l].attributes_values_char[k],
+			        'i',
+			        ( void * ) &int_list,
+			        &nelts );
+
+			ierr = nc_put_att_int( ncid,
+			        nc_zfactors[lnzfactors],
+			        "flag_values",
+			        NC_INT, nelts,
+			        int_list );
+
+			if( ierr != NC_NOERR ) {
+			    snprintf(
+			            msg,
+			            CMOR_MAX_STRING,
+			            "NetCDF Error (%i: %s) setting flags numerical "
+			            "attribute on zfactor variable %s for variable "
+			            "%s (table: %s)",
+			            ierr, nc_strerror( ierr ),
+			            cmor_vars[l].id,
+			            cmor_vars[var_id].id,
+			            cmor_tables[cmor_vars[var_id].ref_table_id].
+			            szTable_id );
+			    cmor_handle_error( msg, CMOR_CRITICAL );
+			}
+			free( int_list );
+
+		    } else if( cmor_vars[l].attributes_type[k] == 'c' ) {
+			ierr = cmor_put_nc_char_attribute(
+			        ncid,
+			        nc_zfactors[lnzfactors],
+			        cmor_vars[l].attributes[k],
+			        cmor_vars[l].attributes_values_char[k],
+			        cmor_vars[l].id );
+		    } else {
+			ierr = cmor_put_nc_num_attribute(
+			        ncid,
+			        nc_zfactors[lnzfactors],
+			        cmor_vars[l].attributes[k],
+			        cmor_vars[l].attributes_type[k],
+			        cmor_vars[l].attributes_values_num[k],
+			        cmor_vars[l].id );
+		    }
+		}
+
+		lnzfactors += 1;
+	    }
 	}
-	strncat(ctmp3,"_r0i0p0.nc",CMOR_MAX_STRING-strlen(ctmp3));
-	
-	strncat(ctmp,ctmp3,CMOR_MAX_STRING-strlen(ctmp));
-      }
-      k=-1;
-      if (strlen(ctmp5)>7) {
-	for (i=0;i<strlen(ctmp5)-7;i++) {
-	  if (strncmp(&ctmp5[i],"volume:",7)==0) {
-	    k=i+8;
-	    break;
-	  }
+
+	while( ( formula_terms[j] == ' ' )
+	       && ( formula_terms[j] != '\0' ) ) {
+	    j++;
+	}			/* skip the other whites */
+    }
+    *nzfactors = lnzfactors;
+    cmor_pop_traceback(  );
+    return( 0 );
+}
+
+/************************************************************************/
+/*                          cmor_flip_hybrid()                          */
+/************************************************************************/
+void cmor_flip_hybrid( int var_id, int i, char *a, char *b, char *abnds,
+		       char *bbnds ) {
+    int doflip, j, k, l = 0;
+    double tmp;
+    extern cmor_var_t cmor_vars[CMOR_MAX_VARIABLES];
+    extern cmor_axis_t cmor_axes[CMOR_MAX_AXES];
+
+    cmor_add_traceback( "cmor_flip_hybrid" );
+
+/* -------------------------------------------------------------------- */
+/*      here we need to look and see if we need to flip the             */
+/*      levels again since we overwrote this stuff                      */
+/* -------------------------------------------------------------------- */
+    doflip = 0;
+    cmor_axis_t *pVarAxis;
+    cmor_axis_def_t *pTableAxis;
+    int nVarAxisTableID;
+
+    pVarAxis = &cmor_axes[cmor_vars[var_id].axes_ids[i]];
+    nVarAxisTableID = pVarAxis->ref_table_id;
+
+    pTableAxis = &cmor_tables[nVarAxisTableID].axes[nVarAxisTableID];
+
+
+    if( pTableAxis->stored_direction == 'd' ) {
+/* -------------------------------------------------------------------- */
+/*      decrease stuff                                                  */
+/* -------------------------------------------------------------------- */
+	if( pVarAxis->values[1] > pVarAxis->values[0] )
+	    doflip = 1;
+    } else {
+/* -------------------------------------------------------------------- */
+/*      increase stuff                                                  */
+/* -------------------------------------------------------------------- */
+	if( pVarAxis->values[1] < pVarAxis->values[0] )
+	    doflip = 1;
+    }
+
+    if( doflip == 1 ) {
+/* -------------------------------------------------------------------- */
+/*      look for a coeff                                                */
+/* -------------------------------------------------------------------- */
+	k = -1;
+	for( j = 0; j <= cmor_nvars; j++ )
+	    if( ( strcmp( cmor_vars[j].id, a ) == 0 ) &&
+		( cmor_vars[j].zaxis == cmor_vars[var_id].axes_ids[i] ) ) {
+		k = j;
+		break;
+	    }
+/* -------------------------------------------------------------------- */
+/*      look for b coeff                                                */
+/* -------------------------------------------------------------------- */
+	if( b != NULL ) {
+	    l = -1;
+	    for( j = 0; j <= cmor_nvars; j++ ) {
+		if( ( strcmp( cmor_vars[j].id, b ) == 0 ) &&
+		    ( cmor_vars[j].zaxis == cmor_vars[var_id].axes_ids[i] ) ) {
+		    l = j;
+		    break;
+		}
+	    }
 	}
-      }
-      if (k!=-1) { /*ok we have this guy, let's figureout the name */
-	for(i=k;i<strlen(ctmp5);i++) {
-	  if ((ctmp5[i]==' ') || (ctmp5[i]=='\0')) break;
-	  ctmp6[i-k]=ctmp5[i];
+
+	for( j = 0; j < pVarAxis->length / 2; j++ ) {
+
+	    tmp = pVarAxis->values[j];
+	    pVarAxis->values[j] = pVarAxis->values[pVarAxis->length - 1 - j];
+	    pVarAxis->values[pVarAxis->length -1 - j] = tmp;
+
+	    tmp = cmor_vars[k].values[j];
+	    cmor_vars[k].values[j] =
+	                cmor_vars[k].values[pVarAxis->length - 1 - j];
+	    cmor_vars[k].values[pVarAxis->length - 1 - j] = tmp;
+
+	    if( b != NULL ) {
+		tmp = cmor_vars[l].values[j];
+		cmor_vars[l].values[j] =
+		          cmor_vars[l].values[pVarAxis->length - 1 - j];
+		cmor_vars[l].values[pVarAxis->length - 1 - j] = tmp;
+	    }
 	}
-	ctmp6[i-k]='\0';
-	/* now appends the part to the volume file */	
-	strncat(ctmp," ",CMOR_MAX_STRING-strlen(ctmp));
-	strncat(ctmp,ctmp6,CMOR_MAX_STRING-strlen(ctmp));
-	strncat(ctmp,": ",CMOR_MAX_STRING-strlen(ctmp));
-	/* add the variable name */
-	/*     strncat(ctmp3,"cellVolume/r0/cellVolume_",CMOR_MAX_STRING-strlen(ctmp3)); */
-	strncpy(ctmp3,ctmp6,CMOR_MAX_STRING);
-	strncat(ctmp3,"_fx_",CMOR_MAX_STRING-strlen(ctmp3));
-	/* strncat(ctmp3,cmor_tables[cmor_vars[var_id].ref_table_id].table_id,CMOR_MAX_STRING-strlen(ctmp3)); */
-	/* strncat(ctmp3,"_",CMOR_MAX_STRING-strlen(ctmp3)); */
-	cmor_get_cur_dataset_attribute("model_id",msg);
-	for (i=0;i<strlen(msg);i++) {
-	  if (cmor_convert_char_to_hyphen(msg[i])==1) {
-	    msg[i]='-';
-	  }
+
+	if( pVarAxis->bounds != NULL ) {
+	    k = -1;
+	    for( j = 0; j <= cmor_nvars; j++ ) {
+		if( ( strcmp( cmor_vars[j].id, abnds ) == 0 ) &&
+		    ( cmor_vars[j].zaxis == cmor_vars[var_id].axes_ids[i] ) ) {
+		    k = j;
+		    break;
+		}
+	    }
+
+	    if( bbnds != NULL ) {
+		l = -1;
+		for( j = 0; j <= cmor_nvars; j++ ) {
+		    if( ( strcmp( cmor_vars[j].id, bbnds ) == 0 ) &&
+		       ( cmor_vars[j].zaxis == cmor_vars[var_id].axes_ids[i])) {
+			l = j;
+			break;
+		    }
+		}
+	    }
+
+	    for( j = 0; j < pVarAxis->length; j++ ) {
+	        int length = pVarAxis->length;
+		tmp = pVarAxis->bounds[j];
+		pVarAxis->bounds[j] = pVarAxis->bounds[length * 2 - 1 - j];
+		pVarAxis->bounds[length * 2 - 1 - j] = tmp;
+
+		tmp = cmor_vars[k].values[j];
+		cmor_vars[k].values[j] = cmor_vars[k].values[length * 2 - 1 - j];
+		cmor_vars[k].values[length * 2 - 1 - j] = tmp;
+
+		if( bbnds != NULL ) {
+		    tmp = cmor_vars[l].values[j];
+		    cmor_vars[l].values[j] = cmor_vars[l].values[length*2-1-j];
+		    cmor_vars[l].values[length*2-1-j] = tmp;
+		}
+	    }
 	}
-	/* removes trailing "-" */
-	for (i=strlen(msg)-1;i>0;i--) {
-	  if (msg[i]=='-') {
-	    msg[i]='\0';
-	  }
-	  else {
-	    break;
-	  }
+    }
+    cmor_pop_traceback(  );
+    return;
+}
+
+/************************************************************************/
+/*                          cmor_set_refvar( )                          */
+/************************************************************************/
+int  cmor_set_refvar( int var_id, int *refvar, int ntimes_passed ) {
+
+/* -------------------------------------------------------------------- */
+/*  Return either associated variable id or passed variable id          */
+/* -------------------------------------------------------------------- */
+    int nRefVarID = var_id;
+    char msg[CMOR_MAX_STRING];
+    int nVarRefTblID = cmor_vars[var_id].ref_table_id;
+    int ierr;
+
+    cmor_add_traceback("cmor_set_refvar");
+    if( refvar != NULL ) {
+	nRefVarID = ( int ) *refvar;
+
+	if( cmor_vars[nRefVarID].initialized == -1 ) {
+	    snprintf( msg, CMOR_MAX_STRING,
+	            "You are trying to write variable \"%s\" in association\n! "
+	            "with variable \"%s\" (table %s), but you you need to\n! "
+	            "write the associated variable first in order to\n! "
+	            "initialize the file and dimensions.",
+	            cmor_vars[nRefVarID].id,
+	            cmor_vars[var_id].id,
+	            cmor_tables[nVarRefTblID].szTable_id );
+	    cmor_handle_error( msg, CMOR_CRITICAL );
 	}
-	strncat(ctmp3,msg,CMOR_MAX_STRING-strlen(ctmp3));
-	if (strcmp(ctmp4,"")!=0) {
-	  strncat(ctmp3,"_",CMOR_MAX_STRING-strlen(ctmp3));
-	  strncat(ctmp3,ctmp4,CMOR_MAX_STRING-strlen(ctmp3));
+/* -------------------------------------------------------------------- */
+/*      ok now we need to scan the netcdf file                          */
+/*      to figure the ncvarid associated                                */
+/* -------------------------------------------------------------------- */
+	ierr = nc_inq_varid( cmor_vars[nRefVarID].initialized,
+	                     cmor_vars[var_id].id,
+	                     &cmor_vars[var_id].nc_var_id );
+
+	if( ierr != NC_NOERR ) {
+	    sprintf( msg,
+		     "Could not find variable: '%s' (table: %s) in file of\n! "
+	            "associated variable: '%s'",
+		     cmor_vars[var_id].id,
+		     cmor_tables[nVarRefTblID].szTable_id,
+		     cmor_vars[*refvar].id );
+	    cmor_handle_error( msg, CMOR_CRITICAL );
 	}
-	strncat(ctmp3,"_r0i0p0.nc",CMOR_MAX_STRING-strlen(ctmp3));
-	
-	
-	strncat(ctmp,ctmp3,CMOR_MAX_STRING-strlen(ctmp));
-      }
+	cmor_vars[var_id].ntimes_written =
+	    cmor_vars[nRefVarID].ntimes_written - ntimes_passed;
     }
+    cmor_pop_traceback();
+    return (nRefVarID);
+}
+/************************************************************************/
+/*                    cmor_validate_activity_id()                       */
+/************************************************************************/
+int cmor_validate_activity_id(int  nVarRefTblID) {
+    int ierr=0;
 
-    cmor_set_variable_attribute_internal(var_id,"associated_files",'c',ctmp);
+    cmor_add_traceback("cmor_validate_activity_id");
 
-    /* make sure we are in def mode */
-    ierr = nc_redef(ncafid);
-    if (ierr != NC_NOERR && ierr != NC_EINDEFINE) {
-      snprintf(msg,CMOR_MAX_STRING,"NetCDF Error (%i: %s) putting metadata file (%s) in def mode, nc file id was: %i, you were writing variable %s (table: %s)",ierr,nc_strerror(ierr),cmor_current_dataset.associated_file_name,ncafid,cmor_vars[var_id].id,cmor_tables[cmor_vars[var_id].ref_table_id].table_id);
-      cmor_handle_error(msg,CMOR_CRITICAL);
+    cmor_pop_traceback();
+    return(ierr);
+}
+
+/************************************************************************/
+/*                       cmor_checkMissing()                            */
+/************************************************************************/
+void cmor_checkMissing(int varid, int var_id, char type) {
+    char msg[CMOR_MAX_STRING];
+    int nVarRefTblID;
+
+    cmor_add_traceback("cmor_checkMissing");
+    nVarRefTblID = cmor_vars[var_id].ref_table_id;
+
+    if (cmor_vars[varid].nomissing == 0) {
+        if (cmor_vars[varid].itype != type) {
+            snprintf(msg, CMOR_MAX_STRING,
+                    "You defined variable \"%s\" (table %s) with a missing\n! "
+                            "value of type \"%c\", but you are now writing data of\n! "
+                            "type: \"%c\" this may lead to some spurious handling\n! "
+                            "of the missing values", cmor_vars[varid].id,
+                    cmor_tables[nVarRefTblID].szTable_id,
+                    cmor_vars[varid].itype, type);
+            cmor_handle_error(msg, CMOR_WARNING);
+        }
+    }
+    cmor_pop_traceback();
+}
+/************************************************************************/
+/*                    cmor_validateFilename()                           */
+/************************************************************************/
+int cmor_validateFilename(char *outname, int var_id) {
+    int cmode;
+    int ierr;
+    FILE *fperr;
+    char msg[CMOR_MAX_STRING];
+    char ctmp[CMOR_MAX_STRING];
+    size_t starts[2];
+    size_t nctmp;
+    int ncid;
+    int i;
+    cmor_add_traceback("cmor_validateFilename");
+    ncid = -1;
+    if (USE_NETCDF_4 == 1) {
+        cmode = NC_NETCDF4 | NC_CLASSIC_MODEL;
+        if ((CMOR_NETCDF_MODE == CMOR_REPLACE_3)
+                || (CMOR_NETCDF_MODE == CMOR_PRESERVE_3)
+                || (CMOR_NETCDF_MODE == CMOR_APPEND_3)) {
+            cmode = NC_CLOBBER;
+        }
+    } else {
+        cmode = NC_CLOBBER;
+    }
+
+    if ((CMOR_NETCDF_MODE == CMOR_REPLACE_4)
+            || (CMOR_NETCDF_MODE == CMOR_REPLACE_3)) {
+
+        ierr = nc_create(outname, NC_CLOBBER | cmode, &ncid);
+
+    } else if ((CMOR_NETCDF_MODE == CMOR_PRESERVE_4)
+            || (CMOR_NETCDF_MODE == CMOR_PRESERVE_3)) {
+/* -------------------------------------------------------------------- */
+/*      ok first let's check if the file does exists or not             */
+/* -------------------------------------------------------------------- */
+        fperr = NULL;
+        fperr = fopen(outname, "r");
+        if (fperr != NULL) {
+            snprintf(msg, CMOR_MAX_STRING,
+                    "Output file ( %s ) already exists, remove file\n! "
+                            "or use CMOR_REPLACE or CMOR_APPEND for\n! "
+                            "CMOR_NETCDF_MODE value in cmor_setup", outname);
+            cmor_handle_error(msg, CMOR_CRITICAL);
+        }
+        ierr = nc_create(outname, NC_NOCLOBBER | cmode, &ncid);
+    } else if ((CMOR_NETCDF_MODE == CMOR_APPEND_4)
+            || (CMOR_NETCDF_MODE == CMOR_APPEND_3)) {
+/* -------------------------------------------------------------------- */
+/*      ok first let's check if the file does exists or not             */
+/* -------------------------------------------------------------------- */
+        fperr = NULL;
+        fperr = fopen(outname, "r");
+        if (fperr == NULL) {
+
+/* -------------------------------------------------------------------- */
+/*      ok it does not exists... we will open as new                    */
+/* -------------------------------------------------------------------- */
+            ierr = nc_create(outname, NC_CLOBBER | cmode, &ncid);
+
+        } else { /*ok it was there already */
+
+            ierr = fclose(fperr);
+            ierr = nc_open(outname, NC_WRITE, &ncid);
+
+            if (ierr != NC_NOERR) {
+                snprintf(msg, CMOR_MAX_STRING,
+                        "NetCDF Error (%i: %s) opening file: %s", ierr,
+                        nc_strerror(ierr), outname);
+                cmor_handle_error(msg, CMOR_CRITICAL);
+            }
+
+            ierr = nc_inq_dimid(ncid, "time", &i);
+
+            if (ierr != NC_NOERR) {
+                snprintf(msg, CMOR_MAX_STRING,
+                        "NetCDF Error (%i: %s) looking for time\n! "
+                                "dimension in file: %s", ierr,
+                        nc_strerror(ierr), outname);
+                cmor_handle_error(msg, CMOR_CRITICAL);
+            }
+
+            ierr = nc_inq_dimlen(ncid, i, &nctmp);
+            cmor_vars[var_id].ntimes_written = (int) nctmp;
+
+            if (ierr != NC_NOERR) {
+                snprintf(msg, CMOR_MAX_STRING,
+                        "NetCDF Error (%i: %s) looking for time\n! "
+                                "dimension length in file: %s", ierr,
+                        nc_strerror(ierr), outname);
+                cmor_handle_error(msg, CMOR_CRITICAL);
+            }
+
+            ierr = nc_inq_varid(ncid, cmor_vars[var_id].id,
+                    &cmor_vars[var_id].nc_var_id);
+
+            if (ierr != NC_NOERR) {
+                snprintf(msg, CMOR_MAX_STRING,
+                        "NetCDF Error (%i: %s) looking for variable\n! "
+                                "'%s' in file: %s", ierr, nc_strerror(ierr),
+                        cmor_vars[var_id].id, outname);
+                cmor_handle_error(msg, CMOR_CRITICAL);
+            }
+
+            ierr = nc_inq_varid(ncid, "time", &cmor_vars[var_id].time_nc_id);
+
+            if (ierr != NC_NOERR) {
+                snprintf(msg, CMOR_MAX_STRING,
+                        "NetCDF Error (%i: %s) looking for time of\n! "
+                                "variable '%s' in file: %s", ierr,
+                        nc_strerror(ierr), cmor_vars[var_id].id, outname);
+                cmor_handle_error(msg, CMOR_CRITICAL);
+            }
+
+/* -------------------------------------------------------------------- */
+/*      ok now we need to read the first time in here                   */
+/* -------------------------------------------------------------------- */
+            starts[0] = 0;
+            ierr = nc_get_var1_double(ncid, cmor_vars[var_id].time_nc_id,
+                    &starts[0], &cmor_vars[var_id].first_time);
+
+            starts[0] = cmor_vars[var_id].ntimes_written - 1;
+            ierr = nc_get_var1_double(ncid, cmor_vars[var_id].time_nc_id,
+                    &starts[0], &cmor_vars[var_id].last_time);
+
+            if (cmor_tables[cmor_axes[cmor_vars[var_id].axes_ids[i]].
+                            ref_table_id].axes[cmor_axes[cmor_vars[var_id].
+                                                         axes_ids[i]].
+                                                         ref_axis_id].
+                                                         climatology
+                    == 1) {
+
+                snprintf(msg, CMOR_MAX_STRING, "climatology");
+                strncpy(ctmp, "climatology_bnds", CMOR_MAX_STRING);
+            } else {
+                strncpy(ctmp, "time_bnds", CMOR_MAX_STRING);
+            }
+
+            ierr = nc_inq_varid(ncid, ctmp, &i);
+            if (ierr != NC_NOERR) {
+                snprintf(msg, CMOR_MAX_STRING,
+                        "NetCDF Error (%i: %s) looking for time bounds\n! "
+                                "of variable '%s' in file: %s", ierr,
+                        nc_strerror(ierr), cmor_vars[var_id].id, outname);
+                cmor_handle_error(msg, CMOR_WARNING);
+                ierr = NC_NOERR;
+            } else {
+                cmor_vars[var_id].time_bnds_nc_id = i;
+/* -------------------------------------------------------------------- */
+/*      Here I need to store first/last bounds for appending issues     */
+/* -------------------------------------------------------------------- */
+
+                starts[0] = cmor_vars[var_id].ntimes_written - 1;
+                starts[1] = 1;
+                ierr = nc_get_var1_double(ncid,
+                        cmor_vars[var_id].time_bnds_nc_id, &starts[0],
+                        &cmor_vars[var_id].last_bound);
+                starts[1] = 0;
+                ierr = nc_get_var1_double(ncid,
+                        cmor_vars[var_id].time_bnds_nc_id, &starts[0],
+                        &cmor_vars[var_id].first_bound);
+            }
+            cmor_vars[var_id].initialized = ncid;
+        }
+    } else {
+        snprintf(msg, CMOR_MAX_STRING, "Unknown CMOR_NETCDF_MODE file mode: %i",
+                CMOR_NETCDF_MODE);
+        cmor_handle_error(msg, CMOR_CRITICAL);
+    }
+    if (ierr != NC_NOERR) {
+        snprintf(msg, CMOR_MAX_STRING,
+                "NetCDF Error (%i: %s) creating file: %s", ierr,
+                nc_strerror(ierr), outname);
+        cmor_handle_error(msg, CMOR_CRITICAL);
     }
+    cmor_pop_traceback();
+    return( ncid );
+}
+
 
-    /* ok writes global attributes */
-    /* first figures out time */
+/************************************************************************/
+/*                      cmor_setGblAttr()                             */
+/************************************************************************/
+void cmor_setGblAttr(int var_id) {
+    struct tm *ptr;
+    time_t lt;
+    char msg[CMOR_MAX_STRING];
+    char ctmp[CMOR_MAX_STRING];
+    char ctmp2[CMOR_MAX_STRING];
+    char words[CMOR_MAX_STRING];
+    int i;
+    int n_matches = 10;
+    regmatch_t m[n_matches];
+    regex_t regex;
+    char *ret;
+    int numchar;
+    int nVarRefTblID;
+
+    cmor_add_traceback("cmor_setGblAttr");
+    nVarRefTblID = cmor_vars[var_id].ref_table_id;
+
+    if( cmor_has_cur_dataset_attribute( GLOBAL_ATT_FORCING ) == 0 ) {
+        cmor_get_cur_dataset_attribute( GLOBAL_ATT_FORCING, ctmp2 );
+        cmor_check_forcing_validity( nVarRefTblID,
+                                     ctmp2 );
+    }
+/* -------------------------------------------------------------------- */
+/*  Defined "product" from Table if not defined by users                */
+/* -------------------------------------------------------------------- */
+
+    if( cmor_has_cur_dataset_attribute( GLOBAL_ATT_PRODUCT ) != 0 ) {
+        strncpy(ctmp2, cmor_tables[nVarRefTblID].product, CMOR_MAX_STRING);
+        cmor_set_cur_dataset_attribute_internal(GLOBAL_ATT_PRODUCT, ctmp2, 1);
+    }
+
+/* -------------------------------------------------------------------- */
+/*      first figures out Creation time                                 */
+/* -------------------------------------------------------------------- */
     lt = time(NULL);
     ptr = gmtime(&lt);
-    snprintf(msg,CMOR_MAX_STRING,"%.4i-%.2i-%.2iT%.2i:%.2i:%.2iZ",ptr->tm_year+1900,ptr->tm_mon+1,ptr->tm_mday,ptr->tm_hour,ptr->tm_min,ptr->tm_sec);
-    cmor_set_cur_dataset_attribute_internal("creation_date",msg,0);
-    if (did_history==0) {
-      snprintf(ctmp,CMOR_MAX_STRING,"%s CMOR rewrote data to comply with CF standards and %s requirements.",msg,cmor_tables[cmor_vars[var_id].ref_table_id].project_id);
-      if (cmor_has_cur_dataset_attribute("history")==0) {
-	cmor_get_cur_dataset_attribute("history",msg);
-	snprintf(ctmp2,CMOR_MAX_STRING,"%s %s",msg,ctmp);
-	strncpy(ctmp,ctmp2,CMOR_MAX_STRING);
-      }
-      cmor_set_cur_dataset_attribute_internal("history",ctmp,0);
-      did_history=1;
-    }
-    snprintf(msg,CMOR_MAX_STRING,"CF-%.1f",cmor_tables[cmor_vars[var_id].ref_table_id].cf_version);
-    cmor_set_cur_dataset_attribute_internal("Conventions",msg,0);
-    cmor_set_cur_dataset_attribute_internal("project_id",cmor_tables[cmor_vars[var_id].ref_table_id].project_id,0);
-    snprintf(msg,CMOR_MAX_STRING,"Table %s (%s) ",cmor_tables[cmor_vars[var_id].ref_table_id].table_id,cmor_tables[cmor_vars[var_id].ref_table_id].date);
-    for (i=0;i<16;i++) sprintf(&ctmp[2*i],"%02x",cmor_tables[cmor_vars[var_id].ref_table_id].md5[i]);
-    ctmp[32]='\0';
-    strcat(msg,ctmp);
-    cmor_set_cur_dataset_attribute_internal("table_id",msg,0);
-    if ( cmor_has_cur_dataset_attribute("model_id")==0) {
-      cmor_get_cur_dataset_attribute("model_id",ctmp);
-    }
-    else {
-      ctmp[0]='\0';
-    }
-    cmor_get_cur_dataset_attribute("experiment",ctmp2);
-/*     /\* ok here we need to reset the expt id to the long name if necessary *\/ */
-/*     for (i=0;i<cmor_tables[cmor_vars[var_id].ref_table_id].nexps;i++) { */
-/*       if (strncmp(cmor_tables[cmor_vars[var_id].ref_table_id].sht_expt_ids[i],ctmp2,CMOR_MAX_STRING)==0) { */
-/* 	strncpy(ctmp2,cmor_tables[cmor_vars[var_id].ref_table_id].expt_ids[i],CMOR_MAX_STRING); /\* make sure it is the long id *\/ */
-/* 	break; */
-/*       } */
-/*     } */
-/*     cmor_set_cur_dataset_attribute_internal("experiment_id",ctmp2,0); */
-
-
-    snprintf(msg,CMOR_MAX_STRING,"%s model output prepared for %s %s",ctmp,cmor_tables[cmor_vars[var_id].ref_table_id].project_id,ctmp2);
-    cmor_set_cur_dataset_attribute_internal("title",msg,0);
-    /* check table cf version vs ours */
-    afloat = CMOR_CF_VERSION_MAJOR;
-    d = CMOR_CF_VERSION_MINOR;
-    while(d>1.) d/=10.;
-    afloat+=d;
-
-    if (cmor_tables[cmor_vars[var_id].ref_table_id].cf_version>afloat) {
-      snprintf(msg,CMOR_MAX_STRING,"Your table (%s) claims to enforce CF version %f but this version of the library is designed for CF up to: %i.%i, you were writing variable: %s",cmor_tables[cmor_vars[var_id].ref_table_id].table_id,cmor_tables[cmor_vars[var_id].ref_table_id].cf_version,CMOR_CF_VERSION_MAJOR,CMOR_CF_VERSION_MINOR,cmor_vars[var_id].id);
-      cmor_handle_error(msg,CMOR_WARNING);
-    }
-
-
-    /* Ok now we need to check the parent_experiment_id is valid */
-    if (cmor_has_cur_dataset_attribute("parent_experiment_id")==0) {
-      cmor_get_cur_dataset_attribute("parent_experiment_id",msg);
-      if (strcmp(msg,"N/A")!=0) { /* did the user pass an expt */
-	cmor_get_cur_dataset_attribute("experiment_id",ctmp);
-	if (strcmp(msg,ctmp)==0) {
-	  sprintf(ctmp,"Your parent_experiment id matches your current experiment_id, they are both set to: %s; you were writing variable %s (table: %s)",msg,cmor_vars[var_id].id,cmor_tables[cmor_vars[var_id].ref_table_id].table_id);
-	  cmor_handle_error(ctmp,CMOR_NORMAL);
-	  cmor_pop_traceback();
-	  return 1;
-	} 
-	else {
-	  cmor_get_cur_dataset_attribute("experiment",ctmp);
-	  if (strcmp(msg,ctmp)==0) {
-	    sprintf(ctmp,"Your parent_experiment id matches your current experiment_id, they are both set to: %s; you were writing variable %s (table: %s)",msg,cmor_vars[var_id].id,cmor_tables[cmor_vars[var_id].ref_table_id].table_id);
-	    cmor_handle_error(ctmp,CMOR_NORMAL);
-	    cmor_pop_traceback();
-	    return 1;
-	  }
-	  else { /*ok now we can check it is a valid "other" experiment */
-	    if (cmor_check_expt_id(msg,cmor_vars[var_id].ref_table_id,"parent_experiment","parent_experiment_id")!=0) {
-	      snprintf(ctmp,CMOR_MAX_STRING,"Invalid dataset parent experiment id: %s, check against table: %s, you were writing variable: %s",msg,cmor_tables[cmor_vars[var_id].ref_table_id].table_id,cmor_vars[var_id].id);
-	      cmor_handle_error(ctmp,CMOR_NORMAL);
-	      cmor_pop_traceback();
-	      return 1;
-	    }
-	  }
-	}
-      }
-      else {
-	if ( cmor_has_cur_dataset_attribute("branch_time")==0) {
-	  cmor_get_cur_dataset_attribute("branch_time",msg);
-	  sscanf(msg,"%lf",&tmps[0]);
-	  if (tmps[0]!=0.) {
-	    sprintf(msg,"when dataset attribute parent_experiment_id is set to N/A, branch_time must be 0., you passed: %lf, we are resetting to 0. for variable %s (table: %s)",tmps[0],cmor_vars[var_id].id,cmor_tables[cmor_vars[var_id].ref_table_id].table_id);
-	    cmor_handle_error(msg,CMOR_WARNING);
-	    cmor_set_cur_dataset_attribute_internal("branch_time","0.",1);
-	  }
-	}
-	cmor_set_cur_dataset_attribute_internal("parent_experiment","N/A",1);
-      }
+    snprintf(msg, CMOR_MAX_STRING, "%.4i-%.2i-%.2iT%.2i:%.2i:%.2iZ",
+            ptr->tm_year + 1900, ptr->tm_mon + 1, ptr->tm_mday, ptr->tm_hour,
+            ptr->tm_min, ptr->tm_sec);
+
+    cmor_set_cur_dataset_attribute_internal(GLOBAL_ATT_CREATION_DATE, msg, 0);
+
+    if (did_history == 0) {
+        snprintf(ctmp, CMOR_MAX_STRING,
+                "%s CMOR rewrote data to be consistent with CF standards"
+                " and %s requirements.", msg,
+                cmor_tables[nVarRefTblID].mip_era);
+
+        if (cmor_has_cur_dataset_attribute(GLOBAL_ATT_HISTORY) == 0) {
+            cmor_get_cur_dataset_attribute(GLOBAL_ATT_HISTORY, msg);
+            snprintf(ctmp2, CMOR_MAX_STRING, "%s ; %s", msg, ctmp);
+            strncpy(ctmp, ctmp2, CMOR_MAX_STRING);
+        }
+        cmor_set_cur_dataset_attribute_internal(GLOBAL_ATT_HISTORY, ctmp, 0);
+        did_history = 1;
+    }
+/* -------------------------------------------------------------------- */
+/*    Set attribute Conventions for netCDF file metadata                */
+/* -------------------------------------------------------------------- */
+
+    snprintf(msg, CMOR_MAX_STRING, "%s", cmor_tables[nVarRefTblID].Conventions);
+
+    cmor_set_cur_dataset_attribute_internal(GLOBAL_ATT_CONVENTIONS, msg, 0);
+
+/* -------------------------------------------------------------------- */
+/*    Set attribute data_specs_versions for netCDF file (CMIP6)         */
+/* -------------------------------------------------------------------- */
+    if( cmor_tables[nVarRefTblID].data_specs_version != '\0' ) {
+            snprintf(msg, CMOR_MAX_STRING, "%s",
+                    cmor_tables[nVarRefTblID].data_specs_version);
+            cmor_set_cur_dataset_attribute_internal(GLOBAL_ATT_DATASPECSVERSION,
+                    msg, 0);
+    }
+/* -------------------------------------------------------------------- */
+/*    Set attribute frequency for netCDF file (CMIP6)                   */
+/* -------------------------------------------------------------------- */
+    snprintf(msg, CMOR_MAX_STRING, "%s",
+            cmor_tables[nVarRefTblID].frequency);
+    cmor_set_cur_dataset_attribute_internal(GLOBAL_ATT_FREQUENCY, msg, 0);
+/* -------------------------------------------------------------------- */
+/*    Set attribute variable_id for netCDF file (CMIP6)                 */
+/* -------------------------------------------------------------------- */
+    snprintf(msg, CMOR_MAX_STRING, "%s",
+            cmor_vars[var_id].id);
+    cmor_set_cur_dataset_attribute_internal(GLOBAL_ATT_VARIABLE_ID, msg, 0);
+
+/* -------------------------------------------------------------------- */
+/*    Set attribute Table_ID for netCDF file (CMIP6)                    */
+/* -------------------------------------------------------------------- */
+    snprintf(msg, CMOR_MAX_STRING, "%s",
+            cmor_tables[nVarRefTblID].szTable_id);
+
+
+    cmor_set_cur_dataset_attribute_internal(GLOBAL_ATT_TABLE_ID, msg, 0);
+
+/* -------------------------------------------------------------------- */
+/*    Set attribute Table_Info for netCDF file (CMIP6)                  */
+/* -------------------------------------------------------------------- */
+    snprintf(msg, CMOR_MAX_STRING, "Creation Date:(%s) MD5:",
+            cmor_tables[nVarRefTblID].date);
+
+    for (i = 0; i < 16; i++) {
+              sprintf(&ctmp[2 * i], "%02x", cmor_tables[nVarRefTblID].md5[i]);
+    }
+    ctmp[32] = '\0';
+    strcat(msg, ctmp);
+
+    cmor_set_cur_dataset_attribute_internal(GLOBAL_ATT_TABLE_INFO, msg, 0);
+
+    if (cmor_has_cur_dataset_attribute(GLOBAL_ATT_SOURCE_ID) == 0) {
+        cmor_get_cur_dataset_attribute(GLOBAL_ATT_SOURCE_ID, ctmp);
+    } else {
+        ctmp[0] = '\0';
+    }
+/* -------------------------------------------------------------------- */
+/*    Set attribute Title for netCDF file (CMIP6)                       */
+/* -------------------------------------------------------------------- */
+    snprintf(msg, CMOR_MAX_STRING, GLOBAL_ATT_TITLE_MSG, ctmp,
+            cmor_tables[nVarRefTblID].mip_era);
+/* -------------------------------------------------------------------- */
+/*    Change Title if not provided by user.                             */
+/* -------------------------------------------------------------------- */
+    if (cmor_has_cur_dataset_attribute(GLOBAL_ATT_TITLE) != 0) {
+        cmor_set_cur_dataset_attribute_internal(GLOBAL_ATT_TITLE, msg, 0);
+    }
+/* -------------------------------------------------------------------- */
+/*     check source and model_id are identical                          */
+/* -------------------------------------------------------------------- */
+    if (cmor_tables[nVarRefTblID].mip_era[0] != '\0' ){
+            cmor_set_cur_dataset_attribute_internal(GLOBAL_ATT_MIP_ERA,
+                    cmor_tables[nVarRefTblID].mip_era, 0);
+    }
+
+/* -------------------------------------------------------------------- */
+/*      first check if the variable itself has a realm                  */
+/* -------------------------------------------------------------------- */
+    if (cmor_tables[nVarRefTblID].vars[nVarRefTblID].realm[0] != '\0') {
+        cmor_set_cur_dataset_attribute_internal(GLOBAL_ATT_REALM,
+                cmor_tables[nVarRefTblID].vars[nVarRefTblID].realm, 0);
+    } else {
+/* -------------------------------------------------------------------- */
+/*      ok it didn't so we're using the value from the table            */
+/* -------------------------------------------------------------------- */
+        cmor_set_cur_dataset_attribute_internal(GLOBAL_ATT_REALM,
+                cmor_tables[nVarRefTblID].realm, 0);
+    }
+    cmor_generate_uuid();
+/* -------------------------------------------------------------------- */
+/*     Create external_variables                                        */
+/* -------------------------------------------------------------------- */
+    if (cmor_has_variable_attribute(var_id, VARIABLE_ATT_CELLMEASURES) == 0) {
+
+        if (cmor_has_variable_attribute(var_id, VARIABLE_ATT_CELLMETHODS) == 0) {
+            cmor_get_variable_attribute(var_id, VARIABLE_ATT_CELLMETHODS, ctmp);
+/* -------------------------------------------------------------------- */
+/*     Extract 2 words after "area:" or "volume:" if exist.             */
+/* -------------------------------------------------------------------- */
+            regcomp(&regex, EXTERNAL_VARIABLE_REGEX, REG_EXTENDED);
+
+            regexec(&regex, ctmp , n_matches, m, 0);
+
+            words[0]='\0';
+            ctmp2[0]='\0';
+            for( i = 0; i< n_matches; i++ ) {
+                numchar = (int)m[i].rm_eo - (int) m[i].rm_so;
+/* -------------------------------------------------------------------- */
+/*     If rm_so is negative, there is not more matches.                 */
+/* -------------------------------------------------------------------- */
+                if(((int)m[i].rm_so < 0) || (numchar == 0)) {
+                    break;
+                }
+
+                strncpy(words, ctmp+m[i].rm_so, numchar);
+                words[numchar]='\0';
+                ret = strstr(words,":");
+/* -------------------------------------------------------------------- */
+/*      Rejects all line with ":" in it                                 */
+/* -------------------------------------------------------------------- */
+                if( ret == NULL ) {
+                    if(ctmp2[0]=='\0') {
+                        strncat(ctmp2, words, numchar);
+                    } else {
+                        strcat(ctmp2, " ");
+                        strncat(ctmp2, words, numchar);
+                    }
+                }
+            }
+            cmor_set_cur_dataset_attribute_internal(GLOBAL_ATT_EXTERNAL_VAR,
+                    ctmp2, 0);
+            regfree(&regex);
+        }
     }
-    
-    cmor_has_required_global_attributes(cmor_vars[var_id].ref_table_id);
-    
-    /* ok at this point if we are CMIP5 needs to check source and model_id are identical */
-    if (strcmp(cmor_tables[cmor_vars[var_id].ref_table_id].project_id,"CMIP5")==0) {
-      cmor_get_cur_dataset_attribute("model_id",ctmp5);
-      cmor_get_cur_dataset_attribute("source",ctmp6);
-      if (strncmp(ctmp5,ctmp6,strlen(ctmp5))!=0) {
-	snprintf(msg,CMOR_MAX_STRING,"while writing variable %s (table: %s), source attribute does not start with 'model_id', it should start with: %s",cmor_vars[var_id].id,cmor_tables[cmor_vars[var_id].ref_table_id].table_id,ctmp5);
-	cmor_handle_error(msg,CMOR_CRITICAL);
-      }
+
+
+
+    if( cmor_has_cur_dataset_attribute(GLOBAL_ATT_INSTITUTION_ID) == 0) {
+        cmor_CV_setInstitution(cmor_tables[nVarRefTblID].CV);
     }
-    
-    /* first check if the variable itself has a realm */
-    if (cmor_tables[cmor_vars[var_id].ref_table_id].vars[cmor_vars[var_id].ref_var_id].realm[0]!='\0') {
-      cmor_set_cur_dataset_attribute_internal("modeling_realm",cmor_tables[cmor_vars[var_id].ref_table_id].vars[cmor_vars[var_id].ref_var_id].realm,0);
+
+
+    if( cmor_has_cur_dataset_attribute(GLOBAL_IS_CMIP6) == 0) {
+        cmor_CV_checkSourceID(cmor_tables[nVarRefTblID].CV);
+        cmor_CV_checkExperiment(cmor_tables[nVarRefTblID].CV);
+        cmor_CV_checkGrids(cmor_tables[nVarRefTblID].CV);
+        cmor_CV_checkFurtherInfoURL(var_id);
     }
-    else { /*ok it didn't so we're using the value from the table */
-      cmor_set_cur_dataset_attribute_internal("modeling_realm",cmor_tables[cmor_vars[var_id].ref_table_id].realm,0);
+
+    cmor_CV_checkGblAttributes(cmor_tables[nVarRefTblID].CV);
+    cmor_CV_checkISOTime(GLOBAL_ATT_CREATION_DATE);
+
+}
+/************************************************************************/
+/*                      cmor_writeGblAttr()                             */
+/************************************************************************/
+int cmor_writeGblAttr(int var_id, int ncid, int ncafid) {
+    char msg[CMOR_MAX_STRING];
+    int ierr;
+    float afloat, d;
+
+    int nVarRefTblID;
+
+    cmor_add_traceback("cmor_writeGblAttr");
+    nVarRefTblID = cmor_vars[var_id].ref_table_id;
+    cmor_write_all_attributes(ncid, ncafid, var_id);
+
+/* -------------------------------------------------------------------- */
+/*      check table cf version vs ours                                  */
+/* -------------------------------------------------------------------- */
+    afloat = CMOR_CF_VERSION_MAJOR;
+    d = CMOR_CF_VERSION_MINOR;
+    while (d > 1.) {
+        d /= 10.;
+    }
+    afloat += d;
+
+    if (cmor_tables[nVarRefTblID].cf_version > afloat) {
+        snprintf(msg, CMOR_MAX_STRING,
+                "Your table (%s) claims to enforce CF version %f but\n! "
+                        "this version of the library is designed for CF up\n! "
+                        "to: %i.%i, you were writing variable: %s\n! ",
+                cmor_tables[nVarRefTblID].szTable_id,
+                cmor_tables[nVarRefTblID].cf_version, CMOR_CF_VERSION_MAJOR,
+                CMOR_CF_VERSION_MINOR, cmor_vars[var_id].id);
+        cmor_handle_error(msg, CMOR_WARNING);
+    }
+/* -------------------------------------------------------------------- */
+/*      cmor_ver                                                        */
+/* -------------------------------------------------------------------- */
+    snprintf(msg, CMOR_MAX_STRING, "%i.%i.%i", CMOR_VERSION_MAJOR,
+            CMOR_VERSION_MINOR, CMOR_VERSION_PATCH);
+    ierr = nc_put_att_text(ncid, NC_GLOBAL, GLOBAL_ATT_CMORVERSION,
+            strlen(msg) + 1, msg);
+    if (ierr != NC_NOERR) {
+        snprintf(msg, CMOR_MAX_STRING,
+                "NetCDF error (%i: %s) writing variable %s (table: %s)\n! "
+                        "global att cmor_version (%f)", ierr, nc_strerror(ierr),
+                cmor_vars[var_id].id, cmor_tables[nVarRefTblID].szTable_id,
+                afloat);
+        cmor_handle_error(msg, CMOR_CRITICAL);
+    }
+
+    if (ncid != ncafid) {
+
+/* -------------------------------------------------------------------- */
+/*      cmor_ver                                                        */
+/* -------------------------------------------------------------------- */
+        ierr = nc_put_att_text(ncid, NC_GLOBAL, GLOBAL_ATT_CMORVERSION,
+                strlen(msg) + 1, msg);
+        if (ierr != NC_NOERR) {
+            snprintf(msg, CMOR_MAX_STRING,
+                    "NetCDF error (%i: %s) writing variable %s\n! "
+                            "(table: %s) global att cmor_version (%f)", ierr,
+                    nc_strerror(ierr), cmor_vars[var_id].id,
+                    cmor_tables[nVarRefTblID].szTable_id, afloat);
+            cmor_handle_error(msg, CMOR_CRITICAL);
+        }
     }
-    
+    cmor_pop_traceback();
+    return (0);
+}
+
+/************************************************************************/
+/*                        cmor_attNameCmp()                             */
+/************************************************************************/
+int cmor_attNameCmp(const void *v1, const void *v2)
+{
+  const attributes_def *c1 = v1;
+  const attributes_def *c2 = v2;
+  return(strcmp (c1->names, c2->names));
+}
 
-    /* generates a new unique id */
+/************************************************************************/
+/*                     cmor_generate_uuid()                             */
+/************************************************************************/
+void cmor_generate_uuid(){
+    uuid_t *myuuid;
+    uuid_fmt_t fmt;
+    void *myuuid_str = NULL;
+    size_t uuidlen;
+    char value[CMOR_MAX_STRING];
+
+    cmor_add_traceback("cmor_generate_uuid");
+
+/* -------------------------------------------------------------------- */
+/*      generates a new unique id                                       */
+/* -------------------------------------------------------------------- */
     uuid_create(&myuuid);
-    uuid_make(myuuid,4);
+    uuid_make(myuuid, 4);
+
     myuuid_str = NULL;
     fmt = UUID_FMT_STR;
-    uuid_export(myuuid,fmt,&myuuid_str,&uuidlen);
-    tracking_id_set = 0;
 
-    if (cmor_filter_tracking_prefix(cmor_tables[cmor_vars[var_id].ref_table_id].project_id) == 1) {
-      // filter matched, now either include the prefix or complain
-      if (strlen(cmor_tables[cmor_vars[var_id].ref_table_id].tracking_prefix) > 0) {
-        strncpy(cmor_current_dataset.tracking_id, cmor_tables[cmor_vars[var_id].ref_table_id].tracking_prefix, CMOR_MAX_STRING);
+/* -------------------------------------------------------------------- */
+/*      Write tracking_id and tracking_prefix                           */
+/* -------------------------------------------------------------------- */
+    uuid_export(myuuid, fmt, &myuuid_str, &uuidlen);
+
+    if( cmor_has_cur_dataset_attribute( GLOBAL_ATT_TRACKING_PREFIX ) == 0 ) {
+        cmor_get_cur_dataset_attribute( GLOBAL_ATT_TRACKING_PREFIX, value );
+
+        strncpy(cmor_current_dataset.tracking_id,
+                value, CMOR_MAX_STRING);
         strcat(cmor_current_dataset.tracking_id, "/");
         strcat(cmor_current_dataset.tracking_id, (char *) myuuid_str);
-        tracking_id_set = 1;
-      }
-      else {
-          sprintf(msg,"Project requires tracking prefixes, but no tracking_prefix was specified for table %s",tmps[0],cmor_tables[cmor_vars[var_id].ref_table_id].table_id);
-          cmor_handle_error(msg,CMOR_WARNING);
-      }
-    }
-    if (!tracking_id_set) {
-      strncpy(cmor_current_dataset.tracking_id,(char *)myuuid_str,CMOR_MAX_STRING);
+    } else {
+        strncpy(cmor_current_dataset.tracking_id, (char *) myuuid_str,
+                CMOR_MAX_STRING);
     }
-    cmor_set_cur_dataset_attribute_internal("tracking_id",cmor_current_dataset.tracking_id,0);
+    cmor_set_cur_dataset_attribute_internal(GLOBAL_ATT_TRACKING_ID,
+            cmor_current_dataset.tracking_id, 0);
     free(myuuid_str);
     uuid_destroy(myuuid);
+    cmor_pop_traceback();
 
+}
 
-    for (i=0;i<cmor_current_dataset.nattributes;i++) {
-      if (strcmp(cmor_current_dataset.attributes_names[i],"calendar")!=0) {
-	if ((strcmp(cmor_current_dataset.attributes_names[i],"initialization_method")==0) || (strcmp(cmor_current_dataset.attributes_names[i],"physics_version")==0) ) { /* these two are actually int not char */
-	  sscanf(cmor_current_dataset.attributes_values[i],"%i",&itmp2);
-	  ierr = nc_put_att_int(ncid, NC_GLOBAL, cmor_current_dataset.attributes_names[i],NC_INT,1,&itmp2);
-	  if (ierr != NC_NOERR) {snprintf(msg,CMOR_MAX_STRING,"NetCDF error (%i: %s) for variable %s (table: %s) writing global att: %s (%s)",ierr,nc_strerror(ierr),cmor_vars[var_id].id,cmor_tables[cmor_vars[var_id].ref_table_id].table_id,cmor_current_dataset.attributes_names[i],cmor_current_dataset.attributes_values[i]); cmor_handle_error(msg,CMOR_CRITICAL);}
-	  if (ncid!=ncafid) {
-	    ierr = nc_put_att_int(ncafid, NC_GLOBAL, cmor_current_dataset.attributes_names[i],NC_INT,1,&itmp2);
-	    if (ierr != NC_NOERR) {snprintf(msg,CMOR_MAX_STRING,"NetCDF error (%i: %s) for variable %s (table: %s) writing global att to metafile: %s (%s)",ierr,nc_strerror(ierr),cmor_vars[var_id].id,cmor_tables[cmor_vars[var_id].ref_table_id].table_id,cmor_current_dataset.attributes_names[i],cmor_current_dataset.attributes_values[i]); cmor_handle_error(msg,CMOR_CRITICAL);}
-	  }
-	}
-	else if (strcmp(cmor_current_dataset.attributes_names[i],"branch_time")==0) {
-	  /* double attribute */
-	  sscanf(cmor_current_dataset.attributes_values[i],"%lf",&tmps[0]);
-	  ierr = nc_put_att_double(ncid, NC_GLOBAL, cmor_current_dataset.attributes_names[i],NC_DOUBLE,1,&tmps[0]);
-	  if (ierr != NC_NOERR) {snprintf(msg,CMOR_MAX_STRING,"NetCDF error (%i: %s) for variable %s (table: %s)  writing global att: %s (%s)",ierr,nc_strerror(ierr),cmor_vars[var_id].id,cmor_tables[cmor_vars[var_id].ref_table_id].table_id,cmor_current_dataset.attributes_names[i],cmor_current_dataset.attributes_values[i]); cmor_handle_error(msg,CMOR_CRITICAL);}
-	  if (ncid!=ncafid) {
-	    ierr = nc_put_att_double(ncafid, NC_GLOBAL, cmor_current_dataset.attributes_names[i],NC_DOUBLE,1,&tmps[0]);
-	    if (ierr != NC_NOERR) {snprintf(msg,CMOR_MAX_STRING,"NetCDF error (%i: %s) for variable %s (table: %s), writing global att to metafile: %s (%s)",ierr,nc_strerror(ierr),cmor_vars[var_id].id,cmor_tables[cmor_vars[var_id].ref_table_id].table_id,cmor_current_dataset.attributes_names[i],cmor_current_dataset.attributes_values[i]); cmor_handle_error(msg,CMOR_CRITICAL);}
-	  }
-	}
-	else {
-	  itmp2 = strlen(cmor_current_dataset.attributes_values[i]);
-	  if (itmp2<CMOR_DEF_ATT_STR_LEN) {
-	    for (itmp2=strlen(cmor_current_dataset.attributes_values[i]);itmp2<CMOR_DEF_ATT_STR_LEN;itmp2++) {
-	      cmor_current_dataset.attributes_values[i][itmp2]='\0';
-	    }
-	    itmp2=CMOR_DEF_ATT_STR_LEN;
-	  }
-	  ierr = nc_put_att_text(ncid, NC_GLOBAL,cmor_current_dataset.attributes_names[i],itmp2,cmor_current_dataset.attributes_values[i]);
-	  if (ierr != NC_NOERR) {snprintf(msg,CMOR_MAX_STRING,"NetCDF error (%i: %s) for variable %s (table: %s)  writing global att: %s (%s)",ierr,nc_strerror(ierr),cmor_vars[var_id].id,cmor_tables[cmor_vars[var_id].ref_table_id].table_id,cmor_current_dataset.attributes_names[i],cmor_current_dataset.attributes_values[i]); cmor_handle_error(msg,CMOR_CRITICAL);}
-	  if (ncid!=ncafid) {
-	    ierr = nc_put_att_text(ncafid, NC_GLOBAL,cmor_current_dataset.attributes_names[i],itmp2,cmor_current_dataset.attributes_values[i]);
-	    if (ierr != NC_NOERR) {snprintf(msg,CMOR_MAX_STRING,"NetCDF error (%i: %s) for variable %s (table %s), writing global att to metafile: %s (%s)",ierr,nc_strerror(ierr),cmor_vars[var_id].id,cmor_tables[cmor_vars[var_id].ref_table_id].table_id,cmor_current_dataset.attributes_names[i],cmor_current_dataset.attributes_values[i]); cmor_handle_error(msg,CMOR_CRITICAL);}
-	  }
-	}
-      }
+/************************************************************************/
+/*                  cmor_write_all_atributes()                          */
+/************************************************************************/
+void cmor_write_all_attributes(int ncid, int ncafid, int var_id) {
+    int ierr;
+    char msg[CMOR_MAX_STRING];
+    char value[CMOR_MAX_STRING];
+    double tmps[2];
+    int i;
+    int nVarRefTblID;
+    int itmp2;
+    int rc;
+
+    cmor_add_traceback("cmor_write_all_attributes");
+    nVarRefTblID = cmor_vars[var_id].ref_table_id;
+
+    qsort( cmor_current_dataset.attributes, cmor_current_dataset.nattributes,
+            sizeof(struct attributes), cmor_attNameCmp);
+
+    for (i = 0; i < cmor_current_dataset.nattributes; i++) {
+/* -------------------------------------------------------------------- */
+/* Skip "calendar" global attribute                                     */
+/* -------------------------------------------------------------------- */
+        if (strcmp(cmor_current_dataset.attributes[i].names,
+                GLOBAL_ATT_CALENDAR) == 0) {
+            continue;
+        }
+/* -------------------------------------------------------------------- */
+/* Skip "tracking_prefix" global attribute                              */
+/* -------------------------------------------------------------------- */
+        if (strcmp(cmor_current_dataset.attributes[i].names,
+                GLOBAL_ATT_TRACKING_PREFIX) == 0) {
+            continue;
+        }
+/* -------------------------------------------------------------------- */
+/* Write license last, not now!!                                       */
+/* -------------------------------------------------------------------- */
+        if (strcmp(cmor_current_dataset.attributes[i].names,
+                GLOBAL_ATT_LICENSE) == 0) {
+            continue;
+        }
+/* -------------------------------------------------------------------- */
+/*  Write Branch_Time as double attribute                               */
+/* -------------------------------------------------------------------- */
+
+        rc = strcmp(cmor_current_dataset.attributes[i].names,
+                GLOBAL_ATT_BRANCH_TIME);
+/* -------------------------------------------------------------------- */
+/*  matches "branch_time" and "branch_time_something"                   */
+/* -------------------------------------------------------------------- */
+        if ((rc == 0) || (rc == 95 )) {
+            sscanf(cmor_current_dataset.attributes[i].values, "%lf", &tmps[0]);
+            ierr = nc_put_att_double(ncid, NC_GLOBAL,
+                    cmor_current_dataset.attributes[i].names, NC_DOUBLE, 1,
+                    &tmps[0]);
+            if (ierr != NC_NOERR) {
+                snprintf(msg, CMOR_MAX_STRING,
+                        "NetCDF error (%i: %s) for variable %s\n! "
+                                "(table: %s)  writing global att: %s (%s)\n! ",
+                        ierr, nc_strerror(ierr), cmor_vars[var_id].id,
+                        cmor_tables[nVarRefTblID].szTable_id,
+                        cmor_current_dataset.attributes[i].names,
+                        cmor_current_dataset.attributes[i].values);
+                cmor_handle_error(msg, CMOR_CRITICAL);
+
+            }
+            if (ncid != ncafid) {
+                ierr = nc_put_att_double(ncafid, NC_GLOBAL,
+                        cmor_current_dataset.attributes[i].names, NC_DOUBLE, 1,
+                        &tmps[0]);
+                if (ierr != NC_NOERR) {
+                    snprintf(msg, CMOR_MAX_STRING,
+                            "NetCDF error (%i: %s) for variable\n! "
+                                    "%s (table: %s), writing global att\n! "
+                                    "to metafile: %s (%s)", ierr,
+                            nc_strerror(ierr), cmor_vars[var_id].id,
+                            cmor_tables[nVarRefTblID].szTable_id,
+                            cmor_current_dataset.attributes[i].names,
+                            cmor_current_dataset.attributes[i].values);
+                    cmor_handle_error(msg, CMOR_CRITICAL);
+                }
+            }
+        } else if( (strcmp(cmor_current_dataset.attributes[i].names,
+                        GLOBAL_ATT_REALIZATION) == 0) ||
+                (strcmp(cmor_current_dataset.attributes[i].names,
+                        GLOBAL_ATT_INITIA_IDX) == 0) ||
+                (strcmp(cmor_current_dataset.attributes[i].names,
+                        GLOBAL_ATT_PHYSICS_IDX) == 0) ||
+                (strcmp(cmor_current_dataset.attributes[i].names,
+                        GLOBAL_ATT_FORCING_IDX) == 0)) {
+            sscanf(cmor_current_dataset.attributes[i].values, "%d", &itmp2);
+            ierr = nc_put_att_int(ncid, NC_GLOBAL,
+                               cmor_current_dataset.attributes[i].names,
+                               NC_INT, 1,
+                               &itmp2);
+            if (ierr != NC_NOERR) {
+                snprintf(msg, CMOR_MAX_STRING,
+                        "NetCDF error (%i: %s) for variable %s\n! "
+                        "(table: %s)  writing global att: %s (%s)\n! ",
+                        ierr, nc_strerror(ierr), cmor_vars[var_id].id,
+                        cmor_tables[nVarRefTblID].szTable_id,
+                        cmor_current_dataset.attributes[i].names,
+                        cmor_current_dataset.attributes[i].values);
+                cmor_handle_error(msg, CMOR_CRITICAL);
+
+            }
+        } else {
+            itmp2 = strlen(cmor_current_dataset.attributes[i].values);
+            if (itmp2 < CMOR_DEF_ATT_STR_LEN) {
+                int nNbAttrs = strlen(cmor_current_dataset.attributes[i].values);
+                for (itmp2 = nNbAttrs; itmp2 < CMOR_DEF_ATT_STR_LEN; itmp2++) {
+                    cmor_current_dataset.attributes[i].values[itmp2] = '\0';
+                }
+                itmp2 = CMOR_DEF_ATT_STR_LEN;
+            }
+/* -------------------------------------------------------------------- */
+/*  Write all "text" attributes                                         */
+/* -------------------------------------------------------------------- */
+/* -------------------------------------------------------------------- */
+/*      Skip attributes starting with "_"                               */
+/* -------------------------------------------------------------------- */
+            if (cmor_current_dataset.attributes[i].names[0] != '_') {
+                ierr = nc_put_att_text(ncid, NC_GLOBAL,
+                        cmor_current_dataset.attributes[i].names, itmp2,
+                        cmor_current_dataset.attributes[i].values);
+
+                if (ierr != NC_NOERR) {
+                    snprintf(msg, CMOR_MAX_STRING,
+                            "NetCDF error (%i: %s) for variable %s\n! "
+                                    "(table: %s)  writing global att: %s (%s)",
+                            ierr, nc_strerror(ierr), cmor_vars[var_id].id,
+                            cmor_tables[nVarRefTblID].szTable_id,
+                            cmor_current_dataset.attributes[i].names,
+                            cmor_current_dataset.attributes[i].values);
+                    cmor_handle_error(msg, CMOR_CRITICAL);
+                }
+                if (ncid != ncafid) {
+                    ierr = nc_put_att_text(ncafid, NC_GLOBAL,
+                            cmor_current_dataset.attributes[i].names, itmp2,
+                            cmor_current_dataset.attributes[i].values);
+                    if (ierr != NC_NOERR) {
+                        snprintf(msg, CMOR_MAX_STRING,
+                                "NetCDF error (%i: %s) for variable %s\n! "
+                                        "(table %s), writing global att to\n! "
+                                        "metafile: %s (%s)", ierr,
+                                nc_strerror(ierr), cmor_vars[var_id].id,
+                                cmor_tables[nVarRefTblID].szTable_id,
+                                cmor_current_dataset.attributes[i].names,
+                                cmor_current_dataset.attributes[i].values);
+                        cmor_handle_error(msg, CMOR_CRITICAL);
+                    }
+                }
+            }
+        }
+    }
+/* -------------------------------------------------------------------- */
+/*      Write license attribute                                         */
+/* -------------------------------------------------------------------- */
+    if( cmor_has_cur_dataset_attribute( GLOBAL_ATT_LICENSE ) == 0 ) {
+
+        cmor_get_cur_dataset_attribute( GLOBAL_ATT_LICENSE, value );
+        itmp2 = strlen(value);
+
+        ierr = nc_put_att_text(ncid, NC_GLOBAL,GLOBAL_ATT_LICENSE, itmp2,
+                value);
+
+        if (ierr != NC_NOERR) {
+            snprintf(msg, CMOR_MAX_STRING,
+                    "NetCDF error (%i: %s) for variable %s\n! "
+                            "(table: %s)  writing global att: %s (%s)",
+                    ierr, nc_strerror(ierr), cmor_vars[var_id].id,
+                    cmor_tables[nVarRefTblID].szTable_id,
+                    GLOBAL_ATT_LICENSE,
+                    value);
+            cmor_handle_error(msg, CMOR_CRITICAL);
+        }
+        if (ncid != ncafid) {
+            ierr = nc_put_att_text(ncafid, NC_GLOBAL,
+                    GLOBAL_ATT_LICENSE, itmp2,
+                    value);
+            if (ierr != NC_NOERR) {
+                snprintf(msg, CMOR_MAX_STRING,
+                        "NetCDF error (%i: %s) for variable %s\n! "
+                                "(table %s), writing global att to\n! "
+                                "metafile: %s (%s)", ierr,
+                        nc_strerror(ierr), cmor_vars[var_id].id,
+                        cmor_tables[nVarRefTblID].szTable_id,
+                        GLOBAL_ATT_LICENSE,
+                        value);
+                cmor_handle_error(msg, CMOR_CRITICAL);
+            }
+        }
     }
-    /* realization */
-    ierr = nc_put_att_int(ncid, NC_GLOBAL,"realization",NC_INT,1,&cmor_current_dataset.realization);
-    if (ierr != NC_NOERR) {snprintf(msg,CMOR_MAX_STRING,"NetCDF error (%i: %s) writing variable %s (table: %s) global att realization (%i)",ierr,nc_strerror(ierr),cmor_vars[var_id].id,cmor_tables[cmor_vars[var_id].ref_table_id].table_id,cmor_current_dataset.realization); cmor_handle_error(msg,CMOR_CRITICAL);}
+    cmor_pop_traceback();
+}
 
-    /* cmor_ver */
-    snprintf(msg,CMOR_MAX_STRING,"%i.%i.%i",CMOR_VERSION_MAJOR,CMOR_VERSION_MINOR,CMOR_VERSION_PATCH);
-    ierr = nc_put_att_text(ncid, NC_GLOBAL,"cmor_version",strlen(msg)+1,msg);
-    if (ierr != NC_NOERR) {snprintf(msg,CMOR_MAX_STRING,"NetCDF error (%i: %s) writing variable %s (table: %s) global att cmor_version (%f)",ierr,nc_strerror(ierr),cmor_vars[var_id].id,cmor_tables[cmor_vars[var_id].ref_table_id].table_id,afloat); cmor_handle_error(msg,CMOR_CRITICAL);}
+/************************************************************************/
+/*                cmor_define_dimensions()                              */
+/************************************************************************/
+void cmor_define_dimensions(int var_id, int ncid,
+                            int ncafid, double *time_bounds,
+                            int *nc_dim,
+                            int *nc_vars, int *nc_bnds_vars,
+                            int *nc_vars_af,
+                            size_t *nc_dim_chunking, int *dim_bnds,
+                            int *zfactors, int *nc_zfactors,
+                            int *nc_dim_af){
+    int i,j,k,l,n;
+    char msg[CMOR_MAX_STRING];
+    char ctmp[CMOR_MAX_STRING];
+    char ctmp2[CMOR_MAX_STRING];
+    char ctmp3[CMOR_MAX_STRING];
+
+    int ierr;
+    int tmp_dims[2];
+    int dims_bnds_ids[2];
+    int nzfactors = 0;
+    int nVarRefTblID = cmor_vars[var_id].ref_table_id;
+    int ics, icd, icdl;
+    int itmpmsg, itmp2, itmp3;
+
+    cmor_add_traceback("cmor_define_dimensions");
+    for (i = 0; i < cmor_vars[var_id].ndims; i++) {
+/* -------------------------------------------------------------------- */
+/*      did we flip that guy?                                           */
+/* -------------------------------------------------------------------- */
+        if (cmor_axes[cmor_vars[var_id].axes_ids[i]].revert == -1) {
+            sprintf(msg, "Inverted axis: %s",
+                    cmor_axes[cmor_vars[var_id].axes_ids[i]].id);
+/* -------------------------------------------------------------------- */
+/*      fiddle to avoid duplicated effort here if it's already inverted */
+/* -------------------------------------------------------------------- */
+            if (!cmor_history_contains(var_id, msg)) {
+                cmor_update_history(var_id, msg);
+            }
+        }
+        int nAxisID = cmor_vars[var_id].axes_ids[i];
+/* -------------------------------------------------------------------- */
+/*      Axis length                                                     */
+/* -------------------------------------------------------------------- */
+        j = cmor_axes[nAxisID].length;
+        if ((i == 0) && (cmor_axes[nAxisID].axis == 'T'))
+            j = NC_UNLIMITED;
+
+        if ((cmor_axes[nAxisID].axis == 'X') || (cmor_axes[nAxisID].axis == 'Y')) {
+            nc_dim_chunking[i] = j;
+        } else if (cmor_axes[nAxisID].isgridaxis == 1) {
+            nc_dim_chunking[i] = j;
+        } else {
+            nc_dim_chunking[i] = 1;
+        }
 
-    if (ncid!=ncafid) {
-      ierr = nc_put_att_int(ncafid, NC_GLOBAL,"realization",NC_INT,1,&cmor_current_dataset.realization);
-      if (ierr != NC_NOERR) {snprintf(msg,CMOR_MAX_STRING,"NetCDF error (%i: %s) writing variable %s (table: %s) global att realization (%i) to metafile",ierr,nc_strerror(ierr),cmor_vars[var_id].id,cmor_tables[cmor_vars[var_id].ref_table_id].table_id,cmor_current_dataset.realization); cmor_handle_error(msg,CMOR_CRITICAL);}
-      /* cmor_ver */
-      ierr = nc_put_att_text(ncid, NC_GLOBAL,"cmor_version",strlen(msg)+1,msg);
-      if (ierr != NC_NOERR) {snprintf(msg,CMOR_MAX_STRING,"NetCDF error (%i: %s) writing variable %s (table: %s) global att cmor_version (%f)",ierr,nc_strerror(ierr),cmor_vars[var_id].id,cmor_tables[cmor_vars[var_id].ref_table_id].table_id,afloat); cmor_handle_error(msg,CMOR_CRITICAL);}
+        ierr = nc_def_dim(ncid, cmor_axes[nAxisID].id, j, &nc_dim[i]);
+        if (ierr != NC_NOERR) {
+            snprintf(msg, CMOR_MAX_STRING,
+                    "NetCDF error (%i:%s) for dimension definition of\n! "
+                            "axis: %s (%i), for variable %i (%s, table: %s)",
+                    ierr, nc_strerror(ierr), cmor_axes[nAxisID].id, nAxisID,
+                    var_id, cmor_vars[var_id].id,
+                    cmor_tables[nVarRefTblID].szTable_id);
+            ierr = nc_enddef(ncid);
+            cmor_handle_error(msg, CMOR_CRITICAL);
+        }
+        nc_dim_af[i] = nc_dim[i];
+        if (ncid != ncafid) {
+            ierr = nc_def_dim(ncafid, cmor_axes[nAxisID].id, j, &nc_dim_af[i]);
+            if (ierr != NC_NOERR) {
+                snprintf(msg, CMOR_MAX_STRING,
+                        "NetCDF error (%i: %s) for dimension definition\n! "
+                                "of axis: %s (%i) in metafile, variable %s "
+                                "(table: %s)", ierr, nc_strerror(ierr),
+                        cmor_axes[cmor_vars[var_id].axes_ids[i]].id, i,
+                        cmor_vars[var_id].id,
+                        cmor_tables[nVarRefTblID].szTable_id);
+                cmor_handle_error(msg, CMOR_CRITICAL);
+            }
+        }
     }
-    if (isfixed==1) cmor_current_dataset.realization = origRealization;
-    
-    /* store netcdf file id associated with this variable */
-    cmor_vars[var_id].initialized=ncid;
-
-
-    /* define dimensions in NetCDF file */
-    for (i=0;i<cmor_vars[var_id].ndims;i++) {
-      /* did we flip that guy? */
-      if (cmor_axes[cmor_vars[var_id].axes_ids[i]].revert==-1) {
-	sprintf(msg,"Inverted axis: %s",cmor_axes[cmor_vars[var_id].axes_ids[i]].id);
-        /* fiddle to avoid duplicated effort here if it's already inverted */
-        if (cmor_history_contains(var_id, msg)) {
-          /* do nothing */
+
+/* -------------------------------------------------------------------- */
+/*      creates the bounds dim (only in metafile?)                      */
+/* -------------------------------------------------------------------- */
+    ierr = nc_def_dim(ncafid, "bnds", 2, dim_bnds);
+    if (ierr != NC_NOERR) {
+        snprintf(msg, CMOR_MAX_STRING,
+                "NC error (%i: %s), error creating bnds dimension to\n! "
+                        "metafile, variable %s (table: %s)", ierr,
+                nc_strerror(ierr), cmor_vars[var_id].id,
+                cmor_tables[nVarRefTblID].szTable_id);
+        cmor_handle_error(msg, CMOR_CRITICAL);
+    }
+
+/* -------------------------------------------------------------------- */
+/*      Now define the variable corresponding to                        */
+/*      store the dimensions values                                     */
+/* -------------------------------------------------------------------- */
+    for (i = 0; i < cmor_vars[var_id].ndims; i++) {
+        cmor_axis_t *pAxis;
+        pAxis = &cmor_axes[cmor_vars[var_id].axes_ids[i]];
+        if (pAxis->store_in_netcdf == 0)
+            continue;
+
+        if (pAxis->cvalues == NULL) {
+/* -------------------------------------------------------------------- */
+/*       first we need to figure out the output type                    */
+/* -------------------------------------------------------------------- */
+            switch (cmor_tables[pAxis->ref_table_id].axes[pAxis->ref_axis_id].type) {
+
+            case ('f'):
+                j = NC_FLOAT;
+                break;
+            case ('d'):
+                j = NC_DOUBLE;
+                break;
+            case ('i'):
+                j = NC_INT;
+                break;
+            default:
+                j = NC_DOUBLE;
+                break;
+            }
+            ierr = nc_def_var(ncid, pAxis->id, j, 1, &nc_dim[i], &nc_vars[i]);
+
+            if (ierr != NC_NOERR) {
+                snprintf(msg, CMOR_MAX_STRING,
+                        "NetCDF Error (%i: %s) for variable %s\n! "
+                                "(table: %s) error defining dim var: %i (%s)",
+                        ierr, nc_strerror(ierr), cmor_vars[var_id].id,
+                        cmor_tables[nVarRefTblID].szTable_id, i, pAxis->id);
+                cmor_handle_error(msg, CMOR_CRITICAL);
+            }
+
+
+/* -------------------------------------------------------------------- */
+/*      Compression stuff                                               */
+/* -------------------------------------------------------------------- */
+            if ((CMOR_NETCDF_MODE != CMOR_REPLACE_3) &&
+                    (CMOR_NETCDF_MODE != CMOR_PRESERVE_3) &&
+                    (CMOR_NETCDF_MODE != CMOR_APPEND_3)) {
+
+                cmor_var_t *pVar;
+
+                pVar = &cmor_vars[var_id];
+
+                ics = pVar->shuffle;
+                icd = pVar->deflate;
+                icdl = pVar->deflate_level;
+
+                ierr = nc_def_var_deflate(ncid, nc_vars[i], ics, icd, icdl);
+
+                if (ierr != NC_NOERR) {
+                    snprintf(msg, CMOR_MAX_STRING,
+                            "NCError (%i: %s) defining compression\n! "
+                                    "parameters for dimension %s for variable\n! "
+                                    "'%s' (table: %s)", ierr, nc_strerror(ierr),
+                            pAxis->id, cmor_vars[var_id].id,
+                            cmor_tables[nVarRefTblID].szTable_id);
+                    cmor_handle_error(msg, CMOR_CRITICAL);
+                }
+            }
+
+            nc_vars_af[i] = nc_vars[i];
+            if (ncid != ncafid) {
+                ierr = nc_def_var(ncafid, pAxis->id, j, 1, &nc_dim_af[i],
+                        &nc_vars_af[i]);
+
+                if (ierr != NC_NOERR) {
+                    snprintf(msg, CMOR_MAX_STRING,
+                            "NetCDF Error (%i: %s ) for variable %s\n! "
+                                    "(table: %s) error defining dim var: %i\n! "
+                                    "(%s) in metafile", ierr, nc_strerror(ierr),
+                            cmor_vars[var_id].id,
+                            cmor_tables[nVarRefTblID].szTable_id, i, pAxis->id);
+                    cmor_handle_error(msg, CMOR_CRITICAL);
+                }
+
+/* -------------------------------------------------------------------- */
+/*      Compression stuff                                               */
+/* -------------------------------------------------------------------- */
+
+                if ((CMOR_NETCDF_MODE != CMOR_REPLACE_3)
+                        && (CMOR_NETCDF_MODE != CMOR_PRESERVE_3)
+                        && (CMOR_NETCDF_MODE != CMOR_APPEND_3)) {
+                    cmor_var_t *pVar;
+
+                    pVar = &cmor_vars[var_id];
+
+                    ics = pVar->shuffle;
+                    icd = pVar->deflate;
+                    icdl = pVar->deflate_level;
+
+                    ierr = nc_def_var_deflate(ncafid, nc_vars_af[i], ics, icd,
+                            icdl);
+                    if (ierr != NC_NOERR) {
+                        snprintf(msg, CMOR_MAX_STRING,
+                                "NCError (%i: %s) defining compression\n! "
+                                        "parameters for dimension %s for\n! "
+                                        "variable '%s' (table: %s)", ierr,
+                                nc_strerror(ierr), pAxis->id,
+                                cmor_vars[var_id].id,
+                                cmor_tables[nVarRefTblID].szTable_id);
+                        cmor_handle_error(msg, CMOR_CRITICAL);
+                    }
+                }
+            }
+
         } else {
-	  cmor_update_history(var_id,msg);
+/* -------------------------------------------------------------------- */
+/*      ok at this point i'm assuming only 1 string dimension!          */
+/*      might need to be revised                                        */
+/*      so i only create 1 strlen dim                                   */
+/*      first need to figure out if the "region name is defined         */
+/* -------------------------------------------------------------------- */
+            strcpy(ctmp,
+                    cmor_tables[pAxis->ref_table_id].axes[pAxis->ref_axis_id].cname);
+
+            if (ctmp[0] == '\0') {
+                strcpy(ctmp, "geo_region");
+            }
+
+            if (cmor_has_variable_attribute(var_id, "coordinates") == 0) {
+                cmor_get_variable_attribute(var_id, "coordinates", msg);
+                l = 0;
+                for (j = 0; j < strlen(msg) - strlen(ctmp) + 1; j++) {
+                    if (strncmp(ctmp, &msg[j], strlen(ctmp)) == 0) {
+                        l = 1;
+                        break;
+                    }
+                }
+                if (l == 0) {
+                    strncat(msg, " ", CMOR_MAX_STRING - strlen(msg));
+                    strncat(msg, ctmp, CMOR_MAX_STRING - strlen(msg));
+                }
+            } else {
+                strncpy(msg, ctmp, CMOR_MAX_STRING);
+            }
+
+            cmor_set_variable_attribute_internal(var_id,
+                    VARIABLE_ATT_COORDINATES,
+                    'c',
+                    msg);
+
+            l = 0;
+            for (j = 0; j < pAxis->length; j++) {
+                strncpy(msg, pAxis->cvalues[j], CMOR_MAX_STRING);
+                k = strlen(msg);
+                if (k > l) {
+                    l = k;
+                }
+            }
+/* -------------------------------------------------------------------- */
+/*      ok so now i can create the dummy dim strlen                     */
+/* -------------------------------------------------------------------- */
+            ierr = nc_def_dim(ncid, "strlen", l, &tmp_dims[1]);
+            if (ierr != NC_NOERR) {
+                snprintf(msg, CMOR_MAX_STRING,
+                        "NetCDF error (%i: %s) for dummy 'strlen'\n! "
+                                "dimension definition of axis: %s (%i) in\n! "
+                                "metafile, while writing variable %s (table: %s)",
+                        ierr, nc_strerror(ierr), pAxis->id, i,
+                        cmor_vars[var_id].id,
+                        cmor_tables[nVarRefTblID].szTable_id);
+                cmor_handle_error(msg, CMOR_CRITICAL);
+            }
+            tmp_dims[0] = nc_dim[i];
+            ierr = nc_def_var(ncid, ctmp, NC_CHAR, 2, &tmp_dims[0],
+                    &nc_vars[i]);
+            if (ierr != NC_NOERR) {
+                snprintf(msg, CMOR_MAX_STRING,
+                        "NetCDF Error (%i: %s) for variable %s\n! "
+                                "(table: %s) error defining dim var: %i (%s)",
+                        ierr, nc_strerror(ierr), cmor_vars[var_id].id,
+                        cmor_tables[nVarRefTblID].szTable_id, i, pAxis->id);
+                cmor_handle_error(msg, CMOR_CRITICAL);
+            }
+
+            nc_vars_af[i] = nc_vars[i];
+
+            if (ncid != ncafid) {
+
+                ierr = nc_def_dim(ncafid, "strlen", l, &tmp_dims[1]);
+
+                if (ierr != NC_NOERR) {
+                    snprintf(msg, CMOR_MAX_STRING,
+                            "NetCDF error (%i: %s) for dummy 'strlen'\n! "
+                                    "dimension definition of axis: %s (%i) in\n! "
+                                    "metafile, while writing variable %s "
+                                    "(table: %s)", ierr, nc_strerror(ierr),
+                            pAxis->id, i, cmor_vars[var_id].id,
+                            cmor_tables[nVarRefTblID].szTable_id);
+                    cmor_handle_error(msg, CMOR_CRITICAL);
+                }
+                tmp_dims[0] = nc_dim_af[i];
+
+                ierr = nc_def_var(ncafid, ctmp, NC_CHAR, 1, &tmp_dims[0],
+                        &nc_vars_af[i]);
+
+                if (ierr != NC_NOERR) {
+                    snprintf(msg, CMOR_MAX_STRING,
+                            "NetCDF Error (%i: %s) for variable %s\n! "
+                                    "(table: %s) error defining dim var:\n! "
+                                    "%i (%s) in metafile", ierr,
+                            nc_strerror(ierr), cmor_vars[var_id].id,
+                            cmor_tables[nVarRefTblID].szTable_id, i, pAxis->id);
+                    cmor_handle_error(msg, CMOR_CRITICAL);
+                }
+            }
         }
-      }
-      /* Axis length */
-      j=cmor_axes[cmor_vars[var_id].axes_ids[i]].length;
-      if ((i==0)&&(cmor_axes[cmor_vars[var_id].axes_ids[i]].axis=='T')) j=NC_UNLIMITED;
-      if ((cmor_axes[cmor_vars[var_id].axes_ids[i]].axis=='X') || (cmor_axes[cmor_vars[var_id].axes_ids[i]].axis=='Y')) {
-	nc_dim_chunking[i]=j;
-      }
-      else if (cmor_axes[cmor_vars[var_id].axes_ids[i]].isgridaxis==1) {
-	nc_dim_chunking[i]=j;
-      }
-      else {
-	nc_dim_chunking[i]=1;
-      }
-      ierr = nc_def_dim(ncid,cmor_axes[cmor_vars[var_id].axes_ids[i]].id,j,&nc_dim[i]);
-      if (ierr != NC_NOERR) {
-	snprintf(msg,CMOR_MAX_STRING,"NetCDF error (%i:%s) for dimension definition of axis: %s (%i), for variable %i (%s, table: %s)",ierr,nc_strerror(ierr),cmor_axes[cmor_vars[var_id].axes_ids[i]].id,cmor_vars[var_id].axes_ids[i],var_id,cmor_vars[var_id].id,cmor_tables[cmor_vars[var_id].ref_table_id].table_id);
-	ierr = nc_enddef(ncid);
-	cmor_handle_error(msg,CMOR_CRITICAL);
-      }
-      nc_dim_af[i]=nc_dim[i];
-      if (ncid!=ncafid) {
-	ierr = nc_def_dim(ncafid,cmor_axes[cmor_vars[var_id].axes_ids[i]].id,j,&nc_dim_af[i]);
-	if (ierr != NC_NOERR) {snprintf(msg,CMOR_MAX_STRING,"NetCDF error (%i: %s) for dimension definition of axis: %s (%i) in metafile, variable %s (table: %s)",ierr,nc_strerror(ierr),cmor_axes[cmor_vars[var_id].axes_ids[i]].id,i,cmor_vars[var_id].id,cmor_tables[cmor_vars[var_id].ref_table_id].table_id); cmor_handle_error(msg,CMOR_CRITICAL);}
-      }
-    }
-
-    /* creates the bounds dim (only in metafile?)*/
-    ierr = nc_def_dim(ncafid,"bnds",2,&dim_bnds);
-    if (ierr != NC_NOERR) {snprintf(msg,CMOR_MAX_STRING,"NC error (%i: %s), error creating bnds dimension to metafile, variable %s (table: %s)",ierr,nc_strerror(ierr),cmor_vars[var_id].id,cmor_tables[cmor_vars[var_id].ref_table_id].table_id); cmor_handle_error(msg,CMOR_CRITICAL);}
-
-    /* Now define the variable corresponding to store the dimensions values */
-    for (i=0;i<cmor_vars[var_id].ndims;i++) {
-      if (cmor_axes[cmor_vars[var_id].axes_ids[i]].store_in_netcdf == 0) continue;
-      if (cmor_axes[cmor_vars[var_id].axes_ids[i]].cvalues == NULL) {
-	/* first we need to figure out the output type */
-	switch (cmor_tables[cmor_axes[cmor_vars[var_id].axes_ids[i]].ref_table_id].axes[cmor_axes[cmor_vars[var_id].axes_ids[i]].ref_axis_id].type) {
-	case ('f') :
-	  j = NC_FLOAT;
-	  break;
-	case('d') :
-	  j = NC_DOUBLE;
-	  break;
-	case ('i') :
-	  j= NC_INT;
-	  break;
-	default:
-	  j=NC_DOUBLE;
-	  break;
-	}
-	ierr = nc_def_var(ncid,cmor_axes[cmor_vars[var_id].axes_ids[i]].id,j,1,&nc_dim[i],&nc_vars[i]);
-	if (ierr != NC_NOERR) {snprintf(msg,CMOR_MAX_STRING, "NetCDF Error (%i: %s) for variable %s (table: %s) error defining dim var: %i (%s)",ierr,nc_strerror(ierr),cmor_vars[var_id].id,cmor_tables[cmor_vars[var_id].ref_table_id].table_id,i,cmor_axes[cmor_vars[var_id].axes_ids[i]].id);cmor_handle_error(msg,CMOR_CRITICAL);}
-
-	/* /\* table are different ? *\/ */
-	/* if (cmor_axes[cmor_vars[var_id].axes_ids[i]].ref_table_id!=cmor_vars[var_id].ref_table_id) { */
-	/*   snprintf(msg,CMOR_MAX_STRING,"Table %s (%s) ",cmor_tables[cmor_axes[cmor_vars[var_id].axes_ids[i]].ref_table_id].table_id,cmor_tables[cmor_axes[cmor_vars[var_id].axes_ids[i]].ref_table_id].date); */
-	/*   for (i=0;i<16;i++) sprintf(&ctmp[2*i],"%02x",cmor_tables[cmor_axes[cmor_vars[var_id].axes_ids[i]].ref_table_id].md5[i]); */
-	/*   ctmp[32]='\0'; */
-	/*   strcat(msg,ctmp); */
-	/*   ierr = nc_put_att_text(ncid, nc_vars[i],"table_id",strlen(msg)+1,msg); */
-	/*   if (ierr != NC_NOERR) { */
-	/*     snprintf(ctmp2,CMOR_MAX_STRING,"NetCDF error (%i) for variable %s axis %s writing table_id att (%s)",ierr,cmor_vars[var_id].id,cmor_axes[cmor_vars[var_id].axes_ids[i]].id,msg); */
-	/*     cmor_handle_error(ctmp2,CMOR_CRITICAL); */
-	/*   } */
-	/* } */
-	/* Compression stuff */
-	if ((CMOR_NETCDF_MODE != CMOR_REPLACE_3) && (CMOR_NETCDF_MODE != CMOR_PRESERVE_3) && (CMOR_NETCDF_MODE != CMOR_APPEND_3)) {
-	  ics = cmor_tables[cmor_vars[var_id].ref_table_id].vars[cmor_vars[var_id].ref_var_id].shuffle;
-	  icd = cmor_tables[cmor_vars[var_id].ref_table_id].vars[cmor_vars[var_id].ref_var_id].deflate;
-	  icdl = cmor_tables[cmor_vars[var_id].ref_table_id].vars[cmor_vars[var_id].ref_var_id].deflate_level;
-	  ierr = nc_def_var_deflate(ncid,nc_vars[i],ics,icd,icdl);
-	  if (ierr != NC_NOERR) {
-	    snprintf(msg,CMOR_MAX_STRING,"NCError (%i: %s) defining compression parameters for dimension %s for variable '%s' (table: %s)",ierr,nc_strerror(ierr),cmor_axes[cmor_vars[var_id].axes_ids[i]].id,cmor_vars[var_id].id,cmor_tables[cmor_vars[var_id].ref_table_id].table_id);
-	    cmor_handle_error(msg,CMOR_CRITICAL);
-	  }
-	}
+/* -------------------------------------------------------------------- */
+/*      ok do we have bounds on this axis?                              */
+/* -------------------------------------------------------------------- */
+        if ((pAxis->bounds != NULL) || ((i == 0) && (time_bounds != NULL))) {
+            strncpy(ctmp, pAxis->id, CMOR_MAX_STRING);
+            strncat(ctmp, "_bnds", CMOR_MAX_STRING - strlen(ctmp));
+            snprintf(msg, CMOR_MAX_STRING, "bounds");
+            if (i == 0) {
+/* -------------------------------------------------------------------- */
+/*      Ok here we need to see if it is a climatological                */
+/*      variable in order to change                                     */
+/*      the "bounds" attribute into "climatology"                       */
+/* -------------------------------------------------------------------- */
+                if (cmor_tables[pAxis->ref_table_id].axes[pAxis->ref_axis_id].climatology
+                        == 1) {
+                    snprintf(msg, CMOR_MAX_STRING, "climatology");
+                    strncpy(ctmp, "climatology_bnds", CMOR_MAX_STRING);
+                }
+            }
+            dims_bnds_ids[0] = nc_dim[i];
+            dims_bnds_ids[1] = *dim_bnds;
+            switch (cmor_tables[pAxis->ref_table_id].axes[pAxis->ref_axis_id].type) {
+            case ('f'):
+                j = NC_FLOAT;
+                break;
+            case ('d'):
+                j = NC_DOUBLE;
+                break;
+            case ('i'):
+                j = NC_INT;
+                break;
+            default:
+                j = NC_DOUBLE;
+                break;
+            }
+            ierr = nc_def_var(ncafid, ctmp, j, 2, &dims_bnds_ids[0],
+                    &nc_bnds_vars[i]);
+            if (ierr != NC_NOERR) {
+                snprintf(msg, CMOR_MAX_STRING,
+                        "NetCDF Error (%i: %s) for variable %s\n! "
+                                "(table: %s) error defining bounds dim var: %i (%s)",
+                        ierr, nc_strerror(ierr), cmor_vars[var_id].id,
+                        cmor_tables[nVarRefTblID].szTable_id, i, pAxis->id);
+                cmor_handle_error(msg, CMOR_CRITICAL);
+            }
+
+/* -------------------------------------------------------------------- */
+/*      Compression stuff                                               */
+/* -------------------------------------------------------------------- */
+            if ((CMOR_NETCDF_MODE != CMOR_REPLACE_3)
+                    && (CMOR_NETCDF_MODE != CMOR_PRESERVE_3)
+                    && (CMOR_NETCDF_MODE != CMOR_APPEND_3)) {
+                cmor_var_t *pVar;
+
+                pVar = &cmor_vars[var_id];
+
+                ics = pVar->shuffle;
+                icd = pVar->deflate;
+                icdl = pVar->deflate_level;
+
+                ierr = nc_def_var_deflate(ncafid, nc_bnds_vars[i], ics, icd,
+                        icdl);
+                if (ierr != NC_NOERR) {
+                    snprintf(msg, CMOR_MAX_STRING,
+                            "NCError (%i: %s) defining compression\n! "
+                                    "parameters for bounds variable %s for\n! "
+                                    "variable '%s' (table: %s)", ierr,
+                            nc_strerror(ierr), ctmp, cmor_vars[var_id].id,
+                            cmor_tables[nVarRefTblID].szTable_id);
+                    cmor_handle_error(msg, CMOR_CRITICAL);
+                }
+            }
+/* -------------------------------------------------------------------- */
+/* sets the bounds attribute of parent var                              */
+/* -------------------------------------------------------------------- */
+
+            if (i == 0)
+                cmor_vars[var_id].time_bnds_nc_id = nc_bnds_vars[i];
+            ierr = nc_put_att_text(ncafid, nc_vars[i], msg, strlen(ctmp) + 1,
+                    ctmp);
+            if (ierr != NC_NOERR) {
+                snprintf(msg, CMOR_MAX_STRING,
+                        "NetCDF Error (%i: %s) for variable %s\n! "
+                                "(table: %s) error defining bounds attribute\n! "
+                                "var: %i (%s)", ierr, nc_strerror(ierr),
+                        cmor_vars[var_id].id,
+                        cmor_tables[nVarRefTblID].szTable_id, i, pAxis->id);
+                cmor_handle_error(msg, CMOR_CRITICAL);
+            }
+        }
+/* -------------------------------------------------------------------- */
+/*      Creates attribute related to that axis                          */
+/* -------------------------------------------------------------------- */
+
+        for (j = 0; j < cmor_axes[cmor_vars[var_id].axes_ids[i]].nattributes;
+                j++) {
+            if (strcmp(cmor_axes[cmor_vars[var_id].axes_ids[i]].attributes[j],
+                    "z_factors") == 0) {
+/* -------------------------------------------------------------------- */
+/*      ok this part checks for z_factor things                         */
+/*      creates the formula terms attriubte                             */
+/* -------------------------------------------------------------------- */
+                strncpy(msg,
+                        cmor_axes[cmor_vars[var_id].axes_ids[i]].attributes_values_char[j],
+                        CMOR_MAX_STRING);
+                n = strlen(msg) + 1;
+                ierr = nc_put_att_text(ncid, nc_vars[i], "formula_terms", n,
+                        msg);
+                if (ierr != NC_NOERR) {
+                    snprintf(ctmp, CMOR_MAX_STRING,
+                            "NetCDF error (%i: %s) writing formula term "
+                                    "att (%s) for axis %i (%s), variable %s "
+                                    "(table: %s)", ierr, nc_strerror(ierr), msg,
+                            i, cmor_axes[cmor_vars[var_id].axes_ids[i]].id,
+                            cmor_vars[var_id].id,
+                            cmor_tables[nVarRefTblID].szTable_id);
+                    cmor_handle_error(msg, CMOR_CRITICAL);
+                }
+
+                if (ncid != ncafid) {
+                    ierr = nc_put_att_text(ncafid, nc_vars_af[i],
+                            "formula_terms", n, msg);
+                    if (ierr != NC_NOERR) {
+                        snprintf(ctmp, CMOR_MAX_STRING,
+                                "NetCDF error (%i: %s) writing formula "
+                                        "term att (%s) for axis %i (%s), variable "
+                                        "%s (table: %s)", ierr,
+                                nc_strerror(ierr), msg, i,
+                                cmor_axes[cmor_vars[var_id].axes_ids[i]].id,
+                                cmor_vars[var_id].id,
+                                cmor_tables[nVarRefTblID].szTable_id);
+                        cmor_handle_error(ctmp, CMOR_CRITICAL);
+                    }
+                }
+                ierr = cmor_define_zfactors_vars(var_id, ncafid, &nc_dim_af[0],
+                        msg, &nzfactors, &zfactors[0], &nc_zfactors[0], i, -1);
+            } else if (strcmp(
+                    cmor_axes[cmor_vars[var_id].axes_ids[i]].attributes[j],
+                    "z_bounds_factors") == 0) {
+                cmor_get_axis_attribute(cmor_vars[var_id].axes_ids[i],
+                        "formula", 'c', &msg);
+                n = strlen(msg) + 1;
+                ierr = nc_put_att_text(ncafid, nc_bnds_vars[i], "formula", n,
+                        msg);
+                cmor_get_axis_attribute(cmor_vars[var_id].axes_ids[i],
+                        "standard_name", 'c', &msg);
+                n = strlen(msg);
+                ierr = nc_put_att_text(ncafid, nc_bnds_vars[i], "standard_name",
+                        n, msg);
+                cmor_get_axis_attribute(cmor_vars[var_id].axes_ids[i], "units",
+                        'c', &msg);
+                n = strlen(msg) + 1;
+                ierr = nc_put_att_text(ncafid, nc_bnds_vars[i], "units", n,
+                        msg);
+                /*formula terms */
+                strncpy(msg,
+                        cmor_axes[cmor_vars[var_id].axes_ids[i]].attributes_values_char[j],
+                        CMOR_MAX_STRING);
+                n = strlen(msg) + 1;
+                ierr = nc_put_att_text(ncafid, nc_bnds_vars[i], "formula_terms",
+                        n, msg);
+                ierr = cmor_define_zfactors_vars(var_id, ncafid, nc_dim, msg,
+                        &nzfactors, &zfactors[0], &nc_zfactors[0], i, *dim_bnds);
+            } else if (strcmp(
+                    cmor_axes[cmor_vars[var_id].axes_ids[i]].attributes[j],
+                    "interval") == 0) {
+                if (cmor_has_variable_attribute(var_id, "cell_methods") == 0) {
+                    cmor_get_variable_attribute(var_id, "cell_methods", msg);
+                } else {
+                    strcpy(msg, "");
+                }
+                strncpy(ctmp, cmor_axes[cmor_vars[var_id].axes_ids[i]].id,
+                        CMOR_MAX_STRING);
+                strncat(ctmp, ":", CMOR_MAX_STRING - strlen(ctmp));
+                icd = strlen(ctmp);
+                itmpmsg = strlen(msg);
+                for (ics = 0; ics < (itmpmsg - icd); ics++) {
+                    for (icdl = 0; icdl < icd; icdl++) {
+                        ctmp2[icdl] = msg[ics + icdl];
+                        ctmp2[icdl + 1] = '\0';
+                    }
+                    if (strcmp(ctmp2, ctmp) == 0) {
+                        itmp2 = strlen(ctmp);
+                        for (icdl = 0; icdl < (ics + itmp2 + 1); icdl++) {
+                            ctmp2[icdl] = msg[icdl];
+                        }
+                        while ((msg[icdl] != ' ') && (msg[icdl] != '\0')) {
+                            ctmp2[icdl] = msg[icdl];
+                            icdl++;
+                        }
+                        ctmp2[icdl] = '\0';
+
+                        icd = strlen(ctmp2);
+/* -------------------------------------------------------------------- */
+/*      ok now we need to know if the user passed an                    */
+/*      interval or not in order to add it                              */
+/* -------------------------------------------------------------------- */
+                        cmor_get_axis_attribute(cmor_vars[var_id].axes_ids[i],
+                                "interval", 'c', ctmp);
+
+                        cmor_trim_string(ctmp, ctmp3);
+
+                        if (strcmp(ctmp3, "") != 0) {
+                            strncat(ctmp2, " (interval: ",
+                                    CMOR_MAX_STRING - strlen(ctmp2));
+                            strncat(ctmp2, ctmp,
+                                    CMOR_MAX_STRING - strlen(ctmp2));
+                            strncat(ctmp2, ")",
+                                    CMOR_MAX_STRING - strlen(ctmp2));
+                        }
+
+                        ierr = strlen(ctmp2) - icd;
+                        itmp3 = strlen(msg);
+                        for (icdl = icd; icdl < itmp3; icdl++) {
+                            ctmp2[icdl + ierr] = msg[icdl];
+                            ctmp2[icdl + 1 + ierr] = '\0';
+                        }
+                        cmor_set_variable_attribute_internal(var_id,
+                                "cell_methods",
+                                'c',
+                                ctmp2);
+                        break;
+                    }
+                }
+            } else {
+                if ((cmor_tables[cmor_axes[cmor_vars[var_id].axes_ids[i]].ref_table_id].axes[cmor_axes[cmor_vars[var_id].axes_ids[i]].ref_axis_id].type
+                        == 'c')
+                        && (strcmp(
+                                cmor_axes[cmor_vars[var_id].axes_ids[i]].attributes[j],
+                                "units") == 0)) {
+/* -------------------------------------------------------------------- */
+/*      passing we do not want the units attribute                      */
+/* -------------------------------------------------------------------- */
+                } else {
+                    cmor_axis_t *pAxis;
+                    pAxis = &cmor_axes[cmor_vars[var_id].axes_ids[i]];
+
+                    if (pAxis->attributes_type[j] == 'c') {
+                        ierr = cmor_put_nc_char_attribute(ncid, nc_vars[i],
+                                pAxis->attributes[j],
+                                pAxis->attributes_values_char[j],
+                                cmor_vars[var_id].id);
+
+                        if (ncid != ncafid) {
+                            ierr = cmor_put_nc_char_attribute(ncafid,
+                                    nc_vars_af[i], pAxis->attributes[j],
+                                    pAxis->attributes_values_char[j],
+                                    cmor_vars[var_id].id);
+                        }
+                    } else {
+                        ierr = cmor_put_nc_num_attribute(ncid, nc_vars[i],
+                                pAxis->attributes[j], pAxis->attributes_type[j],
+                                pAxis->attributes_values_num[j],
+                                cmor_vars[var_id].id);
+
+                        if (ncid != ncafid) {
+                            ierr = cmor_put_nc_num_attribute(ncafid,
+                                    nc_vars_af[i], pAxis->attributes[j],
+                                    pAxis->attributes_type[j],
+                                    pAxis->attributes_values_num[j],
+                                    cmor_vars[var_id].id);
+                        }
+                    }
+                }
+            }
+        }
+    }
+    cmor_pop_traceback();
+}
 
-	nc_vars_af[i]=nc_vars[i];
-	if (ncid!=ncafid) {
-	  ierr = nc_def_var(ncafid,cmor_axes[cmor_vars[var_id].axes_ids[i]].id,j,1,&nc_dim_af[i],&nc_vars_af[i]);
-	  if (ierr != NC_NOERR) {snprintf(msg,CMOR_MAX_STRING, "NetCDF Error (%i: %s ) for variable %s (table: %s) error defining dim var: %i (%s) in metafile",ierr,nc_strerror(ierr),cmor_vars[var_id].id,cmor_tables[cmor_vars[var_id].ref_table_id].table_id,i,cmor_axes[cmor_vars[var_id].axes_ids[i]].id);cmor_handle_error(msg,CMOR_CRITICAL);}
-
-	  /* Compression stuff */
-	  if ((CMOR_NETCDF_MODE != CMOR_REPLACE_3) && (CMOR_NETCDF_MODE != CMOR_PRESERVE_3) && (CMOR_NETCDF_MODE != CMOR_APPEND_3)) {
-	    ics = cmor_tables[cmor_vars[var_id].ref_table_id].vars[cmor_vars[var_id].ref_var_id].shuffle;
-	    icd = cmor_tables[cmor_vars[var_id].ref_table_id].vars[cmor_vars[var_id].ref_var_id].deflate;
-	    icdl = cmor_tables[cmor_vars[var_id].ref_table_id].vars[cmor_vars[var_id].ref_var_id].deflate_level;
-	    ierr = nc_def_var_deflate(ncafid,nc_vars_af[i],ics,icd,icdl);
-	    if (ierr != NC_NOERR) {
-	      snprintf(msg,CMOR_MAX_STRING,"NCError (%i: %s) defining compression parameters for dimension %s for variable '%s' (table: %s)",ierr,nc_strerror(ierr),cmor_axes[cmor_vars[var_id].axes_ids[i]].id,cmor_vars[var_id].id,cmor_tables[cmor_vars[var_id].ref_table_id].table_id);
-	      cmor_handle_error(msg,CMOR_CRITICAL);
-	    }
-	  }
+/************************************************************************/
+/*                         cmor_grids_def()                             */
+/************************************************************************/
+int cmor_grids_def(int var_id, int nGridID, int ncafid, int *nc_dim_af) {
+    int ierr;
+    int m;
+    char msg[CMOR_MAX_STRING];
+    double tmps[2];
+    int i,j,k,l;
+    int nc_associated_vars[6];
+    int nc_dims_associated[CMOR_MAX_AXES];
+    int nVarRefTblID = cmor_vars[var_id].ref_table_id;
+    int m2[5];
+    int *int_list = NULL;
+    char mtype;
+    int nelts;
+    int ics, icd, icdl;
+
+    cmor_add_traceback("cmor_define_dimensions");
+/* -------------------------------------------------------------------- */
+/*      first of all checks for grid_mapping                            */
+/* -------------------------------------------------------------------- */
+
+    if (strcmp(cmor_grids[nGridID].mapping, "") != 0) {
+/* -------------------------------------------------------------------- */
+/*      ok we need to create this dummy variable                        */
+/*      that contains all the info                                      */
+/* -------------------------------------------------------------------- */
+
+        cmor_set_variable_attribute_internal(var_id,
+                VARIALBE_ATT_GRIDMAPPING,
+                'c',
+                cmor_grids[nGridID].mapping);
+
+        ierr = nc_def_var(ncafid, cmor_grids[nGridID].mapping, NC_INT, 0,
+                &nc_dims_associated[0], &m);
+
+        if (ierr != NC_NOERR) {
+            snprintf(msg, CMOR_MAX_STRING,
+                    "NetCDF error (%i: %s) while defining\n! "
+                            "associated grid mapping variable %s for\n! "
+                            "variable %s (table: %s)", ierr, nc_strerror(ierr),
+                    cmor_grids[nGridID].mapping, cmor_vars[var_id].id,
+                    cmor_tables[nVarRefTblID].szTable_id);
+            cmor_handle_error(msg, CMOR_CRITICAL);
+        }
+/* -------------------------------------------------------------------- */
+/*      Creates attributes related to that variable                     */
+/* -------------------------------------------------------------------- */
+        ierr = cmor_put_nc_char_attribute(ncafid, m, "grid_mapping_name",
+                cmor_grids[nGridID].mapping, cmor_vars[var_id].id);
+        for (k = 0; k < cmor_grids[cmor_vars[var_id].grid_id].nattributes;
+                k++) {
+            if (strcmp(cmor_grids[nGridID].attributes_names[k],
+                    "standard_parallel1") == 0
+                    || strcmp(cmor_grids[nGridID].attributes_names[k],
+                            "standard_parallel2") == 0) {
+
+                i = -nGridID - CMOR_MAX_GRIDS;
+                if ((cmor_has_grid_attribute(i, "standard_parallel1") == 0)
+                        && (cmor_has_grid_attribute(i, "standard_parallel2")
+                                == 0)) {
+                    cmor_get_grid_attribute(i, "standard_parallel1", &tmps[0]);
+                    cmor_get_grid_attribute(i, "standard_parallel2", &tmps[1]);
+                    ierr = nc_put_att_double(ncafid, m, "standard_parallel",
+                            NC_DOUBLE, 2, &tmps[0]);
+                } else if (cmor_has_grid_attribute(i, "standard_parallel1")
+                        == 0) {
+                    cmor_get_grid_attribute(i, "standard_parallel1", &tmps[0]);
+                    ierr = nc_put_att_double(ncafid, m, "standard_parallel",
+                            NC_DOUBLE, 1, &tmps[0]);
+                } else {
+                    cmor_get_grid_attribute(i, "standard_parallel2", &tmps[0]);
+                    ierr = nc_put_att_double(ncafid, m, "standard_parallel",
+                            NC_DOUBLE, 1, &tmps[0]);
+                }
+                if (ierr != NC_NOERR) {
+                    snprintf(msg, CMOR_MAX_STRING,
+                            "NetCDF Error (%i: %s) writing\n! "
+                                    "standard_parallel to file, variable:\n! "
+                                    "%s (table: %s)", ierr, nc_strerror(ierr),
+                            cmor_vars[var_id].id,
+                            cmor_tables[nVarRefTblID].szTable_id);
+                    cmor_handle_error(msg, CMOR_NORMAL);
+                    cmor_pop_traceback();
+                    return (1);
+                }
+            } else {
+                ierr = cmor_put_nc_num_attribute(ncafid, m,
+                        cmor_grids[nGridID].attributes_names[k], 'd',
+                        cmor_grids[nGridID].attributes_values[k],
+                        cmor_grids[nGridID].mapping);
+            }
+        }
+    }
+/* -------------------------------------------------------------------- */
+/*      Preps the marker for vertices dimensions                        */
+/* -------------------------------------------------------------------- */
+
+    m = 0;
+/* -------------------------------------------------------------------- */
+/*      At this point creates the associated variables                  */
+/*      all is done is associated file                                  */
+/* -------------------------------------------------------------------- */
+    for (i = 0; i < 5; i++) {
+        m2[i] = 0;
+        j = cmor_grids[nGridID].associated_variables[i];
+
+        if (j != -1) {
+/* -------------------------------------------------------------------- */
+/*      ok we need to define this variable                              */
+/* -------------------------------------------------------------------- */
+
+            l = 0;
+/* -------------------------------------------------------------------- */
+/*      first we need to figure out the actual                          */
+/*      grid dimensions and their netcdf eq                             */
+/* -------------------------------------------------------------------- */
+
+            for (k = 0; k < cmor_vars[var_id].ndims; k++) {
+                if (cmor_axes[cmor_vars[var_id].axes_ids[k]].isgridaxis == 1) {
+                    nc_dims_associated[l] = nc_dim_af[k];
+
+                    if (m2[i] == 0 && (i == 0 || i == 1)) {
+                        if (cmor_has_variable_attribute(var_id, "coordinates")
+                                == 0) {
+                            cmor_get_variable_attribute(var_id, "coordinates", &msg);
+                            cmor_cat_unique_string(msg,
+                                    cmor_vars[cmor_grids[nGridID].associated_variables[i]].id);
+                        } else {
+                            strncpy(msg,
+                                    cmor_vars[cmor_grids[nGridID].associated_variables[i]].id,
+                                    CMOR_MAX_STRING - strlen(msg));
+                        }
+                        cmor_set_variable_attribute_internal(var_id,
+                                "coordinates",
+                                'c',
+                                msg);
+                        m2[i] = 1;
+                    }
+                    l++;
+                }
+            }
+/* -------------------------------------------------------------------- */
+/*      vertices need to be added                                       */
+/* -------------------------------------------------------------------- */
+
+            if (((i == 2) || (i == 3)) && (m == 0)) {
+/* -------------------------------------------------------------------- */
+/*      ok now it has been defined                                      */
+/* -------------------------------------------------------------------- */
+
+                m = 1;
+                ierr = nc_def_dim(ncafid, "vertices",
+                                cmor_axes[cmor_vars[j].axes_ids[cmor_vars[j].ndims
+                                        - 1]].length, &nc_dims_associated[l]);
+                if (ierr != NC_NOERR) {
+                    snprintf(msg, CMOR_MAX_STRING,
+                            "NetCDF error (%i: %s) while defining\n! "
+                                    "vertices dimension, variable %s\n! "
+                                    "(table: %s)", ierr, nc_strerror(ierr),
+                            cmor_vars[var_id].id,
+                            cmor_tables[nVarRefTblID].szTable_id);
+                    cmor_handle_error(msg, CMOR_CRITICAL);
+                }
+            }
+            mtype = cmor_vars[j].type;
+            if (mtype == 'd')
+                ierr = nc_def_var(ncafid, cmor_vars[j].id, NC_DOUBLE,
+                        cmor_vars[j].ndims, &nc_dims_associated[0],
+                        &nc_associated_vars[i]);
+            else if (mtype == 'f')
+                ierr = nc_def_var(ncafid, cmor_vars[j].id, NC_FLOAT,
+                        cmor_vars[j].ndims, &nc_dims_associated[0],
+                        &nc_associated_vars[i]);
+            else if (mtype == 'l')
+                ierr = nc_def_var(ncafid, cmor_vars[j].id, NC_INT,
+                        cmor_vars[j].ndims, &nc_dims_associated[0],
+                        &nc_associated_vars[i]);
+            else if (mtype == 'i')
+                ierr = nc_def_var(ncafid, cmor_vars[j].id, NC_INT,
+                        cmor_vars[j].ndims, &nc_dims_associated[0],
+                        &nc_associated_vars[i]);
+            if (ierr != NC_NOERR) {
+                snprintf(msg, CMOR_MAX_STRING,
+                        "NetCDF error (%i: %s) while defining\n! "
+                                "associated variable %s, of variable\n! "
+                                "%s (table: %s)", ierr, nc_strerror(ierr),
+                        cmor_vars[j].id, cmor_vars[var_id].id,
+                        cmor_tables[nVarRefTblID].szTable_id);
+                cmor_handle_error(msg, CMOR_CRITICAL);
+            }
+
+/* -------------------------------------------------------------------- */
+/*      Creates attributes related to that variable                     */
+/* -------------------------------------------------------------------- */
+            for (k = 0; k < cmor_vars[j].nattributes; k++) {
+
+/* -------------------------------------------------------------------- */
+/*      first of all we need to make sure it is not an empty attribute  */
+/* -------------------------------------------------------------------- */
+                if (cmor_has_variable_attribute(j, cmor_vars[j].attributes[k])
+                        != 0) {
+/* -------------------------------------------------------------------- */
+/*      deleted attribute continue on                                   */
+/* -------------------------------------------------------------------- */
+                    continue;
+                }
+                if (strcmp(cmor_vars[j].attributes[k], "flag_values") == 0) {
+/* -------------------------------------------------------------------- */
+/*      ok we need to convert the string to a list of int               */
+/* -------------------------------------------------------------------- */
+                    ierr = cmor_convert_string_to_list(
+                            cmor_vars[j].attributes_values_char[k], 'i',
+                            (void *) &int_list, &nelts);
+
+                    ierr = nc_put_att_int(ncafid, nc_associated_vars[i],
+                            "flag_values", NC_INT, nelts, int_list);
+
+                    if (ierr != NC_NOERR) {
+                        snprintf(msg, CMOR_MAX_STRING,
+                                "NetCDF Error (%i: %s) setting\n! "
+                                        "flags numerical attribute on\n! "
+                                        "associated variable %s, for\n! "
+                                        "variable %s (table: %s)", ierr,
+                                nc_strerror(ierr), cmor_vars[j].id,
+                                cmor_vars[var_id].id,
+                                cmor_tables[nVarRefTblID].szTable_id);
+                        cmor_handle_error(msg, CMOR_CRITICAL);
+                    }
+                    free(int_list);
+                } else if (cmor_vars[j].attributes_type[k] == 'c') {
+                    ierr = cmor_put_nc_char_attribute(ncafid,
+                            nc_associated_vars[i], cmor_vars[j].attributes[k],
+                            cmor_vars[j].attributes_values_char[k],
+                            cmor_vars[j].id);
+                } else {
+                    ierr = cmor_put_nc_num_attribute(ncafid,
+                            nc_associated_vars[i], cmor_vars[j].attributes[k],
+                            cmor_vars[j].attributes_type[k],
+                            cmor_vars[j].attributes_values_num[k],
+                            cmor_vars[j].id);
+                }
+            }
+/* -------------------------------------------------------------------- */
+/*      Compression stuff                                               */
+/* -------------------------------------------------------------------- */
+
+            if ((CMOR_NETCDF_MODE != CMOR_REPLACE_3)
+                    && (CMOR_NETCDF_MODE != CMOR_PRESERVE_3)
+                    && (CMOR_NETCDF_MODE != CMOR_APPEND_3)) {
+                if (cmor_vars[j].ndims > 0) {
+
+                    ics =
+                            cmor_tables[cmor_vars[j].ref_table_id].vars[cmor_vars[j].ref_var_id].shuffle;
+                    icd =
+                            cmor_tables[cmor_vars[j].ref_table_id].vars[cmor_vars[j].ref_var_id].deflate;
+                    icdl =
+                            cmor_tables[cmor_vars[j].ref_table_id].vars[cmor_vars[j].ref_var_id].deflate_level;
+
+                    ierr = nc_def_var_deflate(ncafid, nc_associated_vars[i],
+                            ics, icd, icdl);
+                    if (ierr != NC_NOERR) {
+                        snprintf(msg, CMOR_MAX_STRING,
+                                "NetCDF Error (%i: %s) defining\n! "
+                                        "compression parameters for\n! "
+                                        "associated variable '%s' for\n! "
+                                        "variable %s (table: %s)", ierr,
+                                nc_strerror(ierr), cmor_vars[j].id,
+                                cmor_vars[var_id].id,
+                                cmor_tables[nVarRefTblID].szTable_id);
+                        cmor_handle_error(msg, CMOR_CRITICAL);
+                    }
+                }
+            }
+        }
+    }
+    cmor_pop_traceback();
+    return(0);
+}
+/************************************************************************/
+/*                create_singleton_dimensions()                         */
+/************************************************************************/
+void create_singleton_dimensions(int var_id, int ncid, int *nc_singletons,
+                                 int *nc_singletons_bnds, int *dim_bnds){
+    int ierr;
+    int i,j,k;
+    char msg[CMOR_MAX_STRING];
+    int nVarRefTblID;
+
+    cmor_add_traceback("create_singleton_dimensions");
+    nVarRefTblID = cmor_vars[var_id].ref_table_id;
+
+/* -------------------------------------------------------------------- */
+/*      Creates singleton dimension variables                           */
+/* -------------------------------------------------------------------- */
+    for (i = 0; i < CMOR_MAX_DIMENSIONS; i++) {
+        j = cmor_vars[var_id].singleton_ids[i];
+        if (j != -1) {
+            if (cmor_tables[cmor_axes[j].ref_table_id].axes[cmor_axes[j].ref_axis_id].type
+                    == 'c') {
+                ierr =  nc_def_dim(ncid, "strlen", strlen(
+         cmor_tables[cmor_axes[j].ref_table_id].axes[cmor_axes[j].ref_axis_id].cvalue),
+         &k);
+                ierr = nc_def_var(ncid, cmor_axes[j].id, NC_CHAR, 1, &k,
+                        &nc_singletons[i]);
+            } else {
+                ierr = nc_def_var(ncid, cmor_axes[j].id, NC_DOUBLE, 0,
+                        &nc_singletons[i], &nc_singletons[i]);
+            }
+            if (ierr != NC_NOERR) {
+                snprintf(msg, CMOR_MAX_STRING,
+                        "NetCDF Error (%i: %s) defining scalar variable\n! "
+                                "%s for variable %s (table: %s)", ierr,
+                        nc_strerror(ierr), cmor_axes[j].id,
+                        cmor_vars[var_id].id,
+                        cmor_tables[nVarRefTblID].szTable_id);
+                cmor_handle_error(msg, CMOR_CRITICAL);
+            }
+/* -------------------------------------------------------------------- */
+/*      now  puts on its attributes                                     */
+/* -------------------------------------------------------------------- */
+            for (k = 0; k < cmor_axes[j].nattributes; k++) {
+                if (cmor_axes[j].attributes_type[k] == 'c') {
+                    ierr = cmor_put_nc_char_attribute(ncid, nc_singletons[i],
+                            cmor_axes[j].attributes[k],
+                            cmor_axes[j].attributes_values_char[k],
+                            cmor_vars[var_id].id);
+                } else {
+                    ierr = cmor_put_nc_num_attribute(ncid, nc_singletons[i],
+                            cmor_axes[j].attributes[k],
+                            cmor_axes[j].attributes_type[k],
+                            cmor_axes[j].attributes_values_num[k],
+                            cmor_vars[var_id].id);
+                }
+            }
+/* -------------------------------------------------------------------- */
+/*      ok we need to see if there's bounds as well...                  */
+/* -------------------------------------------------------------------- */
+
+            if (cmor_axes[j].bounds != NULL) { /*yep */
+                snprintf(msg, CMOR_MAX_STRING, "%s_bnds", cmor_axes[j].id);
+                ierr = cmor_put_nc_char_attribute(ncid, nc_singletons[i],
+                        "bounds", msg, cmor_vars[var_id].id);
+                ierr = nc_def_var(ncid, msg, NC_DOUBLE, 1, dim_bnds,
+                        &nc_singletons_bnds[i]);
+                if (ierr != NC_NOERR) {
+                    snprintf(msg, CMOR_MAX_STRING,
+                            "NetCDF Error (%i: %s) defining scalar\n! "
+                                    "bounds variable %s for variable %s (table: %s)",
+                            ierr, nc_strerror(ierr), cmor_axes[j].id,
+                            cmor_vars[var_id].id,
+                            cmor_tables[nVarRefTblID].szTable_id);
+                    cmor_handle_error(msg, CMOR_CRITICAL);
+                }
+            }
+        }
+    }
+    cmor_pop_traceback();
+
+}
+/************************************************************************/
+/*                             cmor_write()                             */
+/************************************************************************/
+int cmor_write( int var_id, void *data, char type,
+		int ntimes_passed, double *time_vals, double *time_bounds,
+		int *refvar ) {
+    extern cmor_var_t cmor_vars[CMOR_MAX_VARIABLES];
+    extern cmor_axis_t cmor_axes[CMOR_MAX_AXES];
+    extern int cmor_nvars;
+    extern cmor_dataset_def cmor_current_dataset;
+
+    int i,  ierr = 0, ncid, ncafid;
+    char outname[CMOR_MAX_STRING];
+    char ctmp[CMOR_MAX_STRING];
+    char ctmp2[CMOR_MAX_STRING];
+    char msg[CMOR_MAX_STRING];
+    char appending_to[CMOR_MAX_STRING];
+    size_t nc_dim_chunking[CMOR_MAX_AXES];
+    int nc_vars[CMOR_MAX_VARIABLES];
+    int nc_vars_af[CMOR_MAX_VARIABLES];
+    int nc_dim_af[CMOR_MAX_DIMENSIONS];
+    int nc_associated_vars[6];
+    int nc_bnds_vars[CMOR_MAX_VARIABLES];
+    int dim_bnds;
+    int nc_singletons[CMOR_MAX_DIMENSIONS];
+    int nc_singletons_bnds[CMOR_MAX_DIMENSIONS];
+    char mtype;
+    int nzfactors = 0;
+    int nc_dim[CMOR_MAX_AXES];
+    int zfactors[CMOR_MAX_VARIABLES];
+    int nc_zfactors[CMOR_MAX_VARIABLES];
+    int refvarid;
+
+    int  nVarRefTblID;
+    char szPathTemplate[CMOR_MAX_STRING];
+    char outpath[CMOR_MAX_STRING];
+
+    cmor_add_traceback( "cmor_write" );
+
+
+    nVarRefTblID = cmor_vars[var_id].ref_table_id;
+
+    strcpy( appending_to, "" );	/* initialize to nothing */
+    strcpy( outname, "" );
+    strcpy( ctmp, "" );
+    strcpy( msg, "" );
+    strcpy( ctmp2, "" );
+    strcpy( outpath,"" );
+
+    cmor_is_setup(  );
+    if( var_id > cmor_nvars ) {
+
+	cmor_handle_error( "var_id %i not defined", CMOR_CRITICAL );
+	cmor_pop_traceback(  );
+	return(-1);
+    };
+
+
+
+    ierr = cmor_addVersion();
+    ierr = cmor_addRIPF(ctmp);
+    if(ierr) {
+        cmor_pop_traceback(  );
+        return(ierr);
+    }
+
+/* -------------------------------------------------------------------- */
+/*    Make sure that variable_id is set Global Attributes and for       */
+/*    File and Path template                                            */
+/* -------------------------------------------------------------------- */
+    cmor_set_cur_dataset_attribute_internal(
+                    GLOBAL_ATT_VARIABLE_ID,
+                    cmor_vars[var_id].id,
+                    1);
+    ctmp[0] = '\0';
+/* -------------------------------------------------------------------- */
+/*      here we check that the variable actually has all                */
+/*      the required attributes set                                     */
+/* -------------------------------------------------------------------- */
+    cmor_has_required_variable_attributes( var_id );
+
+/* -------------------------------------------------------------------- */
+/*  Do we have associated variables (z_factors)?                        */
+/* -------------------------------------------------------------------- */
+    refvarid = cmor_set_refvar(var_id, refvar, ntimes_passed);
+
+/* -------------------------------------------------------------------- */
+/*      Here we check that the types are consistent between             */
+/*      the missing value passed and the type passed now                */
+/* -------------------------------------------------------------------- */
+    cmor_checkMissing(refvarid, var_id, type);
+
+/* -------------------------------------------------------------------- */
+/*      Variable never been thru cmor_write,                            */
+/*      we need to define everything                                    */
+/* -------------------------------------------------------------------- */
+    if( cmor_vars[refvarid].initialized == -1 ) {
+
+	if( cmor_vars[refvarid].type != type ) {
+	    snprintf( msg, CMOR_MAX_STRING,
+		      "Converted type from '%c' to '%c'", type,
+		      cmor_vars[refvarid].type );
+	    cmor_update_history( refvarid, msg );
 	}
 
-      }
-      else {
-	/* ok at this point i'm assuming only 1 string dimension! might need to be revised */
-	/* so i only create 1 strlen dim */
-	/* first need to figure out if the "region name is defined */
-	strcpy(ctmp,cmor_tables[cmor_axes[cmor_vars[var_id].axes_ids[i]].ref_table_id].axes[cmor_axes[cmor_vars[var_id].axes_ids[i]].ref_axis_id].cname);
-	if (ctmp[0]=='\0') {
-	  strcpy(ctmp,"geo_region");
+
+       cmor_setGblAttr(var_id);
+
+/* -------------------------------------------------------------------- */
+/*      Figures out path                                                */
+/* -------------------------------------------------------------------- */
+	strncpy(szPathTemplate, cmor_current_dataset.path_template,
+	        CMOR_MAX_STRING);
+
+/* -------------------------------------------------------------------- */
+/*     Add outpath prefix if exist.                                     */
+/* -------------------------------------------------------------------- */
+        strncpytrim( outname, cmor_current_dataset.outpath,
+                CMOR_MAX_STRING);
+/* -------------------------------------------------------------------- */
+/*     Make sure last character is '/'.                                 */
+/* -------------------------------------------------------------------- */
+        if((strlen(outname) > 0) && (outname[strlen(outname)] != '/' )) {
+            strncat(outname, "/", CMOR_MAX_STRING);
+        }
+
+	if( CMOR_CREATE_SUBDIRECTORIES == 1 ) {
+	    cmor_CreateFromTemplate(var_id, szPathTemplate,
+	                                outname, "/");
+	} else {
+	    cmor_CreateFromTemplate( var_id, szPathTemplate, msg, "/");
 	}
-	if (cmor_has_variable_attribute(var_id,"coordinates")==0) {
-	  cmor_get_variable_attribute(var_id,"coordinates",msg);
-	  l=0;
-	  for (j=0;j<strlen(msg)-strlen(ctmp)+1;j++) {
-	    if (strncmp(ctmp,&msg[j],strlen(ctmp))==0) {
-	      l=1;
-	      break;
+	ierr = cmor_mkdir(outname);
+        if( (ierr != 0) && (errno != EEXIST ) ) {
+            sprintf( ctmp,
+                    "creating outpath: %s, for variable %s (table: %s). "
+                    "Not enough permission?",
+                    outname, cmor_vars[var_id].id,
+                    cmor_tables[cmor_vars[var_id].
+                                ref_table_id].szTable_id );
+            cmor_handle_error( ctmp, CMOR_CRITICAL );
+        }
+
+	strncat( outname, "/", CMOR_MAX_STRING - strlen( outname ) );
+/* -------------------------------------------------------------------- */
+/*    Verify that var name does not contain "_" or "-"                  */
+/* -------------------------------------------------------------------- */
+	for( i = 0; i < strlen( cmor_vars[var_id].id ); i++ ) {
+	    if( ( cmor_vars[var_id].id[i] == '_' ) ||
+	        ( cmor_vars[var_id].id[i] == '-' ) ) {
+		snprintf( outname, CMOR_MAX_STRING,
+			  "var_id cannot contain %c you passed: %s "
+		          "(table: %s). Please check your input tables\n! ",
+			  cmor_vars[var_id].id[i], cmor_vars[var_id].id,
+			  cmor_tables[nVarRefTblID].szTable_id );
+		cmor_handle_error( outname, CMOR_CRITICAL );
 	    }
-	  }
-	  if (l==0) {
-	    strncat(msg," ",CMOR_MAX_STRING-strlen(msg));
-	    strncat(msg,ctmp,CMOR_MAX_STRING-strlen(msg));
-	  }
-	}
-	else {
-	  strncpy(msg,ctmp,CMOR_MAX_STRING);
-	}
-	cmor_set_variable_attribute_internal(var_id,"coordinates",'c',msg);
-	l=0;
-	for (j=0;j<cmor_axes[cmor_vars[var_id].axes_ids[i]].length;j++) {
-/* 	  printf("ok reading value: %i\n",j); */
-/* 	  printf("we think it is: %s\n",cmor_axes[cmor_vars[var_id].axes_ids[i]].cvalues[j]); */
-	  strncpy(msg,cmor_axes[cmor_vars[var_id].axes_ids[i]].cvalues[j],CMOR_MAX_STRING);
-	  k = strlen(msg);
-	  if (k>l) l=k;
 	}
-	/* ok so now i can create the dummy dim strlen */
-	ierr = nc_def_dim(ncid,"strlen",l,&tmp_dims[1]);
-	if (ierr != NC_NOERR) {snprintf(msg,CMOR_MAX_STRING,"NetCDF error (%i: %s) for dummy 'strlen' dimension definition of axis: %s (%i) in metafile, while writing variable %s (table: %s)",ierr,nc_strerror(ierr), cmor_axes[cmor_vars[var_id].axes_ids[i]].id,i,cmor_vars[var_id].id,cmor_tables[cmor_vars[var_id].ref_table_id].table_id); cmor_handle_error(msg,CMOR_CRITICAL);}
-	tmp_dims[0]=nc_dim[i];
-	ierr = nc_def_var(ncid,ctmp,NC_CHAR,2,&tmp_dims[0],&nc_vars[i]);
-	if (ierr != NC_NOERR) {snprintf(msg,CMOR_MAX_STRING, "NetCDF Error (%i: %s) for variable %s (table: %s) error defining dim var: %i (%s)",ierr,nc_strerror(ierr),cmor_vars[var_id].id,cmor_tables[cmor_vars[var_id].ref_table_id].table_id,i,cmor_axes[cmor_vars[var_id].axes_ids[i]].id);cmor_handle_error(msg,CMOR_CRITICAL);}
-	nc_vars_af[i]=nc_vars[i];
-	if (ncid!=ncafid) {
-	  ierr = nc_def_dim(ncafid,"strlen",l,&tmp_dims[1]);
-	  if (ierr != NC_NOERR) {snprintf(msg,CMOR_MAX_STRING,"NetCDF error (%i: %s) for dummy 'strlen' dimension definition of axis: %s (%i) in metafile, while writing variable %s (table: %s)",ierr,nc_strerror(ierr),cmor_axes[cmor_vars[var_id].axes_ids[i]].id,i,cmor_vars[var_id].id,cmor_tables[cmor_vars[var_id].ref_table_id].table_id); cmor_handle_error(msg,CMOR_CRITICAL);}
-	  tmp_dims[0]=nc_dim_af[i];
-	  ierr = nc_def_var(ncafid,ctmp,NC_CHAR,1,&tmp_dims[0],&nc_vars_af[i]);
-	  if (ierr != NC_NOERR) {snprintf(msg,CMOR_MAX_STRING, "NetCDF Error (%i: %s) for variable %s (table: %s) error defining dim var: %i (%s) in metafile",ierr,nc_strerror(ierr),cmor_vars[var_id].id,cmor_tables[cmor_vars[var_id].ref_table_id].table_id,i,cmor_axes[cmor_vars[var_id].axes_ids[i]].id);cmor_handle_error(msg,CMOR_CRITICAL);}
+/* -------------------------------------------------------------------- */
+/*    Create/Save filename                                              */
+/* -------------------------------------------------------------------- */
+	ierr = cmor_CreateFromTemplate(var_id,
+	        cmor_current_dataset.file_template,
+	        outname, "_");
+
+	strcat(outpath, outname);
+	strncpy(outname, outpath, CMOR_MAX_STRING);
+	strncpytrim(cmor_vars[var_id].base_path, outname, CMOR_MAX_STRING);
+
+/* -------------------------------------------------------------------- */
+/*      Add Process ID and a random number to filename                  */
+/* -------------------------------------------------------------------- */
+	sprintf( msg, "%d", ( int ) getpid(  ) );
+	strncat( outname, msg, CMOR_MAX_STRING - strlen( outname ) );
+
+/* -------------------------------------------------------------------- */
+/*      Add the '.nc' extension                                         */
+/* -------------------------------------------------------------------- */
+	strncat( outname, ".nc", CMOR_MAX_STRING - strlen( outname ) );
+	strncpytrim( cmor_vars[var_id].current_path, outname, CMOR_MAX_STRING );
+/* -------------------------------------------------------------------- */
+/*      Decides NetCDF mode                                             */
+/* -------------------------------------------------------------------- */
+	ncid = cmor_validateFilename(outname, var_id);
+
+/* -------------------------------------------------------------------- */
+/*      we closed and reopened the same test, in case we                */
+/*      were appending, in which case all declaration have              */
+/*      been done if the open loop                                      */
+/* -------------------------------------------------------------------- */
+/* -------------------------------------------------------------------- */
+/*      Variable never been thru cmor_write, we need to                 */
+/*      define everything                                               */
+/*                                                                      */
+/*      define global attributes                                        */
+/* -------------------------------------------------------------------- */
+	if( cmor_current_dataset.initiated == 0 ) {
+	    snprintf( msg, CMOR_MAX_STRING,
+		      "you need to initialize the dataset by calling "
+	              "cmor_dataset before calling cmor_write" );
+	    cmor_handle_error( msg, CMOR_NORMAL );
+	    cmor_pop_traceback(  );
+	    return( 1 );
 	}
-      }
-      /* ok do we have bounds on this axis? */
-      if ((cmor_axes[cmor_vars[var_id].axes_ids[i]].bounds!=NULL)||((i==0) && (time_bounds!=NULL))) {
-	strncpy(ctmp,cmor_axes[cmor_vars[var_id].axes_ids[i]].id,CMOR_MAX_STRING);
-	strncat(ctmp,"_bnds",CMOR_MAX_STRING-strlen(ctmp));
-	snprintf(msg,CMOR_MAX_STRING,"bounds");
-	if (i==0) {
-	  /* Ok here we need to see if it is a climatological variable in order to change */
-	  /* the "bounds" attribute into "climatology" */
-	  if (cmor_tables[cmor_axes[cmor_vars[var_id].axes_ids[i]].ref_table_id].axes[cmor_axes[cmor_vars[var_id].axes_ids[i]].ref_axis_id].climatology==1) {
-	    snprintf(msg,CMOR_MAX_STRING,"climatology");
-	    strncpy(ctmp,"climatology_bnds",CMOR_MAX_STRING);
-	  }
-	}
-	dims_bnds_ids[0]=nc_dim[i];
-	dims_bnds_ids[1]=dim_bnds;
-	switch (cmor_tables[cmor_axes[cmor_vars[var_id].axes_ids[i]].ref_table_id].axes[cmor_axes[cmor_vars[var_id].axes_ids[i]].ref_axis_id].type) {
-	case ('f') :
-	  j = NC_FLOAT;
-	  break;
-	case('d') :
-	  j = NC_DOUBLE;
-	  break;
-	case ('i') :
-	  j= NC_INT;
-	  break;
-	default:
-	  j=NC_DOUBLE;
-	  break;
-	}
-	ierr = nc_def_var(ncafid,ctmp,j,2,&dims_bnds_ids[0],&nc_bnds_vars[i]);
-	if (ierr != NC_NOERR) {snprintf(msg,CMOR_MAX_STRING, "NetCDF Error (%i: %s) for variable %s (table: %s) error defining bounds dim var: %i (%s)",ierr,nc_strerror(ierr),cmor_vars[var_id].id,cmor_tables[cmor_vars[var_id].ref_table_id].table_id,i,cmor_axes[cmor_vars[var_id].axes_ids[i]].id);cmor_handle_error(msg,CMOR_CRITICAL);}
-
-	/* Compression stuff */
-	if ((CMOR_NETCDF_MODE != CMOR_REPLACE_3) && (CMOR_NETCDF_MODE != CMOR_PRESERVE_3) && (CMOR_NETCDF_MODE != CMOR_APPEND_3)) {
-	  ics = cmor_tables[cmor_vars[var_id].ref_table_id].vars[cmor_vars[var_id].ref_var_id].shuffle;
-	  icd = cmor_tables[cmor_vars[var_id].ref_table_id].vars[cmor_vars[var_id].ref_var_id].deflate;
-	  icdl = cmor_tables[cmor_vars[var_id].ref_table_id].vars[cmor_vars[var_id].ref_var_id].deflate_level;
-	  ierr = nc_def_var_deflate(ncafid,nc_bnds_vars[i],ics,icd,icdl);
-	  if (ierr != NC_NOERR) {
-	    snprintf(msg,CMOR_MAX_STRING,"NCError (%i: %s) defining compression parameters for bounds variable %s for variable '%s' (table: %s)",ierr,nc_strerror(ierr),ctmp,cmor_vars[var_id].id,cmor_tables[cmor_vars[var_id].ref_table_id].table_id);
-	    cmor_handle_error(msg,CMOR_CRITICAL);
-	  }
-	}
-	  /* sets the bounds attribute of parent var */
-	if (i==0) cmor_vars[var_id].time_bnds_nc_id = nc_bnds_vars[i];
-	ierr = nc_put_att_text(ncafid,nc_vars[i],msg,strlen(ctmp)+1,ctmp);
-	if (ierr != NC_NOERR) {snprintf(msg,CMOR_MAX_STRING, "NetCDF Error (%i: %s) for variable %s (table: %s) error defining bounds attribute var: %i (%s)",ierr,nc_strerror(ierr),cmor_vars[var_id].id,cmor_tables[cmor_vars[var_id].ref_table_id].table_id,i,cmor_axes[cmor_vars[var_id].axes_ids[i]].id);cmor_handle_error(msg,CMOR_CRITICAL);}
-      }
-      /* Creates attribute related to that axis */
-      for (j=0;j<cmor_axes[cmor_vars[var_id].axes_ids[i]].nattributes;j++){
-	if (strcmp(cmor_axes[cmor_vars[var_id].axes_ids[i]].attributes[j],"z_factors")==0) {
-	  /* ok this part checks for z_factor things */
-	  /* creates the formula terms attriubte */
-	  strncpy(msg,cmor_axes[cmor_vars[var_id].axes_ids[i]].attributes_values_char[j],CMOR_MAX_STRING);
-	  n=strlen(msg)+1;
-	  ierr = nc_put_att_text(ncid,nc_vars[i],"formula_terms",n,msg);
-	  if (ierr != NC_NOERR) {snprintf(ctmp,CMOR_MAX_STRING,"NetCDF error (%i: %s) writing formula term att (%s) for axis %i (%s), variable %s (table: %s)",ierr,nc_strerror(ierr),msg,i,cmor_axes[cmor_vars[var_id].axes_ids[i]].id,cmor_vars[var_id].id,cmor_tables[cmor_vars[var_id].ref_table_id].table_id);cmor_handle_error(msg,CMOR_CRITICAL);}
-/* 	  printf("doing formula for: %s\n",msg); */
-	  if (ncid!=ncafid) {
-	  ierr = nc_put_att_text(ncafid,nc_vars_af[i],"formula_terms",n,msg);
-	  if (ierr != NC_NOERR) {snprintf(ctmp,CMOR_MAX_STRING,"NetCDF error (%i: %s) writing formula term att (%s) for axis %i (%s), variable %s (table: %s)",ierr,nc_strerror(ierr),msg,i,cmor_axes[cmor_vars[var_id].axes_ids[i]].id,cmor_vars[var_id].id,cmor_tables[cmor_vars[var_id].ref_table_id].table_id);cmor_handle_error(ctmp,CMOR_CRITICAL);}
-	  }
-	  ierr =  cmor_define_zfactors_vars(var_id,ncafid, &nc_dim_af[0],msg,&nzfactors, &zfactors[0],&nc_zfactors[0],i,-1);
+
+	cleanup_varid = var_id;
+	ncafid = ncid;
+
+/* -------------------------------------------------------------------- */
+/*      make sure we are in def mode                                    */
+/* -------------------------------------------------------------------- */
+	ierr = nc_redef( ncafid );
+	if( ierr != NC_NOERR && ierr != NC_EINDEFINE ) {
+	    snprintf( msg, CMOR_MAX_STRING,
+		      "NetCDF Error (%i: %s) putting metadata file (%s) in\n! "
+	              "def mode, nc file id was: %i, you were writing\n! "
+	              "variable %s (table: %s)",
+		      ierr, nc_strerror( ierr ),
+		      cmor_current_dataset.associated_file_name, ncafid,
+		      cmor_vars[var_id].id,
+		      cmor_tables[nVarRefTblID].szTable_id );
+	    cmor_handle_error( msg, CMOR_CRITICAL );
 	}
-	else if (strcmp(cmor_axes[cmor_vars[var_id].axes_ids[i]].attributes[j],"z_bounds_factors")==0) {
-	  cmor_get_axis_attribute(cmor_vars[var_id].axes_ids[i],"formula",'c',&msg);
-	  n=strlen(msg)+1;
-	  ierr = nc_put_att_text(ncafid,nc_bnds_vars[i],"formula",n,msg);
-	  cmor_get_axis_attribute(cmor_vars[var_id].axes_ids[i],"standard_name",'c',&msg);
-	  n=strlen(msg);
-	  ierr = nc_put_att_text(ncafid,nc_bnds_vars[i],"standard_name",n,msg);
-	  cmor_get_axis_attribute(cmor_vars[var_id].axes_ids[i],"units",'c',&msg);
-	  n=strlen(msg)+1;
-	  ierr = nc_put_att_text(ncafid,nc_bnds_vars[i],"units",n,msg);
-	  /*formula terms*/
-	  strncpy(msg,cmor_axes[cmor_vars[var_id].axes_ids[i]].attributes_values_char[j],CMOR_MAX_STRING);
-	  n=strlen(msg)+1;
-	  ierr = nc_put_att_text(ncafid,nc_bnds_vars[i],"formula_terms",n,msg);
-	  ierr =  cmor_define_zfactors_vars(var_id,ncafid, nc_dim,msg,&nzfactors, &zfactors[0],&nc_zfactors[0],i,dim_bnds);
+
+	ierr = cmor_writeGblAttr(var_id, ncid, ncafid);
+	if(ierr != 0) {
+	    return(ierr);
 	}
-	else if (strcmp(cmor_axes[cmor_vars[var_id].axes_ids[i]].attributes[j],"interval")==0) {
-	  if (cmor_has_variable_attribute(var_id,"cell_methods")==0) {
-	    cmor_get_variable_attribute(var_id,"cell_methods",msg);
-	  }
-	  else {
-	    strcpy(msg,"");
-	  }
-	  strncpy(ctmp,cmor_axes[cmor_vars[var_id].axes_ids[i]].id,CMOR_MAX_STRING);
-	  strncat(ctmp,":",CMOR_MAX_STRING-strlen(ctmp));
-	  icd = strlen(ctmp);
-	  itmpmsg = strlen(msg);
-	  for(ics=0;ics<(itmpmsg-icd);ics++) {
-	    for(icdl=0;icdl<icd;icdl++) {
-	      ctmp2[icdl]=msg[ics+icdl];
-	      ctmp2[icdl+1]='\0';
-	    }
-	    if (strcmp(ctmp2,ctmp)==0) {
-	      itmp2 = strlen(ctmp);
-	      for(icdl=0;icdl<(ics+itmp2+1);icdl++) {
-		ctmp2[icdl]=msg[icdl];
-	      }
-	      while((msg[icdl]!=' ')&&(msg[icdl]!='\0')) {
-		ctmp2[icdl]=msg[icdl];
-		icdl++;
-	      }
-	      ctmp2[icdl]='\0';
-	      icd = strlen(ctmp2);
-	      /* ok now we need to know if the user passed an interval or not in order to add it */
-	      cmor_get_axis_attribute(cmor_vars[var_id].axes_ids[i],"interval",'c',ctmp);
-	      cmor_trim_string(ctmp,ctmp3);
-	      if (strcmp(ctmp3,"")!=0) {
-		strncat(ctmp2," (interval: ",CMOR_MAX_STRING-strlen(ctmp2));
-		strncat(ctmp2,ctmp,CMOR_MAX_STRING-strlen(ctmp2));
-		strncat(ctmp2,")",CMOR_MAX_STRING-strlen(ctmp2));
-	      }
-	      ierr = strlen(ctmp2)-icd;
-	      itmp3 = strlen(msg);
-	      for(icdl=icd;icdl<itmp3;icdl++) {
-		ctmp2[icdl+ierr]=msg[icdl];
-		ctmp2[icdl+1+ierr]='\0';
-	      }
-	      cmor_set_variable_attribute_internal(var_id,"cell_methods",'c',ctmp2);
-	      break;
-	    }
-	  }
+
+
+/* -------------------------------------------------------------------- */
+/*      store netcdf file id associated with this variable              */
+/* -------------------------------------------------------------------- */
+	cmor_vars[var_id].initialized = ncid;
+/* -------------------------------------------------------------------- */
+/*      define dimensions in NetCDF file                                */
+/* -------------------------------------------------------------------- */
+
+        cmor_define_dimensions(var_id, ncid, ncafid, time_bounds, nc_dim,
+                nc_vars, nc_bnds_vars, nc_vars_af, nc_dim_chunking, &dim_bnds,
+                zfactors, nc_zfactors,nc_dim_af);
+
+/* -------------------------------------------------------------------- */
+/*      Store the dimension id for reuse when writting                  */
+/*      over multiple call to cmor_write                                */
+/* -------------------------------------------------------------------- */
+	cmor_vars[var_id].time_nc_id = nc_vars[0];
+
+        int nGridID;
+        nGridID = cmor_vars[var_id].grid_id;
+/* -------------------------------------------------------------------- */
+/*      check if it is a grid thing                                     */
+/* -------------------------------------------------------------------- */
+	if( nGridID > -1 ) {
+	    ierr = cmor_grids_def(var_id, nGridID,ncafid, nc_dim_af);
+	    if(ierr) return(ierr);
 	}
-	else {
-	  if ((cmor_tables[cmor_axes[cmor_vars[var_id].axes_ids[i]].ref_table_id].axes[cmor_axes[cmor_vars[var_id].axes_ids[i]].ref_axis_id].type=='c') && (strcmp(cmor_axes[cmor_vars[var_id].axes_ids[i]].attributes[j],"units")==0)) {
-	    /* passing we do not want the units attribute */
-	  }
-	  else {
-	    if (cmor_axes[cmor_vars[var_id].axes_ids[i]].attributes_type[j]=='c') {
-	      ierr = cmor_put_nc_char_attribute(ncid,nc_vars[i],cmor_axes[cmor_vars[var_id].axes_ids[i]].attributes[j],cmor_axes[cmor_vars[var_id].axes_ids[i]].attributes_values_char[j],cmor_vars[var_id].id);
-	      if (ncid!=ncafid) {
-		ierr = cmor_put_nc_char_attribute(ncafid,nc_vars_af[i],cmor_axes[cmor_vars[var_id].axes_ids[i]].attributes[j],cmor_axes[cmor_vars[var_id].axes_ids[i]].attributes_values_char[j],cmor_vars[var_id].id);
-	      }
-	    }
-	    else {
-	      ierr = cmor_put_nc_num_attribute(ncid,nc_vars[i],cmor_axes[cmor_vars[var_id].axes_ids[i]].attributes[j], cmor_axes[cmor_vars[var_id].axes_ids[i]].attributes_type[j], cmor_axes[cmor_vars[var_id].axes_ids[i]].attributes_values_num[j],cmor_vars[var_id].id);
-	      if (ncid!=ncafid) {
-		ierr = cmor_put_nc_num_attribute(ncafid,nc_vars_af[i],cmor_axes[cmor_vars[var_id].axes_ids[i]].attributes[j], cmor_axes[cmor_vars[var_id].axes_ids[i]].attributes_type[j], cmor_axes[cmor_vars[var_id].axes_ids[i]].attributes_values_num[j],cmor_vars[var_id].id);
-	      }
-	    }
-	  }
+
+	create_singleton_dimensions(var_id, ncid,
+	        nc_singletons, nc_singletons_bnds, &dim_bnds);
+
+
+/* -------------------------------------------------------------------- */
+/*      Creating variable to write                                      */
+/* -------------------------------------------------------------------- */
+	mtype = cmor_vars[var_id].type;
+	if( mtype == 'd' )
+	    ierr =
+		nc_def_var( ncid, cmor_vars[var_id].id, NC_DOUBLE,
+			    cmor_vars[var_id].ndims, &nc_dim[0],
+			    &nc_vars[cmor_vars[var_id].ndims] );
+	else if( mtype == 'f' )
+	    ierr =
+		nc_def_var( ncid, cmor_vars[var_id].id, NC_FLOAT,
+			    cmor_vars[var_id].ndims, &nc_dim[0],
+			    &nc_vars[cmor_vars[var_id].ndims] );
+	else if( mtype == 'l' )
+	    ierr =
+		nc_def_var( ncid, cmor_vars[var_id].id, NC_INT,
+			    cmor_vars[var_id].ndims, &nc_dim[0],
+			    &nc_vars[cmor_vars[var_id].ndims] );
+	else if( mtype == 'i' )
+	    ierr =
+		nc_def_var( ncid, cmor_vars[var_id].id, NC_INT,
+			    cmor_vars[var_id].ndims, &nc_dim[0],
+			    &nc_vars[cmor_vars[var_id].ndims] );
+	if( ierr != NC_NOERR ) {
+	    snprintf( msg, CMOR_MAX_STRING,
+		      "NetCDF Error (%i: %s) writing variable: %s (table: %s)",
+		      ierr, nc_strerror( ierr ), cmor_vars[var_id].id,
+		      cmor_tables[nVarRefTblID].szTable_id );
+	    cmor_handle_error( msg, CMOR_CRITICAL );
 	}
-      }
-    }
-    /* Store the dimension id for reuse when writting over multiple call to cmor_write */
-    cmor_vars[var_id].time_nc_id = nc_vars[0];
-
-    /* check if it is a grid thing */
-    if (cmor_vars[var_id].grid_id>-1) {
-      /* first of all checks for grid_mapping */
-      if (strcmp(cmor_grids[cmor_vars[var_id].grid_id].mapping,"")!=0) {
-	/* ok we need to create this dummy variable that contains all the info */
-	cmor_set_variable_attribute_internal(var_id,"grid_mapping",'c',cmor_grids[cmor_vars[var_id].grid_id].mapping);
-	ierr = nc_def_var(ncafid,cmor_grids[cmor_vars[var_id].grid_id].mapping,NC_INT,0,&nc_dims_associated[0],&m);
-	if (ierr != NC_NOERR) {
-	  snprintf(msg,CMOR_MAX_STRING,"NetCDF error (%i: %s) while defining associated grid mapping variable %s for variable %s (table: %s)",ierr,nc_strerror(ierr),cmor_grids[cmor_vars[var_id].grid_id].mapping,cmor_vars[var_id].id,cmor_tables[cmor_vars[var_id].ref_table_id].table_id);
-	  cmor_handle_error(msg,CMOR_CRITICAL);
+
+/* -------------------------------------------------------------------- */
+/*      Store the var id for reuse when writting                        */
+/*      over multiple call to cmor_write and for cmor_close             */
+/* -------------------------------------------------------------------- */
+	cmor_vars[var_id].nc_var_id = nc_vars[cmor_vars[var_id].ndims];
+
+	cmor_create_var_attributes(var_id, ncid, ncafid, nc_vars, nc_bnds_vars,
+	        nc_vars_af, nc_associated_vars, nc_singletons, nc_singletons_bnds,
+	        nc_zfactors, zfactors, nzfactors, nc_dim_chunking, outname);
+
+
+
+    } else {
+
+/* --------------------------------------------------------------------- */
+/*      Variable already been thru cmor_write,                          */
+/*      we just get the netcdf file id                                  */
+/* -------------------------------------------------------------------- */
+	ncid = cmor_vars[refvarid].initialized;
+
+/* -------------------------------------------------------------------- */
+/*      generates a new unique id                                       */
+/* -------------------------------------------------------------------- */
+	cmor_generate_uuid();
+        cmor_get_cur_dataset_attribute( GLOBAL_ATT_TRACKING_ID, ctmp2 );
+	ierr = nc_put_att_text( ncid, NC_GLOBAL, GLOBAL_ATT_TRACKING_ID,
+	                        strlen(ctmp2), ctmp2 );
+	if( ierr != NC_NOERR ) {
+	    snprintf( msg, CMOR_MAX_STRING,
+		      "NetCDF error (%i: %s) for variable %s (table: %s)\n! "
+	              "writing global attribute: %s (%s)",
+		      ierr, nc_strerror( ierr ), cmor_vars[var_id].id,
+		      cmor_tables[nVarRefTblID].szTable_id,
+		      "tracking_id",
+		     (char *) ctmp2 );
+	    cmor_handle_error( msg, CMOR_CRITICAL );
 	}
-	/* Creates attributes related to that variable */
-	ierr = cmor_put_nc_char_attribute(ncafid,m,"grid_mapping_name",cmor_grids[cmor_vars[var_id].grid_id].mapping,cmor_vars[var_id].id);
-	for (k=0;k<cmor_grids[cmor_vars[var_id].grid_id].nattributes;k++){
-	  if (strcmp(cmor_grids[cmor_vars[var_id].grid_id].attributes_names[k],"standard_parallel1")==0 ||strcmp(cmor_grids[cmor_vars[var_id].grid_id].attributes_names[k],"standard_parallel2")==0 ){
-	    i = -cmor_vars[var_id].grid_id-CMOR_MAX_GRIDS;
-	    if ((cmor_has_grid_attribute(i,"standard_parallel1")==0) && (cmor_has_grid_attribute(i,"standard_parallel2")==0)) {
-	      cmor_get_grid_attribute(i,"standard_parallel1",&tmps[0]);
-	      cmor_get_grid_attribute(i,"standard_parallel2",&tmps[1]);
-	      ierr = nc_put_att_double(ncafid,m,"standard_parallel",NC_DOUBLE,2,&tmps[0]);
-	    }
-	    else if (cmor_has_grid_attribute(i,"standard_parallel1")==0) {
-	      cmor_get_grid_attribute(i,"standard_parallel1",&tmps[0]);
-	      ierr = nc_put_att_double(ncafid,m,"standard_parallel",NC_DOUBLE,1,&tmps[0]);
-	    }
-	    else {
-	      cmor_get_grid_attribute(i,"standard_parallel2",&tmps[0]);
-	      ierr = nc_put_att_double(ncafid,m,"standard_parallel",NC_DOUBLE,1,&tmps[0]);
-	    }
-	    if (ierr!=NC_NOERR) {
-	      snprintf(msg,CMOR_MAX_STRING,"NetCDF Error (%i: %s) writing standard_parallel to file, varialbe: %s (table: %s)",ierr, nc_strerror(ierr),cmor_vars[var_id].id,cmor_tables[cmor_vars[var_id].ref_table_id].table_id);
-	      cmor_handle_error(msg,CMOR_NORMAL);
-	      cmor_pop_traceback();
-	      return 1;
+
+
+/* -------------------------------------------------------------------- */
+/*      in case we are doing a zfactor var                              */
+/* -------------------------------------------------------------------- */
+	cmor_vars[var_id].time_nc_id = cmor_vars[refvarid].time_nc_id;
+	cmor_vars[var_id].time_bnds_nc_id = cmor_vars[refvarid].time_bnds_nc_id;
+    }
+
+/* -------------------------------------------------------------------- */
+/*      here we add the number of time                                  */
+/*      written for the associated variable                             */
+/* -------------------------------------------------------------------- */
+    if( ( refvar != NULL ) && ( cmor_vars[refvarid].grid_id > -1 )
+	&& ( cmor_grids[cmor_vars[refvarid].grid_id].istimevarying == 1 ) ) {
+	for( i = 0; i < 4; i++ ) {
+	    if( cmor_grids[cmor_vars[refvarid].grid_id].associated_variables
+		[i] == var_id ) {
+		if( cmor_vars[refvarid].ntimes_written_coords[i] == -1 ) {
+		    cmor_vars[refvarid].ntimes_written_coords[i] =
+			ntimes_passed;
+		} else {
+		    cmor_vars[refvarid].ntimes_written_coords[i] +=
+			ntimes_passed;
+		}
 	    }
-	  }
-	  else {
-	    ierr = cmor_put_nc_num_attribute(ncafid,m,cmor_grids[cmor_vars[var_id].grid_id].attributes_names[k],'d',cmor_grids[cmor_vars[var_id].grid_id].attributes_values[k],cmor_grids[cmor_vars[var_id].grid_id].mapping);
-	  }
 	}
-      }
-      /* preps the marker for vertices diemnsions */
-      m=0;
-      /* At this point creates the associated variables */
-      /* all is done is associated file */
-      for (i=0;i<5;i++) {
-	m2[i]=0;
-	j = cmor_grids[cmor_vars[var_id].grid_id].associated_variables[i];
-/* 	printf("i: %i, associated is: %i\n",i,j); */
-	if (j!=-1) {
-	  /* ok we need to define this variable */
-	  l=0;
-	  /* first we need to figure out the actual grid dimensions and their netcdf eq */
-	  for(k=0;k<cmor_vars[var_id].ndims;k++) {
-/* 	    printf("axis: %s\n",cmor_axes[cmor_vars[var_id].axes_ids[k]].id); */
-	    if (cmor_axes[cmor_vars[var_id].axes_ids[k]].isgridaxis==1) {
-	      nc_dims_associated[l]=nc_dim_af[k];
-/* 	      printf("ok we have a grid axis %s associated with dim %i (k is: %i)\n",cmor_axes[cmor_vars[var_id].axes_ids[k]].id,l,k); */
-
-	      if (m2[i]==0 && (i==0 || i==1)) {
-               if (cmor_has_variable_attribute(var_id,"coordinates")==0) {
-                 cmor_get_variable_attribute(var_id,"coordinates",&msg);
-                 cmor_cat_unique_string(msg, cmor_vars[cmor_grids[cmor_vars[var_id].grid_id].associated_variables[i]].id);
-               } else {
-                 strncpy(msg,cmor_vars[cmor_grids[cmor_vars[var_id].grid_id].associated_variables[i]].id,CMOR_MAX_STRING-strlen(msg));
-               }
-		cmor_set_variable_attribute_internal(var_id,"coordinates",'c',msg);
-		m2[i]=1;
-	      }
-	      l++;
-	    }
-	  }
-	  if (((i==2) || (i==3)) && (m==0)) { /*vertices need to be added */
-	    m=1; /* ok now it has been defined */
-	    ierr = nc_def_dim(ncafid,"vertices",cmor_axes[cmor_vars[j].axes_ids[cmor_vars[j].ndims-1]].length,&nc_dims_associated[l]);
-	    if (ierr != NC_NOERR) {snprintf(msg,CMOR_MAX_STRING,"NetCDF error (%i: %s) while defining vertices dimension, variable %s (table: %s)",ierr,nc_strerror(ierr),cmor_vars[var_id].id,cmor_tables[cmor_vars[var_id].ref_table_id].table_id);cmor_handle_error(msg,CMOR_CRITICAL);}
-	  }
-	  mtype = cmor_vars[j].type;
-/* 	  printf("type, ndims: %c, %i\n",mtype,cmor_vars[j].ndims); */
-/* 	  for(k=0;k<cmor_vars[var_id].ndims;k++) { */
-/* 	    printf("nc dim for dim %i is: %i\n",k,nc_dims_associated[k]); */
-/* 	  } */
-	  if (mtype=='d' ) ierr = nc_def_var(ncafid,cmor_vars[j].id,NC_DOUBLE,cmor_vars[j].ndims,&nc_dims_associated[0],&nc_associated_vars[i]);
-	  else if (mtype=='f' ) ierr = nc_def_var(ncafid,cmor_vars[j].id,NC_FLOAT,cmor_vars[j].ndims,&nc_dims_associated[0],&nc_associated_vars[i]);
-	  else if (mtype=='l' ) ierr = nc_def_var(ncafid,cmor_vars[j].id,NC_INT,cmor_vars[j].ndims,&nc_dims_associated[0],&nc_associated_vars[i]);
-	  else if (mtype=='i' ) ierr = nc_def_var(ncafid,cmor_vars[j].id,NC_INT,cmor_vars[j].ndims,&nc_dims_associated[0],&nc_associated_vars[i]);
-	  if (ierr != NC_NOERR) {snprintf(msg,CMOR_MAX_STRING,"NetCDF error (%i: %s) while defining associated variable %s, of variable %s (table: %s)",ierr,nc_strerror(ierr),cmor_vars[j].id,cmor_vars[var_id].id,cmor_tables[cmor_vars[var_id].ref_table_id].table_id);cmor_handle_error(msg,CMOR_CRITICAL);}
-	  /* /\* at this point we check if tables match *\/ */
-	  /* if (cmor_vars[j].ref_table_id!=cmor_vars[var_id].ref_table_id) { */
-	  /*   snprintf(msg,CMOR_MAX_STRING,"Table %s (%s) ",cmor_tables[cmor_vars[j].ref_table_id].table_id,cmor_tables[cmor_vars[j].ref_table_id].date); */
-	  /*   for (i=0;i<16;i++) sprintf(&ctmp[2*i],"%02x",cmor_tables[cmor_axes[cmor_vars[var_id].axes_ids[i]].ref_table_id].md5[i]); */
-	  /*   ctmp[32]='\0'; */
-	  /*   strcat(msg,ctmp); */
-	  /*   ierr = nc_put_att_text(ncid, nc_associated_vars[i],"table_id",strlen(msg)+1,msg); */
-	  /*   if (ierr != NC_NOERR) { */
-	  /*     snprintf(ctmp2,CMOR_MAX_STRING,"NetCDF error (%i) for associated variable %s writing table_id att (%s) onto associated var: %s",ierr,cmor_vars[var_id].id,msg,cmor_vars[j].id); */
-	  /*     cmor_handle_error(ctmp2,CMOR_CRITICAL); */
-	  /*   } */
-	  /* } */
-	  /* Creates attributes related to that variable */
-	  for (k=0;k<cmor_vars[j].nattributes;k++){
-	    /* first of all we need to make sure it is not an empty attribute */
-	    if (cmor_has_variable_attribute(j,cmor_vars[j].attributes[k])!=0) {
-	      /* deleted attribute continue on */
-	      continue;
-	    }
-	    if (strcmp(cmor_vars[j].attributes[k],"flag_values")==0) {
-	      /* ok we need to convert the string to a list of int */
-	      ierr = cmor_convert_string_to_list(cmor_vars[j].attributes_values_char[k],'i',(void *)&int_list,&nelts);
-	      ierr = nc_put_att_int(ncafid, nc_associated_vars[i],"flag_values",NC_INT,nelts,int_list);
-	      if (ierr != NC_NOERR) {
-		snprintf(msg,CMOR_MAX_STRING,"NetCDF Error (%i: %s) setting flags numerical attribute on associated variable %s, for variable %s (table: %s)",ierr,nc_strerror(ierr),cmor_vars[j].id,cmor_vars[var_id].id,cmor_tables[cmor_vars[var_id].ref_table_id].table_id);
-		cmor_handle_error(msg,CMOR_CRITICAL);
-	      }
-	      free(int_list);
-	    }
-	    else if (cmor_vars[j].attributes_type[k] == 'c') {
-	      ierr = cmor_put_nc_char_attribute(ncafid,nc_associated_vars[i],cmor_vars[j].attributes[k],cmor_vars[j].attributes_values_char[k],cmor_vars[j].id) ;
-	    }
-	    else {
-	      ierr = cmor_put_nc_num_attribute(ncafid,nc_associated_vars[i],cmor_vars[j].attributes[k],cmor_vars[j].attributes_type[k],cmor_vars[j].attributes_values_num[k],cmor_vars[j].id);
-	    }
-	  }
-	  /* Compression stuff */
-	  if ((CMOR_NETCDF_MODE != CMOR_REPLACE_3) && (CMOR_NETCDF_MODE != CMOR_PRESERVE_3) && (CMOR_NETCDF_MODE != CMOR_APPEND_3)) {
-	    if (cmor_vars[j].ndims>0) {
-	      ics = cmor_tables[cmor_vars[j].ref_table_id].vars[cmor_vars[j].ref_var_id].shuffle;
-	      icd = cmor_tables[cmor_vars[j].ref_table_id].vars[cmor_vars[j].ref_var_id].deflate;
-	      icdl = cmor_tables[cmor_vars[j].ref_table_id].vars[cmor_vars[j].ref_var_id].deflate_level;
-	      ierr = nc_def_var_deflate(ncafid,nc_associated_vars[i],ics,icd,icdl);
-	      if (ierr != NC_NOERR) {
-		snprintf(msg,CMOR_MAX_STRING,"NetCDF Error (%i: %s) defining compression parameters for associated variable '%s' for variable %s (table: %s)",ierr,nc_strerror(ierr),cmor_vars[j].id,cmor_vars[var_id].id,cmor_tables[cmor_vars[var_id].ref_table_id].table_id);
-		cmor_handle_error(msg,CMOR_CRITICAL);
-	      }
+    }
+    if( refvar != NULL ) {
+	for( i = 0; i < 10; i++ ) {
+	    if( cmor_vars[*refvar].associated_ids[i] == var_id ) {
+		if( cmor_vars[*refvar].ntimes_written_associated[i] == 0 ) {
+		    cmor_vars[*refvar].ntimes_written_associated[i] =
+			ntimes_passed;
+		} else {
+		    cmor_vars[*refvar].ntimes_written_associated[i] +=
+			ntimes_passed;
+		}
 	    }
-	  }
 	}
-      }
     }
+    cmor_write_var_to_file( ncid, &cmor_vars[var_id], data, type,
+			    ntimes_passed, time_vals, time_bounds );
+    cmor_pop_traceback(  );
+    return( 0 );
+}
 
+/************************************************************************/
+/*                 cmor_create_var_attributes()                         */
+/************************************************************************/
+void cmor_create_var_attributes(int var_id, int ncid, int ncafid,
+        int *nc_vars, int *nc_bnds_vars,
+        int *nc_vars_af, int *nc_associated_vars,
+        int *nc_singletons, int *nc_singletons_bnds,
+        int *nc_zfactors, int *zfactors,    int nzfactors,
+        size_t *nc_dim_chunking, char *outname) {
+
+    size_t starts[2], counts[2];
+    int i, j, k, l,  ho;
+    int ierr;
+    char msg[CMOR_MAX_STRING];
+    int nVarRefTblID = cmor_vars[var_id].ref_table_id;
+    int nelts;
+    int *int_list = NULL;
+    int ics, icd, icdl;
+    cmor_add_traceback("cmor_create_var_attributes");
+/* -------------------------------------------------------------------- */
+/*      Creates attributes related to that variable                     */
+/* -------------------------------------------------------------------- */
+    for (j = 0; j < cmor_vars[var_id].nattributes; j++) {
+/* -------------------------------------------------------------------- */
+/*      first of all we need to make sure it is not an empty attribute  */
+/* -------------------------------------------------------------------- */
+        if (cmor_has_variable_attribute(var_id, cmor_vars[var_id].attributes[j])
+                != 0) {
+/* -------------------------------------------------------------------- */
+/*      deleted attribute continue on                                   */
+/* -------------------------------------------------------------------- */
+            continue;
+        }
+        if (strcmp(cmor_vars[var_id].attributes[j], "flag_values") == 0) {
+/* -------------------------------------------------------------------- */
+/*      ok we need to convert the string to a list of int               */
+/* -------------------------------------------------------------------- */
+
+            ierr = cmor_convert_string_to_list(
+                    cmor_vars[var_id].attributes_values_char[j], 'i',
+                    (void *) &int_list, &nelts);
+            ierr = nc_put_att_int(ncid, cmor_vars[var_id].nc_var_id,
+                    "flag_values", NC_INT, nelts, int_list);
+            if (ierr != NC_NOERR) {
+                snprintf(msg, CMOR_MAX_STRING,
+                        "NetCDF Error (%i: %s) setting flags numerical\n! "
+                                "attribute on variable %s (table: %s)", ierr,
+                        nc_strerror(ierr), cmor_vars[var_id].id,
+                        cmor_tables[nVarRefTblID].szTable_id);
+                cmor_handle_error(msg, CMOR_CRITICAL);
+            }
+            free(int_list);
+
+        } else if (cmor_vars[var_id].attributes_type[j] == 'c') {
+            ierr = cmor_put_nc_char_attribute(ncid,
+                    cmor_vars[var_id].nc_var_id,
+                    cmor_vars[var_id].attributes[j],
+                    cmor_vars[var_id].attributes_values_char[j],
+                    cmor_vars[var_id].id);
+        } else {
+            ierr = cmor_put_nc_num_attribute(ncid,
 
-
-    /* Creates singleton dimension variables */
-    for(i=0;i<CMOR_MAX_DIMENSIONS;i++) {
-      j = cmor_vars[var_id].singleton_ids[i];
-      if (j!=-1) {
-	if (cmor_tables[cmor_axes[j].ref_table_id].axes[cmor_axes[j].ref_axis_id].type=='c'){
-	  ierr = nc_def_dim(ncid,"strlen",strlen(cmor_tables[cmor_axes[j].ref_table_id].axes[cmor_axes[j].ref_axis_id].cvalue),&k);
-	  ierr = nc_def_var(ncid,cmor_axes[j].id,NC_CHAR,1,&k,&nc_singletons[i]);
-	}
-	else {
-	  ierr = nc_def_var(ncid,cmor_axes[j].id,NC_DOUBLE,0,&nc_singletons[i],&nc_singletons[i]);
-	}
-	if (ierr != NC_NOERR) {
-	  snprintf(msg,CMOR_MAX_STRING,"NetCDF Error (%i: %s) defining scalar variable %s for variable %s (table: %s)",ierr,nc_strerror(ierr),cmor_axes[j].id,cmor_vars[var_id].id,cmor_tables[cmor_vars[var_id].ref_table_id].table_id);
-	  cmor_handle_error(msg,CMOR_CRITICAL);
-	}
-	/* now  puts on its attributes */
-	for (k=0;k<cmor_axes[j].nattributes;k++){
-	  if (cmor_axes[j].attributes_type[k] == 'c') {
-	    ierr = cmor_put_nc_char_attribute(ncid,nc_singletons[i],cmor_axes[j].attributes[k],cmor_axes[j].attributes_values_char[k],cmor_vars[var_id].id) ;
-	  }
-	  else {
-	    ierr = cmor_put_nc_num_attribute(ncid,nc_singletons[i],cmor_axes[j].attributes[k],cmor_axes[j].attributes_type[k],cmor_axes[j].attributes_values_num[k],cmor_vars[var_id].id);
-	  }
-	}
-	/* ok we need to see if there's bounds as well... */
-	if (cmor_axes[j].bounds!=NULL) { /*yep */
-	  snprintf(msg,CMOR_MAX_STRING,"%s_bnds",cmor_axes[j].id);
-	  ierr = cmor_put_nc_char_attribute(ncid,nc_singletons[i],"bounds",msg,cmor_vars[var_id].id) ;
-	  ierr = nc_def_var(ncid,msg,NC_DOUBLE,1,&dim_bnds,&nc_singletons_bnds[i]);
-	  if (ierr != NC_NOERR) {
-	    snprintf(msg,CMOR_MAX_STRING,"NetCDF Error (%i: %s) defining scalar bounds variable %s for variable %s (table: %s)",ierr,nc_strerror(ierr),cmor_axes[j].id,cmor_vars[var_id].id,cmor_tables[cmor_vars[var_id].ref_table_id].table_id);
-	    cmor_handle_error(msg,CMOR_CRITICAL);
-	  }
-	}
-      }
+                    cmor_vars[var_id].nc_var_id,
+                    cmor_vars[var_id].attributes[j],
+                    cmor_vars[var_id].attributes_type[j],
+                    cmor_vars[var_id].attributes_values_num[j],
+                    cmor_vars[var_id].id);
+        }
     }
 
+    if ((CMOR_NETCDF_MODE != CMOR_REPLACE_3)
+            && (CMOR_NETCDF_MODE != CMOR_PRESERVE_3)
+            && (CMOR_NETCDF_MODE != CMOR_APPEND_3)) {
+/* -------------------------------------------------------------------- */
+/*      Compression stuff                                               */
+/* -------------------------------------------------------------------- */
+        cmor_var_t *pVar;
+
+        pVar = &cmor_vars[var_id];
+
+        ics = pVar->shuffle;
+        icd = pVar->deflate;
+        icdl = pVar->deflate_level;
+        ierr = nc_def_var_deflate(ncid, pVar->nc_var_id, ics, icd,
+                icdl);
+
+        if (ierr != NC_NOERR) {
+            snprintf(msg, CMOR_MAX_STRING,
+                    "NetCDF Error (%i: %s) defining compression\n! "
+                            "parameters for variable '%s' (table: %s)", ierr,
+                    nc_strerror(ierr), cmor_vars[var_id].id,
+                    cmor_tables[nVarRefTblID].szTable_id);
+            cmor_handle_error(msg, CMOR_CRITICAL);
+        }
+/* -------------------------------------------------------------------- */
+/*      Chunking stuff                                                  */
+/* -------------------------------------------------------------------- */
 
-
-    /* Creating variable to write */
-    mtype=cmor_vars[var_id].type;
-    if (mtype=='d' ) ierr = nc_def_var(ncid,cmor_vars[var_id].id,NC_DOUBLE,cmor_vars[var_id].ndims,&nc_dim[0],&nc_vars[cmor_vars[var_id].ndims]);
-    else if (mtype=='f' ) ierr = nc_def_var(ncid,cmor_vars[var_id].id,NC_FLOAT,cmor_vars[var_id].ndims,&nc_dim[0],&nc_vars[cmor_vars[var_id].ndims]);
-    else if (mtype=='l' ) ierr = nc_def_var(ncid,cmor_vars[var_id].id,NC_INT,cmor_vars[var_id].ndims,&nc_dim[0],&nc_vars[cmor_vars[var_id].ndims]);
-    else if (mtype=='i' ) ierr = nc_def_var(ncid,cmor_vars[var_id].id,NC_INT,cmor_vars[var_id].ndims,&nc_dim[0],&nc_vars[cmor_vars[var_id].ndims]);
-    if (ierr != NC_NOERR) {
-      snprintf(msg,CMOR_MAX_STRING,"NetCDF Error (%i: %s) writing variable: %s (table: %s)",ierr,nc_strerror(ierr),cmor_vars[var_id].id,cmor_tables[cmor_vars[var_id].ref_table_id].table_id);
-      cmor_handle_error(msg,CMOR_CRITICAL);
-    }
-
-    /* Store the var id for reuse when writting over multiple call to cmor_write and for cmor_close */
-    cmor_vars[var_id].nc_var_id=nc_vars[cmor_vars[var_id].ndims];
-
-    /* Creates attributes related to that variable */
-    for (j=0;j<cmor_vars[var_id].nattributes;j++){
-      /* first of all we need to make sure it is not an empty attribute */
-      if (cmor_has_variable_attribute(var_id,cmor_vars[var_id].attributes[j])!=0) {
-	/* deleted attribute continue on */
-	continue;
-      }
-      if (strcmp(cmor_vars[var_id].attributes[j],"flag_values")==0) {
-	/* ok we need to convert the string to a list of int */
-	ierr = cmor_convert_string_to_list(cmor_vars[var_id].attributes_values_char[j],'i',(void *)&int_list,&nelts);
-	ierr = nc_put_att_int(ncid,cmor_vars[var_id].nc_var_id ,"flag_values",NC_INT,nelts,int_list);
-	if (ierr != NC_NOERR) {
-	  snprintf(msg,CMOR_MAX_STRING,"NetCDF Error (%i: %s) setting flags numerical attribute on variable %s (table: %s)",ierr,nc_strerror(ierr),cmor_vars[var_id].id,cmor_tables[cmor_vars[var_id].ref_table_id].table_id);
-	  cmor_handle_error(msg,CMOR_CRITICAL);
-	}
-	free(int_list);
-      }
-      else if (cmor_vars[var_id].attributes_type[j] == 'c') {
-	ierr = cmor_put_nc_char_attribute(ncid,cmor_vars[var_id].nc_var_id,cmor_vars[var_id].attributes[j],cmor_vars[var_id].attributes_values_char[j],cmor_vars[var_id].id) ;
-      }
-      else {
-	ierr = cmor_put_nc_num_attribute(ncid,cmor_vars[var_id].nc_var_id,cmor_vars[var_id].attributes[j],cmor_vars[var_id].attributes_type[j],cmor_vars[var_id].attributes_values_num[j],cmor_vars[var_id].id);
-      }
-    }
-
-    if ((CMOR_NETCDF_MODE != CMOR_REPLACE_3) && (CMOR_NETCDF_MODE != CMOR_PRESERVE_3) && (CMOR_NETCDF_MODE != CMOR_APPEND_3)) {
-      /* Compression stuff */
-      ics = cmor_tables[cmor_vars[var_id].ref_table_id].vars[cmor_vars[var_id].ref_var_id].shuffle;
-      icd = cmor_tables[cmor_vars[var_id].ref_table_id].vars[cmor_vars[var_id].ref_var_id].deflate;
-      icdl = cmor_tables[cmor_vars[var_id].ref_table_id].vars[cmor_vars[var_id].ref_var_id].deflate_level;
-      ierr = nc_def_var_deflate(ncid,cmor_vars[var_id].nc_var_id,ics,icd,icdl);
-      if (ierr != NC_NOERR) {
-	snprintf(msg,CMOR_MAX_STRING,"NetCDF Error (%i: %s) defining compression parameters for variable '%s' (table: %s)",ierr,nc_strerror(ierr),cmor_vars[var_id].id,cmor_tables[cmor_vars[var_id].ref_table_id].table_id);
-	cmor_handle_error(msg,CMOR_CRITICAL);
-      }
-      /* Chunking stuff */
 #ifndef NC_CHUNKED
 #define NC_CHUNKED 0
 #endif
-      if (!((cmor_vars[var_id].grid_id>-1) && (cmor_grids[cmor_vars[var_id].grid_id].istimevarying==1))) {
-	ierr = nc_def_var_chunking(ncid,cmor_vars[var_id].nc_var_id,NC_CHUNKED,&nc_dim_chunking[0]);
-	if (ierr != NC_NOERR) {
-	  snprintf(msg,CMOR_MAX_STRING,"NetCDF Error (%i: %s) defining chunking parameters for variable '%s' (table: %s)",ierr,nc_strerror(ierr),cmor_vars[var_id].id,cmor_tables[cmor_vars[var_id].ref_table_id].table_id);
-	  cmor_handle_error(msg,CMOR_CRITICAL);
-	}
-      }
+        if (!((cmor_vars[var_id].grid_id > -1)
+                && (cmor_grids[cmor_vars[var_id].grid_id].istimevarying == 1))) {
+            ierr = nc_def_var_chunking(ncid, cmor_vars[var_id].nc_var_id,
+                    NC_CHUNKED, &nc_dim_chunking[0]);
+            if (ierr != NC_NOERR) {
+                snprintf(msg, CMOR_MAX_STRING,
+                        "NetCDF Error (%i: %s) defining chunking\n! "
+                                "parameters for variable '%s' (table: %s)",
+                        ierr, nc_strerror(ierr), cmor_vars[var_id].id,
+                        cmor_tables[nVarRefTblID].szTable_id);
+                cmor_handle_error(msg, CMOR_CRITICAL);
+            }
+        }
     }
 
 
-    /* Done with NetCDF file definitions */
+/* -------------------------------------------------------------------- */
+/*      Done with NetCDF file definitions                               */
+/* -------------------------------------------------------------------- */
+
     ierr = nc_enddef(ncid);
-    if (ierr != NC_NOERR && ierr != NC_ENOTINDEFINE) {snprintf(msg,CMOR_MAX_STRING,"NetCDF Error (%i: %s) leaving definition mode for file %s",ierr,nc_strerror(ierr),outname);cmor_handle_error(msg,CMOR_CRITICAL);}
+    if (ierr != NC_NOERR && ierr != NC_ENOTINDEFINE) {
+        snprintf(msg, CMOR_MAX_STRING,
+                "NetCDF Error (%i: %s) leaving definition mode for file %s",
+                ierr, nc_strerror(ierr), outname);
+        cmor_handle_error(msg, CMOR_CRITICAL);
+    }
     ierr = nc_enddef(ncafid);
-    if (ierr != NC_NOERR && ierr != NC_ENOTINDEFINE) {snprintf(msg,CMOR_MAX_STRING,"NetCDF Error (%i: %s) leaving definition mode for metafile %s",ierr,nc_strerror(ierr),cmor_current_dataset.associated_file_name);cmor_handle_error(msg,CMOR_CRITICAL);}
-    
-    /* Write non time dimension of variable into the NetCDF file */
+    if (ierr != NC_NOERR && ierr != NC_ENOTINDEFINE) {
+        snprintf(msg, CMOR_MAX_STRING,
+                "NetCDF Error (%i: %s) leaving definition mode for metafile %s",
+                ierr, nc_strerror(ierr),
+                cmor_current_dataset.associated_file_name);
+        cmor_handle_error(msg, CMOR_CRITICAL);
+    }
 
+/* -------------------------------------------------------------------- */
+/*      Write non time dimension of variable into the NetCDF file       */
+/* -------------------------------------------------------------------- */
     l = 1;
-    if (cmor_axes[cmor_vars[var_id].axes_ids[0]].axis!='T') {
-      l=0;
-    }
-    for(i=l;i<cmor_vars[var_id].ndims;i++) {
-      /* for(j=0;j<cmor_axes[cmor_vars[var_id].axes_ids[i]].length;j++) printf("axis %s : writing value: %i, %lf\n",cmor_axes[cmor_vars[var_id].axes_ids[i]].id,j,cmor_axes[cmor_vars[var_id].axes_ids[i]].values[j]); */
-      /* at this point we need to check if the values of the axis need to be replaced (hybrid coords *//* we only need to do this if ho != hi */
-      if (cmor_axes[cmor_vars[var_id].axes_ids[i]].hybrid_out!=cmor_axes[cmor_vars[var_id].axes_ids[i]].hybrid_in) {
-	ho = 0;
-	if (cmor_axes[cmor_vars[var_id].axes_ids[i]].hybrid_out!=0) {
-	  ho = cmor_axes[cmor_vars[var_id].axes_ids[i]].hybrid_out;
+    if (cmor_axes[cmor_vars[var_id].axes_ids[0]].axis != 'T') {
+        l = 0;
+    }
+    for (i = l; i < cmor_vars[var_id].ndims; i++) {
+/* -------------------------------------------------------------------- */
+/*      at this point we need to check if the values of the             */
+/*      axis need to be replaced (hybrid coords                         */
+/*      we only need to do this if ho != hi                             */
+/* -------------------------------------------------------------------- */
+        if (cmor_axes[cmor_vars[var_id].axes_ids[i]].hybrid_out
+                != cmor_axes[cmor_vars[var_id].axes_ids[i]].hybrid_in) {
+            ho = 0;
+            if (cmor_axes[cmor_vars[var_id].axes_ids[i]].hybrid_out != 0) {
+                ho = cmor_axes[cmor_vars[var_id].axes_ids[i]].hybrid_out;
+            } else if (cmor_axes[cmor_vars[var_id].axes_ids[i]].hybrid_in
+                    != 0) {
+                ho = cmor_axes[cmor_vars[var_id].axes_ids[i]].hybrid_in;
+            }
+            if (ho != 0) {
+/* -------------------------------------------------------------------- */
+/*      yep need to change them                                         */
+/* -------------------------------------------------------------------- */
+/* -------------------------------------------------------------------- */
+/*      std hyb sigma                                                   */
+/* -------------------------------------------------------------------- */
+                if (ho == 1) {
+/* -------------------------------------------------------------------- */
+/*      Look for a coeff                                                */
+/* -------------------------------------------------------------------- */
+                    k = -1;
+                    for (j = 0; j <= cmor_nvars; j++)
+                        if ((strcmp(cmor_vars[j].id, "a") == 0)
+                                && (cmor_vars[j].zaxis
+                                        == cmor_vars[var_id].axes_ids[i])) {
+                            k = j;
+                            break;
+                        }
+                    if (k == -1) {
+                        snprintf(msg, CMOR_MAX_STRING,
+                                "could not find 'a' coeff for axis: %s,\n! "
+                                        "for variable %s (table: %s)",
+                                cmor_axes[cmor_vars[var_id].axes_ids[i]].id,
+                                cmor_vars[var_id].id,
+                                cmor_tables[nVarRefTblID].szTable_id);
+                        cmor_handle_error(msg, CMOR_CRITICAL);
+                    }
+                    for (j = 0;
+                            j < cmor_axes[cmor_vars[var_id].axes_ids[i]].length;
+                            j++)
+                        cmor_axes[cmor_vars[var_id].axes_ids[i]].values[j] =
+                                cmor_vars[k].values[j];
+/* -------------------------------------------------------------------- */
+/*      look for b coeff                                                */
+/* -------------------------------------------------------------------- */
+
+                    k = -1;
+                    for (j = 0; j <= cmor_nvars; j++)
+                        if ((strcmp(cmor_vars[j].id, "b") == 0)
+                                && (cmor_vars[j].zaxis
+                                        == cmor_vars[var_id].axes_ids[i])) {
+                            k = j;
+                            break;
+                        }
+                    if (k == -1) {
+                        snprintf(msg, CMOR_MAX_STRING,
+                                "could find 'b' coeff for axis: %s,\n! "
+                                        "for variable %s (table: %s)",
+                                cmor_axes[cmor_vars[var_id].axes_ids[i]].id,
+                                cmor_vars[var_id].id,
+                                cmor_tables[nVarRefTblID].szTable_id);
+                        cmor_handle_error(msg, CMOR_CRITICAL);
+                    }
+                    for (j = 0;
+                            j < cmor_axes[cmor_vars[var_id].axes_ids[i]].length;
+                            j++) {
+                        cmor_axes[cmor_vars[var_id].axes_ids[i]].values[j] +=
+                                cmor_vars[k].values[j];
+                    }
+/* -------------------------------------------------------------------- */
+/*      do we have bounds to treat as well?                             */
+/* -------------------------------------------------------------------- */
+
+                    if (cmor_axes[cmor_vars[var_id].axes_ids[i]].bounds != NULL) {
+                        k = -1;
+                        for (j = 0; j <= cmor_nvars; j++)
+                            if ((strcmp(cmor_vars[j].id, "a_bnds") == 0)
+                                    && (cmor_vars[j].zaxis
+                                            == cmor_vars[var_id].axes_ids[i])) {
+                                k = j;
+                                break;
+                            }
+                        if (k == -1) {
+                            snprintf(msg, CMOR_MAX_STRING,
+                                    "could not find 'a_bnds' coeff for\n! "
+                                            "axis: %s, for variable %s (table: %s)",
+                                    cmor_axes[cmor_vars[var_id].axes_ids[i]].id,
+                                    cmor_vars[var_id].id,
+                                    cmor_tables[nVarRefTblID].szTable_id);
+                            cmor_handle_error(msg, CMOR_CRITICAL);
+                        }
+                        for (j = 0;
+                                j
+                                        < cmor_axes[cmor_vars[var_id].axes_ids[i]].length
+                                                * 2; j++)
+                            cmor_axes[cmor_vars[var_id].axes_ids[i]].bounds[j] =
+                                    cmor_vars[k].values[j];
+                        k = -1;
+                        for (j = 0; j <= cmor_nvars; j++)
+                            if ((strcmp(cmor_vars[j].id, "b_bnds") == 0)
+                                    && (cmor_vars[j].zaxis
+                                            == cmor_vars[var_id].axes_ids[i])) {
+                                k = j;
+                                break;
+                            }
+                        if (k == -1) {
+                            snprintf(msg, CMOR_MAX_STRING,
+                                    "could find 'b_bnds' coef for axis:\n! "
+                                            " %s, for variable %s (table: %s)",
+                                    cmor_axes[cmor_vars[var_id].axes_ids[i]].id,
+                                    cmor_vars[var_id].id,
+                                    cmor_tables[nVarRefTblID].szTable_id);
+                            cmor_handle_error(msg, CMOR_CRITICAL);
+                        }
+                        for (j = 0;
+                                j
+                                        < cmor_axes[cmor_vars[var_id].axes_ids[i]].length
+                                                * 2; j++)
+                            cmor_axes[cmor_vars[var_id].axes_ids[i]].bounds[j] +=
+                                    cmor_vars[k].values[j];
+                    }
+                    cmor_flip_hybrid(var_id, i, "a", "b", "a_bnds", "b_bnds");
+/* -------------------------------------------------------------------- */
+/*      alternate hyb sigma                                             */
+/* -------------------------------------------------------------------- */
+                } else if (ho == 2) {
+/* -------------------------------------------------------------------- */
+/*      look for ap coeff                                               */
+/* -------------------------------------------------------------------- */
+                    k = -1;
+                    for (j = 0; j <= cmor_nvars; j++)
+                        if ((strcmp(cmor_vars[j].id, "ap") == 0)
+                                && (cmor_vars[j].zaxis
+                                        == cmor_vars[var_id].axes_ids[i])) {
+                            k = j;
+                            break;
+                        }
+                    if (k == -1) {
+                        snprintf(msg, CMOR_MAX_STRING,
+                                "could not find 'ap' coeff for axis:\n! "
+                                        "%s, for variable %s (table: %s)",
+                                cmor_axes[cmor_vars[var_id].axes_ids[i]].id,
+                                cmor_vars[var_id].id,
+                                cmor_tables[nVarRefTblID].szTable_id);
+                        cmor_handle_error(msg, CMOR_CRITICAL);
+                    }
+                    for (j = 0;
+                            j < cmor_axes[cmor_vars[var_id].axes_ids[i]].length;
+                            j++)
+                        cmor_axes[cmor_vars[var_id].axes_ids[i]].values[j] =
+                                cmor_vars[k].values[j] / cmor_vars[l].values[0];
+/* -------------------------------------------------------------------- */
+/*      look for b coeff                                                */
+/* -------------------------------------------------------------------- */
+                    k = -1;
+                    for (j = 0; j <= cmor_nvars; j++)
+                        if ((strcmp(cmor_vars[j].id, "b") == 0)
+                                && (cmor_vars[j].zaxis
+                                        == cmor_vars[var_id].axes_ids[i])) {
+                            k = j;
+                            break;
+                        }
+                    if (k == -1) {
+                        snprintf(msg, CMOR_MAX_STRING,
+                                "could find 'b' coef for axis: %s,\n! "
+                                        "for variable %s (table: %s)",
+                                cmor_axes[cmor_vars[var_id].axes_ids[i]].id,
+                                cmor_vars[var_id].id,
+                                cmor_tables[nVarRefTblID].szTable_id);
+                        cmor_handle_error(msg, CMOR_CRITICAL);
+                    }
+                    for (j = 0;
+                            j < cmor_axes[cmor_vars[var_id].axes_ids[i]].length;
+                            j++)
+                        cmor_axes[cmor_vars[var_id].axes_ids[i]].values[j] +=
+                                cmor_vars[k].values[j];
+
+/* -------------------------------------------------------------------- */
+/*      deals with bounds                                               */
+/* -------------------------------------------------------------------- */
+
+                    if (cmor_axes[cmor_vars[var_id].axes_ids[i]].bounds != NULL) {
+                        k = -1;
+                        for (j = 0; j <= cmor_nvars; j++)
+                            if ((strcmp(cmor_vars[j].id, "ap_bnds") == 0)
+                                    && (cmor_vars[j].zaxis
+                                            == cmor_vars[var_id].axes_ids[i])) {
+                                k = j;
+                                break;
+                            }
+                        if (k == -1) {
+                            snprintf(msg, CMOR_MAX_STRING,
+                                    "could not find 'ap_bnds' coeff for\n! "
+                                            "axis: %s, for variable %s\n! "
+                                            "(table: %s)",
+                                    cmor_axes[cmor_vars[var_id].axes_ids[i]].id,
+                                    cmor_vars[var_id].id,
+                                    cmor_tables[nVarRefTblID].szTable_id);
+                            cmor_handle_error(msg, CMOR_CRITICAL);
+                        }
+                        for (j = 0;
+                                j
+                                        < cmor_axes[cmor_vars[var_id].axes_ids[i]].length
+                                                * 2; j++)
+                            cmor_axes[cmor_vars[var_id].axes_ids[i]].bounds[j] =
+                                    cmor_vars[k].values[j]
+                                            / cmor_vars[l].values[0];
+                        k = -1;
+                        for (j = 0; j <= cmor_nvars; j++)
+                            if ((strcmp(cmor_vars[j].id, "b_bnds") == 0)
+                                    && (cmor_vars[j].zaxis
+                                            == cmor_vars[var_id].axes_ids[i])) {
+                                k = j;
+                                break;
+                            }
+                        if (k == -1) {
+                            snprintf(msg, CMOR_MAX_STRING,
+                                    "could find 'b_bnds' coef for axis:\n! "
+                                            "%s, for variable %s (table: %s)",
+                                    cmor_axes[cmor_vars[var_id].axes_ids[i]].id,
+                                    cmor_vars[var_id].id,
+                                    cmor_tables[nVarRefTblID].szTable_id);
+                            cmor_handle_error(msg, CMOR_CRITICAL);
+                        }
+                        for (j = 0;
+                                j
+                                        < cmor_axes[cmor_vars[var_id].axes_ids[i]].length
+                                                * 2; j++)
+                            cmor_axes[cmor_vars[var_id].axes_ids[i]].bounds[j] +=
+                                    cmor_vars[k].values[j];
+                    }
+                    cmor_flip_hybrid(var_id, i, "ap", "b", "ap_bnds", "b_bnds");
+/* -------------------------------------------------------------------- */
+/*      sigma                                                           */
+/* -------------------------------------------------------------------- */
+                } else if (ho == 3) {
+                    k = -1;
+                    for (j = 0; j <= cmor_nvars; j++)
+                        if ((strcmp(cmor_vars[j].id, "sigma") == 0)
+                                && (cmor_vars[j].zaxis
+                                        == cmor_vars[var_id].axes_ids[i])) {
+                            k = j;
+                            break;
+                        }
+                    if (k == -1) {
+                        snprintf(msg, CMOR_MAX_STRING,
+                                "could not find 'sigma' coeff for axis:\n! "
+                                        "%s, for variable %s (table: %s)",
+                                cmor_axes[cmor_vars[var_id].axes_ids[i]].id,
+                                cmor_vars[var_id].id,
+                                cmor_tables[nVarRefTblID].szTable_id);
+                        cmor_handle_error(msg, CMOR_CRITICAL);
+                    }
+                    for (j = 0;
+                            j < cmor_axes[cmor_vars[var_id].axes_ids[i]].length;
+                            j++)
+                        cmor_axes[cmor_vars[var_id].axes_ids[i]].values[j] =
+                                cmor_vars[k].values[j];
+/* -------------------------------------------------------------------- */
+/*      deals with bounds                                               */
+/* -------------------------------------------------------------------- */
+
+                    if (cmor_axes[cmor_vars[var_id].axes_ids[i]].bounds != NULL) {
+                        k = -1;
+                        for (j = 0; j <= cmor_nvars; j++)
+                            if ((strcmp(cmor_vars[j].id, "sigma_bnds") == 0)
+                                    && (cmor_vars[j].zaxis
+                                            == cmor_vars[var_id].axes_ids[i])) {
+                                k = j;
+                                break;
+                            }
+                        if (k == -1) {
+                            snprintf(msg, CMOR_MAX_STRING,
+                                    "could not find 'sigma_bnds' coeff\n! "
+                                            "for axis: %s, for variable %s (table: %s)",
+                                    cmor_axes[cmor_vars[var_id].axes_ids[i]].id,
+                                    cmor_vars[var_id].id,
+                                    cmor_tables[nVarRefTblID].szTable_id);
+                            cmor_handle_error(msg, CMOR_CRITICAL);
+                        }
+                        for (j = 0;
+                                j
+                                        < cmor_axes[cmor_vars[var_id].axes_ids[i]].length
+                                                * 2; j++)
+                            cmor_axes[cmor_vars[var_id].axes_ids[i]].bounds[j] =
+                                    cmor_vars[k].values[j];
+                    }
+                }
+                cmor_flip_hybrid(var_id, i, "sigma", NULL, "sigma_bnds", NULL);
+            }
+        }
+        if (cmor_axes[cmor_vars[var_id].axes_ids[i]].cvalues == NULL) {
+            if (cmor_axes[cmor_vars[var_id].axes_ids[i]].store_in_netcdf == 1) {
+                ierr = nc_put_var_double(ncid, nc_vars[i],
+                        cmor_axes[cmor_vars[var_id].axes_ids[i]].values);
+                if (ierr != NC_NOERR) {
+                    snprintf(msg, CMOR_MAX_STRING,
+                            "NetCDF Error (%i: %s) writing axis '%s'\n! "
+                                    "values for variable %s (table: %s)", ierr,
+                            nc_strerror(ierr),
+                            cmor_axes[cmor_vars[var_id].axes_ids[i]].id,
+                            cmor_vars[var_id].id,
+                            cmor_tables[nVarRefTblID].szTable_id);
+                    cmor_handle_error(msg, CMOR_CRITICAL);
+                }
+                if (ncid != ncafid) {
+                    ierr = nc_put_var_double(ncafid, nc_vars_af[i],
+                            cmor_axes[cmor_vars[var_id].axes_ids[i]].values);
+                    if (ierr != NC_NOERR) {
+                        snprintf(msg, CMOR_MAX_STRING,
+                                "NetCDF Error (%i: %s) writing axis '%s'\n! "
+                                        "values to metafile, for variable %s "
+                                        "(table: %s)", ierr, nc_strerror(ierr),
+                                cmor_axes[cmor_vars[var_id].axes_ids[i]].id,
+                                cmor_vars[var_id].id,
+                                cmor_tables[nVarRefTblID].szTable_id);
+                        cmor_handle_error(msg, CMOR_CRITICAL);
+                    }
+                }
+            }
+        } else {
+            for (j = 0; j < cmor_axes[cmor_vars[var_id].axes_ids[i]].length;
+                    j++) {
+                starts[0] = j;
+                starts[1] = 0;
+                counts[0] = 1;
+                counts[1] = strlen(
+                        cmor_axes[cmor_vars[var_id].axes_ids[i]].cvalues[j]);
+                ierr = nc_put_vara_text(ncid, nc_vars[i], starts, counts,
+                        cmor_axes[cmor_vars[var_id].axes_ids[i]].cvalues[j]);
+                if (ierr != NC_NOERR) {
+                    snprintf(msg, CMOR_MAX_STRING,
+                            "NetCDF Error (%i: %s) writing axis '%s'\n! "
+                                    "value number %d (%s), for variable %s "
+                                    "(table: %s)", ierr, nc_strerror(ierr),
+                            cmor_axes[cmor_vars[var_id].axes_ids[i]].id, j,
+                            cmor_axes[cmor_vars[var_id].axes_ids[i]].cvalues[j],
+                            cmor_vars[var_id].id,
+                            cmor_tables[nVarRefTblID].szTable_id);
+                    cmor_handle_error(msg, CMOR_CRITICAL);
+                }
+                if (ncid != ncafid) {
+                    ierr =
+                            nc_put_vara_text(ncafid, nc_vars_af[i], starts,
+                                    counts,
+                                    cmor_axes[cmor_vars[var_id].axes_ids[i]].cvalues[j]);
+                    if (ierr != NC_NOERR) {
+                        snprintf(msg, CMOR_MAX_STRING,
+                                "NetCDF Error (%i: %s) writing axis '%s'\n! "
+                                        "values to metafile, for variable %s\n! "
+                                        "(table: %s)", ierr, nc_strerror(ierr),
+                                cmor_axes[cmor_vars[var_id].axes_ids[i]].id,
+                                cmor_vars[var_id].id,
+                                cmor_tables[nVarRefTblID].szTable_id);
+                        cmor_handle_error(msg, CMOR_CRITICAL);
+                    }
+                }
+            }
+        }
+/* -------------------------------------------------------------------- */
+/*      ok do we have bounds on this axis?                              */
+/* -------------------------------------------------------------------- */
+        if (cmor_axes[cmor_vars[var_id].axes_ids[i]].bounds != NULL) {
+            ierr = nc_put_var_double(ncafid, nc_bnds_vars[i],
+                    cmor_axes[cmor_vars[var_id].axes_ids[i]].bounds);
+            if (ierr != NC_NOERR) {
+                snprintf(msg, CMOR_MAX_STRING,
+                        "NC error (%i: %s) on variable %s writing\n! "
+                                "bounds for dim %i (%s), for variable %s\n! "
+                                "(table: %s)", ierr, nc_strerror(ierr),
+                        cmor_vars[var_id].id, i,
+                        cmor_axes[cmor_vars[var_id].axes_ids[i]].id,
+                        cmor_vars[var_id].id,
+                        cmor_tables[nVarRefTblID].szTable_id);
+                cmor_handle_error(msg, CMOR_CRITICAL);
+            }
+        }
+    }
+
+/* -------------------------------------------------------------------- */
+/*      ok now need to write grid variables                             */
+/* -------------------------------------------------------------------- */
+    if (cmor_vars[var_id].grid_id > -1) {
+        if (cmor_grids[cmor_vars[var_id].grid_id].istimevarying == 0) {
+            for (i = 0; i < 4; i++) {
+                j =
+                        cmor_grids[cmor_vars[var_id].grid_id].associated_variables[i];
+                if (j != -1) { /* we need to write this variable */
+                    cmor_vars[j].nc_var_id = nc_associated_vars[i];
+                    switch (i) {
+                    case (0):
+                        cmor_write_var_to_file(ncafid, &cmor_vars[j],
+                                cmor_grids[cmor_vars[var_id].grid_id].lats, 'd',
+                                0, NULL, NULL);
+                        break;
+                    case (1):
+                        cmor_write_var_to_file(ncafid, &cmor_vars[j],
+                                cmor_grids[cmor_vars[var_id].grid_id].lons, 'd',
+                                0, NULL, NULL);
+                        break;
+                    case (2):
+                        cmor_write_var_to_file(ncafid, &cmor_vars[j],
+                                cmor_grids[cmor_vars[var_id].grid_id].blats,
+                                'd', 0, NULL, NULL);
+                        break;
+                    case (3):
+                        cmor_write_var_to_file(ncafid, &cmor_vars[j],
+                                cmor_grids[cmor_vars[var_id].grid_id].blons,
+                                'd', 0, NULL, NULL);
+                        break;
+                    default:
+                        break;
+                    }
+                }
+            }
+        }
+    }
+
+/* -------------------------------------------------------------------- */
+/*      ok now write the zfactor values if necessary                    */
+/* -------------------------------------------------------------------- */
+
+    for (i = 0; i < nzfactors; i++) {
+/* -------------------------------------------------------------------- */
+/*      ok this one has value defined we need to store it               */
+/* -------------------------------------------------------------------- */
+        if (cmor_vars[zfactors[i]].values != NULL) {
+            cmor_vars[zfactors[i]].nc_var_id = nc_zfactors[i];
+            cmor_write_var_to_file(ncafid, &cmor_vars[zfactors[i]],
+                    cmor_vars[zfactors[i]].values, 'd', 0, NULL, NULL);
+        }
+    }
+/* -------------------------------------------------------------------- */
+/*      Write singleton dimension variables                             */
+/* -------------------------------------------------------------------- */
+    for (i = 0; i < CMOR_MAX_DIMENSIONS; i++) {
+        int nRefAxTableID;
+        int nRefAxisID;
+
+        nRefAxTableID = cmor_axes[j].ref_table_id;
+        nRefAxisID = cmor_axes[j].ref_axis_id;
+
+        j = cmor_vars[var_id].singleton_ids[i];
+        if (j != -1) {
+            if (cmor_tables[nRefAxTableID].axes[nRefAxisID].type == 'c') {
+                ierr = nc_put_var_text(ncid, nc_singletons[i],
+                        cmor_tables[nRefAxTableID].axes[nRefAxisID].cvalue);
+            } else {
+                ierr = nc_put_var_double(ncid, nc_singletons[i],
+                        cmor_axes[j].values);
+            }
+            if (ierr != NC_NOERR) {
+                snprintf(msg, CMOR_MAX_STRING,
+                        "NetCDF Error (%i: %s) writing scalar variable\n! "
+                                "%s for variable %s (table: %s), value: %lf",
+                        ierr, nc_strerror(ierr), cmor_axes[j].id,
+                        cmor_vars[var_id].id,
+                        cmor_tables[nVarRefTblID].szTable_id,
+                        cmor_axes[j].values[0]);
+                cmor_handle_error(msg, CMOR_CRITICAL);
+            }
+/* -------------------------------------------------------------------- */
+/*      now see if we need bounds                                       */
+/* -------------------------------------------------------------------- */
+            if (cmor_axes[j].bounds != NULL) {
+                ierr = nc_put_var_double(ncid, nc_singletons_bnds[i],
+                        cmor_axes[j].bounds);
+                if (ierr != NC_NOERR) {
+                    snprintf(msg, CMOR_MAX_STRING,
+                            "NetCDF Error (%i: %s) writing scalar bounds\n! "
+                                    "variable %s for variable %s (table: %s),\n! "
+                                    "values: %lf, %lf", ierr, nc_strerror(ierr),
+                            cmor_axes[j].id, cmor_vars[var_id].id,
+                            cmor_tables[nVarRefTblID].szTable_id,
+                            cmor_axes[j].bounds[0], cmor_axes[j].bounds[1]);
+                    cmor_handle_error(msg, CMOR_CRITICAL);
+                }
+            }
+        }
+    }
+    cmor_current_dataset.associate_file = ncafid;
+    cmor_pop_traceback();
+}
+/************************************************************************/
+/*                    cmor_CreateFromTemplate()                         */
+/************************************************************************/
+int cmor_CreateFromTemplate(int var_id, char *template,
+                            char *szJoin, char *separator ){
+    char *szToken;
+    char *szFirstItem;
+    char tmp[CMOR_MAX_STRING];
+    char path_template[CMOR_MAX_STRING];
+    cmor_table_t *pTable;
+    cmor_var_t *pVariable;
+    int rc;
+
+    pTable = &cmor_tables[cmor_vars[var_id].ref_table_id];
+    pVariable = &cmor_vars[var_id];
+
+    cmor_add_traceback( "cmor_CreateFromTemplate" );
+    cmor_is_setup();
+
+    strcpy(path_template, template);
+/* -------------------------------------------------------------------- */
+/*    Get rid of <> characters from template and add "information"      */
+/*    to path                                                           */
+/* -------------------------------------------------------------------- */
+    szToken = strtok(path_template, GLOBAL_SEPARATORS);
+    int optional = 0;
+    while(szToken) {
+
+/* -------------------------------------------------------------------- */
+/*      Is this an optional token.                                      */
+/* -------------------------------------------------------------------- */
+        if(strncmp(szToken, GLOBAL_OPENOPTIONAL, 1) == 0 ) {
+            optional = 1;
+
+        } else if(strncmp(szToken, GLOBAL_CLOSEOPTIONAL, 1) == 0 ) {
+            optional = 0;
+/* -------------------------------------------------------------------- */
+/*      This token must be a global attribute, a table header attribute */
+/*      or an internal attribute.  Otherwise we just skip it and the    */
+/*      user get a warning.                                             */
+/* -------------------------------------------------------------------- */
+        } else if( cmor_has_cur_dataset_attribute( szToken ) == 0 ) {
+            cmor_get_cur_dataset_attribute( szToken, tmp );
+            szFirstItem = strstr(tmp, " ");
+            if( szFirstItem != NULL ) {
+/* -------------------------------------------------------------------- */
+/*  Copy only the first characters before " " for multiple words token  */
+/* -------------------------------------------------------------------- */
+                strncat(szJoin, tmp, szFirstItem - tmp);
+            } else {
+                strncat(szJoin, tmp, CMOR_MAX_STRING);
+            }
+            strcat(szJoin, separator);
+
+        } else if (cmor_get_table_attr(szToken, pTable, tmp ) == 0 ){
+            strncat(szJoin, tmp, CMOR_MAX_STRING);
+            strcat(szJoin, separator);
+
+        } else if( strcmp(szToken, OUTPUT_TEMPLATE_RIPF) == 0) {
+            rc = cmor_addRIPF(szJoin);
+            if(!rc) {
+                return(rc);
+            }
+            strcat(szJoin, separator);
+
+        } else if(strcmp(szToken, GLOBAL_ATT_VARIABLE_ID) == 0) {
+            strncat(szJoin, pVariable->id, CMOR_MAX_STRING);
+            strcat(szJoin, separator);
+        // check if attribute start with '_"
+        } else {
+            char szInternalAtt[CMOR_MAX_STRING];
+            strcpy(szInternalAtt, GLOBAL_INTERNAL);
+            strncat(szInternalAtt, szToken, strlen(szToken));
+            if( cmor_has_cur_dataset_attribute( szInternalAtt ) == 0 ) {
+                cmor_get_cur_dataset_attribute( szInternalAtt, tmp );
+                if( !optional) {
+                    strncat(szJoin,tmp,CMOR_MAX_STRING);
+                    strcat(szJoin, separator );
+                }
+                else {
+
+/* -------------------------------------------------------------------- */
+/*      Skip "no-driver for filename if optional is set to 1            */
+/* -------------------------------------------------------------------- */
+                    if(strcmp(tmp, GLOBAL_ATT_VAL_NODRIVER)!=0) {
+                        strncat(szJoin,tmp,CMOR_MAX_STRING);
+                        strcat(szJoin, separator );
+                    }
+
+                }
+/* -------------------------------------------------------------------- */
+/*      Just Copy the token without a separator                         */
+/* -------------------------------------------------------------------- */
+            } else {
+                strncat(szJoin,szToken,CMOR_MAX_STRING);
+            }
+        }
+
+        szToken = strtok(NULL, "><");
+    }
+/* -------------------------------------------------------------------- */
+/*     If the last character is the sepator delete it.                  */
+/* -------------------------------------------------------------------- */
+    if( strcmp( &szJoin[ strlen( szJoin ) - 1 ], separator ) == 0 ) {
+        szJoin[ strlen( szJoin ) - 1 ] = '\0';
+    }
+    cmor_pop_traceback(  );
+    return (0);
+}
+/************************************************************************/
+/*                          cmor_addVersion()                           */
+/************************************************************************/
+int cmor_addVersion(){
+    time_t t;
+    struct tm* tm;
+    char szVersion[CMOR_MAX_STRING];;
+    char szDate[CMOR_MAX_STRING];
+
+    cmor_add_traceback( "cmor_addVersion" );
+    cmor_is_setup();
+
+    time(&t);
+    tm = localtime(&t);
+    strcpy(szVersion,"v");
+    strftime(szDate, CMOR_MAX_STRING, "%Y%m%d", tm);
+    strcat(szVersion, szDate);
+
+    cmor_set_cur_dataset_attribute_internal(GLOBAL_ATT_VERSION, szVersion, 1);
+    cmor_pop_traceback();
+    return(0);
+}
+/************************************************************************/
+/*                          cmor_addRIPF()                              */
+/************************************************************************/
+int cmor_addRIPF(char *variant) {
+    char tmp[CMOR_MAX_STRING];
+    int realization_index;
+    int initialization_index;
+    int physics_index;
+    int forcing_index;
+    int reti;
+    regex_t regex;
+
+    char msg[CMOR_MAX_STRING];
+
+    cmor_add_traceback( "cmor_addRipf" );
+    cmor_is_setup();
+    reti = regcomp(&regex, "^[[:digit:]]\\{1,\\}$", 0);
+
+/* -------------------------------------------------------------------- */
+/*      realization                                                     */
+/* -------------------------------------------------------------------- */
+    if (cmor_has_cur_dataset_attribute(GLOBAL_ATT_REALIZATION) == 0) {
+        cmor_get_cur_dataset_attribute(GLOBAL_ATT_REALIZATION, tmp);
+        if(strlen(tmp) > 4) {
+            snprintf( msg, CMOR_MAX_STRING,
+                    "Your realization_index \"%s\" is invalid. \n! "
+                    "It cannot contains more than 4 digits. \n! ",
+                    tmp );
+            cmor_handle_error( msg, CMOR_CRITICAL );
+            cmor_pop_traceback(  );
+            return(-1);
+
+        }
+        reti = regexec(&regex, tmp , 0, NULL, 0);
+        if(reti) {
+            snprintf( msg, CMOR_MAX_STRING,
+                    "Your realization_index \"%s\" is invalid. \n! "
+                    "It must contain only characters between 0 and 9 \n!",
+                    tmp );
+            cmor_handle_error( msg, CMOR_CRITICAL );
+            cmor_pop_traceback(  );
+            return(-1);
+        }
+
+        sscanf(tmp, "%d", &realization_index);
+        snprintf(tmp, CMOR_MAX_STRING, "r%d", realization_index);
+        strncat(variant, tmp, CMOR_MAX_STRING - strlen(variant));
+    }
+/* -------------------------------------------------------------------- */
+/*      initialization id (re== 0quired)                                    */
+/* -------------------------------------------------------------------- */
+    if (cmor_has_cur_dataset_attribute(GLOBAL_ATT_INITIA_IDX) == 0) {
+        cmor_get_cur_dataset_attribute(GLOBAL_ATT_INITIA_IDX, tmp);
+        if(strlen(tmp) > 4) {
+            snprintf( msg, CMOR_MAX_STRING,
+                    "Your initialization_index \"%s\" is invalid. \n! "
+                    "It cannot contains more than 4 digits. \n! ",
+                    tmp );
+            cmor_handle_error( msg, CMOR_CRITICAL );
+            cmor_pop_traceback(  );
+            return(-1);
+
+        }
+        reti = regexec(&regex, tmp , 0, NULL, 0);
+        if(reti) {
+            snprintf( msg, CMOR_MAX_STRING,
+                    "Your initialization_index \"%s\" is invalid. \n! "
+                    "It must contain only characters between 0 and 9 \n!",
+                    tmp );
+            cmor_handle_error( msg, CMOR_CRITICAL );
+            cmor_pop_traceback(  );
+            return(-1);
+        }
+        sscanf(tmp, "%d", &initialization_index);
+        snprintf(tmp, CMOR_MAX_STRING, "i%d", initialization_index);
+        strncat(variant, tmp, CMOR_MAX_STRING - strlen(variant));
+    }
+
+/* -------------------------------------------------------------------- */
+/*      physics id (required)                                           */
+/* -------------------------------------------------------------------- */
+    if (cmor_has_cur_dataset_attribute(GLOBAL_ATT_PHYSICS_IDX) == 0) {
+        cmor_get_cur_dataset_attribute(GLOBAL_ATT_PHYSICS_IDX, tmp);
+        if(strlen(tmp) > 4) {
+            snprintf( msg, CMOR_MAX_STRING,
+                    "Your physics_index \"%s\" is invalid. \n! "
+                    "It cannot contains more than 4 digits. \n! ",
+                    tmp );
+            cmor_handle_error( msg, CMOR_CRITICAL );
+            cmor_pop_traceback(  );
+            return(-1);
+
+        }
+        reti = regexec(&regex, tmp , 0, NULL, 0);
+        if(reti) {
+            snprintf( msg, CMOR_MAX_STRING,
+                    "Your physics_index \"%s\" is invalid. \n! "
+                    "It must contain only characters between 0 and 9 \n!",
+                    tmp );
+            cmor_handle_error( msg, CMOR_CRITICAL );
+            cmor_pop_traceback(  );
+            return(-1);
+        }
+        sscanf(tmp, "%d", &physics_index);
+        snprintf(tmp, CMOR_MAX_STRING, "p%d", physics_index);
+        strncat(variant, tmp, CMOR_MAX_STRING - strlen(variant));
+    }
+/* -------------------------------------------------------------------- */
+/*      forcing id (required)                                           */
+/* -------------------------------------------------------------------- */
+    if (cmor_has_cur_dataset_attribute(GLOBAL_ATT_FORCING_IDX) == 0) {
+        cmor_get_cur_dataset_attribute(GLOBAL_ATT_FORCING_IDX, tmp);
+        if(strlen(tmp) > 4) {
+            snprintf( msg, CMOR_MAX_STRING,
+                    "Your forcing_index \"%s\" is invalid. \n! "
+                    "It cannot contains more than 4 digits. \n! ",
+                    tmp );
+            cmor_handle_error( msg, CMOR_CRITICAL );
+            cmor_pop_traceback(  );
+            return(-1);
+
+        }
+        reti = regexec(&regex, tmp , 0, NULL, 0);
+        if(reti) {
+            snprintf( msg, CMOR_MAX_STRING,
+                    "Your forcing_index \"%s\" is invalid. \n! "
+                    "It must contain only characters between 0 and 9 \n!",
+                    tmp );
+            cmor_handle_error( msg, CMOR_CRITICAL );
+            cmor_pop_traceback(  );
+            return(-1);
+        }
+        sscanf(tmp, "%d", &forcing_index);
+
+        snprintf(tmp, CMOR_MAX_STRING, "f%d", forcing_index);
+        strncat(variant, tmp, CMOR_MAX_STRING - strlen(variant));
+    }
+    cmor_set_cur_dataset_attribute_internal(GLOBAL_ATT_VARIANT_LABEL, variant, 1);
+    regfree(&regex);
+    cmor_pop_traceback();
+    return(0);
+
+}
+
+/************************************************************************/
+/*                        cmor_close_variable()                         */
+/************************************************************************/
+int cmor_close_variable( int var_id, char *file_name, int *preserve ) {
+    int ierr;
+    extern int cmor_nvars;
+    char outname[CMOR_MAX_STRING];
+    char msg[CMOR_MAX_STRING];
+    char msg2[CMOR_MAX_STRING];
+    char ctmp[CMOR_MAX_STRING];
+    char ctmp2[CMOR_MAX_STRING];
+    cdCalenType icalo;
+    cdCompTime comptime;
+    int i, j, n;
+    double interval;
+    struct stat buf;
+    off_t sz;
+    long maxsz = ( long ) pow( 2, 32 ) - 1;
+
+    cmor_add_traceback( "cmor_close_variable" );
+    cmor_is_setup(  );
+
+    cleanup_varid = var_id;
+/* -------------------------------------------------------------------- */
+/*  initialized contains ncic, so we close file only once.              */
+/* -------------------------------------------------------------------- */
+    if( cmor_vars[var_id].initialized != -1 ) {
+	ierr = nc_close( cmor_vars[var_id].initialized );
+
+	if( ierr != NC_NOERR ) {
+	    snprintf( msg, CMOR_MAX_STRING,
+		      "NetCDF Error (%i: %s) closing variable %s (table: %s)\n! ",
+		      ierr, nc_strerror( ierr ), cmor_vars[var_id].id,
+		      cmor_tables[cmor_vars[var_id].
+				  ref_table_id].szTable_id );
+	    cmor_handle_error( msg, CMOR_CRITICAL );
 	}
-	else if (cmor_axes[cmor_vars[var_id].axes_ids[i]].hybrid_in!=0) {
-	  ho = cmor_axes[cmor_vars[var_id].axes_ids[i]].hybrid_in;
+
+/* -------------------------------------------------------------------- */
+/*      Ok we need to make the associated variables                     */
+/*      have been written in the case of a time varying grid            */
+/* -------------------------------------------------------------------- */
+	if( ( cmor_vars[var_id].grid_id > -1 )
+	    && ( cmor_grids[cmor_vars[var_id].grid_id].istimevarying ==
+		 1 ) ) {
+	    for( i = 0; i < 4; i++ ) {
+		if( cmor_grids[cmor_vars[var_id].grid_id].associated_variables[i] != -1 ) {
+/* -------------------------------------------------------------------- */
+/*      ok this associated coord should be stored                       */
+/* -------------------------------------------------------------------- */
+		    if( cmor_vars[var_id].ntimes_written !=
+			cmor_vars[var_id].ntimes_written_coords[i] ) {
+/* -------------------------------------------------------------------- */
+/*      ok we either wrote more or less data but                        */
+/*      in any case not the right amount!                               */
+/* -------------------------------------------------------------------- */
+
+			if( cmor_vars[var_id].ntimes_written == 0 ) {
+			    for( j = 0; j < cmor_vars[var_id].ndims; j++ ) {
+				if( cmor_axes
+				    [cmor_vars[var_id].axes_ids[j]].axis ==
+				    'T' ) {
+				    sprintf( ctmp2, "%i",
+					     cmor_axes[cmor_vars
+						       [var_id].axes_ids
+						       [j]].length );
+				    break;
+				}
+			    }
+			} else {
+			    sprintf( ctmp2, "%i",
+				     cmor_vars[var_id].ntimes_written );
+			}
+			if( cmor_vars[var_id].ntimes_written_coords[i] == -1 ) {
+			    sprintf( ctmp, "no" );
+			} else {
+			    sprintf( ctmp, "%i",
+				     cmor_vars
+				     [var_id].ntimes_written_coords[i] );
+			}
+			snprintf( msg, CMOR_MAX_STRING,
+				  "while closing variable %i (%s, table %s)\n! "
+				  "we noticed it has a time varying grid, \n! "
+			          "you wrote %s time steps for the variable,\n! "
+			          "but its associated variable %i (%s) has\n! "
+			          "%s times written",
+				  cmor_vars[var_id].self,
+				  cmor_vars[var_id].id,
+				  cmor_tables[cmor_vars[var_id].ref_table_id].
+				  szTable_id, ctmp2,
+				  cmor_vars[cmor_grids
+					    [cmor_vars[var_id].
+					     grid_id].associated_variables
+					    [i]].self,
+				  cmor_vars[cmor_grids
+					    [cmor_vars[var_id].
+					     grid_id].associated_variables
+					    [i]].id, ctmp );
+			cmor_handle_error( msg, CMOR_CRITICAL );
+		    }
+		}
+	    }
 	}
-	/*       printf("ok the hybrid out on this axis %i (%s) is: %i\n",cmor_vars[var_id].axes_ids[i],cmor_axes[cmor_vars[var_id].axes_ids[i]].id,ho); */
-	if (ho!=0) {
-	  /* yep need to change them */
-	  if (ho==1) { /* std hyb sigma*/
-	    /* look for a coeff */
-	    k=-1;
-	    for(j=0;j<=cmor_nvars;j++) if ((strcmp(cmor_vars[j].id,"a")==0) && (cmor_vars[j].zaxis==cmor_vars[var_id].axes_ids[i])) { k=j; break;}
-	    if (k==-1) {
-	      snprintf(msg,CMOR_MAX_STRING,"could not find 'a' coeff for axis: %s, for variable %s (table: %s)",cmor_axes[cmor_vars[var_id].axes_ids[i]].id,cmor_vars[var_id].id,cmor_tables[cmor_vars[var_id].ref_table_id].table_id);
-	      cmor_handle_error(msg,CMOR_CRITICAL);
+	for( i = 0; i < 10; i++ ) {
+	    if( cmor_vars[var_id].associated_ids[i] != -1 ) {
+		if( cmor_vars[var_id].ntimes_written !=
+		    cmor_vars[var_id].ntimes_written_associated[i] ) {
+		    sprintf( ctmp2, "%i",
+			     cmor_vars[var_id].ntimes_written );
+		    sprintf( ctmp, "%i",
+			     cmor_vars[var_id].ntimes_written_associated
+			     [i] );
+		    snprintf( msg, CMOR_MAX_STRING,
+			      "while closing variable %i (%s, table %s) we\n! "
+		              "noticed it has a time varying associated\n! "
+		              "variable, you wrote %s time steps for the\n! "
+		              "variable, but its associated variable %i (%s)\n! "
+		              "has %s times written",
+			      cmor_vars[var_id].self, cmor_vars[var_id].id,
+			      cmor_tables[cmor_vars[var_id].
+					  ref_table_id].szTable_id, ctmp2,
+			      cmor_vars[cmor_vars[var_id].associated_ids
+					[i]].self,
+			      cmor_vars[cmor_vars[var_id].associated_ids
+					[i]].id, ctmp );
+		    cmor_handle_error( msg, CMOR_CRITICAL );
+		}
 	    }
-	    for (j=0;j<cmor_axes[cmor_vars[var_id].axes_ids[i]].length;j++) cmor_axes[cmor_vars[var_id].axes_ids[i]].values[j]=cmor_vars[k].values[j];
-	    /* look for b coeff */
-	    k=-1;
-	    for(j=0;j<=cmor_nvars;j++) if ((strcmp(cmor_vars[j].id,"b")==0) && (cmor_vars[j].zaxis==cmor_vars[var_id].axes_ids[i])) { k=j; break;}
-	    if (k==-1) {
-	      snprintf(msg,CMOR_MAX_STRING,"could find 'b' coeff for axis: %s, for variable %s (table: %s)",cmor_axes[cmor_vars[var_id].axes_ids[i]].id,cmor_vars[var_id].id,cmor_tables[cmor_vars[var_id].ref_table_id].table_id);
-	      cmor_handle_error(msg,CMOR_CRITICAL);
+	}
+
+/* -------------------------------------------------------------------- */
+/*      ok at that point we need to construct the final name!           */
+/* -------------------------------------------------------------------- */
+	strncpytrim( outname, cmor_vars[var_id].base_path,
+		     CMOR_MAX_STRING );
+
+	if( cmor_tables
+	    [cmor_axes[cmor_vars[var_id].axes_ids[0]].
+	     ref_table_id].axes[cmor_axes[cmor_vars[var_id].axes_ids[0]].
+				ref_axis_id].axis == 'T' ) {
+	    cmor_get_axis_attribute( cmor_vars[var_id].axes_ids[0],
+				     "units", 'c', &msg );
+	    cmor_get_cur_dataset_attribute( "calendar", msg2 );
+
+	    if( cmor_calendar_c2i( msg2, &icalo ) != 0 ) {
+		snprintf( msg, CMOR_MAX_STRING,
+			  "Cannot convert times for calendar: %s,\n! "
+		          "closing variable %s (table: %s)",
+			  msg2, cmor_vars[var_id].id,
+			  cmor_tables[cmor_vars[var_id].
+				      ref_table_id].szTable_id );
+		cmor_handle_error( msg, CMOR_CRITICAL );
+		cmor_pop_traceback(  );
+		return( 1 );
 	    }
-	    for (j=0;j<cmor_axes[cmor_vars[var_id].axes_ids[i]].length;j++) cmor_axes[cmor_vars[var_id].axes_ids[i]].values[j]+=cmor_vars[k].values[j];
-	    
-	    /* do we have bounds to treat as well ? */
-	    if (cmor_axes[cmor_vars[var_id].axes_ids[i]].bounds!=NULL) {
-	      k=-1;
-	      for(j=0;j<=cmor_nvars;j++) if ((strcmp(cmor_vars[j].id,"a_bnds")==0) && (cmor_vars[j].zaxis==cmor_vars[var_id].axes_ids[i])) { k=j; break;}
-	      if (k==-1) {
-		snprintf(msg,CMOR_MAX_STRING,"could not find 'a_bnds' coeff for axis: %s, for variable %s (table: %s)",cmor_axes[cmor_vars[var_id].axes_ids[i]].id,cmor_vars[var_id].id,cmor_tables[cmor_vars[var_id].ref_table_id].table_id);
-		cmor_handle_error(msg,CMOR_CRITICAL);
-	      }
-	      for (j=0;j<cmor_axes[cmor_vars[var_id].axes_ids[i]].length*2;j++) cmor_axes[cmor_vars[var_id].axes_ids[i]].bounds[j]=cmor_vars[k].values[j];
-	      k=-1;
-	      for(j=0;j<=cmor_nvars;j++) if ((strcmp(cmor_vars[j].id,"b_bnds")==0) && (cmor_vars[j].zaxis==cmor_vars[var_id].axes_ids[i])) { k=j; break;}
-	      if (k==-1) {
-		snprintf(msg,CMOR_MAX_STRING,"could find 'b_bnds' coef for axis: %s, for variable %s (table: %s)",cmor_axes[cmor_vars[var_id].axes_ids[i]].id,cmor_vars[var_id].id,cmor_tables[cmor_vars[var_id].ref_table_id].table_id);
-		cmor_handle_error(msg,CMOR_CRITICAL);
-	      }
-	      for (j=0;j<cmor_axes[cmor_vars[var_id].axes_ids[i]].length*2;j++) cmor_axes[cmor_vars[var_id].axes_ids[i]].bounds[j]+=cmor_vars[k].values[j]; 
+/* -------------------------------------------------------------------- */
+/*      ok makes a comptime out of input                                */
+/* -------------------------------------------------------------------- */
+
+	    i = cmor_vars[var_id].axes_ids[0];
+	    j = cmor_axes[i].ref_table_id;
+	    i = cmor_axes[i].ref_axis_id;
+	    if( ( cmor_tables[j].axes[i].climatology == 1 )
+		&& ( cmor_vars[var_id].first_bound != 1.e20 ) ) {
+		cdRel2Comp( icalo, msg, cmor_vars[var_id].first_bound,
+			    &comptime );
+	    } else {
+		cdRel2Comp( icalo, msg, cmor_vars[var_id].first_time,
+			    &comptime );
 	    }
-	    cmor_flip_hybrid(var_id,i,"a","b","a_bnds","b_bnds");
-	  }
-	  else if (ho==2) {/* alternate hyb sigma*/
-	    /* look for ap coeff */
-	    k=-1;
-	    for(j=0;j<=cmor_nvars;j++) if ((strcmp(cmor_vars[j].id,"ap")==0) && (cmor_vars[j].zaxis==cmor_vars[var_id].axes_ids[i])) { k=j; break;}
-	    if (k==-1) {
-	      snprintf(msg,CMOR_MAX_STRING,"could not find 'ap' coeef for axis: %s, for variable %s (table: %s)",cmor_axes[cmor_vars[var_id].axes_ids[i]].id,cmor_vars[var_id].id,cmor_tables[cmor_vars[var_id].ref_table_id].table_id);
-	      cmor_handle_error(msg,CMOR_CRITICAL);
+/* -------------------------------------------------------------------- */
+/*      need to figure out the approximate interval                     */
+/* -------------------------------------------------------------------- */
+	    int nVarAxisID;
+	    int nVarRefTable;
+	    int nVarRefAxisID;
+
+	    nVarAxisID = cmor_vars[var_id].axes_ids[0];
+	    nVarRefTable = cmor_axes[nVarAxisID].ref_table_id;
+	    nVarRefAxisID = cmor_axes[nVarAxisID].ref_axis_id;
+
+	    interval = cmor_convert_interval_to_seconds(
+	            cmor_tables[nVarRefTable].interval,
+	            cmor_tables[nVarRefTable].axes[nVarRefAxisID].units );
+
+/* -------------------------------------------------------------------- */
+/*      first time point                                                */
+/* -------------------------------------------------------------------- */
+
+	    strncat( outname, "_", CMOR_MAX_STRING - strlen( outname ) );
+	    snprintf( msg2, CMOR_MAX_STRING, "%.4ld", comptime.year );
+	    strncat( outname, msg2, CMOR_MAX_STRING - strlen( outname ) );
+/* -------------------------------------------------------------------- */
+/*      less than a year                                                */
+/* -------------------------------------------------------------------- */
+
+	    if( interval < 29.E6 ) {
+		snprintf( msg2, CMOR_MAX_STRING, "%.2i", comptime.month );
+		strncat( outname, msg2,
+			 CMOR_MAX_STRING - strlen( outname ) );
 	    }
-	    for (j=0;j<cmor_axes[cmor_vars[var_id].axes_ids[i]].length;j++) cmor_axes[cmor_vars[var_id].axes_ids[i]].values[j]=cmor_vars[k].values[j]/cmor_vars[l].values[0];
-	    /* look for b coeff */
-	    k=-1;
-	    for(j=0;j<=cmor_nvars;j++) if ((strcmp(cmor_vars[j].id,"b")==0) && (cmor_vars[j].zaxis==cmor_vars[var_id].axes_ids[i])) { k=j; break;}
-	    if (k==-1) {
-	      snprintf(msg,CMOR_MAX_STRING,"could find 'b' coef for axis: %s, for variable %s (table: %s)",cmor_axes[cmor_vars[var_id].axes_ids[i]].id,cmor_vars[var_id].id,cmor_tables[cmor_vars[var_id].ref_table_id].table_id);
-	      cmor_handle_error(msg,CMOR_CRITICAL);
+/* -------------------------------------------------------------------- */
+/*      less than a month                                               */
+/* -------------------------------------------------------------------- */
+	    if( interval < 2.E6 ) {
+		snprintf( msg2, CMOR_MAX_STRING, "%.2i", comptime.day );
+		strncat( outname, msg2,
+			 CMOR_MAX_STRING - strlen( outname ) );
 	    }
-	    for (j=0;j<cmor_axes[cmor_vars[var_id].axes_ids[i]].length;j++) cmor_axes[cmor_vars[var_id].axes_ids[i]].values[j]+=cmor_vars[k].values[j];
-	    
-	    /* deals with bounds */
-	    if (cmor_axes[cmor_vars[var_id].axes_ids[i]].bounds!=NULL) {
-	      k=-1;
-	      for(j=0;j<=cmor_nvars;j++) if ((strcmp(cmor_vars[j].id,"ap_bnds")==0) && (cmor_vars[j].zaxis==cmor_vars[var_id].axes_ids[i])) { k=j; break;}
-	      if (k==-1) {
-		snprintf(msg,CMOR_MAX_STRING,"could not find 'ap_bnds' coeff for axis: %s, for variable %s (table: %s)",cmor_axes[cmor_vars[var_id].axes_ids[i]].id,cmor_vars[var_id].id,cmor_tables[cmor_vars[var_id].ref_table_id].table_id);
-		cmor_handle_error(msg,CMOR_CRITICAL);
-	      }
-	      for (j=0;j<cmor_axes[cmor_vars[var_id].axes_ids[i]].length*2;j++) cmor_axes[cmor_vars[var_id].axes_ids[i]].bounds[j]=cmor_vars[k].values[j]/cmor_vars[l].values[0];
-	      k=-1;
-	      for(j=0;j<=cmor_nvars;j++) if ((strcmp(cmor_vars[j].id,"b_bnds")==0) && (cmor_vars[j].zaxis==cmor_vars[var_id].axes_ids[i])) { k=j; break;}
-	      if (k==-1) {
-		snprintf(msg,CMOR_MAX_STRING,"could find 'b_bnds' coef for axis: %s, for variable %s (table: %s)",cmor_axes[cmor_vars[var_id].axes_ids[i]].id,cmor_vars[var_id].id,cmor_tables[cmor_vars[var_id].ref_table_id].table_id);
-		cmor_handle_error(msg,CMOR_CRITICAL);
-	      }
-	      for (j=0;j<cmor_axes[cmor_vars[var_id].axes_ids[i]].length*2;j++) cmor_axes[cmor_vars[var_id].axes_ids[i]].bounds[j]+=cmor_vars[k].values[j]; 
+/* -------------------------------------------------------------------- */
+/*      less than a day                                                 */
+/* -------------------------------------------------------------------- */
+	    if( interval < 86000 ) {
+		snprintf( msg2, CMOR_MAX_STRING, "%.2i",
+			  ( int ) comptime.hour );
+		strncat( outname, msg2,
+			 CMOR_MAX_STRING - strlen( outname ) );
 	    }
-	    cmor_flip_hybrid(var_id,i,"ap","b","ap_bnds","b_bnds");
-	  }
-	  else if (ho==3) { /* sigma */
-	    k=-1;
-	    for(j=0;j<=cmor_nvars;j++) if ((strcmp(cmor_vars[j].id,"sigma")==0) && (cmor_vars[j].zaxis==cmor_vars[var_id].axes_ids[i])) { k=j; break;}
-	    if (k==-1) {
-	      snprintf(msg,CMOR_MAX_STRING,"could not find 'sigma' coeef for axis: %s, for variable %s (table: %s)",cmor_axes[cmor_vars[var_id].axes_ids[i]].id,cmor_vars[var_id].id,cmor_tables[cmor_vars[var_id].ref_table_id].table_id);
-	      cmor_handle_error(msg,CMOR_CRITICAL);
+/* -------------------------------------------------------------------- */
+/*      less than 6hr                                                   */
+/* -------------------------------------------------------------------- */
+	    if( interval < 21000 ) {
+/* -------------------------------------------------------------------- */
+/*      from now on add 1 more level of precision since that frequency  */
+/* -------------------------------------------------------------------- */
+
+		ierr = ( int ) (( comptime.hour -
+		       ( int ) ( comptime.hour )) * 60. );
+		snprintf( msg2, CMOR_MAX_STRING, "%.2i", ierr );
+		strncat( outname, msg2,
+			 CMOR_MAX_STRING - strlen( outname ) );
 	    }
-	    for (j=0;j<cmor_axes[cmor_vars[var_id].axes_ids[i]].length;j++) cmor_axes[cmor_vars[var_id].axes_ids[i]].values[j]=cmor_vars[k].values[j];
-	    /* deals with bounds */
-	    if (cmor_axes[cmor_vars[var_id].axes_ids[i]].bounds!=NULL) {
-	      k=-1;
-	      for(j=0;j<=cmor_nvars;j++) if ((strcmp(cmor_vars[j].id,"sigma_bnds")==0) && (cmor_vars[j].zaxis==cmor_vars[var_id].axes_ids[i])) { k=j; break;}
-	      if (k==-1) {
-		snprintf(msg,CMOR_MAX_STRING,"could not find 'sigma_bnds' coeff for axis: %s, for variable %s (table: %s)",cmor_axes[cmor_vars[var_id].axes_ids[i]].id,cmor_vars[var_id].id,cmor_tables[cmor_vars[var_id].ref_table_id].table_id);
-		cmor_handle_error(msg,CMOR_CRITICAL);
-	      }
-	      for (j=0;j<cmor_axes[cmor_vars[var_id].axes_ids[i]].length*2;j++) cmor_axes[cmor_vars[var_id].axes_ids[i]].bounds[j]=cmor_vars[k].values[j];
+	    if( interval < 3000 ) {	/* less than an hour */
+		snprintf( msg2, CMOR_MAX_STRING, "%.2i",
+			  ( int ) (( comptime.hour -
+			  ( int ) ( comptime.hour ) ) *
+				     3600. ) - ierr * 60 );
+		strncat( outname, msg2,
+			 CMOR_MAX_STRING - strlen( outname ) );
 	    }
-	  }	  
-	  cmor_flip_hybrid(var_id,i,"sigma",NULL,"sigma_bnds",NULL);
-	} 
-      }
-      if (cmor_axes[cmor_vars[var_id].axes_ids[i]].cvalues == NULL) {
-	if (cmor_axes[cmor_vars[var_id].axes_ids[i]].store_in_netcdf == 1) {
-	  ierr = nc_put_var_double(ncid,nc_vars[i],cmor_axes[cmor_vars[var_id].axes_ids[i]].values);
-	  if (ierr != NC_NOERR) {
-	    snprintf(msg,CMOR_MAX_STRING,"NetCDF Error (%i: %s) writing axis '%s' values for variable %s (table: %s)",ierr,nc_strerror(ierr),cmor_axes[cmor_vars[var_id].axes_ids[i]].id,cmor_vars[var_id].id,cmor_tables[cmor_vars[var_id].ref_table_id].table_id);
-	    cmor_handle_error(msg,CMOR_CRITICAL);
-	  }
-	  if (ncid!=ncafid) {
-	    ierr = nc_put_var_double(ncafid,nc_vars_af[i],cmor_axes[cmor_vars[var_id].axes_ids[i]].values);
-	    if (ierr != NC_NOERR) {
-	      snprintf(msg,CMOR_MAX_STRING,"NetCDF Error (%i: %s) writing axis '%s' values to metafile, for variable %s (table: %s)",ierr,nc_strerror(ierr),cmor_axes[cmor_vars[var_id].axes_ids[i]].id,cmor_vars[var_id].id,cmor_tables[cmor_vars[var_id].ref_table_id].table_id);
-	      cmor_handle_error(msg,CMOR_CRITICAL);
+
+/* -------------------------------------------------------------------- */
+/*      separator between first and last time                           */
+/* -------------------------------------------------------------------- */
+
+	    strncat( outname, "-", CMOR_MAX_STRING - strlen( outname ) );
+
+	    if( ( cmor_tables[j].axes[i].climatology == 1 )
+		&& ( cmor_vars[var_id].last_bound != 1.e20 ) ) {
+		cdRel2Comp( icalo, msg, cmor_vars[var_id].last_bound,
+			    &comptime );
+/* -------------------------------------------------------------------- */
+/*      ok apparently we don't like the new time format                 */
+/*      if it's ending at midnight exactly so I'm removing              */
+/*      one second...                                                   */
+/* -------------------------------------------------------------------- */
+
+		if( icalo == cdMixed ) {
+		    cdCompAddMixed( comptime, -1. / 3600., &comptime );
+		} else {
+		    cdCompAdd( comptime, -1. / 3600., icalo, &comptime );
+		}
+	    } else {
+		cdRel2Comp( icalo, msg, cmor_vars[var_id].last_time,
+			    &comptime );
 	    }
-	  }
-	}
-      }
-      else {
-	for (j=0;j<cmor_axes[cmor_vars[var_id].axes_ids[i]].length;j++) {
-	  starts[0]=j;
-	  starts[1]=0;
-	  counts[0]=1;
-	  counts[1]=strlen(cmor_axes[cmor_vars[var_id].axes_ids[i]].cvalues[j]);
-	  ierr = nc_put_vara_text(ncid,nc_vars[i],starts,counts,cmor_axes[cmor_vars[var_id].axes_ids[i]].cvalues[j]);
-	  if (ierr != NC_NOERR) {
-	    snprintf(msg,CMOR_MAX_STRING,"NetCDF Error (%i: %s) writing axis '%s' value number %d (%s), for variable %s (table: %s)",ierr,nc_strerror(ierr),cmor_axes[cmor_vars[var_id].axes_ids[i]].id,j,cmor_axes[cmor_vars[var_id].axes_ids[i]].cvalues[j],cmor_vars[var_id].id,cmor_tables[cmor_vars[var_id].ref_table_id].table_id);
-	    cmor_handle_error(msg,CMOR_CRITICAL);
-	  }
-	  if (ncid!=ncafid) {
-	    ierr = nc_put_vara_text(ncafid,nc_vars_af[i],starts,counts,cmor_axes[cmor_vars[var_id].axes_ids[i]].cvalues[j]);
-	    if (ierr != NC_NOERR) {
-	      snprintf(msg,CMOR_MAX_STRING,"NetCDF Error (%i: %s) writing axis '%s' values to metafile, for variable %s (table: %s)",ierr,nc_strerror(ierr),cmor_axes[cmor_vars[var_id].axes_ids[i]].id,cmor_vars[var_id].id,cmor_tables[cmor_vars[var_id].ref_table_id].table_id);
-	      cmor_handle_error(msg,CMOR_CRITICAL);
+
+/* -------------------------------------------------------------------- */
+/*      last time point                                                 */
+/* -------------------------------------------------------------------- */
+	    snprintf( msg2, CMOR_MAX_STRING, "%.4ld", comptime.year );
+	    strncat( outname, msg2, CMOR_MAX_STRING - strlen( outname ) );
+
+/* -------------------------------------------------------------------- */
+/*      less than a year                                                */
+/* -------------------------------------------------------------------- */
+	    if( interval < 29.E6 ) {
+		snprintf( msg2, CMOR_MAX_STRING, "%.2i", comptime.month );
+		strncat( outname, msg2,
+			 CMOR_MAX_STRING - strlen( outname ) );
 	    }
-	  }
-	}
-      }
-      /* ok do we have bounds on this axis? */
-      if (cmor_axes[cmor_vars[var_id].axes_ids[i]].bounds!=NULL) {
-	ierr = nc_put_var_double(ncafid,nc_bnds_vars[i],cmor_axes[cmor_vars[var_id].axes_ids[i]].bounds);
-	if (ierr != NC_NOERR) {
-	  snprintf(msg,CMOR_MAX_STRING,"NC error (%i: %s) on variable %s writing bounds for dim %i (%s), for variable %s (table: %s)",ierr,nc_strerror(ierr),cmor_vars[var_id].id,i,cmor_axes[cmor_vars[var_id].axes_ids[i]].id,cmor_vars[var_id].id,cmor_tables[cmor_vars[var_id].ref_table_id].table_id);
-	  cmor_handle_error(msg,CMOR_CRITICAL);
-	}
-      }
-    }
-
-    /* ok now need to write grid variables */
-    if (cmor_vars[var_id].grid_id>-1) {
-      if (cmor_grids[cmor_vars[var_id].grid_id].istimevarying==0) {
-	for (i=0;i<4;i++) {
-	  j = cmor_grids[cmor_vars[var_id].grid_id].associated_variables[i];
-	  if (j!=-1) { /* we need to write this variable */
-	    cmor_vars[j].nc_var_id = nc_associated_vars[i];
-	    switch (i) {
-	    case (0) :
-	      cmor_write_var_to_file(ncafid,&cmor_vars[j],cmor_grids[cmor_vars[var_id].grid_id].lats,'d',0,NULL,NULL);
-	      break;
-	    case (1) :
-	      cmor_write_var_to_file(ncafid,&cmor_vars[j],cmor_grids[cmor_vars[var_id].grid_id].lons,'d',0,NULL,NULL);
-	      break;
-	    case (2) :
-	      cmor_write_var_to_file(ncafid,&cmor_vars[j],cmor_grids[cmor_vars[var_id].grid_id].blats,'d',0,NULL,NULL);
-	      break;
-	    case (3) :
-	      cmor_write_var_to_file(ncafid,&cmor_vars[j],cmor_grids[cmor_vars[var_id].grid_id].blons,'d',0,NULL,NULL);
-	      break;
-	      /* 	  case (4) : */
-	      /* 	    cmor_write_var_to_file(ncafid,&cmor_vars[j],cmor_grids[cmor_vars[var_id].grid_id].area,'d',0,NULL,NULL); */
-	      /* 	    break; */
-	    default :
-	      break;
+/* -------------------------------------------------------------------- */
+/*      less than a month                                               */
+/* -------------------------------------------------------------------- */
+
+	    if( interval < 2.E6 ) {
+		snprintf( msg2, CMOR_MAX_STRING, "%.2i", comptime.day );
+		strncat( outname, msg2,
+			 CMOR_MAX_STRING - strlen( outname ) );
+	    }
+/* -------------------------------------------------------------------- */
+/*      less than a day                                                 */
+/* -------------------------------------------------------------------- */
+
+	    if( interval < 86000 ) {
+		snprintf( msg2, CMOR_MAX_STRING, "%.2i",
+			  ( int ) comptime.hour );
+		strncat( outname, msg2,
+			 CMOR_MAX_STRING - strlen( outname ) );
+	    }
+/* -------------------------------------------------------------------- */
+/*      less than 6hr                                                   */
+/* -------------------------------------------------------------------- */
+
+	    if( interval < 21000 ) {
+/* -------------------------------------------------------------------- */
+/*      from now on add 1 more level of precision since that frequency  */
+/* -------------------------------------------------------------------- */
+
+		ierr =
+		    ( int ) ( ( comptime.hour -
+				( int ) ( comptime.hour ) ) * 60. );
+		snprintf( msg2, CMOR_MAX_STRING, "%.2i", ierr );
+		strncat( outname, msg2,
+			 CMOR_MAX_STRING - strlen( outname ) );
+	    }
+/* -------------------------------------------------------------------- */
+/*      less than an hour                                               */
+/* -------------------------------------------------------------------- */
+	    if( interval < 3000 ) {
+		snprintf( msg2, CMOR_MAX_STRING, "%.2i",
+			  ( int ) ( ( comptime.hour -
+				      ( int ) ( comptime.hour ) ) *
+				    3600. ) - ierr * 60 );
+		strncat( outname, msg2,
+			 CMOR_MAX_STRING - strlen( outname ) );
+	    }
+
+	    if( cmor_tables
+		[cmor_axes[cmor_vars[var_id].axes_ids[0]].
+		 ref_table_id].axes[cmor_axes[cmor_vars[var_id].
+					      axes_ids[0]].
+				    ref_axis_id].climatology == 1 ) {
+		strncat( outname, "-clim",
+			 CMOR_MAX_STRING - strlen( outname ) );
 	    }
-	  }
-	}
-      }
-    }
-
-    /* ok now write the zfactor values if necessary */
-    for(i=0;i<nzfactors;i++) {
-      if (cmor_vars[zfactors[i]].values != NULL) {/* ok this one has value defined we need to store it */
-	cmor_vars[zfactors[i]].nc_var_id = nc_zfactors[i];
-	cmor_write_var_to_file(ncafid,&cmor_vars[zfactors[i]],cmor_vars[zfactors[i]].values,'d',0,NULL,NULL);
-      }
-/*       if (cmor_vars[zfactors[i]].bounds != NULL) {/\* ok this one has value defined we need to store it *\/ */
-/* 	printf("writing bounds to nc file variable: %s, ncvar: %i\n",cmor_vars[zfactors[i]].id,nc_zfactors[i+1]); */
-/* 	cmor_vars[zfactors[i+1]].nc_var_id = nc_zfactors[i+1]; */
-/* 	cmor_write_var_to_file(ncid,&cmor_vars[zfactors[i+1]],&cmor_vars[zfactors[i]].bounds,0,NULL); */
-/* 	i++; */
-/*       } */
-    }
-    /* Write singleton dimension variables */
-    for(i=0;i<CMOR_MAX_DIMENSIONS;i++) {
-      j = cmor_vars[var_id].singleton_ids[i];
-      if (j!=-1) {
-	if (cmor_tables[cmor_axes[j].ref_table_id].axes[cmor_axes[j].ref_axis_id].type=='c'){
-	  ierr = nc_put_var_text(ncid,nc_singletons[i],cmor_tables[cmor_axes[j].ref_table_id].axes[cmor_axes[j].ref_axis_id].cvalue);
-	}
-	else {
-	  ierr = nc_put_var_double(ncid,nc_singletons[i],cmor_axes[j].values);
-	}
-	if (ierr != NC_NOERR) {
-	  snprintf(msg,CMOR_MAX_STRING,"NetCDF Error (%i: %s) writing scalar variable %s for variable %s (table: %s), value: %lf",ierr,nc_strerror(ierr),cmor_axes[j].id,cmor_vars[var_id].id,cmor_tables[cmor_vars[var_id].ref_table_id].table_id,cmor_axes[j].values[0]);
-	  cmor_handle_error(msg,CMOR_CRITICAL);
-	}
-	/* now see if we need bounds */
-	if (cmor_axes[j].bounds!=NULL) { /*yep */
-	  ierr = nc_put_var_double(ncid,nc_singletons_bnds[i],cmor_axes[j].bounds);
-	  if (ierr != NC_NOERR) {
-	    snprintf(msg,CMOR_MAX_STRING,"NetCDF Error (%i: %s) writing scalar bounds variable %s for variable %s (table: %s), values: %lf, %lf",ierr,nc_strerror(ierr),cmor_axes[j].id,cmor_vars[var_id].id,cmor_tables[cmor_vars[var_id].ref_table_id].table_id,cmor_axes[j].bounds[0],cmor_axes[j].bounds[1]);
-	    cmor_handle_error(msg,CMOR_CRITICAL);
-	  }
 	}
-      }
-    }
-    cmor_current_dataset.associate_file=ncafid;
-  }
-  else { 
-    /* Variable already been thru cmor_write, we just get the netcdf file id */
-    ncid=cmor_vars[varid].initialized;
 
-  /* generates a new unique id */
-    uuid_create(&myuuid);
-    uuid_make(myuuid,4);
-    myuuid_str = NULL;
-    fmt = UUID_FMT_STR;
-    uuid_export(myuuid,fmt,&myuuid_str,&uuidlen);
-    tracking_id_set = 0;
+	if( cmor_vars[var_id].suffix_has_date == 1 ) {
+/* -------------------------------------------------------------------- */
+/*      all right we need to pop out the date part....                  */
+/* -------------------------------------------------------------------- */
+
+	    n = strlen( cmor_vars[var_id].suffix );
+	    i = 0;
+	    while( cmor_vars[var_id].suffix[i] != '_' )
+		i++;
+	    i++;
+	    while( ( cmor_vars[var_id].suffix[i] != '_' ) && i < n )
+		i++;
+/* -------------------------------------------------------------------- */
+/*      ok now we have the length of dates                              */
+/*      at this point we are either at the                              */
+/*      _clim the actual _suffix or the end (==nosuffix)                */
+/*      checking if _clim needs to be added                             */
+/* -------------------------------------------------------------------- */
+	    if( cmor_tables
+		[cmor_axes[cmor_vars[var_id].axes_ids[i]].
+		 ref_table_id].axes[cmor_axes[cmor_vars[var_id].
+					      axes_ids[0]].
+				    ref_axis_id].climatology == 1 ) {
+		i += 5;
+	    }
+	    strcpy( msg, "" );
+	    for( j = i; j < n; j++ ) {
+		msg[j - i] = cmor_vars[var_id].suffix[i];
+		msg[j - i + 1] = '\0';
+	    }
+	} else {
+	    strncpy( msg, cmor_vars[var_id].suffix, CMOR_MAX_STRING );
+	}
 
-    if (cmor_filter_tracking_prefix(cmor_tables[cmor_vars[var_id].ref_table_id].project_id) == 1) {
-      // filter matched, now either include the prefix or complain
-      if (strlen(cmor_tables[cmor_vars[var_id].ref_table_id].tracking_prefix) > 0) {
-        strncpy(cmor_current_dataset.tracking_id, cmor_tables[cmor_vars[var_id].ref_table_id].tracking_prefix, CMOR_MAX_STRING);
-        strcat(cmor_current_dataset.tracking_id, "/");
-        strcat(cmor_current_dataset.tracking_id, (char *) myuuid_str);
-		/* now copy concatenated string over to myuuid_str, as this
-		   is the thing that will actually be written further below */
-		uuidlen = strlen(cmor_current_dataset.tracking_id);
-		free(myuuid_str);
-		myuuid_str = (char *)malloc(uuidlen*sizeof(char));
-		strcpy(myuuid_str, cmor_current_dataset.tracking_id);
-        tracking_id_set = 1;
-      }
-      else {
-          sprintf(msg,"Project requires tracking prefixes, but no tracking_prefix was specified for table %s",tmps[0],cmor_tables[cmor_vars[var_id].ref_table_id].table_id);
-          cmor_handle_error(msg,CMOR_WARNING);
-      }
-    }
-    if (!tracking_id_set) {
-      strncpy(cmor_current_dataset.tracking_id,(char *)myuuid_str,CMOR_MAX_STRING);
-    }
-    cmor_set_cur_dataset_attribute_internal("tracking_id",cmor_current_dataset.tracking_id,0);
-
-    ierr = nc_put_att_text(ncid, NC_GLOBAL, "tracking_id",(int)uuidlen,myuuid_str);
-    free(myuuid_str);
-    uuid_destroy(myuuid);
+	if( strlen( msg ) > 0 ) {
+	    strncat( outname, "_", CMOR_MAX_STRING - strlen( outname ) );
+	    strncat( outname, msg, CMOR_MAX_STRING - strlen( outname ) );
+	}
 
-    if (ierr != NC_NOERR) {snprintf(msg,CMOR_MAX_STRING,"NetCDF error (%i: %s) for variable %s (table: %s) writing global att: %s (%s)",ierr,nc_strerror(ierr),cmor_vars[var_id].id,cmor_tables[cmor_vars[var_id].ref_table_id].table_id,cmor_current_dataset.attributes_names[i],cmor_current_dataset.attributes_values[i]); cmor_handle_error(msg,CMOR_CRITICAL);}
-    cmor_vars[var_id].time_nc_id=cmor_vars[varid].time_nc_id; /* in case we are doing a zfactor var */
-    cmor_vars[var_id].time_bnds_nc_id=cmor_vars[varid].time_bnds_nc_id; /* in case we are doing a zfactor var */
-  }
-
-  /* here we add the number of time written for the associated variable */
-  if ((refvar!=NULL) && (cmor_vars[varid].grid_id>-1) && (cmor_grids[cmor_vars[varid].grid_id].istimevarying==1)) {
-    for (i=0;i<4;i++) {
-      if (cmor_grids[cmor_vars[varid].grid_id].associated_variables[i] == var_id) {
-	if (cmor_vars[varid].ntimes_written_coords[i]==-1) {
-	  cmor_vars[varid].ntimes_written_coords[i]=ntimes_passed;
+	strncat( outname, ".nc", CMOR_MAX_STRING - strlen( outname ) );
+
+
+/* -------------------------------------------------------------------- */
+/*      ok now we can actually move the file                            */
+/*      here we need to make sure we are not in preserve mode!          */
+/* -------------------------------------------------------------------- */
+	if( ( CMOR_NETCDF_MODE == CMOR_PRESERVE_4 )
+	    || ( CMOR_NETCDF_MODE == CMOR_PRESERVE_3 ) ) {
+	    FILE *fperr;
+
+/* -------------------------------------------------------------------- */
+/*      ok first let's check if the file does exists or not             */
+/* -------------------------------------------------------------------- */
+	    fperr = NULL;
+	    fperr = fopen( outname, "r" );
+	    if( fperr != NULL ) {
+		sprintf( msg, "%s.copy", outname );
+		if( rename( cmor_vars[var_id].current_path, msg ) == 0 ) {
+		    snprintf( msg, CMOR_MAX_STRING,
+			      "Output file ( %s ) already exists,\n! "
+		             "remove file or use CMOR_REPLACE or\n! "
+		             "CMOR_APPEND for CMOR_NETCDF_MODE value\n! "
+		             "in cmor_setup for convenience the file\n! "
+		             "you were trying to write has been saved\n! "
+		             "at: %s.copy",
+			      outname, outname );
+		} else {
+		    snprintf( msg, CMOR_MAX_STRING,
+			      "Output file ( %s ) already exists,\n! "
+		              "remove file or use CMOR_REPLACE or\n! "
+		              "CMOR_APPEND for CMOR_NETCDF_MODE value in\n! "
+		              "cmor_setup.",
+			      outname );
+		}
+		cmor_handle_error( msg, CMOR_CRITICAL );
+	    }
 	}
-	else {
-	  cmor_vars[varid].ntimes_written_coords[i]+=ntimes_passed;
+	ierr = rename( cmor_vars[var_id].current_path, outname );
+	if( ierr != 0 ) {
+	    snprintf( msg, CMOR_MAX_STRING,
+		      "could not rename temporary file: %s to final file\n"
+	              "name: %s",
+		      cmor_vars[var_id].current_path, outname );
+	    // cmor_handle_error( msg, CMOR_CRITICAL );
 	}
-      }
-    }
-  }
-  if (refvar!=NULL) {
-     /* if (cmor_vars[var_id].first_bound==1.e20) {
-          cmor_vars[var_id].first_bound = cmor_vars[*refvar].first_bound;
-          cmor_vars[var_id].last_bound = cmor_vars[*refvar].last_bound;
-          cmor_vars[var_id].last_time = cmor_vars[*refvar].last_time;
-
-          printf("We did reset the first and last bounds: %f, %f \n",cmor_vars[var_id].first_bound, cmor_vars[var_id].last_bound);
-      }
-      */
-    for(i=0;i<10;i++) {
-      if (cmor_vars[*refvar].associated_ids[i]==var_id) {
-	if (cmor_vars[*refvar].ntimes_written_associated[i] == 0) {
-	  cmor_vars[*refvar].ntimes_written_associated[i] = ntimes_passed;
+	if( file_name != NULL ) {
+	    strncpy( file_name, outname, CMOR_MAX_STRING );
 	}
-	else {
-	  cmor_vars[*refvar].ntimes_written_associated[i] += ntimes_passed;
+        strncpy( cmor_current_dataset.finalfilename, outname,
+                CMOR_MAX_STRING);
+
+/* -------------------------------------------------------------------- */
+/*      At this point we need to check the file's size                  */
+/*      and issue a warning if greater than 4Gb                         */
+/* -------------------------------------------------------------------- */
+	stat( outname, &buf );
+	sz = buf.st_size;
+	if( sz > maxsz ) {
+	    sprintf( msg,
+		     "Closing file: %s size is greater than 4Gb, while\n! "
+	             "this is acceptable \n! ",
+		     outname );
+	    cmor_handle_error( msg, CMOR_WARNING );
 	}
-      }
-    }
-  }
-  cmor_write_var_to_file(ncid,&cmor_vars[var_id],data,type,ntimes_passed,time_vals,time_bounds);
-  cmor_pop_traceback();
-  return 0;
-};
 
-
-
-int cmor_create_output_path(int var_id,char *outpath)
-{
-  /* reconstruct the suggested outpath structure */
-  /* returns 1 if it is a fixed filed 0 otherwise */
-  char tmp[CMOR_MAX_STRING],tmp2[CMOR_MAX_STRING];
-  int i,j;
-  double interval;
-  int createdirs;
-  int nurls = 4;
-  char urls[4][20] = { "http:", "https:", "HTTP:", "HTTPS:"};
-  int isfixed = 0;
-  extern int cmor_convert_char_to_hyphen(char c);
-
-  cmor_add_traceback("cmor_create_output_path");
-  /* user's base path */
-  strncpytrim(outpath,cmor_current_dataset.outpath,CMOR_MAX_STRING);
-  strncat(outpath,"/",CMOR_MAX_STRING-strlen(outpath));
-
-  /* decides if it is a URL or not, if it is no directory creation */
-  createdirs =1;
-  for (i=0;i<nurls;i++) {
-    if (strncmp(outpath,urls[i],strlen(urls[i]))==0) createdirs=0;
-  }
-  if (CMOR_CREATE_SUBDIRECTORIES == 0) createdirs=0;
-  /* activity */
-  strncpytrim(tmp,cmor_tables[cmor_vars[var_id].ref_table_id].project_id,CMOR_MAX_STRING);
-  /* make sure you replace spaces with "_" */
-  for(i=0;i<strlen(tmp);i++) {
-    if (tmp[i]==' ') tmp[i]='_';
-  }
-  strncattrim(outpath,tmp,CMOR_MAX_STRING-strlen(outpath));
-  strncat(outpath,"/",CMOR_MAX_STRING-strlen(outpath));
-  if (createdirs==1) {
-    if ((mkdir(outpath, (S_IRWXU | S_IRWXG | S_IRWXO )) == -1) && (errno != EEXIST)) {
-      sprintf(tmp,"creating outpath: %s, for variable %s (table: %s). Not enough permission?",outpath,cmor_vars[var_id].id,cmor_tables[cmor_vars[var_id].ref_table_id].table_id);
-      cmor_handle_error(tmp,CMOR_CRITICAL);
-    }
-  }
-  /* product */
-  strncpytrim(tmp,cmor_tables[cmor_vars[var_id].ref_table_id].product,CMOR_MAX_STRING);
-  /* make sure you replace spaces with "_" */
-  for(i=0;i<strlen(tmp);i++) {
-    if (tmp[i]==' ') tmp[i]='_';
-  }
-  strncattrim(outpath,tmp,CMOR_MAX_STRING-strlen(outpath));
-  strncat(outpath,"/",CMOR_MAX_STRING-strlen(outpath));
-  if (createdirs==1) {
-    if ((mkdir(outpath, (S_IRWXU | S_IRWXG | S_IRWXO )) == -1) && (errno != EEXIST)) {
-      sprintf(tmp,"creating outpath: %s, for variable %s (table: %s). Not enough permission?",outpath,cmor_vars[var_id].id,cmor_tables[cmor_vars[var_id].ref_table_id].table_id);
-      cmor_handle_error(tmp,CMOR_CRITICAL);
-    }
-  }
-  /* institute */
-  cmor_get_cur_dataset_attribute("institute_id",tmp2);
-  if (strcmp(tmp2,"not specified")==0) {
-    strcpy(tmp,"INSTITUTE_ID");
-  }
-  else {
-    substitute_chars_with_hyphens(tmp2, tmp, "institute_id", -1);
-  }
-
-  strncattrim(outpath,tmp,CMOR_MAX_STRING-strlen(outpath));
-  strncat(outpath,"/",CMOR_MAX_STRING-strlen(outpath));
-  if (createdirs==1) {
-    if ((mkdir(outpath, (S_IRWXU | S_IRWXG | S_IRWXO )) == -1) && (errno != EEXIST)) {
-      sprintf(tmp,"creating outpath: %s, for variable %s (table: %s). Not enough permission?",outpath,cmor_vars[var_id].id,cmor_tables[cmor_vars[var_id].ref_table_id].table_id);
-      cmor_handle_error(tmp,CMOR_CRITICAL);
-    }
-  }
-  
-  /*model id */
-  if ( cmor_has_cur_dataset_attribute("model_id")==0) {
-    cmor_get_cur_dataset_attribute("model_id",tmp);
-    for (i=0;i<strlen(tmp);i++) {
-      if (cmor_convert_char_to_hyphen(tmp[i])==1) {
-	  tmp[i]='-';
-	}
-    }
-    /* removes trailing "-" */
-    for (i=strlen(tmp)-1;i>0;i--) {
-      if (tmp[i]=='-') {
-	tmp[i]='\0';
-      }
-      else {
-	break;
-      }
-    }
-    strncattrim(outpath,tmp,CMOR_MAX_STRING-strlen(outpath));
-    strncat(outpath,"/",CMOR_MAX_STRING-strlen(outpath));
-  }
-  if (createdirs==1) {
-    if ((mkdir(outpath, (S_IRWXU | S_IRWXG | S_IRWXO )) == -1) && (errno != EEXIST)) {
-      sprintf(tmp,"creating outpath: %s, for variable %s (table: %s). Not enough permission?",outpath,cmor_vars[var_id].id,cmor_tables[cmor_vars[var_id].ref_table_id].table_id);
-      cmor_handle_error(tmp,CMOR_CRITICAL);
-    }
-  }
-
-  /* experiment id */
-  cmor_get_cur_dataset_attribute("experiment_id",tmp);
-  /* ok here we check the exptid is ok */
-  if (cmor_check_expt_id(tmp,cmor_vars[var_id].ref_table_id,"experiment","experiment_id")!=0) {
-    snprintf(tmp2,CMOR_MAX_STRING,"Invalid dataset experiment id: %s, for variable %s. Check against table: %s",tmp,cmor_vars[var_id].id,cmor_tables[cmor_vars[var_id].ref_table_id].table_id);
-    cmor_handle_error(tmp2,CMOR_NORMAL);
-    cmor_pop_traceback();
-    return 1;
-  }
-  /* ok here we need to reset the expt id to the shrt name if necessary */
-  for (i=0;i<=cmor_tables[cmor_vars[var_id].ref_table_id].nexps;i++) {
-/*     printf("i: %i, lng expt: %s\n",i,cmor_tables[cmor_vars[var_id].ref_table_id].expt_ids[i]); */
-/*     printf("i: %i, sht expt: %s\n",i,cmor_tables[cmor_vars[var_id].ref_table_id].sht_expt_ids[i]); */
-    j = strlen(tmp);
-    if (strncmp(cmor_tables[cmor_vars[var_id].ref_table_id].expt_ids[i],tmp,j)==0) {
-      if (strlen(cmor_tables[cmor_vars[var_id].ref_table_id].sht_expt_ids[i])!=0) {
-	strncpy(tmp2,cmor_tables[cmor_vars[var_id].ref_table_id].sht_expt_ids[i],j-4);
-	tmp2[j-4]='\0';
-	if (j>4) {
-	  strncpy(&tmp2[j-4],&tmp[j-4],4);
-	  tmp2[j]='\0';
+	if( preserve != NULL ) {
+	    cmor_vars[var_id].initialized = -1;
+	    cmor_vars[var_id].ntimes_written = 0;
+	    cmor_vars[var_id].time_nc_id = -999;
+	    cmor_vars[var_id].time_bnds_nc_id = -999;
+	    for( i = 0; i < 10; i++ ) {
+		cmor_vars[var_id].ntimes_written_coords[i] = -1;
+		cmor_vars[var_id].ntimes_written_associated[i] = 0;
+		cmor_vars[var_id].associated_ids[i] = -1;
+		cmor_vars[var_id].nc_var_id = -999;
+	    }
+	    for( i = 0; i < cmor_vars[var_id].nattributes; i++ ) {
+		if( strcmp( cmor_vars[var_id].attributes[i],
+		        "cell_methods" ) == 0 ) {
+		    cmor_set_variable_attribute_internal( var_id,
+		            "cell_methods",
+		            'c',
+		            cmor_tables[cmor_vars[var_id].ref_table_id].
+		            vars[cmor_vars[var_id].ref_var_id].cell_methods );
+		}
+	    }
+	} else {
+	    cmor_reset_variable( var_id );
+	    cmor_vars[var_id].closed = 1;
 	}
-      }
-      else {
-	strcpy(tmp2,"");
-      }
-      strcpy(tmp,tmp2);
-      break;
-    }
-  }
-  if (strcmp(tmp,"")!=0) {
-    strncattrim(outpath,tmp,CMOR_MAX_STRING-strlen(outpath));
-    strncat(outpath,"/",CMOR_MAX_STRING-strlen(outpath));
-  }
-/*   else { */
-/*     strcpy(tmp,"$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$"); */
-/*     cmor_handle_error(tmp,CMOR_CRITICAL); */
-/*   } */
-  if (createdirs==1) {
-    if ((mkdir(outpath, (S_IRWXU | S_IRWXG | S_IRWXO )) == -1) && (errno != EEXIST)) {
-      sprintf(tmp,"creating outpath: %s, for variable %s (table: %s). Not enough permission?",outpath,cmor_vars[var_id].id,cmor_tables[cmor_vars[var_id].ref_table_id].table_id);
-      cmor_handle_error(tmp,CMOR_CRITICAL);
-    }
-  }
-
-  /* frequency */
-  if ((cmor_tables[cmor_vars[var_id].ref_table_id].frequency[0]=='\0') &&
-      (cmor_tables[cmor_vars[var_id].ref_table_id].vars[cmor_vars[var_id].ref_var_id].frequency[0]=='\0') ) {
-    /* need to figure out the approximate interval */
-    if ((cmor_tables[cmor_axes[cmor_vars[var_id].axes_ids[0]].ref_table_id].axes[cmor_axes[cmor_vars[var_id].axes_ids[0]].ref_axis_id].axis!='T') ) {
-      strcpy(tmp,"fx");
-      isfixed =1;
-    }
-    else {
-      interval = cmor_convert_interval_to_seconds(cmor_tables[cmor_axes[cmor_vars[var_id].axes_ids[0]].ref_table_id].interval,cmor_tables[cmor_axes[cmor_vars[var_id].axes_ids[0]].ref_table_id].axes[cmor_axes[cmor_vars[var_id].axes_ids[0]].ref_axis_id].units);
-      if (interval<2500.) { 
-	strcpy(tmp,"subhr");
-      }
-      else if (interval<15000.) {
-	strcpy(tmp,"3hr");
-      }
-      else if (interval<30000.) {
-	strcpy(tmp,"6hr");
-      }
-      else if (interval<100000.) {
-	strcpy(tmp,"day");
-      }
-      else if (interval<3.E6) {
-	strcpy(tmp,"mon");
-      }
-      else {
-	strcpy(tmp,"yr");
-      }
-      if (interval == 0.) {
-	strcpy(tmp,"fx");
-	isfixed=1;
-      }
-    }
-  }
-  else if (cmor_tables[cmor_vars[var_id].ref_table_id].vars[cmor_vars[var_id].ref_var_id].frequency[0]!='\0') {
-    strncpy(tmp,cmor_tables[cmor_vars[var_id].ref_table_id].vars[cmor_vars[var_id].ref_var_id].frequency,CMOR_MAX_STRING);
-  }
-  else {
-    strncpy(tmp,cmor_tables[cmor_vars[var_id].ref_table_id].frequency,CMOR_MAX_STRING);
-    if (strcmp(tmp,"fx")==0) isfixed=1;
-  }
-
-  /*Ok in case of climatology needs to add "clim" to it */
-  if (cmor_tables[cmor_axes[cmor_vars[var_id].axes_ids[0]].ref_table_id].axes[cmor_axes[cmor_vars[var_id].axes_ids[0]].ref_axis_id].climatology==1) {
-    /* ok in some case the table fqcy already has the clim in it..... */
-    j=-1;
-    for (i=0;i<strlen(cmor_tables[cmor_vars[var_id].ref_table_id].frequency)-3;i++) {
-      if (strncmp(&cmor_tables[cmor_vars[var_id].ref_table_id].frequency[i],"Clim",4)==0) {
-	j=1;
-	break;
-      }
-    }
-    if (j==-1) strncat(tmp,"Clim",CMOR_MAX_STRING-strlen(tmp));
-    else strncpy(tmp,cmor_tables[cmor_vars[var_id].ref_table_id].frequency,CMOR_MAX_STRING);
-  }
-  strncattrim(outpath,tmp,CMOR_MAX_STRING-strlen(outpath));
-  strncat(outpath,"/",CMOR_MAX_STRING-strlen(outpath));
-  if (createdirs==1) {
-    if ((mkdir(outpath, (S_IRWXU | S_IRWXG | S_IRWXO )) == -1) && (errno != EEXIST)) {
-      sprintf(tmp,"creating outpath: %s, for variable %s (table: %s). Not enough permission?",outpath,cmor_vars[var_id].id,cmor_tables[cmor_vars[var_id].ref_table_id].table_id);
-      cmor_handle_error(tmp,CMOR_CRITICAL);
-    }
-  }
-
-  cmor_set_cur_dataset_attribute_internal("frequency",tmp,1);
-  
-  /* realm */
-  /* first check if the variable itslef has a realm */
-  if (cmor_tables[cmor_vars[var_id].ref_table_id].vars[cmor_vars[var_id].ref_var_id].realm[0]!='\0') {
-    /* we want to copy only the first realm here */
-    for (i=0;i<strlen(cmor_tables[cmor_vars[var_id].ref_table_id].vars[cmor_vars[var_id].ref_var_id].realm);i++) {
-      if (cmor_tables[cmor_vars[var_id].ref_table_id].vars[cmor_vars[var_id].ref_var_id].realm[i]!=' ') {
-	tmp[i]=cmor_tables[cmor_vars[var_id].ref_table_id].vars[cmor_vars[var_id].ref_var_id].realm[i];
-	tmp[i+1]='\0';
-      }
-      else {
-	break;
-      }
-    }
-    strncattrim(outpath,tmp,CMOR_MAX_STRING-strlen(outpath));
-  }
-  else { /*ok it didn't so we're using the value from the table */
-    strncattrim(outpath,cmor_tables[cmor_vars[var_id].ref_table_id].realm,CMOR_MAX_STRING-strlen(outpath));
-  }
-  strncat(outpath,"/",CMOR_MAX_STRING-strlen(outpath));
-  if (createdirs==1) {
-    if ((mkdir(outpath, (S_IRWXU | S_IRWXG | S_IRWXO )) == -1) && (errno != EEXIST)) {
-      sprintf(tmp,"creating outpath: %s, for variable %s (table: %s). Not enough permission?",outpath,cmor_vars[var_id].id,cmor_tables[cmor_vars[var_id].ref_table_id].table_id);
-      cmor_handle_error(tmp,CMOR_CRITICAL);
-    }
-  }
-  
-  /* var id */
-  strncattrim(outpath,cmor_vars[var_id].id,CMOR_MAX_STRING-strlen(outpath));
-  strncat(outpath,"/",CMOR_MAX_STRING-strlen(outpath));
-  if (createdirs==1) {
-    if ((mkdir(outpath, (S_IRWXU | S_IRWXG | S_IRWXO )) == -1) && (errno != EEXIST)) {
-      sprintf(tmp,"creating outpath: %s, for variable %s (table: %s). Not enough permission?",outpath,cmor_vars[var_id].id,cmor_tables[cmor_vars[var_id].ref_table_id].table_id);
-      cmor_handle_error(tmp,CMOR_CRITICAL);
-    }
-  }
-  
-  if (isfixed==1) {
-    strncat(outpath,"r0i0p0",CMOR_MAX_STRING-strlen(outpath) );
-    cmor_set_cur_dataset_attribute_internal("physics_version","0",0);
-    cmor_set_cur_dataset_attribute_internal("initialization_method","0",0);
-  }
-  else {
-    /*realization */
-    snprintf(tmp,CMOR_MAX_STRING,"r%d",cmor_current_dataset.realization);
-    strncat(outpath,tmp,CMOR_MAX_STRING-strlen(outpath) );
-    
-    /* initialization id (optional) */
-    if ( cmor_has_cur_dataset_attribute("initialization_method")==0) {
-      cmor_get_cur_dataset_attribute("initialization_method",tmp);
-      sscanf(tmp,"%i",&i);
-      snprintf(tmp,CMOR_MAX_STRING,"i%d",i);
-      strncat(outpath,tmp,CMOR_MAX_STRING-strlen(outpath) );
     }
-    
-    /* physics id (optional) */
-    if ( cmor_has_cur_dataset_attribute("physics_version")==0) {
-      cmor_get_cur_dataset_attribute("physics_version",tmp);
-      sscanf(tmp,"%i",&i);
-      snprintf(tmp,CMOR_MAX_STRING,"p%d",i);
-      strncat(outpath,tmp,CMOR_MAX_STRING-strlen(outpath) );
-    }
-  }
-  strncat(outpath,"/",CMOR_MAX_STRING-strlen(outpath));
-  if (createdirs==1) {
-    if ((mkdir(outpath, (S_IRWXU | S_IRWXG | S_IRWXO )) == -1) && (errno != EEXIST)) {
-      sprintf(tmp,"creating outpath: %s, for variable %s (table: %s). Not enough permission?",outpath,cmor_vars[var_id].id,cmor_tables[cmor_vars[var_id].ref_table_id].table_id);
-      cmor_handle_error(tmp,CMOR_CRITICAL);
-    }
-  }
-  cleanup_varid=-1;
-  cmor_pop_traceback();
-  return isfixed;
+    cleanup_varid = -1;
+    cmor_pop_traceback(  );
+    return( 0 );
 }
 
-int cmor_close_variable(int var_id, char *file_name, int *preserve) 
-{
-  int ierr;
-  extern int cmor_nvars;
-  char outname[CMOR_MAX_STRING];
-  char msg[CMOR_MAX_STRING];
-  char msg2[CMOR_MAX_STRING];
-  char ctmp[CMOR_MAX_STRING];
-  char ctmp2[CMOR_MAX_STRING];
-  cdCalenType icalo;
-  cdCompTime comptime;
-  int i,j,n;
-  double interval;
-  struct stat buf;
-  off_t sz;
-  long maxsz=(long) pow(2,32) -1;
-  cmor_add_traceback("cmor_close_variable");
-  cmor_is_setup();
-
-  cleanup_varid=var_id;
-
-  if (cmor_vars[var_id].initialized != -1) {
-    ierr = nc_close(cmor_vars[var_id].initialized);
-    
-    if (ierr != NC_NOERR) {
-      snprintf(msg,CMOR_MAX_STRING,"NetCDF Error (%i: %s) closing variable %s (table: %s)!",ierr,nc_strerror(ierr),cmor_vars[var_id].id,cmor_tables[cmor_vars[var_id].ref_table_id].table_id);
-      cmor_handle_error(msg,CMOR_CRITICAL);
-    }
-    
-
-    /* Ok we need to make the associated variables have been written in the case of a time varying grid */
-    if ((cmor_vars[var_id].grid_id>-1) && (cmor_grids[cmor_vars[var_id].grid_id].istimevarying==1)) {
-      for (i=0;i<4;i++) {
-	if (cmor_grids[cmor_vars[var_id].grid_id].associated_variables[i]!=-1) { /* ok this associated coord should be stored */
-	  if (cmor_vars[var_id].ntimes_written!=cmor_vars[var_id].ntimes_written_coords[i]) {
-	    /* ok we either wrote more or less data but in any case not the right amount! */
-	    if (cmor_vars[var_id].ntimes_written==0) {
-	      for (j=0;j<cmor_vars[var_id].ndims;j++) {
-		if (cmor_axes[cmor_vars[var_id].axes_ids[j]].axis=='T') {
-		  sprintf(ctmp2,"%i",cmor_axes[cmor_vars[var_id].axes_ids[j]].length);
-		  break;
-		}
-	      }
+/************************************************************************/
+/*                             cmor_close()                             */
+/************************************************************************/
+int cmor_close( void ) {
+    int i,  j, k;
+    extern int cmor_nvars;
+    char msg[CMOR_MAX_STRING];
+    extern ut_system *ut_read;
+    extern FILE *output_logfile;
+
+    cmor_add_traceback( "cmor_close" );
+    cmor_is_setup(  );
+    if( output_logfile == NULL )
+	output_logfile = stderr;
+
+    for( i = 0; i < cmor_nvars + 1; i++ ) {
+	if( cmor_vars[i].initialized != -1 ) {
+	    if( cmor_vars[i].closed == 0 ) {
+	        cmor_close_variable( i, NULL, NULL );
 	    }
-	    else {
-	      sprintf(ctmp2,"%i",cmor_vars[var_id].ntimes_written);
+	} else if( ( cmor_vars[i].needsinit == 1 )
+		   && ( cmor_vars[i].closed != 1 ) ) {
+	    snprintf( msg, CMOR_MAX_STRING,
+		      "variable %s (%i, table: %s) has been defined\n! "
+	              "but never initialized",
+		      cmor_vars[i].id, i,
+		      cmor_tables[cmor_vars[i].ref_table_id].szTable_id );
+	    cmor_handle_error( msg, CMOR_WARNING );
+	}
+    }
+    for( i = 0; i < CMOR_MAX_TABLES; i++ ) {
+	for( j = 0; j < CMOR_MAX_ELEMENTS; j++ ) {
+	    if( cmor_tables[i].axes[j].requested != NULL ) {
+		free( cmor_tables[i].axes[j].requested );
+		cmor_tables[i].axes[j].requested = NULL;
 	    }
-	    if (cmor_vars[var_id].ntimes_written_coords[i]==-1) {
-	      sprintf(ctmp,"no");
+	    if( cmor_tables[i].axes[j].requested_bounds != NULL ) {
+		free( cmor_tables[i].axes[j].requested_bounds );
+		cmor_tables[i].axes[j].requested_bounds = NULL;
 	    }
-	    else {
-	      sprintf(ctmp,"%i",cmor_vars[var_id].ntimes_written_coords[i]);
+	    if( cmor_tables[i].axes[j].crequested != NULL ) {
+		free( cmor_tables[i].axes[j].crequested );
+		cmor_tables[i].axes[j].crequested = NULL;
 	    }
-	    snprintf(msg,CMOR_MAX_STRING,"while closing variable %i (%s, table %s) we noticed it has a time varying grid, you wrote %s time steps for the variable, but its associated variable %i (%s) has %s times written", cmor_vars[var_id].self, cmor_vars[var_id].id,cmor_tables[cmor_vars[var_id].ref_table_id].table_id, ctmp2, cmor_vars[cmor_grids[cmor_vars[var_id].grid_id].associated_variables[i]].self,cmor_vars[cmor_grids[cmor_vars[var_id].grid_id].associated_variables[i]].id,ctmp);
-	    cmor_handle_error(msg,CMOR_CRITICAL);
-	  }
 	}
-      }
-    }
-    for (i=0;i<10;i++) {
-      if (cmor_vars[var_id].associated_ids[i]!=-1) {
-	if (cmor_vars[var_id].ntimes_written != cmor_vars[var_id].ntimes_written_associated[i]) {
-	  sprintf(ctmp2,"%i",cmor_vars[var_id].ntimes_written);
-	  sprintf(ctmp,"%i",cmor_vars[var_id].ntimes_written_associated[i]);
-	  snprintf(msg,CMOR_MAX_STRING,"while closing variable %i (%s, table %s) we noticed it has a time varying associated variable, you wrote %s time steps for the variable, but its associated variable %i (%s) has %s times written", cmor_vars[var_id].self,cmor_vars[var_id].id,cmor_tables[cmor_vars[var_id].ref_table_id].table_id, ctmp2, cmor_vars[cmor_vars[var_id].associated_ids[i]].self,cmor_vars[cmor_vars[var_id].associated_ids[i]].id,ctmp);
-	  cmor_handle_error(msg,CMOR_CRITICAL);
+	if( cmor_tables[i].nforcings > 0 ) {
+	    for( j = 0; j < cmor_tables[i].nforcings; j++ ) {
+		free( cmor_tables[i].forcings[j] );
+		cmor_tables[i].forcings[j] = NULL;
+	    }
+	    free( cmor_tables[i].forcings );
+	    cmor_tables[i].forcings = NULL;
+	    cmor_tables[i].nforcings = 0;
 	}
-      }
+        if(cmor_tables[i].CV != NULL) {
+            for(k=0; k< cmor_tables[i].CV->nbObjects; k++ ) {
+                if( &cmor_tables[i].CV[k] != NULL ) {
+                    cmor_CV_free( &cmor_tables[i].CV[k] );
+                }
+            }
+            if(cmor_tables[i].CV != NULL ){
+                free(cmor_tables[i].CV);
+                cmor_tables[i].CV=NULL;
+            }
+        }
+
     }
-    /* ok at that point we need to construct the final name! */
-    strncpytrim(outname,cmor_vars[var_id].base_path,CMOR_MAX_STRING);
-    
-    if (cmor_tables[cmor_axes[cmor_vars[var_id].axes_ids[0]].ref_table_id].axes[cmor_axes[cmor_vars[var_id].axes_ids[0]].ref_axis_id].axis=='T') {
-      cmor_get_axis_attribute(cmor_vars[var_id].axes_ids[0],"units",'c',&msg);
-      cmor_get_cur_dataset_attribute("calendar",msg2);
-      
-      if (cmor_calendar_c2i(msg2,&icalo)!=0) {
-	snprintf(msg,CMOR_MAX_STRING,"Cannot convert times for calendar: %s, closing variable %s (table: %s)",msg2,cmor_vars[var_id].id,cmor_tables[cmor_vars[var_id].ref_table_id].table_id);
-	cmor_handle_error(msg,CMOR_CRITICAL);
-	cmor_pop_traceback();
-	return 1;
-      }
-      /* ok makes a comptime out of input */
-      i = cmor_vars[var_id].axes_ids[0];
-      j=cmor_axes[i].ref_table_id;
-      i=cmor_axes[i].ref_axis_id;
-      if ((cmor_tables[j].axes[i].climatology==1)&&(cmor_vars[var_id].first_bound!=1.e20)) {
-      	cdRel2Comp(icalo,msg,cmor_vars[var_id].first_bound,&comptime);
-      }
-      else {
-	cdRel2Comp(icalo,msg,cmor_vars[var_id].first_time,&comptime);
-      }
-      /* need to figure out the approximate interval */
-      interval  = cmor_convert_interval_to_seconds(cmor_tables[cmor_axes[cmor_vars[var_id].axes_ids[0]].ref_table_id].interval,cmor_tables[cmor_axes[cmor_vars[var_id].axes_ids[0]].ref_table_id].axes[cmor_axes[cmor_vars[var_id].axes_ids[0]].ref_axis_id].units);
-      
-      /* first time point */
-      strncat(outname,"_",CMOR_MAX_STRING-strlen(outname));
-      snprintf(msg2,CMOR_MAX_STRING,"%.4ld",comptime.year);
-      strncat(outname,msg2,CMOR_MAX_STRING-strlen(outname));
-      if (interval<29.E6) { /* less than a year */
-	snprintf(msg2,CMOR_MAX_STRING,"%.2i",comptime.month);
-	strncat(outname,msg2,CMOR_MAX_STRING-strlen(outname));
-      }
-      if (interval<2.E6) { /* less than a month */
-	snprintf(msg2,CMOR_MAX_STRING,"%.2i",comptime.day);
-	strncat(outname,msg2,CMOR_MAX_STRING-strlen(outname));
-      }
-      if (interval<86000) { /* less than a day */
-	snprintf(msg2,CMOR_MAX_STRING,"%.2i",(int)comptime.hour);
-	strncat(outname,msg2,CMOR_MAX_STRING-strlen(outname));
-      }
-      if (interval<21000) { /* less than 6hr */
-	/* from now on add 1 more level of precision since that frequency */
-	ierr = (int)((comptime.hour-(int)(comptime.hour))*60.);
-	snprintf(msg2,CMOR_MAX_STRING,"%.2i",ierr);
-	strncat(outname,msg2,CMOR_MAX_STRING-strlen(outname));
-      }
-      if (interval<3000) { /* less than an hour */
-	snprintf(msg2,CMOR_MAX_STRING,"%.2i",(int)((comptime.hour-(int)(comptime.hour))*3600.)-ierr*60);
-	strncat(outname,msg2,CMOR_MAX_STRING-strlen(outname));
-      }
-      
-      /* separator between first and last time */
-      strncat(outname,"-",CMOR_MAX_STRING-strlen(outname));
-      
-      if ((cmor_tables[j].axes[i].climatology==1) && (cmor_vars[var_id].last_bound!=1.e20)) {
-      	cdRel2Comp(icalo,msg,cmor_vars[var_id].last_bound,&comptime);
-	/* ok apparently we don't like the new time format if it's ending at midnight exactly so I'm removing one second...*/
-	if (icalo==cdMixed) {
-	  cdCompAddMixed(comptime,-1./3600.,&comptime);
-	}
-	else{
-	  cdCompAdd(comptime,-1./3600.,icalo,&comptime);
+
+    for( i = 0; i < CMOR_MAX_GRIDS; i++ ) {
+	if( cmor_grids[i].lons != NULL ) {
+	    free( cmor_grids[i].lons );
+	    cmor_grids[i].lons = NULL;
 	}
-      }
-      else {
-	//printf("icalo final: %i, %f\n",icalo,cmor_vars[var_id].last_time);
-	cdRel2Comp(icalo,msg,cmor_vars[var_id].last_time,&comptime);
-	//printf("end retuned: %i-%i-%i : %f\n",comptime.year,comptime.month,comptime.day,comptime.hour);
-      }
-      
-      /* last time point */
-      snprintf(msg2,CMOR_MAX_STRING,"%.4ld",comptime.year);
-      strncat(outname,msg2,CMOR_MAX_STRING-strlen(outname));
-      if (interval<29.E6) { /* less than a year */
-	snprintf(msg2,CMOR_MAX_STRING,"%.2i",comptime.month);
-	strncat(outname,msg2,CMOR_MAX_STRING-strlen(outname));
-      }
-      if (interval<2.E6) { /* less than a month */
-	snprintf(msg2,CMOR_MAX_STRING,"%.2i",comptime.day);
-	strncat(outname,msg2,CMOR_MAX_STRING-strlen(outname));
-      }
-      if (interval<86000) { /* less than a day */
-	snprintf(msg2,CMOR_MAX_STRING,"%.2i",(int)comptime.hour);
-	strncat(outname,msg2,CMOR_MAX_STRING-strlen(outname));
-      }
-      if (interval<21000) { /* less than 6hr */
-	/* from now on add 1 more level of precision since that frequency */
-	ierr = (int)((comptime.hour-(int)(comptime.hour))*60.);
-	snprintf(msg2,CMOR_MAX_STRING,"%.2i",ierr);
-	strncat(outname,msg2,CMOR_MAX_STRING-strlen(outname));
-      }
-      if (interval<3000) { /* less than an hour */
-	snprintf(msg2,CMOR_MAX_STRING,"%.2i",(int)((comptime.hour-(int)(comptime.hour))*3600.)-ierr*60);
-	strncat(outname,msg2,CMOR_MAX_STRING-strlen(outname));
-      }
-      
-      if (cmor_tables[cmor_axes[cmor_vars[var_id].axes_ids[0]].ref_table_id].axes[cmor_axes[cmor_vars[var_id].axes_ids[0]].ref_axis_id].climatology==1) {
-	strncat(outname,"-clim",CMOR_MAX_STRING-strlen(outname));	
-      }
-    }
-/*     else { */
-/*       printf("first axis is not time axis ?\n"); */
-/*     } */
-    if (cmor_vars[var_id].suffix_has_date==1) {
-      /* all right we need to pop out the date part.... */
-      n = strlen(cmor_vars[var_id].suffix);
-      i=0;
-      while (cmor_vars[var_id].suffix[i]!='_') i++;
-      i++;
-      while ((cmor_vars[var_id].suffix[i]!='_') && i<n) i++;
-      /* ok now we have the length of dates */
-      /* at this point we are either at the _clim the actual _suffix or the end (==nosuffix) */
-      /* checking if _clim needs to be added */
-      if (cmor_tables[cmor_axes[cmor_vars[var_id].axes_ids[i]].ref_table_id].axes[cmor_axes[cmor_vars[var_id].axes_ids[0]].ref_axis_id].climatology==1) {
-	i+=5;
-      }
-      strcpy(msg,"");
-      for (j=i;j<n;j++) {
-	msg[j-i]=cmor_vars[var_id].suffix[i];
-	msg[j-i+1]='\0';
-      }
-    }
-    else {
-      strncpy(msg,cmor_vars[var_id].suffix,CMOR_MAX_STRING);
-    }
-    
-    if (strlen(msg)>0) {
-      strncat(outname,"_",CMOR_MAX_STRING-strlen(outname));
-      strncat(outname,msg,CMOR_MAX_STRING-strlen(outname));
-    }
-    
-    strncat(outname,".nc",CMOR_MAX_STRING-strlen(outname));
-    
-    
-    /* ok now we can actually move the file */
-    /*     printf("moving: %s to %s\n",cmor_vars[var_id].current_path,outname); */
-    /* here we need to make sure we are not in preserve mode! */
-    if ((CMOR_NETCDF_MODE == CMOR_PRESERVE_4) || (CMOR_NETCDF_MODE == CMOR_PRESERVE_3)) {
-      FILE *fperr;
-    /* ok first let's check if the file does exists or not */
-      fperr = NULL;
-      fperr=fopen(outname,"r");
-      if ( fperr != NULL) {
-	sprintf(msg,"%s.copy",outname);
-	if (rename(cmor_vars[var_id].current_path,msg)==0 ) {
-	  snprintf(msg,CMOR_MAX_STRING,"Output file ( %s ) already exists, remove file or use CMOR_REPLACE or CMOR_APPEND for CMOR_NETCDF_MODE value in cmor_setup for convenience the file you were trying to write has been saved at: %s.copy",outname,outname);
+	if( cmor_grids[i].lats != NULL ) {
+	    free( cmor_grids[i].lats );
+	    cmor_grids[i].lats = NULL;
 	}
-	else {
-	  snprintf(msg,CMOR_MAX_STRING,"Output file ( %s ) already exists, remove file or use CMOR_REPLACE or CMOR_APPEND for CMOR_NETCDF_MODE value in cmor_setup.",outname);
+	if( cmor_grids[i].blons != NULL ) {
+	    free( cmor_grids[i].blons );
+	    cmor_grids[i].blons = NULL;
 	}
-	cmor_handle_error(msg,CMOR_CRITICAL);
-      }
-    }
-    if (rename(cmor_vars[var_id].current_path,outname)!=0) {
-      snprintf(msg,CMOR_MAX_STRING,"could not rename temporary file: %s to final file name: %s",cmor_vars[var_id].current_path,outname);
-      cmor_handle_error(msg,CMOR_CRITICAL);
-    }
-    if (file_name!=NULL) {
-      strncpy(file_name,outname,CMOR_MAX_STRING);
-    }
-
-    /* At this point we need to check the file's size and issue a warning if greater than 4Gb*/
-    stat(outname,&buf);
-    sz = buf.st_size;
-    if (sz > maxsz) {
-      sprintf(msg,"Closing file: %s, size is greater than 4Gb, while this is acceptable it may be unreadable on older file systems",outname);
-      cmor_handle_error(msg,CMOR_WARNING);
-    }
-
-    if (preserve != NULL) {
-      cmor_vars[var_id].initialized=-1;
-      cmor_vars[var_id].ntimes_written=0;
-      cmor_vars[var_id].time_nc_id=-999;
-      cmor_vars[var_id].time_bnds_nc_id=-999;
-      for (i=0;i<10;i++) {
-	cmor_vars[var_id].ntimes_written_coords[i]=-1;
-	cmor_vars[var_id].ntimes_written_associated[i]=0;
-	cmor_vars[var_id].associated_ids[i]=-1;
-	cmor_vars[var_id].nc_var_id=-999;
-      }
-      for (i=0;i<cmor_vars[var_id].nattributes;i++) {
-	if (strcmp(cmor_vars[var_id].attributes[i],"cell_methods")==0) {
-	  cmor_set_variable_attribute_internal(var_id,"cell_methods",'c',cmor_tables[cmor_vars[var_id].ref_table_id].vars[cmor_vars[var_id].ref_var_id].cell_methods);
+	if( cmor_grids[i].blats != NULL ) {
+	    free( cmor_grids[i].blats );
+	    cmor_grids[i].blats = NULL;
 	}
-      }
-    }
-    else {
-      cmor_reset_variable(var_id);
-      cmor_vars[var_id].closed=1;
     }
-  }
-  cleanup_varid=-1;
-  cmor_pop_traceback();
-  return 0;
-}
-
-int cmor_close(void) 
-{
-  int i,ierr,j;
-  extern int cmor_nvars;
-  char msg[CMOR_MAX_STRING];
-  extern ut_system *ut_read;
-  extern FILE *output_logfile;
-
-  cmor_add_traceback("cmor_close");
-  cmor_is_setup();
-  if (output_logfile == NULL) output_logfile = stderr;
-  /*ut_free_system(ut_read);*/
-/*   if (ut_get_status() != UT_SUCCESS) { */
-/*     snprintf(msg,CMOR_MAX_STRING,"Udunits: Error freeing units system"); */
-/*     cmor_handle_error(msg,CMOR_CRITICAL); */
-/*   } */
-  for (i=0;i<cmor_nvars+1;i++) {
-    if (cmor_vars[i].initialized != -1) {
-      if (cmor_vars[i].closed==0) {
-	ierr = cmor_close_variable(i,NULL,NULL);
-      }
-    }
-    else if ((cmor_vars[i].needsinit==1)&&(cmor_vars[i].closed!=1)) {
-      snprintf(msg,CMOR_MAX_STRING,"variable %s (%i, table: %s) has been defined but never initialized",cmor_vars[i].id,i,cmor_tables[cmor_vars[i].ref_table_id].table_id);
-      cmor_handle_error(msg,CMOR_WARNING);
-    }
-  }
-  for (i=0;i<CMOR_MAX_TABLES;i++) {
-    for(j=0;j<CMOR_MAX_ELEMENTS;j++) {
-      if (cmor_tables[i].axes[j].requested!=NULL) {free(cmor_tables[i].axes[j].requested);cmor_tables[i].axes[j].requested=NULL;}
-      if (cmor_tables[i].axes[j].requested_bounds!=NULL) {free(cmor_tables[i].axes[j].requested_bounds);cmor_tables[i].axes[j].requested_bounds=NULL;}
-      if (cmor_tables[i].axes[j].crequested!=NULL) {free(cmor_tables[i].axes[j].crequested);cmor_tables[i].axes[j].crequested=NULL;}  
-    }
-    if (cmor_tables[i].nforcings>0) {
-      for (j=0;j<cmor_tables[i].nforcings;j++) {
-	free(cmor_tables[i].forcings[j]);
-	cmor_tables[i].forcings[j]=NULL;
-      }
-      free(cmor_tables[i].forcings);
-      cmor_tables[i].forcings=NULL;
-      cmor_tables[i].nforcings=0;
-    }
-  }
-  for (i=0;i<CMOR_MAX_GRIDS;i++) {
-    if (cmor_grids[i].lons!=NULL) {free(cmor_grids[i].lons);cmor_grids[i].lons=NULL;}
-    if (cmor_grids[i].lats!=NULL) {free(cmor_grids[i].lats);cmor_grids[i].lats=NULL;}
-    if (cmor_grids[i].blons!=NULL) {free(cmor_grids[i].blons);cmor_grids[i].blons=NULL;}
-    if (cmor_grids[i].blats!=NULL) {free(cmor_grids[i].blats);cmor_grids[i].blats=NULL;}
-/*     if (cmor_grids[i].area!=NULL) {free(cmor_grids[i].area);cmor_grids[i].area=NULL;} */
-/*     if (cmor_grids[i].volumes!=NULL) {free(cmor_grids[i].volumes);cmor_grids[i].volumes=NULL;} */
-  }
-  if (cmor_nerrors!=0 || cmor_nwarnings!=0) {
-    fprintf(output_logfile,"------\nCMOR is now closed.\n------\nDuring execution we encountered:\n");
+    if( (cmor_nerrors != 0 || cmor_nwarnings != 0 ) ){
+	fprintf( output_logfile,
+		 "! ------\n! CMOR is now closed.\n! ------\n! "
+	         "During execution we encountered:\n! " );
 #ifdef COLOREDOUTPUT
-    fprintf(output_logfile,"%c[%d;%dm",0X1B,1,34);
+	fprintf( output_logfile, "%c[%d;%dm", 0X1B, 1, 34 );
 #endif
-    fprintf(output_logfile,"%3i Warning(s)",cmor_nwarnings);
+	fprintf( output_logfile, "%3i Warning(s)", cmor_nwarnings );
 #ifdef COLOREDOUTPUT
-    fprintf(output_logfile,"%c[%dm",0X1B,0);
+	fprintf( output_logfile, "%c[%dm", 0X1B, 0 );
 #endif
-    fprintf(output_logfile,"\n");
+	fprintf( output_logfile, "\n! " );
 #ifdef COLOREDOUTPUT
-    fprintf(output_logfile,"%c[%d;%dm",0X1B,1,31);
+	fprintf( output_logfile, "%c[%d;%dm", 0X1B, 1, 31 );
 #endif
-    fprintf(output_logfile,"%3i Error(s)",cmor_nerrors);
+	fprintf( output_logfile, "%3i Error(s)", cmor_nerrors );
 #ifdef COLOREDOUTPUT
-    fprintf(output_logfile,"%c[%dm",0X1B,0);
+	fprintf( output_logfile, "%c[%dm", 0X1B, 0 );
 #endif
-    fprintf(output_logfile,"\n------\nPlease review them.\n------\n");
-  }
-  else {
-    fprintf(output_logfile,"------\nCMOR is now closed.\n------\n\nWe encountered no warnings or errors during execution\n------\nCongratulations!\n------\n");
-  }
-  if (output_logfile != stderr) fclose(output_logfile);
-  cmor_pop_traceback();
-  return 0;
+	fprintf( output_logfile,
+		 "\n! ------\n! Please review them.\n! ------\n! " );
+	cmor_nerrors   = 0;
+	cmor_nwarnings = 0;
+    } else {
+	fprintf( output_logfile,
+		 "\n! ------\n! All files were closed successfully. \n! ------\n! ");
+    }
+    if( output_logfile != stderr ) {
+	fclose( output_logfile );
+	output_logfile = NULL;
+    }
+    cmor_pop_traceback(  );
+    return( 0 );
 }
 
-void cmor_trim_string(char *in,char *out) {
-  int n,i,j;
+/************************************************************************/
+/*                       cmor_getFinalFilenane()                        */
+/************************************************************************/
+char *cmor_getFinalFilename() {
+    cmor_add_traceback( "cmor_close" );
+    cmor_is_setup(  );
 
-  if (in==NULL) {
-    out=NULL;
-    return;
-  }
-  n = strlen(in);
+    if(cmor_current_dataset.finalfilename[0] != '\0') {
+        cmor_pop_traceback(  );
+        return(  cmor_current_dataset.finalfilename );
+    }
+    cmor_pop_traceback(  );
+    return( NULL );
 
-  if (n==0) {
-    out[0]='\0';
-    return;
-  }
-  if (n>CMOR_MAX_STRING) n=CMOR_MAX_STRING; /* make sure we don't go over the limit */
-  j=0;
-  for (i=0;i<n;i++) {
-    if (in[i]!=' ' && in[i]!='\n' && in[i]!='\t') {
-      break;
+}
+/************************************************************************/
+/*                          cmor_trim_string()                          */
+/************************************************************************/
+void cmor_trim_string( char *in, char *out ) {
+    int n, i, j;
+
+    if( in == NULL ) {
+	out = NULL;
+	return;
+    }
+    n = strlen( in );
+
+    if( n == 0 ) {
+	out[0] = '\0';
+	return;
+    }
+    if( n > CMOR_MAX_STRING )
+	n = CMOR_MAX_STRING;	
+    j = 0;
+    for( i = 0; i < n; i++ ) {
+	if( in[i] != ' ' && in[i] != '\n' && in[i] != '\t' ) {
+	    break;
+	} else {
+	    j++;
+	}
+    }
+    for( i = j; i < n; i++ ) {
+	out[i - j] = in[i];
+    }
+    out[i - j] = '\0';
+    n = strlen( out );
+    i = n;
+    while( ( out[i] == '\0' || out[i] == ' ' ) ) {
+	out[i] = '\0';
+	i--;
     }
-    else {
-      j++;
-    }
-  }
-  for(i=j;i<n;i++) {
-    out[i-j]=in[i];
-  }
-  out[i-j]='\0';
-  n = strlen(out);
-  i=n;
-  while((out[i]=='\0' || out[i]==' ')) { out[i]='\0'; i--;}
 }
diff --git a/Src/cmor_CV.c b/Src/cmor_CV.c
new file mode 100644
index 0000000..ee09edb
--- /dev/null
+++ b/Src/cmor_CV.c
@@ -0,0 +1,1048 @@
+#define _XOPEN_SOURCE
+
+#include <string.h>
+#include <stdio.h>
+#include <time.h>
+#include <regex.h>
+#include "cmor.h"
+#include "json.h"
+#include "json_tokener.h"
+#include "arraylist.h"
+#include "libgen.h"
+/************************************************************************/
+/*                        cmor_CV_set_att()                             */
+/************************************************************************/
+void cmor_CV_set_att(cmor_CV_def_t *CV,
+                        char *szKey,
+                        json_object *joValue) {
+    json_bool bValue;
+    double dValue;
+    int nValue;
+    array_list *pArray;
+    int k, length;
+
+
+    strcpy(CV->key, szKey);
+
+    if( json_object_is_type( joValue, json_type_null) ) {
+        printf("Will not save NULL JSON type from CV.json\n");
+
+    } else if(json_object_is_type( joValue, json_type_boolean)) {
+        bValue = json_object_get_boolean(joValue);
+        CV->nValue = (int) bValue;
+        CV->type = CV_integer;
+
+    } else if(json_object_is_type( joValue, json_type_double)) {
+        dValue = json_object_get_double(joValue);
+        CV->dValue = dValue;
+        CV->type = CV_double;
+
+    } else if(json_object_is_type( joValue, json_type_int)) {
+        nValue = json_object_get_int(joValue);
+        CV->nValue = nValue;
+        CV->type = CV_integer;
+/* -------------------------------------------------------------------- */
+/* if value is a JSON object, recursively call in this function         */
+/* -------------------------------------------------------------------- */
+   } else if(json_object_is_type( joValue, json_type_object)) {
+
+        int nCVId = -1;
+        int nbObject = 0;
+        cmor_CV_def_t * oValue;
+        int nTableID = CV->table_id; /* Save Table ID */
+
+        json_object_object_foreach(joValue, key, value) {
+            nbObject++;
+            oValue = (cmor_CV_def_t *) realloc(CV->oValue,
+                   sizeof(cmor_CV_def_t) * nbObject);
+            CV->oValue = oValue;
+
+            nCVId++;
+            cmor_CV_init(&CV->oValue[nCVId], nTableID);
+            cmor_CV_set_att(&CV->oValue[nCVId], key, value  );
+        }
+        CV->nbObjects=nbObject;
+        CV->type = CV_object;
+
+
+    } else if(json_object_is_type( joValue, json_type_array)) {
+        pArray = json_object_get_array(joValue);
+        length = array_list_length(pArray);
+        json_object *joItem;
+        CV->anElements = length;
+        for(k=0; k<length; k++) {
+            joItem = (json_object *) array_list_get_idx(pArray, k);
+            strcpy(CV->aszValue[k], json_object_get_string(joItem));
+        }
+        CV->type=CV_stringarray;
+
+    } else if(json_object_is_type( joValue, json_type_string)) {
+        strcpy(CV->szValue, json_object_get_string(joValue));
+        CV->type=CV_string;
+    }
+
+
+
+}
+
+
+/************************************************************************/
+/*                           cmor_CV_init()                             */
+/************************************************************************/
+void cmor_CV_init( cmor_CV_def_t *CV, int table_id ) {
+    int i;
+
+    cmor_is_setup(  );
+    cmor_add_traceback("cmor_init_CV_def");
+    CV->table_id = table_id;
+    CV->type = CV_undef;  //undefined
+    CV->nbObjects = -1;
+    CV->nValue = -1;
+    CV->key[0] = '\0';
+    CV->szValue[0] = '\0';
+    CV->dValue=-9999.9;
+    CV->oValue = NULL;
+    for(i=0; i< CMOR_MAX_JSON_ARRAY; i++) {
+        CV->aszValue[i][0]='\0';
+    }
+    CV->anElements = -1;
+
+    cmor_pop_traceback();
+}
+
+/************************************************************************/
+/*                         cmor_CV_print()                              */
+/************************************************************************/
+void cmor_CV_print(cmor_CV_def_t *CV) {
+    int k;
+
+    if (CV != NULL) {
+        if(CV->key[0] != '\0'){
+            printf("key: %s \n", CV->key);
+        }
+        else {
+            return;
+        }
+        switch(CV->type) {
+
+        case CV_string:
+            printf("value: %s\n", CV->szValue);
+            break;
+
+        case CV_integer:
+            printf("value: %d\n", CV->nValue);
+            break;
+
+        case CV_stringarray:
+            printf("value: [\n");
+            for (k = 0; k < CV->anElements; k++) {
+                printf("value: %s\n", CV->aszValue[k]);
+            }
+            printf("        ]\n");
+            break;
+
+        case CV_double:
+            printf("value: %lf\n", CV->dValue);
+            break;
+
+        case CV_object:
+            printf("*** nbObjects=%d\n", CV->nbObjects);
+            for(k=0; k< CV->nbObjects; k++){
+                cmor_CV_print(&CV->oValue[k]);
+            }
+            break;
+
+        case CV_undef:
+            break;
+        }
+
+    }
+}
+
+/************************************************************************/
+/*                       cmor_CV_printall()                             */
+/************************************************************************/
+void cmor_CV_printall() {
+    int j,i;
+    cmor_CV_def_t *CV;
+    int nCVs;
+/* -------------------------------------------------------------------- */
+/* Parse tree and print key values.                                     */
+/* -------------------------------------------------------------------- */
+    for( i = 0; i < CMOR_MAX_TABLES; i++ ) {
+        if(cmor_tables[i].CV != NULL) {
+            printf("table %s\n", cmor_tables[i].szTable_id);
+            nCVs = cmor_tables[i].CV->nbObjects;
+            for( j=0; j<= nCVs; j++ ) {
+                CV = &cmor_tables[i].CV[j];
+                cmor_CV_print(CV);
+            }
+        }
+    }
+}
+
+/************************************************************************/
+/*                  cmor_CV_search_child_key()                          */
+/************************************************************************/
+cmor_CV_def_t *cmor_CV_search_child_key(cmor_CV_def_t *CV, char *key){
+    int i;
+    cmor_CV_def_t *searchCV;
+    int nbCVs = -1;
+    cmor_add_traceback("cmor_CV_search_child_key");
+
+    nbCVs = CV->nbObjects;
+
+    // Look at this objects
+    if(strcmp(CV->key, key)== 0){
+        cmor_pop_traceback();
+        return(CV);
+    }
+
+    // Look at each of object key
+     for(i = 0; i< nbCVs; i++) {
+         // Is there a branch on that object?
+         if(&CV->oValue[i] != NULL) {
+             searchCV = cmor_CV_search_child_key(&CV->oValue[i], key);
+             if(searchCV != NULL ){
+                 cmor_pop_traceback();
+                 return(searchCV);
+             }
+         }
+     }
+     cmor_pop_traceback();
+     return(NULL);
+}
+
+/************************************************************************/
+/*                     cmor_CV_rootsearch()                             */
+/************************************************************************/
+cmor_CV_def_t * cmor_CV_rootsearch(cmor_CV_def_t *CV, char *key){
+    int i;
+    int nbCVs = -1;
+    cmor_add_traceback("cmor_CV_rootsearch");
+
+    // Look at first objects
+    if(strcmp(CV->key, key)== 0){
+        cmor_pop_traceback();
+        return(CV);
+    }
+    // Is there more than 1 object?
+    if( CV->nbObjects != -1 ) {
+        nbCVs = CV->nbObjects;
+    }
+    // Look at each of object key
+    for(i = 1; i< nbCVs; i++) {
+        if(strcmp(CV[i].key, key)== 0){
+            cmor_pop_traceback();
+            return(&CV[i]);
+        }
+    }
+    cmor_pop_traceback();
+    return(NULL);
+}
+/************************************************************************/
+/*                      cmor_CV_get_value()                             */
+/************************************************************************/
+char *cmor_CV_get_value(cmor_CV_def_t *CV, char *key) {
+
+        switch(CV->type) {
+        case CV_string:
+            return(CV->szValue);
+            break;
+
+        case CV_integer:
+            sprintf(CV->szValue, "%d", CV->nValue);
+            break;
+
+        case CV_stringarray:
+            return(CV->aszValue[0]);
+            break;
+
+        case CV_double:
+            sprintf(CV->szValue, "%lf", CV->dValue);
+            break;
+
+        case CV_object:
+            return(NULL);
+            break;
+
+        case CV_undef:
+            CV->szValue[0]='\0';
+            break;
+        }
+
+        return(CV->szValue);
+}
+/************************************************************************/
+/*                         cmor_CV_free()                               */
+/************************************************************************/
+void cmor_CV_free(cmor_CV_def_t *CV) {
+    int k;
+/* -------------------------------------------------------------------- */
+/* Recursively go down the tree and free branch                         */
+/* -------------------------------------------------------------------- */
+    if(CV->oValue != NULL) {
+        for(k=0; k< CV->nbObjects; k++){
+            cmor_CV_free(&CV->oValue[k]);
+        }
+    }
+    if(CV->oValue != NULL) {
+        free(CV->oValue);
+        CV->oValue=NULL;
+    }
+
+}
+/************************************************************************/
+/*                    cmor_CV_checkFurtherInfoURL()                     */
+/************************************************************************/
+void cmor_CV_checkFurtherInfoURL(int var_id){
+    char szFurtherInfoURLTemplate[CMOR_MAX_STRING];
+    char szFurtherInfoURL[CMOR_MAX_STRING];
+    char copyURL[CMOR_MAX_STRING];
+    char szFurtherInfoBaseURL[CMOR_MAX_STRING];
+    char szFurtherInfoFileURL[CMOR_MAX_STRING];
+
+    char *baseURL;
+    char *fileURL;
+    char *szToken;
+
+    szFurtherInfoURL[0]='\0';
+    szFurtherInfoFileURL[0]='\0';
+    szFurtherInfoBaseURL[0]='\0';
+
+/* -------------------------------------------------------------------- */
+/* Retrieve default Further URL info                                    */
+/* -------------------------------------------------------------------- */
+    strncpy(szFurtherInfoURLTemplate, cmor_current_dataset.furtherinfourl,
+            CMOR_MAX_STRING);
+
+/* -------------------------------------------------------------------- */
+/*    If this is a string with no token we have nothing to do.          */
+/* -------------------------------------------------------------------- */
+    szToken = strtok(szFurtherInfoURLTemplate, "<>");
+    if( strcmp(szToken, cmor_current_dataset.furtherinfourl) == 0) {
+        return;
+    }
+    strncpy(szFurtherInfoURLTemplate, cmor_current_dataset.furtherinfourl,
+            CMOR_MAX_STRING);
+/* -------------------------------------------------------------------- */
+/*    Separate path template from file template.                        */
+/* -------------------------------------------------------------------- */
+    strcpy(copyURL, szFurtherInfoURLTemplate);
+    baseURL = dirname(copyURL);
+    cmor_CreateFromTemplate( var_id, baseURL,
+            szFurtherInfoBaseURL, "/" );
+
+    strcpy(copyURL, szFurtherInfoURLTemplate);
+    fileURL = basename(copyURL);
+
+    cmor_CreateFromTemplate( var_id, fileURL,
+                             szFurtherInfoFileURL, "." );
+
+    strncpy(szFurtherInfoURL, szFurtherInfoBaseURL, CMOR_MAX_STRING);
+    strcat(szFurtherInfoURL, "/");
+    strncat(szFurtherInfoURL, szFurtherInfoFileURL, strlen(szFurtherInfoFileURL));
+
+
+    cmor_set_cur_dataset_attribute_internal(GLOBAL_ATT_FURTHERINFOURL,
+            szFurtherInfoURL, 0);
+}
+
+/************************************************************************/
+/*                      cmor_CV_checkSourceType()                       */
+/************************************************************************/
+void cmor_CV_checkSourceType(cmor_CV_def_t *CV_exp, char *szExptID){
+    int nObjects;
+    cmor_CV_def_t *CV_exp_attr;
+    char szAddSourceType[CMOR_MAX_STRING];
+    char szReqSourceType[CMOR_MAX_STRING];
+    char szAddSourceTypeCpy[CMOR_MAX_STRING];
+    char szReqSourceTypeCpy[CMOR_MAX_STRING];
+
+    char szSourceType[CMOR_MAX_STRING];
+    char msg[CMOR_MAX_STRING];
+    char CV_Filename[CMOR_MAX_STRING];
+    int i;
+    char *szTokenRequired;
+    char *szTokenAdd;
+    int nbSourceType;
+    char *ptr;
+    int nbGoodType=0;
+
+    cmor_get_cur_dataset_attribute(CV_INPUTFILENAME, CV_Filename);
+
+    szAddSourceType[0] = '\0';
+    nObjects = CV_exp->nbObjects;
+    // Parse all experiment attributes get source type related attr.
+    for (i = 0; i < nObjects; i++) {
+        CV_exp_attr = &CV_exp->oValue[i];
+        if(strcmp(CV_exp_attr->key, CV_EXP_ATTR_ADDSOURCETYPE) == 0 ) {
+            strcpy(szAddSourceType, CV_exp_attr->szValue);
+            strcpy(szAddSourceTypeCpy, CV_exp_attr->szValue);
+
+            continue;
+        }
+        if(strcmp(CV_exp_attr->key, CV_EXP_ATTR_REQSOURCETYPE) == 0) {
+            strcpy(szReqSourceType, CV_exp_attr->szValue);
+            strcpy(szReqSourceTypeCpy, CV_exp_attr->szValue);
+
+            continue;
+        }
+
+    }
+    if(cmor_has_cur_dataset_attribute(GLOBAL_ATT_SOURCE_TYPE) == 0) {
+        cmor_get_cur_dataset_attribute(GLOBAL_ATT_SOURCE_TYPE, szSourceType);
+    }
+    // Count how many are token  we have.
+    ptr= szSourceType;
+    if( szSourceType[0] != '\0') {
+      nbSourceType = 1;
+    } else {
+        return;
+    }
+    while((ptr = strpbrk(ptr, " ")) != NULL) {
+        nbSourceType++;
+        ptr++;
+    }
+
+    szTokenRequired = strtok(szReqSourceType, " ");
+    while( szTokenRequired != NULL ) {
+        if( strstr(szSourceType, szTokenRequired) == NULL ) {
+
+            snprintf( msg, CMOR_MAX_STRING,
+                    "The following source type(s) \"%s\" are required and\n! "
+                    "some source type(s) could not be found in your input file. \n! "
+                    "Your file contains a source type of \"%s\".\n! "
+                    "Check your Control Vocabulary file \"%s\".\n! ",
+                    szReqSourceTypeCpy,
+                    szSourceType,
+                    CV_Filename);
+
+            cmor_handle_error( msg, CMOR_CRITICAL );
+            cmor_pop_traceback(  );
+            return;
+        } else {
+            nbGoodType++;
+        }
+        szTokenRequired = strtok(NULL, " ");
+    }
+
+    szTokenAdd = strtok(szAddSourceType, " ");
+    while( szTokenAdd != NULL ) {
+        if(strcmp(szTokenAdd, "CHEM") == 0){
+            if( strstr(szSourceType, szTokenAdd) != NULL) {
+                nbGoodType++;
+            }
+        } else if(strcmp(szTokenAdd, "AER") == 0){
+            if( strstr(szSourceType, szTokenAdd) != NULL) {
+                nbGoodType++;
+            }
+        } else if( strstr(szSourceType, szTokenAdd) != NULL) {
+            nbGoodType++;
+        }
+        szTokenAdd= strtok(NULL, " ");
+    }
+
+    if( nbGoodType != nbSourceType ) {
+        snprintf( msg, CMOR_MAX_STRING,
+                "You source_type attribute contains invalid source types\n! "
+                "Your source type is set to \"%s\".  The required source types\n! "
+                "are \"%s\" and possible additional source types are \"%s\" \n! "
+                "Check your Control Vocabulary file \"%s\".\n! %d, %d",
+                szSourceType,
+                szReqSourceTypeCpy,
+                szAddSourceTypeCpy,
+
+                CV_Filename, nbGoodType, nbSourceType);
+
+        cmor_handle_error( msg, CMOR_CRITICAL );
+        cmor_pop_traceback(  );
+        return;
+    }
+
+}
+/************************************************************************/
+/*                      cmor_CV_checkSourceID()                         */
+/************************************************************************/
+void cmor_CV_checkSourceID(cmor_CV_def_t *CV){
+    cmor_CV_def_t *CV_source_ids;
+    cmor_CV_def_t *CV_source_id = NULL;
+
+    char szSource_ID[CMOR_MAX_STRING];
+    char szSource[CMOR_MAX_STRING];
+
+    char msg[CMOR_MAX_STRING];
+    char CV_Filename[CMOR_MAX_STRING];
+    int rc;
+    int i;
+
+    cmor_add_traceback("cmor_CV_checkSourceID");
+
+    cmor_get_cur_dataset_attribute(CV_INPUTFILENAME, CV_Filename);
+/* -------------------------------------------------------------------- */
+/*  Find experiment_ids dictionary in Control Vocabulary                */
+/* -------------------------------------------------------------------- */
+    CV_source_ids = cmor_CV_rootsearch(CV, CV_KEY_SOURCE_IDS);
+
+    if(CV_source_ids == NULL){
+        snprintf( msg, CMOR_MAX_STRING,
+                "Your \"source_ids\" key could not be found in\n! "
+                "your Control Vocabulary file.(%s)\n! ",
+                CV_Filename);
+
+        cmor_handle_error( msg, CMOR_CRITICAL );
+        cmor_pop_traceback(  );
+        return;
+    }
+
+
+    // retrieve source_id
+    rc = cmor_get_cur_dataset_attribute(GLOBAL_ATT_SOURCE_ID, szSource_ID);
+    if( rc !=  0 ){
+        snprintf( msg, CMOR_MAX_STRING,
+                "You \"%s\" is not defined, check your required attributes\n! "
+                "See Control Vocabulary JSON file.(%s)\n! ",
+                GLOBAL_ATT_SOURCE_ID,
+                CV_Filename);
+        cmor_handle_error( msg, CMOR_CRITICAL );
+        cmor_pop_traceback(  );
+    }
+
+    // Validate  source_id
+    for (i = 0; i < CV_source_ids->nbObjects; i++) {
+        CV_source_id = &CV_source_ids->oValue[i];
+        if (strncmp(CV_source_id->key, szSource_ID, CMOR_MAX_STRING) == 0) {
+            // Make sure that "source" exist.
+            if(cmor_has_cur_dataset_attribute(GLOBAL_ATT_SOURCE) != 0 ) {
+                cmor_set_cur_dataset_attribute_internal(GLOBAL_ATT_SOURCE,
+                        CV_source_id->szValue, 1);
+            }
+
+            rc = cmor_get_cur_dataset_attribute(GLOBAL_ATT_SOURCE, szSource);
+
+            if (strncmp(CV_source_id->szValue, szSource, CMOR_MAX_STRING) != 0) {
+                snprintf(msg, CMOR_MAX_STRING,
+                        "Your input attribute \"%s\" with value \n! \"%s\" "
+                                "will be replaced with "
+                                "value \n! \"%s\".\n! \n! \n!  "
+                                "See Control Vocabulary JSON file.(%s)\n! ",
+                                GLOBAL_ATT_SOURCE, szSource,
+                                CV_source_id->szValue,
+                                CV_Filename);
+                cmor_handle_error(msg, CMOR_WARNING);
+            }
+            break;
+        }
+    }
+    // We could not found the Source ID in the CV file
+    if( i == CV_source_ids->nbObjects) {
+
+
+        snprintf( msg, CMOR_MAX_STRING,
+                "The source_id, \"%s\",  which you specified in your \n! "
+                "input file could not be found in \n! "
+                "your Controlled Vocabulary file. (%s) \n! \n! "
+                "Please correct your input file or contact ???? to register\n! "
+                "a new source.  See ???? for further information about. ",
+                szSource_ID, CV_Filename);
+
+        cmor_handle_error(msg, CMOR_CRITICAL);
+    }
+    // Set/replace attribute.
+    cmor_set_cur_dataset_attribute_internal(GLOBAL_ATT_SOURCE_ID,
+            CV_source_id->key,1);
+    cmor_set_cur_dataset_attribute_internal(GLOBAL_ATT_SOURCE,
+            CV_source_id->szValue,1);
+
+    cmor_pop_traceback();
+    return;
+}
+
+/************************************************************************/
+/*                     cmor_CV_checkExperiment()                        */
+/************************************************************************/
+void cmor_CV_checkExperiment( cmor_CV_def_t *CV){
+    cmor_CV_def_t *CV_experiment_ids;
+    cmor_CV_def_t *CV_experiment;
+    cmor_CV_def_t *CV_experiment_attr;
+
+    char szExperiment_ID[CMOR_MAX_STRING];
+    char msg[CMOR_MAX_STRING];
+    char szValue[CMOR_MAX_STRING];
+    char CV_Filename[CMOR_MAX_STRING];
+    int rc;
+    int nObjects;
+    int i;
+
+    cmor_add_traceback("cmor_CV_checkExperiment");
+
+    cmor_get_cur_dataset_attribute(CV_INPUTFILENAME, CV_Filename);
+    cmor_get_cur_dataset_attribute(GLOBAL_ATT_EXPERIMENTID, szExperiment_ID);
+/* -------------------------------------------------------------------- */
+/*  Find experiment_ids dictionary in Control Vocabulary                */
+/* -------------------------------------------------------------------- */
+    CV_experiment_ids = cmor_CV_rootsearch(CV, CV_KEY_EXPERIMENT_IDS);
+    CV_experiment = cmor_CV_search_child_key( CV_experiment_ids,
+                                               szExperiment_ID);
+
+    if(CV_experiment == NULL){
+        snprintf( msg, CMOR_MAX_STRING,
+                "Your experiment_id \"%s\" defined in your input JSON file\n! "
+                "could not be found in your Control Vocabulary file.(%s)\n! ",
+                szExperiment_ID,
+                CV_Filename);
+        cmor_handle_error( msg, CMOR_CRITICAL );
+        cmor_pop_traceback(  );
+        return;
+    }
+
+    nObjects = CV_experiment->nbObjects;
+    // Parse all experiment attributes
+    for (i = 0; i < nObjects; i++) {
+        CV_experiment_attr = &CV_experiment->oValue[i];
+        rc = cmor_has_cur_dataset_attribute(CV_experiment_attr->key);
+        // Validate source type first
+        if(strcmp(CV_experiment_attr->key, GLOBAL_ATT_SOURCE_TYPE) == 0) {
+            cmor_CV_checkSourceType(CV_experiment, szExperiment_ID);
+            continue;
+        }
+        // Warn user if experiment value from input file is different than
+        // Control Vocabulary value.
+        // experiment from Control Vocabulary will replace User entry value.
+        if (rc == 0) {
+            cmor_get_cur_dataset_attribute(CV_experiment_attr->key, szValue);
+            if (strncmp(CV_experiment_attr->szValue, szValue, CMOR_MAX_STRING)
+                    != 0) {
+                snprintf(msg, CMOR_MAX_STRING,
+                        "Your input attribute \"%s\" with value \n! \"%s\" "
+                                "will be replaced with "
+                                "value \"%s\"\n! "
+                                "as defined for experiment_id \"%s\".\n! \n!  "
+                                "See Control Vocabulary JSON file.(%s)\n! ",
+                        CV_experiment_attr->key, szValue,
+                        CV_experiment_attr->szValue,
+                        CV_experiment->key,
+                        CV_Filename);
+                cmor_handle_error(msg, CMOR_WARNING);
+            }
+        }
+
+        // Set/replace attribute.
+        cmor_set_cur_dataset_attribute_internal(CV_experiment_attr->key,
+                CV_experiment_attr->szValue,1);
+    }
+    cmor_pop_traceback();
+    return;
+}
+
+/************************************************************************/
+/*                      cmor_CV_setInstitution()                        */
+/************************************************************************/
+void cmor_CV_setInstitution( cmor_CV_def_t *CV){
+    cmor_CV_def_t *CV_institution_ids;
+    cmor_CV_def_t *CV_institution;
+
+    char szInstitution_ID[CMOR_MAX_STRING];
+    char szInstitution[CMOR_MAX_STRING];
+
+    char msg[CMOR_MAX_STRING];
+    char CMOR_Filename[CMOR_MAX_STRING];
+    char CV_Filename[CMOR_MAX_STRING];
+    int rc;
+
+    cmor_add_traceback("cmor_CV_setInstitution");
+/* -------------------------------------------------------------------- */
+/*  Find current Insitution ID                                          */
+/* -------------------------------------------------------------------- */
+
+    cmor_get_cur_dataset_attribute(GLOBAL_ATT_INSTITUTION_ID, szInstitution_ID);
+    rc = cmor_has_cur_dataset_attribute(CMOR_INPUTFILENAME);
+    if (rc == 0) {
+        cmor_get_cur_dataset_attribute(CMOR_INPUTFILENAME, CMOR_Filename);
+    }
+    else {
+        CMOR_Filename[0] = '\0';
+    }
+    cmor_get_cur_dataset_attribute(CV_INPUTFILENAME, CV_Filename);
+
+/* -------------------------------------------------------------------- */
+/*  Find Institution dictionaries in Control Vocabulary                 */
+/* -------------------------------------------------------------------- */
+    CV_institution_ids = cmor_CV_rootsearch(CV, CV_KEY_INSTITUTION_IDS);
+    CV_institution = cmor_CV_search_child_key( CV_institution_ids,
+                                               szInstitution_ID);
+
+    if(CV_institution == NULL){
+        snprintf( msg, CMOR_MAX_STRING,
+                "The institution_id, \"%s\",  which you specified in your \n! "
+                "input file (%s) could not be found in \n! "
+                "your Controlled Vocabulary file. (%s) \n! \n! "
+                "Please correct your input file or contact ???? to register\n! "
+                "a new institution_id.  See ???? for further information about\n! "
+                "the \"institution_id\" and \"institution\" global attributes.  " ,
+                szInstitution_ID, CMOR_Filename, CV_Filename);
+        cmor_handle_error( msg, CMOR_CRITICAL );
+        cmor_pop_traceback(  );
+        return;
+    }
+/* -------------------------------------------------------------------- */
+/* Did the user defined an Institution Attribute?                       */
+/* -------------------------------------------------------------------- */
+
+    rc = cmor_has_cur_dataset_attribute( GLOBAL_ATT_INSTITUTION );
+    if( rc == 0 ) {
+/* -------------------------------------------------------------------- */
+/* Retrieve institution and compare with the one we have in the         */
+/* Control Vocabulary file.  If it does not matche tell the user        */
+/* the we will supersede his defintion with the one in the Control      */
+/* Vocabulary file.                                                     */
+/* -------------------------------------------------------------------- */
+        cmor_get_cur_dataset_attribute(GLOBAL_ATT_INSTITUTION, szInstitution);
+
+/* -------------------------------------------------------------------- */
+/*  Check if an institution has been defined! If not we exit.           */
+/* -------------------------------------------------------------------- */
+        if(CV_institution->szValue[0] == '\0'){
+            snprintf( msg, CMOR_MAX_STRING,
+                    "There is no institution associated to institution_id \"%s\"\n! "
+                    "in your Control Vocabulary file.\n! "
+                    "Check your institution_ids dictionary!!\n! ",
+                            szInstitution_ID);
+            cmor_handle_error( msg, CMOR_CRITICAL );
+            cmor_pop_traceback(  );
+            return;
+        }
+/* -------------------------------------------------------------------- */
+/*  Check if they have the same string                                  */
+/* -------------------------------------------------------------------- */
+        if(strncmp(szInstitution, CV_institution->szValue, CMOR_MAX_STRING) != 0){
+            snprintf( msg, CMOR_MAX_STRING,
+                    "Your input attribute institution \"%s\" will be replaced with \n! "
+                    "\"%s\" as defined in your Control Vocabulary file.\n! ",
+                    szInstitution, CV_institution->szValue);
+            cmor_handle_error( msg, CMOR_WARNING );
+        }
+    }
+/* -------------------------------------------------------------------- */
+/*   Set institution according to the Control Vocabulary                */
+/* -------------------------------------------------------------------- */
+    cmor_set_cur_dataset_attribute_internal(GLOBAL_ATT_INSTITUTION,
+                                            CV_institution->szValue, 1);
+    cmor_pop_traceback();
+    return;
+}
+
+/************************************************************************/
+/*                    cmor_CV_ValidateAttribute()                       */
+/*                                                                      */
+/*  Search for attribute and verify that values is within a list        */
+/*                                                                      */
+/*    i.e. "mip_era": [ "CMIP6", "CMIP5" ]                              */
+/************************************************************************/
+int cmor_CV_ValidateAttribute(cmor_CV_def_t *CV, char *szKey){
+    cmor_CV_def_t *attr_CV;
+    char szValue[CMOR_MAX_STRING];
+    char msg[CMOR_MAX_STRING];
+    char CV_Filename[CMOR_MAX_STRING];
+    char szValids[CMOR_MAX_STRING*2];
+    char szOutput[CMOR_MAX_STRING*2];
+    int i;
+    regex_t regex;
+    int reti;
+    int ierr;
+
+    cmor_add_traceback( "cmor_CV_ValidateAttribute" );
+
+    szValids[0] = '\0';
+    szOutput[0] = '\0';
+    attr_CV = cmor_CV_rootsearch(CV, szKey);
+    cmor_get_cur_dataset_attribute(CV_INPUTFILENAME, CV_Filename);
+
+/* -------------------------------------------------------------------- */
+/* This attribute does not need validation.                             */
+/* -------------------------------------------------------------------- */
+    if(attr_CV == NULL) {
+        cmor_pop_traceback(  );
+        return(0);
+    }
+
+    ierr = cmor_get_cur_dataset_attribute( szKey, szValue );
+    for(i=0; i< attr_CV->anElements; i++) {
+        reti = regcomp(&regex, attr_CV->aszValue[i],0);
+        if(reti) {
+            snprintf( msg, CMOR_MAX_STRING,
+                    "You regular expression \"%s\" is invalid. \n!"
+                    "Check your Control Vocabulary file \"%s\".\n! ",
+                    attr_CV->aszValue[i], CV_Filename );
+            regfree(&regex);
+            cmor_handle_error( msg, CMOR_NORMAL );
+            cmor_pop_traceback(  );
+            return(-1);
+
+        }
+/* -------------------------------------------------------------------- */
+/*        Execute regular expression                                    */
+/* -------------------------------------------------------------------- */
+        reti = regexec(&regex, szValue, 0, NULL, 0);
+        if(!reti) {
+            regfree(&regex);
+            break;
+        }
+        regfree(&regex);
+    }
+
+    if( ierr != 0) {
+        return(-1);
+    }
+/* -------------------------------------------------------------------- */
+/* We could not validate this attribute, exit.                          */
+/* -------------------------------------------------------------------- */
+    if( i == (attr_CV->anElements) ) {
+        for(i=0; i< attr_CV->anElements; i++) {
+            strcat(szValids, "\"");
+            strncat(szValids, attr_CV->aszValue[i], CMOR_MAX_STRING);
+            strcat(szValids, "\" ");
+        }
+        snprintf( szOutput, 132, "%s ...", szValids);
+
+        snprintf( msg, CMOR_MAX_STRING,
+                  "The attribute \"%s\" could not be validated. \n! "
+                  "The current input value is "
+                  "\"%s\" which is not valid \n! "
+                  "Valid values must match the regular expression:"
+                  "\n! \t[%s] \n! \n! "
+                  "Check your Control Vocabulary file \"%s\".\n! ",
+                  szKey, szValue, szOutput, CV_Filename);
+
+        cmor_handle_error( msg, CMOR_NORMAL );
+        cmor_pop_traceback(  );
+        return(-1);
+    }
+    cmor_pop_traceback(  );
+    return(0);
+}
+
+/************************************************************************/
+/*                        cmor_CV_checkGrids()                          */
+/************************************************************************/
+void cmor_CV_checkGrids(cmor_CV_def_t *CV) {
+    int rc;
+    char szGridLabel[CMOR_MAX_STRING];
+    char szGridResolution[CMOR_MAX_STRING];
+    char msg[CMOR_MAX_STRING];
+    char CV_Filename[CMOR_MAX_STRING];
+
+    cmor_CV_def_t *CV_grid_labels;
+    cmor_CV_def_t *CV_grid_resolution;
+    cmor_CV_def_t *CV_obj_gridres;
+    int i;
+
+    cmor_add_traceback( "cmor_CV_checkGrids" );
+
+    rc = cmor_has_cur_dataset_attribute( GLOBAL_ATT_GRID_LABEL );
+    if( rc == 0 ) {
+        cmor_get_cur_dataset_attribute( GLOBAL_ATT_GRID_LABEL,
+                                        szGridLabel);
+    }
+/* -------------------------------------------------------------------- */
+/*  "gr followed by a digit is a valid grid (regrid)                    */
+/* -------------------------------------------------------------------- */
+    if( ( strcmp(szGridLabel, CV_KEY_GRIDLABEL_GR ) >= '0') &&
+        ( strcmp(szGridLabel, CV_KEY_GRIDLABEL_GR ) <= '9')) {
+        strcpy(szGridLabel, CV_KEY_GRIDLABEL_GR);
+    }
+
+    rc = cmor_has_cur_dataset_attribute( GLOBAL_ATT_GRID_RESOLUTION );
+    if( rc == 0 ) {
+        cmor_get_cur_dataset_attribute( GLOBAL_ATT_GRID_RESOLUTION,
+                                        szGridResolution);
+    }
+
+    CV_grid_labels = cmor_CV_rootsearch(CV, CV_KEY_GRID_LABELS);
+
+    CV_grid_resolution = cmor_CV_search_child_key( CV_grid_labels,
+                                               szGridLabel);
+    cmor_get_cur_dataset_attribute(CV_INPUTFILENAME, CV_Filename);
+    if(CV_grid_resolution == NULL ) {
+        snprintf( msg, CMOR_MAX_STRING,
+                  "Your attribute grid_label is set to \"%s\" which is invalid."
+                  "\n! \n! Check your Control Vocabulary file \"%s\".\n! ",
+                  szGridLabel, CV_Filename);
+        cmor_handle_error( msg, CMOR_CRITICAL );
+        cmor_pop_traceback();
+        return;
+
+    }
+    CV_obj_gridres = CV_grid_resolution->oValue;
+    if( strcmp(CV_obj_gridres->key, CV_KEY_GRID_RESOLUTION )== 0 ) {
+        if(CV_obj_gridres->anElements > 0) {
+            for( i = 0; i < CV_obj_gridres->anElements; i++ ) {
+                rc= strcmp(CV_obj_gridres->aszValue[i], szGridResolution);
+                if(rc == 0) {
+                    break;
+                }
+            }
+            if( i == CV_obj_gridres->anElements ) {
+                snprintf( msg, CMOR_MAX_STRING,
+                  "Your attribute grid_resolution is set to \"%s\" which is invalid."
+                  "\n! \n! Check your Control Vocabulary file \"%s\".\n! ",
+                   szGridResolution, CV_Filename);
+                cmor_handle_error( msg, CMOR_CRITICAL );
+                cmor_pop_traceback();
+                return;
+
+            }
+        } else {
+            if( strcmp(CV_grid_resolution->oValue->szValue, szGridResolution )
+                    != 0 ) {
+                snprintf( msg, CMOR_MAX_STRING,
+                        "Your attribute grid_resolution is set to \"%s\" which is invalid."
+                              "\n! \n! Check your Control Vocabulary file \"%s\".\n! ",
+                              szGridResolution, CV_Filename);
+                cmor_handle_error( msg, CMOR_CRITICAL );
+                cmor_pop_traceback();
+                return;
+            }
+        }
+    }
+    cmor_pop_traceback(  );
+    return;
+}
+
+/************************************************************************/
+/*                    cmor_CV_CheckGblAttributes()                      */
+/************************************************************************/
+void cmor_CV_checkGblAttributes( cmor_CV_def_t *CV ) {
+    cmor_CV_def_t *required_attrs;
+    int i;
+    int rc;
+    char msg[CMOR_MAX_STRING];
+    int bCriticalError = FALSE;
+    cmor_add_traceback( "cmor_CV_checkGblAttributes" );
+    required_attrs = cmor_CV_rootsearch(CV, CV_KEY_REQUIRED_GBL_ATTRS);
+    if( required_attrs != NULL) {
+        for(i=0; i< required_attrs->anElements; i++) {
+            rc = cmor_has_cur_dataset_attribute( required_attrs->aszValue[i] );
+            if( rc != 0) {
+                snprintf( msg, CMOR_MAX_STRING,
+                          "Your Control Vocabulary file specifies one or more\n! "
+                          "required attributes.  CMOR found that the following\n! "
+                          "attribute was not properly set.\n! \n! "
+                          "Please set attribute: \"%s\" in your input JSON file.",
+                          required_attrs->aszValue[i] );
+                cmor_handle_error( msg, CMOR_NORMAL );
+                bCriticalError = TRUE;
+            }
+            rc = cmor_CV_ValidateAttribute(CV, required_attrs->aszValue[i]);
+            if( rc != 0) {
+                bCriticalError = TRUE;
+            }
+        }
+    }
+    if( bCriticalError ) {
+        cmor_handle_error( "Please fix required attributes mentioned in\n! "
+                           "the warnings above and rerun. (aborting!)\n! "
+                           ,CMOR_CRITICAL );
+    }
+    cmor_pop_traceback(  );
+    return;
+}
+
+
+/************************************************************************/
+/*                       cmor_CV_set_entry()                            */
+/************************************************************************/
+int cmor_CV_set_entry(cmor_table_t* table,
+                      json_object *value) {
+    extern int cmor_ntables;
+    int nCVId;
+    int nbObjects = 0;
+    cmor_CV_def_t *CV;
+    cmor_CV_def_t *newCV;
+    cmor_table_t *cmor_table;
+    cmor_table = &cmor_tables[cmor_ntables];
+
+    cmor_add_traceback("cmor_CV_set_entry");
+    cmor_is_setup();
+/* -------------------------------------------------------------------- */
+/* CV 0 contains number of objects                                      */
+/* -------------------------------------------------------------------- */
+    nbObjects++;
+    newCV = (cmor_CV_def_t *) realloc(cmor_table->CV, sizeof(cmor_CV_def_t));
+
+    cmor_table->CV = newCV;
+    CV=newCV;
+    cmor_CV_init(CV, cmor_ntables);
+    cmor_table->CV->nbObjects=nbObjects;
+
+/* -------------------------------------------------------------------- */
+/*  Add all values and dictionaries to the M-tree                       */
+/*                                                                      */
+/*  {  { "a":[] }, {"a":""}, { "a":1 }, "a":"3", "b":"value" }....      */
+/*                                                                      */
+/*   Cv->objects->objects->list                                         */
+/*              ->objects->string                                       */
+/*              ->objects->integer                                      */
+/*              ->integer                                               */
+/*              ->string                                                */
+/*     ->list                                                           */
+/* -------------------------------------------------------------------- */
+    json_object_object_foreach(value, CVName, CVValue) {
+        nbObjects++;
+        newCV = (cmor_CV_def_t *) realloc(cmor_table->CV,
+                nbObjects * sizeof(cmor_CV_def_t));
+        cmor_table->CV = newCV;
+        nCVId = cmor_table->CV->nbObjects;
+
+        CV = &cmor_table->CV[nCVId];
+
+        cmor_CV_init(CV, cmor_ntables);
+        cmor_table->CV->nbObjects++;
+
+        if( CVName[0] == '#') {
+            continue;
+        }
+        cmor_CV_set_att(CV, CVName, CVValue);
+    }
+    CV = &cmor_table->CV[0];
+    CV->nbObjects = nbObjects;
+    cmor_pop_traceback();
+    return (0);
+}
+
+
+/************************************************************************/
+/*                       cmor_CV_checkTime()                            */
+/************************************************************************/
+void cmor_CV_checkISOTime(char *szAttribute) {
+    struct tm tm;
+    int rc;
+    char *szReturn;
+    char szDate[CMOR_MAX_STRING];
+    char msg[CMOR_MAX_STRING];
+
+    rc = cmor_has_cur_dataset_attribute(szAttribute );
+    if( rc == 0 ) {
+/* -------------------------------------------------------------------- */
+/*   Retrieve Date                                                      */
+/* -------------------------------------------------------------------- */
+        cmor_get_cur_dataset_attribute(szAttribute, szDate);
+    }
+/* -------------------------------------------------------------------- */
+/*    Check data format                                                 */
+/* -------------------------------------------------------------------- */
+    memset(&tm, 0, sizeof(struct tm));
+    szReturn=strptime(szDate, "%FT%H:%M:%SZ", &tm);
+    if(szReturn == NULL) {
+            snprintf( msg, CMOR_MAX_STRING,
+                      "Your global attribute "
+                      "\"%s\" set to \"%s\" is not a valid date.\n! "
+                      "ISO 8601 date format \"YYYY-MM-DDTHH:MM:SSZ\" is required."
+                      "\n! ", szAttribute, szDate);
+            cmor_handle_error( msg, CMOR_CRITICAL );
+            cmor_pop_traceback(  );
+            return;
+    }
+    cmor_pop_traceback(  );
+    return;
+}
diff --git a/Src/cmor_axes.c b/Src/cmor_axes.c
index 01c3369..9ce8914 100644
--- a/Src/cmor_axes.c
+++ b/Src/cmor_axes.c
@@ -6,1595 +6,2552 @@
 #include "cdmsint.h"
 #include <math.h>
 
-int cuErrOpts =CU_VERBOSE;
-
-int cmor_calendar_c2i(char *calendar, cdCalenType *ical) {
-  cmor_add_traceback("cmor_calendar_c2i");
-  cmor_is_setup();
-  if (strcmp(calendar,"gregorian")==0)*ical = cdMixed;
-  else if (strcmp(calendar,"standard")==0) *ical = cdMixed;
-  else if (strcmp(calendar,"proleptic_gregorian")==0) *ical = cdStandard;
-  else if (strcmp(calendar,"noleap")==0) *ical = cdNoLeap;
-  else if (strcmp(calendar,"365_day")==0) *ical = cdNoLeap;
-  else if (strcmp(calendar,"360_day")==0) *ical = cd360;
-  else if (strcmp(calendar,"julian")==0) *ical = cdJulian;
-  else if (strcmp(calendar,"none")==0) *ical = cdClim;
-  else {
-    cmor_pop_traceback();
-    return 1;
-  }
-  cmor_pop_traceback();
-  return 0;
-}
+int cuErrOpts = CU_VERBOSE;
 
-double cmor_convert_interval_to_seconds( double interv, char *inunits) {
-  /* this converts times values from some units to some others */
-
-  int i,oui,n;
-  char msg[CMOR_MAX_STRING];
-  char ctmp[CMOR_MAX_STRING];
-  char sshort[6];
-  extern ut_system *ut_read;
-  ut_unit *user_units=NULL, *cmor_units=NULL;
-  cv_converter *ut_cmor_converter=NULL;
-  double tmp;
-
-  cmor_add_traceback("cmor_convert_interval_to_seconds");
-
-  strcpy(msg,"seconds");
-
-  ut_trim(msg,UT_ASCII);
-  cmor_units = ut_parse(ut_read, msg,UT_ASCII);
-
-  sshort[5]='\0';
-  /* first we need to figure out the out units */
-  /* step 1 look for the since keyword */
-  n=strlen(inunits);
-  oui=-1;
-  for (i=0;i<n;i++) {
-    strncpy(sshort,&inunits[i],5);
-    if (strcmp(sshort,"since")==0) {oui=i;break;}
-  }
-  if (oui==-1) {
-    snprintf(msg,CMOR_MAX_STRING,"Time units conversion, output units must contain the 'since' word, you defined: %s",inunits);
-    cmor_handle_error(msg,CMOR_CRITICAL);
-  }
-
-  strncpy(msg,inunits,oui-1);
-  msg[oui-1]='\0';
-
-  /* ok at this point we need to convert this in some base units: seconds */
-  ut_trim(msg,UT_ASCII);
-
-  user_units = ut_parse(ut_read, msg, UT_ASCII);
-  if (ut_get_status() != UT_SUCCESS) {
-    snprintf(msg,CMOR_MAX_STRING,"In udunuits parsing user units: %s",msg);
-    cmor_handle_error(msg,CMOR_CRITICAL);
-  }
-  if (ut_are_convertible(cmor_units,user_units)==0 ) {
-    snprintf(ctmp,CMOR_MAX_STRING,"axis interval units (%s) are incompatible with seconds",msg);
-    cmor_handle_error(ctmp,CMOR_CRITICAL);
-    cmor_pop_traceback();
-    return 1;
-  }
-  ut_cmor_converter=ut_get_converter(user_units,cmor_units);
-  if (ut_get_status() != UT_SUCCESS) {
-    snprintf(msg,CMOR_MAX_STRING,"In udunuits getting converter");
-    cmor_handle_error(msg,CMOR_CRITICAL);
-  }
-  tmp = cv_convert_double(ut_cmor_converter,interv);
-  if (ut_get_status() != UT_SUCCESS) {
-    snprintf(msg,CMOR_MAX_STRING,"In udunuits converting");
-    cmor_handle_error(msg,CMOR_CRITICAL);
-  }
-  cv_free(ut_cmor_converter);
-  if (ut_get_status() != UT_SUCCESS) {
-    snprintf(msg,CMOR_MAX_STRING,"Udunits: Error freeing converter");
-    cmor_handle_error(msg,CMOR_CRITICAL);
-  }
-  ut_free(user_units);
-  if (ut_get_status() != UT_SUCCESS) {
-    snprintf(msg,CMOR_MAX_STRING,"Udunits: Error freeing units");
-    cmor_handle_error(msg,CMOR_CRITICAL);
-  }
-  ut_free(cmor_units);
-  if (ut_get_status() != UT_SUCCESS) {
-    snprintf(msg,CMOR_MAX_STRING,"Udunits: Error freeing units");
-    cmor_handle_error(msg,CMOR_CRITICAL);
-  }
-
-  cmor_pop_traceback();
-  return tmp;
-}
-int cmor_convert_time_units( char *inunits, char *outunits, char *loutunits) {
-  /* this converts times values from some units to some others */
-
-  int i,oui,iui,n;
-  char msg[CMOR_MAX_STRING];
-  char sshort[6];
-  int hasqm;
-
-  cmor_add_traceback("cmor_convert_time_units");
-  cmor_is_setup();
-
-  sshort[5]='\0';
-  /* first we need to figure out the out units */
-  /* step 1 look for the since keyword */
-  n=strlen(outunits);
-  oui=-1;
-  for (i=0;i<n;i++) {
-    strncpy(sshort,&outunits[i],5);
-    if (strcmp(sshort,"since")==0) {oui=i;break;}
-  }
-  if (oui==-1) {
-    snprintf(msg,CMOR_MAX_STRING,"Time units conversion, output units must contain the 'since' word");
-    cmor_handle_error(msg,CMOR_CRITICAL);
-  }
-
-  /* ok now check if output units have a "?" */
-  hasqm =-1;
-  for (i=oui+5;i<n;i++)  if (outunits[i]=='?') {hasqm=i;break;}
-
-  /* here we check for the since in user units */
-  n=strlen(inunits);
-  iui=-1;
-  for (i=0;i<n;i++) {
-    strncpy(sshort,&inunits[i],5);
-    if (strcmp(sshort,"since")==0) {iui=i;break;}
-  }
-  if (iui==-1) {
-    snprintf(msg,CMOR_MAX_STRING,"Time units conversion, input units must contain the 'since' word");
-    cmor_handle_error(msg,CMOR_CRITICAL);
-  }
-  /* now construct the output units in case of a ? */
-  if (hasqm!=-1) { /* there is a ? */
-    strncpy(loutunits,outunits,oui);
-    loutunits[oui]='\0';
-    strcpy(msg,&inunits[iui]);
-    strncat(loutunits,msg,CMOR_MAX_STRING-strlen(loutunits));
-  }
-  else { /* fully defined output units */
-    strncpy(loutunits,outunits,CMOR_MAX_STRING);
-  }
-  cmor_pop_traceback();
-  return 0;
+/************************************************************************/
+/*                         cmor_calendar_c2i()                          */
+/************************************************************************/
+int cmor_calendar_c2i( char *calendar, cdCalenType * ical ) {
+
+    cmor_add_traceback( "cmor_calendar_c2i" );
+    
+    cmor_is_setup(  );
+    
+    if( strcmp( calendar, "gregorian" ) == 0 )
+	*ical = cdMixed;
+    else if( strcmp( calendar, "standard" ) == 0 )
+	*ical = cdMixed;
+    else if( strcmp( calendar, "proleptic_gregorian" ) == 0 )
+	*ical = cdStandard;
+    else if( strcmp( calendar, "noleap" ) == 0 )
+	*ical = cdNoLeap;
+    else if( strcmp( calendar, "365_day" ) == 0 )
+	*ical = cdNoLeap;
+    else if( strcmp( calendar, "360_day" ) == 0 )
+	*ical = cd360;
+    else if( strcmp( calendar, "julian" ) == 0 )
+	*ical = cdJulian;
+    else if( strcmp( calendar, "none" ) == 0 )
+	*ical = cdClim;
+    else {
+	cmor_pop_traceback(  );
+	return ( 1 );
+    }
+    cmor_pop_traceback(  );
+    return ( 0 );
 }
 
-int cmor_convert_time_values( void *values_in, char type, int nvalues, double *values_out, char *inunits, char *outunits, char *calin, char *calout) {
-  /* this converts times values from some units to some others */
+/************************************************************************/
+/*                  cmor_convert_interval_to_seconds()                  */
+/************************************************************************/
+double cmor_convert_interval_to_seconds( double interv, char *inunits ) {
+    
+/* -------------------------------------------------------------------- */
+/*      this converts times values from some units                      */
+/*      to some others                                                  */
+/* -------------------------------------------------------------------- */
+    int i, oui, n;
+    char msg[CMOR_MAX_STRING];
+    char ctmp[CMOR_MAX_STRING];
+    char sshort[6];
+    extern ut_system *ut_read;
+    ut_unit *user_units = NULL, *cmor_units = NULL;
+    cv_converter *ut_cmor_converter = NULL;
+    double tmp;
+
+    cmor_add_traceback( "cmor_convert_interval_to_seconds" );
+
+    strcpy( msg, "seconds" );
+
+    ut_trim( msg, UT_ASCII );
+    cmor_units = ut_parse( ut_read, msg, UT_ASCII );
+
+    sshort[5] = '\0';
+    
+/* -------------------------------------------------------------------- */
+/*      first we need to figure out the out units                       */
+/*      step 1 look for the since keyword                               */
+/* -------------------------------------------------------------------- */
+    n = strlen( inunits );
+    oui = -1;
+    for( i = 0; i < n; i++ ) {
+	strncpy( sshort, &inunits[i], 5 );
+	if( strcmp( sshort, "since" ) == 0 ) {
+	    oui = i;
+	    break;
+	}
+    }
+    if( oui == -1 ) {
+	snprintf( msg, CMOR_MAX_STRING,
+		  "Time units conversion, output units must\n! "
+		  "contain the 'since' word, you defined: %s",
+		  inunits );
+	cmor_handle_error( msg, CMOR_CRITICAL );
+    }
 
-  int i;
-  char msg[CMOR_MAX_STRING];
-  char loutunits[CMOR_MAX_STRING];
-  double dtmp;
-  cdCalenType icali, icalo;
-  cdCompTime comptime;
+    strncpy( msg, inunits, oui - 1 );
+    msg[oui - 1] = '\0';
 
-  cmor_add_traceback("cmor_convert_time_values");
-  cmor_is_setup();
+/* -------------------------------------------------------------------- */
+/*      ok at this point we need to convert                             */
+/*      this in some base units: seconds                                */
+/* -------------------------------------------------------------------- */
+    ut_trim( msg, UT_ASCII );
 
+    user_units = ut_parse( ut_read, msg, UT_ASCII );
+    if( ut_get_status(  ) != UT_SUCCESS ) {
+	snprintf( msg, CMOR_MAX_STRING,
+		  "In udunuits parsing user units: %s", msg );
+	cmor_handle_error( msg, CMOR_CRITICAL );
+    }
+    if( ut_are_convertible( cmor_units, user_units ) == 0 ) {
+	snprintf( ctmp, CMOR_MAX_STRING,
+		  "axis interval units (%s) are incompatible with seconds",
+		  msg );
+	cmor_handle_error( ctmp, CMOR_CRITICAL );
+	cmor_pop_traceback(  );
+	return ( 1 );
+    }
+    ut_cmor_converter = ut_get_converter( user_units, cmor_units );
+    if( ut_get_status(  ) != UT_SUCCESS ) {
+	snprintf( msg, CMOR_MAX_STRING, "In udunuits getting converter" );
+	cmor_handle_error( msg, CMOR_CRITICAL );
+    }
+    tmp = cv_convert_double( ut_cmor_converter, interv );
+    if( ut_get_status(  ) != UT_SUCCESS ) {
+	snprintf( msg, CMOR_MAX_STRING, "In udunuits converting" );
+	cmor_handle_error( msg, CMOR_CRITICAL );
+    }
+    cv_free( ut_cmor_converter );
+    if( ut_get_status(  ) != UT_SUCCESS ) {
+	snprintf( msg, CMOR_MAX_STRING,
+		  "Udunits: Error freeing converter" );
+	cmor_handle_error( msg, CMOR_CRITICAL );
+    }
+    ut_free( user_units );
+    if( ut_get_status(  ) != UT_SUCCESS ) {
+	snprintf( msg, CMOR_MAX_STRING, "Udunits: Error freeing units" );
+	cmor_handle_error( msg, CMOR_CRITICAL );
+    }
+    ut_free( cmor_units );
+    if( ut_get_status(  ) != UT_SUCCESS ) {
+	snprintf( msg, CMOR_MAX_STRING, "Udunits: Error freeing units" );
+	cmor_handle_error( msg, CMOR_CRITICAL );
+    }
 
-  if (cmor_calendar_c2i(calin,&icali)!=0) {
-    snprintf(msg,CMOR_MAX_STRING,"Cannot convert times for calendar: %s",calin);
-    cmor_handle_error(msg,CMOR_NORMAL);
-    cmor_pop_traceback();
-    return 1;
-  }
-  if (cmor_calendar_c2i(calout,&icalo)!=0) {
-    snprintf(msg,CMOR_MAX_STRING,"Cannot convert times for calendar: %s",calout);
-    cmor_handle_error(msg,CMOR_NORMAL);
-    cmor_pop_traceback();
-    return 1;
-  }
-
-  i = cmor_convert_time_units( inunits, outunits, &loutunits[0]);
-  for (i=0;i<nvalues;i++) {
-     if (type=='d') dtmp = (double)((double *)values_in)[i];
-     else if (type=='f') dtmp = (double)((float *)values_in)[i];
-     else if (type=='l') dtmp = (double)((long *)values_in)[i];
-     else if (type=='i') dtmp = (double)((int *)values_in)[i];
-     else {
-       snprintf(msg,CMOR_MAX_STRING,"cannot convert time value from '%c' type",type);
-       cmor_handle_error(msg,CMOR_CRITICAL);
-     }
-    /* ok makes a comptime out of input */
-    cdRel2Comp(icali,&inunits[0],dtmp,&comptime);
-    /* ok now converts that back to a rel units with outunits */
-    cdComp2Rel(icalo,comptime,loutunits,&dtmp);
-    values_out[i]=dtmp;
-  }
-  cmor_pop_traceback();
-  return 0;
+    cmor_pop_traceback(  );
+    return ( tmp );
 }
 
-int cmor_set_axis_attribute(int id, char *attribute_name, char type, void *value)
-{
-  extern cmor_axis_t cmor_axes[];
-  char msg[CMOR_MAX_STRING];
-  int i,index;
-
-  cmor_add_traceback("cmor_set_axis_attribute");
-  cmor_is_setup();
-
-  index=-1;
-  cmor_trim_string(attribute_name,msg);
-  for (i=0;i<cmor_axes[id].nattributes;i++) {
-    if (strcmp(cmor_axes[id].attributes[i],msg)==0) {index=i;break;} /* we found it */
-  }
-  if (index==-1) {index=cmor_axes[id].nattributes; cmor_axes[id].nattributes+=1;}
-  strncpy(cmor_axes[id].attributes[index],msg,CMOR_MAX_STRING); /*stores the name */
-  cmor_axes[id].attributes_type[index]=type;
-  if (type=='c') {if (strlen(value)>0) strncpytrim(cmor_axes[id].attributes_values_char[index],value,CMOR_MAX_STRING);}
-  else if (type=='f')  cmor_axes[id].attributes_values_num[index] = (double)*(float*)value;
-  else if (type=='i')  cmor_axes[id].attributes_values_num[index] = (double)*(int*)value;
-  else if (type=='d') cmor_axes[id].attributes_values_num[index] = (double)*(double*)value;
-  else if (type=='l') cmor_axes[id].attributes_values_num[index] = (double)*(long*)value;
-  else {
-    snprintf(msg,CMOR_MAX_STRING,"unknown type %c allowed types are c,i,l,f,d, for attribute %s of axis %s (table: %s)",type,attribute_name,cmor_axes[id].id,cmor_tables[cmor_axes[id].ref_table_id].table_id);
-    cmor_handle_error(msg,CMOR_NORMAL);
-    cmor_pop_traceback();
-    return 1;
-  }
-  cmor_pop_traceback();
-  return 0;
-}
-int cmor_get_axis_attribute(int id, char *attribute_name, char type, void *value)
-{
-  extern cmor_axis_t cmor_axes[];
-  char msg[CMOR_MAX_STRING];
-  int i,index;
-  cmor_add_traceback("cmor_get_axis_attribute");
-  cmor_is_setup();
-  index=-1;
-  for (i=0;i<cmor_axes[id].nattributes;i++) {
-    if (strcmp(cmor_axes[id].attributes[i],attribute_name)==0) {index=i;break;} /* we found it */
-  }
-  if (index==-1) {
-    snprintf(msg,CMOR_MAX_STRING,"Attribute %s could not be found for axis %i (%s, table: %s)",attribute_name,id,cmor_axes[id].id,cmor_tables[cmor_axes[id].ref_table_id].table_id);
-    cmor_handle_error(msg,CMOR_NORMAL);
-    cmor_pop_traceback();
-    return 1;
-  }
-  type = cmor_axes[id].attributes_type[i];
-  if (type=='c')  strcpy(value,cmor_axes[id].attributes_values_char[index]);
-  else if (type=='f')  value = (float *)&cmor_axes[id].attributes_values_num[index];
-  else if (type=='i')  value = (int *)&cmor_axes[id].attributes_values_num[index];
-  else if (type=='d') value = (double *)&cmor_axes[id].attributes_values_num[index];
-  else if (type=='l') value = (long *)&cmor_axes[id].attributes_values_num[index];
-  cmor_pop_traceback();
-  return 0;
+
+/************************************************************************/
+/*                      cmor_convert_time_units()                       */
+/************************************************************************/
+int cmor_convert_time_units( char *inunits, char *outunits,
+			     char *loutunits ) {
+/* -------------------------------------------------------------------- */
+/*      this converts times values from some units to some others       */
+/* -------------------------------------------------------------------- */
+    int i, oui, iui, n;
+    char msg[CMOR_MAX_STRING];
+    char sshort[6];
+    int hasqm;
+
+    cmor_add_traceback( "cmor_convert_time_units" );
+    cmor_is_setup(  );
+
+    sshort[5] = '\0';
+    /* first we need to figure out the out units */
+    /* step 1 look for the since keyword */
+    n = strlen( outunits );
+    oui = -1;
+    for( i = 0; i < n; i++ ) {
+	strncpy( sshort, &outunits[i], 5 );
+	if( strcmp( sshort, "since" ) == 0 ) {
+	    oui = i;
+	    break;
+	}
+    }
+    if( oui == -1 ) {
+	snprintf( msg, CMOR_MAX_STRING,
+		  "Time units conversion, output units must contain\n! "
+	          "the 'since' word" );
+	cmor_handle_error( msg, CMOR_CRITICAL );
+    }
+
+    /* ok now check if output units have a "?" */
+    hasqm = -1;
+    for( i = oui + 5; i < n; i++ )
+	if( outunits[i] == '?' ) {
+	    hasqm = i;
+	    break;
+	}
+
+    /* here we check for the since in user units */
+    n = strlen( inunits );
+    iui = -1;
+    for( i = 0; i < n; i++ ) {
+	strncpy( sshort, &inunits[i], 5 );
+	if( strcmp( sshort, "since" ) == 0 ) {
+	    iui = i;
+	    break;
+	}
+    }
+    if( iui == -1 ) {
+	snprintf( msg, CMOR_MAX_STRING,
+		  "Time units conversion, input units must contain the\n! "
+	          "'since' word" );
+	cmor_handle_error( msg, CMOR_CRITICAL );
+    }
+    /* now construct the output units in case of a ? */
+    if( hasqm != -1 ) {		/* there is a ? */
+	strncpy( loutunits, outunits, oui );
+	loutunits[oui] = '\0';
+	strcpy( msg, &inunits[iui] );
+	strncat( loutunits, msg, CMOR_MAX_STRING - strlen( loutunits ) );
+    } else {			/* fully defined output units */
+	strncpy( loutunits, outunits, CMOR_MAX_STRING );
+    }
+    cmor_pop_traceback(  );
+    return ( 0 );
 }
-int cmor_has_axis_attribute(int id, char *attribute_name)
-{
-  extern cmor_axis_t cmor_axes[];
-  int i,index;
-  cmor_add_traceback("cmor_has_axis_attribute");
-  cmor_is_setup();
-  index=-1;
-  for (i=0;i<cmor_axes[id].nattributes;i++) {
-    if (strcmp(cmor_axes[id].attributes[i],attribute_name)==0) {index=i;break;} /* we found it */
-  }
-  if (index==-1) {
-    cmor_pop_traceback();
-    return 1;
-  }
-  cmor_pop_traceback();
-  return 0;
+
+
+/************************************************************************/
+/*                      cmor_convert_time_values()                      */
+/************************************************************************/
+int cmor_convert_time_values( void *values_in, char type, int nvalues,
+			      double *values_out, char *inunits,
+			      char *outunits, char *calin, char *calout ) {
+/* -------------------------------------------------------------------- */
+/*      this converts times values from some units to some others       */
+/* -------------------------------------------------------------------- */
+    int i;
+    char msg[CMOR_MAX_STRING];
+    char loutunits[CMOR_MAX_STRING];
+    double dtmp;
+    cdCalenType icali, icalo;
+    cdCompTime comptime;
+
+    cmor_add_traceback( "cmor_convert_time_values" );
+    cmor_is_setup(  );
+
+
+    if( cmor_calendar_c2i( calin, &icali ) != 0 ) {
+	snprintf( msg, CMOR_MAX_STRING,
+		  "Cannot convert times for calendar: %s", calin );
+	cmor_handle_error( msg, CMOR_NORMAL );
+	cmor_pop_traceback(  );
+	return ( 1 );
+    }
+    if( cmor_calendar_c2i( calout, &icalo ) != 0 ) {
+	snprintf( msg, CMOR_MAX_STRING,
+		  "Cannot convert times for calendar: %s", calout );
+	cmor_handle_error( msg, CMOR_NORMAL );
+	cmor_pop_traceback(  );
+	return ( 1 );
+    }
+
+    i = cmor_convert_time_units( inunits, outunits, &loutunits[0] );
+    for( i = 0; i < nvalues; i++ ) {
+	if( type == 'd' )
+	    dtmp = ( double ) ( ( double * ) values_in )[i];
+	else if( type == 'f' )
+	    dtmp = ( double ) ( ( float * ) values_in )[i];
+	else if( type == 'l' )
+	    dtmp = ( double ) ( ( long * ) values_in )[i];
+	else if( type == 'i' )
+	    dtmp = ( double ) ( ( int * ) values_in )[i];
+	else {
+	    snprintf( msg, CMOR_MAX_STRING,
+		      "cannot convert time value from '%c' type", type );
+	    cmor_handle_error( msg, CMOR_CRITICAL );
+	}
+/* -------------------------------------------------------------------- */
+/*      ok makes a comptime out of input                                */
+/* -------------------------------------------------------------------- */
+	cdRel2Comp( icali, &inunits[0], dtmp, &comptime );
+	
+/* -------------------------------------------------------------------- */
+/*      ok now converts that back to a rel units with outunits          */
+/* -------------------------------------------------------------------- */
+	cdComp2Rel( icalo, comptime, loutunits, &dtmp );
+	values_out[i] = dtmp;
+    }
+    cmor_pop_traceback(  );
+    return ( 0 );
 }
 
-int cmor_check_values_inside_bounds(double *values,double *bounds, int length, char *name) {
-  int i;
-  char msg[CMOR_MAX_STRING];
-  cmor_add_traceback("cmor_check_values_inside_bounds");
-  for (i=0;i<length;i++) {
-    /* printf("check within: %i: %lf < %lf < %lf ???\n",i,bounds[2*i],values[i],bounds[2*i+1]); */
-    if ( ((bounds[2*i]<values[i]) && (bounds[2*i+1]<values[i])) || ((bounds[2*i]>values[i]) && (bounds[2*i+1]>values[i])) ) {
-      snprintf(msg,CMOR_MAX_STRING,"axis %s has values not within bounds at indice: %i: %lf not within: %lf, %lf",name,i,values[i],bounds[2*i],bounds[2*i+1]);
-      cmor_handle_error(msg,CMOR_CRITICAL);
-    }
-  }
-  cmor_pop_traceback();
-  return 0;
+/************************************************************************/
+/*                      cmor_set_axis_attribute()                       */
+/************************************************************************/
+int cmor_set_axis_attribute( int id, char *attribute_name, char type,
+			     void *value ) {
+    extern cmor_axis_t cmor_axes[];
+    char msg[CMOR_MAX_STRING];
+    int i, index;
+
+    cmor_add_traceback( "cmor_set_axis_attribute" );
+    cmor_is_setup(  );
+
+    index = -1;
+    cmor_trim_string( attribute_name, msg );
+
+    for( i = 0; i < cmor_axes[id].nattributes; i++ ) {
+	if( strcmp( cmor_axes[id].attributes[i], msg ) == 0 ) {
+	    index = i;
+	    break;
+	}			/* we found it */
+    }
+
+    if( index == -1 ) {
+	index = cmor_axes[id].nattributes;
+	cmor_axes[id].nattributes += 1;
+    }
+/* --------------------------------------------------------------------- */
+/*      store the name                                                   */
+/* --------------------------------------------------------------------- */
+
+    strncpy( cmor_axes[id].attributes[index], msg, CMOR_MAX_STRING );
+    
+    cmor_axes[id].attributes_type[index] = type;
+    if( type == 'c' ) {
+	if( strlen( value ) > 0 )
+	    strncpytrim( cmor_axes[id].attributes_values_char[index],
+			 value, CMOR_MAX_STRING );
+    } else if( type == 'f' )
+	cmor_axes[id].attributes_values_num[index] =
+	    ( double ) *( float * ) value;
+    else if( type == 'i' )
+	cmor_axes[id].attributes_values_num[index] =
+	    ( double ) *( int * ) value;
+    else if( type == 'd' )
+	cmor_axes[id].attributes_values_num[index] =
+	    ( double ) *( double * ) value;
+    else if( type == 'l' )
+	cmor_axes[id].attributes_values_num[index] =
+	    ( double ) *( long * ) value;
+    else {
+	snprintf( msg, CMOR_MAX_STRING,
+		  "unknown type %c allowed types are c,i,l,f,d, for "
+		      "attribute %s of axis %s (table: %s)",
+		  type,
+		  attribute_name,
+		  cmor_axes[id].id,
+		  cmor_tables[cmor_axes[id].ref_table_id].szTable_id );
+	cmor_handle_error( msg, CMOR_NORMAL );
+	cmor_pop_traceback(  );
+	return ( 1 );
+    }
+    cmor_pop_traceback(  );
+    return ( 0 );
 }
-int cmor_isLongitude(cmor_axis_def_t *refaxis) {
-    if ((refaxis->axis=='X')&& (strncmp(refaxis->units,"degree",6)==0) && (strcmp(refaxis->units,"degrees")!=0))
-        return 1;
-    else 
-        return 0;
+
+
+/************************************************************************/
+/*                      cmor_get_axis_attribute()                       */
+/************************************************************************/
+int cmor_get_axis_attribute( int id, char *attribute_name, char type,
+			     void *value ) {
+    extern cmor_axis_t cmor_axes[];
+    char msg[CMOR_MAX_STRING];
+    int i, index;
+
+    cmor_add_traceback( "cmor_get_axis_attribute" );
+    cmor_is_setup(  );
+    index = -1;
+    for( i = 0; i < cmor_axes[id].nattributes; i++ ) {
+	if( strcmp( cmor_axes[id].attributes[i], attribute_name ) == 0 ) {
+	    index = i;
+	    break;
+	}			/* we found it */
+    }
+    if( index == -1 ) {
+	snprintf( msg, CMOR_MAX_STRING,
+		  "Attribute %s could not be found for axis %i (%s, table: %s)",
+		  attribute_name, id, cmor_axes[id].id,
+		  cmor_tables[cmor_axes[id].ref_table_id].szTable_id );
+	cmor_handle_error( msg, CMOR_NORMAL );
+	cmor_pop_traceback(  );
+	return ( 1 );
+    }
+    type = cmor_axes[id].attributes_type[i];
+    if( type == 'c' )
+	strcpy( value, cmor_axes[id].attributes_values_char[index] );
+    else if( type == 'f' )
+	value = ( float * ) &cmor_axes[id].attributes_values_num[index];
+    else if( type == 'i' )
+	value = ( int * ) &cmor_axes[id].attributes_values_num[index];
+    else if( type == 'd' )
+	value = ( double * ) &cmor_axes[id].attributes_values_num[index];
+    else if( type == 'l' )
+	value = ( long * ) &cmor_axes[id].attributes_values_num[index];
+    cmor_pop_traceback(  );
+    return ( 0 );
 }
-int cmor_check_monotonic(double *values,int length, char *name,int isbounds, int axis_id) {
-  int i,treatlon=0,j=0;
-  char msg[CMOR_MAX_STRING];
-  char msg2[CMOR_MAX_STRING];
-  cmor_axis_def_t *refaxis;
-  int mono;
-  int nloop;
-  double *values2,tmp;
-  //for (i=0;i<length;i++) printf("in monotonic: %i, %lf, %i\n",i,values[i],isbounds);
-  cmor_add_traceback("cmor_check_monotonic");
-
-  refaxis = &cmor_tables[cmor_axes[axis_id].ref_table_id].axes[cmor_axes[axis_id].ref_axis_id];
-  treatlon=cmor_isLongitude(refaxis);
-  /* ok ensure that values are monotonic */
-  if (isbounds==1) {
-    for (i=0;i<length/2-2;i++) {
-      if (((values[2*i]-values[2*i+2])/(values[2*i+2]-values[2*i+4]))<0.) { 
-	if (cmor_isLongitude(refaxis)==1) {
-	  treatlon=1;
-	}
-	else {
-	  snprintf(msg,CMOR_MAX_STRING,"axis %s (table: %s) has non monotonic bounds values : %lf, %lf, %lf",name,cmor_tables[cmor_axes[axis_id].ref_table_id].table_id,values[2*i],values[2*i+2],values[2*i+4]);
-      if (refaxis->climatology==0) {
-        cmor_handle_error(msg,CMOR_CRITICAL);
-      } else {
-        cmor_handle_error(msg,CMOR_WARNING);
-      }
-	}
-      }
-    }
-    /* printf("In is isbounds treatlon is: %i\n",treatlon); */
-    if ((refaxis->valid_max!=1.e20) && (treatlon)) {/* ok we are dealing with a longitude need to figure out the offset.... */
-      /* for (i=0;i<length;i++) printf("in monotonic: %i, %lf\n",i,values[i]); */
-     /* The VERY first thing is to make sure we are modulo 360 */
-      values2 = (double *) malloc(sizeof(double)*length);
-      for (i=0;i<length;i++) {
-	values2[i] = fmod(values[i], 360.);
-      }
-
-      /* for(i=0;i<length-1;i+=2) { */
-      /* 	fprintf(stderr,"moduloed: %i: %lf - %lf\n",i,values2[i],values2[i+1]); */
-      /* } */
-
-      /* Now keep looping until we do not have up and downs */
-      mono = -1;
-      nloop=0;
-      while (mono == -1 ) {
-	mono=1;
-	tmp=0;
-	for (i=0;i<length-4;i++) {
-	  tmp =  (values2[i]-values2[i+2])*(values2[i+2]-values2[i+4]);
-	  if (tmp<0) break;
-	}
-	if (tmp<0) { /* ok we flip floppped */
-	  tmp=values2[0];
-	  for (i=0;i<length-1;i++) {
-	    values2[i]=values2[i+1];
-	  }
-	  values2[i]=tmp;
-	  mono=-1;
-	  nloop+=1;
-	  if (nloop==length) {
-	    sprintf(msg,"longitude axis bounds are not monotonic, axis %s (table: %s)",cmor_axes[axis_id].id,cmor_tables[cmor_axes[axis_id].ref_table_id].table_id);
-	    cmor_handle_error(msg,CMOR_CRITICAL);
+
+
+/************************************************************************/
+/*                      cmor_has_axis_attribute()                       */
+/************************************************************************/
+int cmor_has_axis_attribute( int id, char *attribute_name ) {
+    extern cmor_axis_t cmor_axes[];
+    int i, index;
+
+    cmor_add_traceback( "cmor_has_axis_attribute" );
+    cmor_is_setup(  );
+    index = -1;
+    for( i = 0; i < cmor_axes[id].nattributes; i++ ) {
+	if( strcmp( cmor_axes[id].attributes[i], attribute_name ) == 0 ) {
+	    index = i;
+	    break;   /* we found it */
 	}
+    }
+    if( index == -1 ) {
+	cmor_pop_traceback(  );
+	return ( 1 );
+    }
+    cmor_pop_traceback(  );
+    return ( 0 );
+}
+
+/************************************************************************/
+/*                  cmor_check_values_inside_bounds()                   */
+/************************************************************************/
+int cmor_check_values_inside_bounds( double *values, double *bounds,
+				     int length, char *name ) {
+    int i;
+    char msg[CMOR_MAX_STRING];
+
+    cmor_add_traceback( "cmor_check_values_inside_bounds" );
+    for( i = 0; i < length; i++ ) {
+
+	if( ( ( bounds[2 * i] < values[i] )
+	      && ( bounds[2 * i + 1] < values[i] ) )
+	    || ( ( bounds[2 * i] > values[i] )
+		 && ( bounds[2 * i + 1] > values[i] ) ) ) {
+	    snprintf( msg, CMOR_MAX_STRING,
+		      "axis %s has values not within bounds at indice:\n! "
+		      "%i: %lf not within: %lf, %lf",
+		      name, i, values[i], bounds[2 * i],
+		      bounds[2 * i + 1] );
+	    cmor_handle_error( msg, CMOR_CRITICAL );
 	}
-      }
-      /* for(i=0;i<length-1;i+=2) { */
-      /* 	fprintf(stderr,"ordered: %i: %lf - %lf\n",i,values2[i],values2[i+1]); */
-      /* } */
-
-      if (length>2) {
-	if (values2[0]<values2[2]) {
-	  /* first keep adding 360 until each value is greater than the previous */
-	  for (i=0;i<length-2;i++) {
-	    while (values[i+2]<values[i]) {
-	      values[i+2]+=360.;
+    }
+    cmor_pop_traceback(  );
+    return ( 0 );
+}
+
+/************************************************************************/
+/*                          cmor_isLongitude()                          */
+/************************************************************************/
+int cmor_isLongitude( cmor_axis_def_t * refaxis ) {
+    if( ( refaxis->axis == 'X' )
+	&& ( strncmp( refaxis->units, "degree", 6 ) == 0 )
+	&& ( strcmp( refaxis->units, "degrees" ) != 0 ) )
+	return ( 1 );
+    else
+	return ( 0 );
+}
+
+/************************************************************************/
+/*                        cmor_check_monotonic()                        */
+/************************************************************************/
+int cmor_check_monotonic( double *values, int length, char *name,
+			  int isbounds, int axis_id ) {
+    int i, treatlon = 0, j = 0;
+    char msg[CMOR_MAX_STRING];
+    cmor_axis_def_t *refaxis;
+    int mono;
+    int nloop;
+    double *values2, tmp;
+
+    cmor_add_traceback( "cmor_check_monotonic" );
+
+    refaxis =
+	&cmor_tables[cmor_axes[axis_id].ref_table_id].
+	axes[cmor_axes[axis_id].ref_axis_id];
+    treatlon = cmor_isLongitude( refaxis );
+/* -------------------------------------------------------------------- */
+/*       ok ensure that values are monotonic                            */
+/* -------------------------------------------------------------------- */
+
+    if( isbounds == 1 ) {
+	for( i = 0; i < length / 2 - 2; i++ ) {
+	    if( ( ( values[2 * i] -
+		    values[2 * i + 2] ) / ( values[2 * i + 2] -
+					    values[2 * i + 4] ) ) < 0. ) {
+		if( cmor_isLongitude( refaxis ) == 1 ) {
+		    treatlon = 1;
+		} else {
+		    snprintf( msg, CMOR_MAX_STRING,
+			      "axis %s (table: %s) has non monotonic\n! "
+		              "bounds values : %lf, %lf, %lf",
+			      name,
+			      cmor_tables[cmor_axes[axis_id].ref_table_id].
+			      szTable_id, values[2 * i], values[2 * i + 2],
+			      values[2 * i + 4] );
+		    if( refaxis->climatology == 0 ) {
+			cmor_handle_error( msg, CMOR_CRITICAL );
+		    } else {
+			cmor_handle_error( msg, CMOR_WARNING );
+		    }
+		}
 	    }
-	  }
 	}
-	else {
-	  /* first keep adding 360 until each value is greater than the previous */
-	  for (i=0;i<length-2;i++) {
-	    while (values[i+2]>values[i]) {
-	      values[i+2]-=360.;
+
+/* -------------------------------------------------------------------- */
+/*      ok we are dealing with a longitude                              */
+/*      need to figure out the offset....                               */
+/* -------------------------------------------------------------------- */
+
+	if( ( refaxis->valid_max != 1.e20 ) && ( treatlon ) ) {	
+
+/* -------------------------------------------------------------------- */
+/*      The VERY first thing is to make sure we are modulo 360          */
+/* -------------------------------------------------------------------- */
+	    values2 = ( double * ) malloc( sizeof ( double ) * length );
+	    for( i = 0; i < length; i++ ) {
+		values2[i] = fmod( values[i], 360. );
 	    }
-	  }
-	}
-      }
-      free(values2);
-    
-      /* stored_direction*/
-      /* printf("------length: %i, storeddir: %c, vlue-1, vlaue0: %lf and %lf\n",length,refaxis->stored_direction,values[length-1],values[0]); */
 
-     if ((length>1) && (((refaxis->stored_direction=='i') && (values[length-1]<values[0])) || ((refaxis->stored_direction=='d') && (values[0]<values[length-1])))) { /* need to flip that axis */
-	if (cmor_axes[axis_id].revert==1) {
-	  snprintf(msg,CMOR_MAX_STRING, "bounds of axis %s (table: %s) need to be flipped but axis values did not need to. This is inconsistent",name,cmor_tables[cmor_axes[axis_id].ref_table_id].table_id);
-	  cmor_handle_error(msg,CMOR_CRITICAL);
+/* -------------------------------------------------------------------- */
+/*      Now keep looping until we do not have up and downs              */
+/* -------------------------------------------------------------------- */
+	    mono = -1;
+	    nloop = 0;
+	    while( mono == -1 ) {
+		mono = 1;
+		tmp = 0;
+		for( i = 0; i < length - 4; i++ ) {
+		    tmp =
+			( values2[i] -
+			  values2[i + 2] ) * ( values2[i + 2] - values2[i +
+									4] );
+		    if( tmp < 0 )
+			break;
+		}
+		if( tmp < 0 ) {	/* ok we flip floppped */
+		    tmp = values2[0];
+		    for( i = 0; i < length - 1; i++ ) {
+			values2[i] = values2[i + 1];
+		    }
+		    values2[i] = tmp;
+		    mono = -1;
+		    nloop += 1;
+		    if( nloop == length ) {
+			sprintf( msg,
+				 "longitude axis bounds are not monotonic,\n! "
+			        "axis %s (table: %s)",
+				 cmor_axes[axis_id].id,
+				 cmor_tables[cmor_axes[axis_id].
+					     ref_table_id].szTable_id );
+			cmor_handle_error( msg, CMOR_CRITICAL );
+		    }
+		}
+	    }
+
+	    if( length > 2 ) {
+		if( values2[0] < values2[2] ) {
+/* -------------------------------------------------------------------- */
+/*      First keep adding 360 until each value is                       */
+/*      greater than the previous                                       */
+/* -------------------------------------------------------------------- */
+		    for( i = 0; i < length - 2; i++ ) {
+			while( values[i + 2] < values[i] ) {
+			    values[i + 2] += 360.;
+			}
+		    }
+		} else {
+		    
+/* -------------------------------------------------------------------- */
+/*      first keep adding 360 until each value is                       */
+/*      greater than the previous                                       */
+/* -------------------------------------------------------------------- */
+		    for( i = 0; i < length - 2; i++ ) {
+			while( values[i + 2] > values[i] ) {
+			    values[i + 2] -= 360.;
+			}
+		    }
+		}
+	    }
+	    free( values2 );
+
+/* -------------------------------------------------------------------- */
+/*      stored_direction                                                */
+/* -------------------------------------------------------------------- */
+	    if( ( length > 1 ) && ( ( ( refaxis->stored_direction == 'i' ) &&
+				      ( values[length - 1] < values[0] ) ) ||
+				    ( ( refaxis->stored_direction == 'd' ) &&
+				      ( values[0] < values[length - 1] ) ) ) ) {
+/* -------------------------------------------------------------------- */
+/*      need to flip that axis                                          */
+/* -------------------------------------------------------------------- */
+		if( cmor_axes[axis_id].revert == 1 ) {
+		    snprintf( msg,
+		            CMOR_MAX_STRING,
+		            "bounds of axis %s (table: %s) need to be\n! "
+		            "flipped but axis values did not need to.\n! "
+		            "This is inconsistent",
+		            name,
+		            cmor_tables[cmor_axes[axis_id].ref_table_id].
+		            szTable_id );
+		    cmor_handle_error( msg, CMOR_CRITICAL );
+		}
+
+		for( i = 0; i < length / 2; i++ ) {
+		    tmp = values[i];
+		    values[i] = values[length - 1 - i];
+		    values[length - 1 - i] = tmp;
+		}
+	    }
+
+
+/* -------------------------------------------------------------------- */
+/*      ok make sure we have data spanning only 1 modulo                */
+/* -------------------------------------------------------------------- */
+	    if( abs( values[length - 1] - values[0] ) > 360. ) {
+		snprintf( msg, CMOR_MAX_STRING,
+			  "axis %s has bounds values spanning\n! "
+			  "more 360 degrees %lf, %lf",
+			  name, values[0], values[length - 1] );
+		cmor_handle_error( msg, CMOR_CRITICAL );
+	    }
+/* -------------------------------------------------------------------- */
+/*      ok now check the monotonic again                                */
+/* -------------------------------------------------------------------- */
+	    for( i = 0; i < length / 2 - 2; i++ ) {
+		if( ( ( values[2 * i] -
+			values[2 * i + 2] ) / ( values[2 * i + 2] -
+						values[2 * i + 4] ) ) <
+		    0. ) {
+		    snprintf( msg, CMOR_MAX_STRING,
+			      "axis %s (table: %s), has really non monotonic\n! "
+		            "bounds values : %lf, %lf, %lf",
+			      name,
+			      cmor_tables[cmor_axes[axis_id].ref_table_id].
+			      szTable_id, values[i], values[i + 2],
+			      values[i + 4] );
+		    cmor_handle_error( msg, CMOR_CRITICAL );
+		}
+	    }
+	    /* First of all need to check if bounds needs to be flipped */
+	    j = 1;
+	    for( i = 0; i < length - 2; i += 2 ) {
+		if( ( values[i] < values[i + 1] )
+		    && ( values[i] > values[i + 2] ) ) {
+		    sprintf( msg,
+			     "Axis: '%s' (table: %s), your bounds direction seems\n! "
+		            "to be decreasing, but within cell %i they are stored\n! "
+		            "increasingly: you have [%lf, %lf], but the next set\n! "
+		            "is: [%lf, %lf]",
+			     name,
+			     cmor_tables[cmor_axes[axis_id].ref_table_id].
+			     szTable_id, i, values[i], values[i + 1],
+			     values[i + 2], values[i + 3] );
+		    cmor_handle_error( msg, CMOR_WARNING );
+		    j++;
+		}
+		if( ( values[i] > values[i + 1] )
+		    && ( values[i] < values[i + 2] ) ) {
+		    sprintf( msg,
+			     "Axis: '%s' (table: %s), your bounds direction seems\n! "
+		            "to be increasing, but within cell %i they are stored\n! "
+		            "decreasingly: you have [%lf, %lf], but the next set\n! "
+		            "is: [%lf, %lf]",
+			     name,
+			     cmor_tables[cmor_axes[axis_id].ref_table_id].
+			     szTable_id, i, values[i], values[i + 1],
+			     values[i + 2], values[i + 3] );
+		    cmor_handle_error( msg, CMOR_WARNING );
+		    j++;
+		}
+	    }
+	    if( j == length / 2 ) {
+		for( i = 0; i < length; i += 2 ) {
+		    tmp = values[i];
+		    values[i] = values[i + 1];
+		    values[i + 1] = tmp;
+		}
+	    } else if( j != 1 ) {
+		sprintf( msg,
+			 "Some but not all of your longitude bounds need to be\n! "
+		        "flipped, see warnings ot see which ones, axis: %s \n! "
+		        "(table: %s)",
+			 cmor_axes[axis_id].id,
+			 cmor_tables[cmor_axes[axis_id].ref_table_id].
+			 szTable_id );
+		cmor_handle_error( msg, CMOR_CRITICAL );
+	    }
 	}
-	for (i=0;i<length/2;i++) {
-	  tmp = values[i];
-	  values[i] = values[length-1-i];
-	  values[length-1-i] = tmp;
+
+
+/* -------------------------------------------------------------------- */
+/*      do not do the following in case of climatological stuff....     */
+/* -------------------------------------------------------------------- */
+	if( refaxis->climatology == 0 ) {
+	    for( i = 0; i < length - 2; i++ ) {
+	        //printf("i=%d: value[i]%f, [i+1]%f [i+2]%f\n",i,
+	        //        values[i],values[i+1],values[i+2]);
+	        //printf("bool:%d",( values[i] < values[i + 1] ) &&
+                //      ( values[i + 2] < values[i + 1] ));
+                //printf("bool:%d",(( values[i] > values[i + 1] ) &&
+                //        ( values[i + 2] > values[i + 1] )));
+
+/* -------------------------------------------------------------------- */
+/*      also check that bounds do not overlap                           */
+/* -------------------------------------------------------------------- */
+		if( ( ( values[i] < values[i + 1] ) &&
+		      ( values[i + 2] < values[i + 1] ) ) ||
+		    ( ( values[i] > values[i + 1] ) &&
+		      ( values[i + 2] > values[i + 1] ) ) ) {
+		    snprintf( msg, CMOR_MAX_STRING,
+			      "axis %s (table: %s) has overlapping bounds values:\n! "
+		            "%lf, %lf, %lf at index: %i",
+			      name,
+			      cmor_tables[cmor_axes[axis_id].ref_table_id].
+			      szTable_id, values[i], values[i + 1],
+			      values[i + 2], i );
+		    cmor_handle_error( msg, CMOR_CRITICAL );
+		}
+	    }
+	    for( i = 0; i < length - 2; i = i + 2 ) {
+                //printf("i=%d: [i+1]%f [i+2]%f\n",i,values[i+1],values[i+2]);
+
+		if( values[i + 1] != values[i + 2] ) {
+		    snprintf( msg, CMOR_MAX_STRING,
+		            "axis %s (table: %s) has bounds values that leave gaps\n! "
+		            "(index %i): %lf, %lf, %lf",
+		            name,
+		            cmor_tables[cmor_axes[axis_id].ref_table_id].
+		            szTable_id, i, values[i], values[i + 1],
+		            values[i + 2] );
+		    cmor_handle_error( msg, CMOR_WARNING );
+		}
+	    }
 	}
-      }
-
-      /* for(i=0;i<length-1;i+=2) { */
-      /* 	fprintf(stderr,"finally: %i: %lf - %lf\n",i,values[i],values[i+1]); */
-      /* } */
-
-      /* ok make sure we have data spanning only 1 modulo */
-      if (abs(values[length-1]-values[0])>360.) {
-	snprintf(msg,CMOR_MAX_STRING,"axis %s has bounds values spanning more 360 degrees %lf, %lf",name,values[0],values[length-1]);
-	cmor_handle_error(msg,CMOR_CRITICAL);
-      }
-      /* ok now check the monotonic again */
-      for (i=0;i<length/2-2;i++) {
-	if (((values[2*i]-values[2*i+2])/(values[2*i+2]-values[2*i+4]))<0.) { 
-	  snprintf(msg,CMOR_MAX_STRING,"axis %s (table: %s), has really non monotonic bounds values : %lf, %lf, %lf",name,cmor_tables[cmor_axes[axis_id].ref_table_id].table_id,values[i],values[i+2],values[i+4]);
-	  cmor_handle_error(msg,CMOR_CRITICAL);
+    } else {
+	for( i = 0; i < length - 2; i++ ) {
+	    if( ( ( values[i] - values[i + 1] ) / ( values[i + 1] -
+						    values[i + 2] ) ) <
+		0. ) {
+		if( cmor_isLongitude( refaxis ) == 1 ) {
+		    treatlon = 1;
+		    break;
+		} else {
+		    snprintf( msg, CMOR_MAX_STRING,
+			      "axis %s (table: %s) has non monotonic values:\n! "
+		            "%lf, %lf and  %lf",
+			      name,
+			      cmor_tables[cmor_axes[axis_id].ref_table_id].
+			      szTable_id, values[i], values[i + 1],
+			      values[i + 2] );
+		    cmor_handle_error( msg, CMOR_CRITICAL );
+		}
+	    }
 	}
-      }
-      /* First of all need to check if bounds needs to be flipped */
-      j=1;
-      for (i=0;i<length-2;i+=2) {
-	if ((values[i]<values[i+1])&&(values[i]>values[i+2])) {
-	  sprintf(msg,"Axis: '%s' (table: %s), your bounds direction seems to be decreasing, but within cell %i they are stored increasingly: you have [%lf, %lf], but the next set is: [%lf, %lf]",name,cmor_tables[cmor_axes[axis_id].ref_table_id].table_id,i,values[i],values[i+1],values[i+2],values[i+3]);
-	  cmor_handle_error(msg,CMOR_WARNING);
-	  j++;
+/* -------------------------------------------------------------------- */
+/*       ok we are dealing with a longitude                             */
+/*       need to figure out the offset....                              */
+/* -------------------------------------------------------------------- */
+	if( ( refaxis->valid_max != 1.e20 ) && ( treatlon ) ) {	
+
+/* -------------------------------------------------------------------- */
+/*       The VERY first thing is to make sure we are modulo 360         */
+/* -------------------------------------------------------------------- */
+
+	    values2 = ( double * ) malloc( sizeof ( double ) * length );
+	    for( i = 0; i < length; i++ ) {
+		values2[i] = fmod( values[i], 360. );
+	    }
+
+/* -------------------------------------------------------------------- */
+/*      Now keep looping until we do not have up and downs              */
+/* -------------------------------------------------------------------- */
+	    mono = -1;
+	    nloop = 0;
+	    while( mono == -1 ) {
+		mono = 1;
+		tmp = 0;
+		for( i = 0; i < length - 2; i++ ) {
+		    tmp =
+			( values2[i] -
+			  values2[i + 1] ) * ( values2[i + 1] - values2[i +
+									2] );
+		    if( tmp < 0 )
+			break;
+		}
+/* -------------------------------------------------------------------- */
+/*      ok we flip floppped                                             */
+/* -------------------------------------------------------------------- */
+		if( tmp < 0 ) {	
+		    tmp = values2[0];
+		    for( i = 0; i < length - 1; i++ ) {
+			values2[i] = values2[i + 1];
+		    }
+		    values2[i] = tmp;
+		    mono = -1;
+		    nloop += 1;
+		    if( nloop == length ) {
+			sprintf( msg,
+			        "longitude axis is not monotonic (axis: %s, "
+			        "table: %s)",
+				 cmor_axes[axis_id].id,
+				 cmor_tables[cmor_axes[axis_id].
+					     ref_table_id].szTable_id );
+			cmor_handle_error( msg, CMOR_CRITICAL );
+		    }
+		}
+	    }
+
+
+	    if( length > 1 ) {
+		if( values2[0] < values2[1] ) {
+/* -------------------------------------------------------------------- */
+/*      first keep adding 360 until each value                          */
+/*      is greater than the previous                                    */
+/* -------------------------------------------------------------------- */
+		    for( i = 0; i < length - 1; i++ ) {
+			while( values[i + 1] < values[i] ) {
+			    values[i + 1] += 360.;
+			}
+		    }
+		} else {
+/* -------------------------------------------------------------------- */
+/*      first keep removing 360 until each value                        */
+/*      is lower than the previous                                      */
+/* -------------------------------------------------------------------- */
+		    for( i = 0; i < length - 1; i++ ) {
+			while( values[i + 1] > values[i] ) {
+			    values[i + 1] -= 360.;
+			}
+		    }
+		}
+	    }
+	    free( values2 );
+
+/* -------------------------------------------------------------------- */
+/*      stored_direction                                                */
+/* -------------------------------------------------------------------- */
+
+	    if( ( length > 1 ) &&
+		( ( ( refaxis->stored_direction == 'i' ) &&
+		    ( values[length - 1] < values[0] ) ) ||
+		  ( ( refaxis->stored_direction == 'd' ) &&
+		    ( values[0] < values[length - 1] ) ) ) ) {
+/* -------------------------------------------------------------------- */
+/*      need to flip that axis                                          */
+/* -------------------------------------------------------------------- */
+		if( ( isbounds == 1 )
+		    && ( cmor_axes[axis_id].revert == 1 ) ) {
+		    snprintf( msg, CMOR_MAX_STRING,
+			      "bounds of axis %s (table: %s), need to be\n! "
+			      "flipped but axis values did not need to.\n! "
+			      "This is inconsistent",
+			      name,
+			      cmor_tables[cmor_axes[axis_id].ref_table_id].
+			      szTable_id );
+		    cmor_handle_error( msg, CMOR_CRITICAL );
+		}
+		cmor_axes[axis_id].revert = -1;
+		for( i = 0; i < length / 2; i++ ) {
+		    tmp = values[i];
+		    values[i] = values[length - 1 - i];
+		    values[length - 1 - i] = tmp;
+		}
+	    }
+/* -------------------------------------------------------------------- */
+/*      ok make sure we have data spanning only 1 modulo                */
+/* -------------------------------------------------------------------- */
+	    if( abs( values[length - 1] - values[0] ) > 360. ) {
+		snprintf( msg, CMOR_MAX_STRING,
+			  "axis %s (table: %s) has values spanning more\n! "
+			  "360 degrees %lf, %lf",
+			  name,
+			  cmor_tables[cmor_axes[axis_id].ref_table_id].
+			  szTable_id, values[0], values[length - 1] );
+		cmor_handle_error( msg, CMOR_CRITICAL );
+	    }
+
+/* -------------------------------------------------------------------- */
+/*       ok now check the monotonic again                               */
+/* -------------------------------------------------------------------- */
+	    for( i = 0; i < length - 2; i++ ) {
+		if( ( ( values[i] - values[i + 1] ) / ( values[i + 1] -
+							values[i + 2] ) ) <
+		    0. ) {
+		    snprintf( msg, CMOR_MAX_STRING,
+			      "axis %s (table: %s) has non monotonic values : %lf, %lf and  %lf",
+			      name,
+			      cmor_tables[cmor_axes[axis_id].ref_table_id].
+			      szTable_id, values[i], values[i + 1],
+			      values[i + 2] );
+		    cmor_handle_error( msg, CMOR_CRITICAL );
+		}
+	    }
 	}
-	if ((values[i]>values[i+1]) && (values[i]<values[i+2])) {
-	  sprintf(msg,"Axis: '%s' (table: %s), your bounds direction seems to be increasing, but within cell %i they are stored decreasingly: you have [%lf, %lf], but the next set is: [%lf, %lf]",name,cmor_tables[cmor_axes[axis_id].ref_table_id].table_id,i,values[i],values[i+1],values[i+2],values[i+3]);
-	  cmor_handle_error(msg,CMOR_WARNING);
-	  j++;
+    }
+    cmor_pop_traceback(  );
+    return ( treatlon );
+}
+
+/************************************************************************/
+/*                       cmor_treat_axis_values()                       */
+/************************************************************************/
+int cmor_treat_axis_values( int axis_id, double *values, int length,
+			    int n_requested, char *units, char *name,
+			    int isbounds ) {
+    extern ut_system *ut_read;
+    ut_unit *user_units, *cmor_units;
+    cv_converter *ut_cmor_converter;
+    char local_unit[CMOR_MAX_STRING];
+    int i, j, treatlon = 0;
+    double tmp;
+    char msg[CMOR_MAX_STRING];
+    cdCalenType acal;
+    double *tmplon;
+
+    cmor_axis_def_t *refaxis;
+    cmor_axis_t *axis;
+    int found = 0;
+    double eps, eps2;
+
+    cmor_add_traceback( "cmor_treat_axis_values" );
+    cmor_is_setup(  );
+    axis = &cmor_axes[axis_id];
+    refaxis = &cmor_tables[axis->ref_table_id].axes[axis->ref_axis_id];
+
+
+    if( refaxis->axis == 'T' ) {
+
+/* -------------------------------------------------------------------- */
+/*      ok this part will try to convert time values to the right units */
+/* -------------------------------------------------------------------- */
+	cmor_get_cur_dataset_attribute( "calendar", &msg[0] );
+	if( cmor_calendar_c2i( msg, &acal ) != 0 ) {
+	    snprintf( msg, CMOR_MAX_STRING,
+		      "non-standard calendar... hum we will try to accommodate\n! "
+		      "this later" );
+	    cmor_handle_error( msg, CMOR_NORMAL );
+	    cmor_pop_traceback(  );
+	    return ( 1 );
 	}
-      }
-      if (j==length/2) {
-	for(i=0;i<length;i+=2) {
-	  tmp=values[i];
-	  values[i]=values[i+1];
-	  values[i+1]=tmp;
+
+	cmor_convert_time_values( &values[0], 'd', length, &values[0],
+				  units, refaxis->units, msg, msg );
+
+    } else {			
+/* -------------------------------------------------------------------- */
+/*      ok using udunits to convert                                     */
+/* -------------------------------------------------------------------- */
+	strcpy( local_unit, units );
+	ut_trim( local_unit, UT_ASCII );
+	user_units = ut_parse( ut_read, local_unit, UT_ASCII );
+
+	if( ut_get_status(  ) != UT_SUCCESS ) {
+	    snprintf( msg, CMOR_MAX_STRING,
+		      "In udunits analyzing units from user (%s),\n! "
+		      "axis %s (table: %s)",
+		      local_unit, cmor_axes[axis_id].id,
+		      cmor_tables[cmor_axes[axis_id].ref_table_id].
+		      szTable_id );
+	    cmor_handle_error( msg, CMOR_CRITICAL );
+	    cmor_pop_traceback(  );
+	    return ( 1 );
 	}
-      }
-      else if (j!=1) {
-	sprintf(msg,"Some but not all of your longitude bounds need to be flipped, see warnings ot see which ones, axis: %s (table: %s)",cmor_axes[axis_id].id,cmor_tables[cmor_axes[axis_id].ref_table_id].table_id);
-	cmor_handle_error(msg,CMOR_CRITICAL);
-      }
-    }
-    
-    
-     /* do not do the following in case of climatological stuff.... */
-    if (refaxis->climatology==0) {
-      for (i=0;i<length-2;i++) {
-	/* also check that bounds do not overlap */
-	if (((values[i]<values[i+1]) && (values[i+2]<values[i+1])) || ((values[i]>values[i+1]) && (values[i+2]>values[i+1]))) {
-	  snprintf(msg,CMOR_MAX_STRING,"axis %s (table: %s) has overlapping bounds values : %lf, %lf, %lf at index: %i",name,cmor_tables[cmor_axes[axis_id].ref_table_id].table_id,values[i],values[i+1],values[i+2],i);
-	  cmor_handle_error(msg,CMOR_CRITICAL);
+
+	if( strcmp( refaxis->units, "?" ) == 0 )
+	    strcpy( local_unit, units );
+	else
+	    strcpy( local_unit, refaxis->units );
+
+	ut_trim( local_unit, UT_ASCII );
+	cmor_units = ut_parse( ut_read, local_unit, UT_ASCII );
+	
+	if( ut_get_status(  ) != UT_SUCCESS ) {
+	    snprintf( msg, CMOR_MAX_STRING,
+		      "In udunits analyzing table defined units (%s)\n! "
+		      "for axis: %s (table: %s)",
+		      local_unit, refaxis->id,
+		      cmor_tables[cmor_axes[axis_id].ref_table_id].
+		      szTable_id );
+	    cmor_handle_error( msg, CMOR_CRITICAL );
+	    cmor_pop_traceback(  );
+	    return ( 1 );
 	}
-      }
-      for (i=0;i<length-2;i=i+2) {
-	if (values[i+1]!=values[i+2]) {
-	  snprintf(msg,CMOR_MAX_STRING,"axis %s (table: %s) has bounds values that leave gaps (index %i): %lf, %lf, %lf",name,cmor_tables[cmor_axes[axis_id].ref_table_id].table_id,i,values[i],values[i+1],values[i+2]);
-	  cmor_handle_error(msg,CMOR_WARNING);
+	
+	if( ut_are_convertible( cmor_units, user_units ) == 0 ) {
+	    snprintf( msg, CMOR_MAX_STRING,
+		      "axis %i (%s, table: %s): cmor and user units are\n! "
+		      "incompatible: %s and %s",
+		      axis_id, cmor_axes[axis_id].id,
+		      cmor_tables[cmor_axes[axis_id].ref_table_id].
+		      szTable_id, refaxis->units, units );
+	    cmor_handle_error( msg, CMOR_CRITICAL );
+	    cmor_pop_traceback(  );
+	    return ( 1 );
 	}
-      }
-    }
-  }
-  else {
-    for (i=0;i<length-2;i++) {
-      if (((values[i]-values[i+1])/(values[i+1]-values[i+2]))<0.) {
-	if (cmor_isLongitude(refaxis)==1) {
-	  treatlon = 1;
-	  break;
+	
+	ut_cmor_converter = ut_get_converter( user_units, cmor_units );
+	
+	if( ut_get_status(  ) != UT_SUCCESS ) {
+	    snprintf( msg, CMOR_MAX_STRING,
+		      "In udunits getting converter, for axis %s (table: %s)",
+		      cmor_axes[axis_id].id,
+		      cmor_tables[cmor_axes[axis_id].ref_table_id].
+		      szTable_id );
+	    cmor_handle_error( msg, CMOR_CRITICAL );
+	    cmor_pop_traceback(  );
+	    return ( 1 );
 	}
-	else {
-	  snprintf(msg,CMOR_MAX_STRING,"axis %s (table: %s) has non monotonic values : %lf, %lf and  %lf",name,cmor_tables[cmor_axes[axis_id].ref_table_id].table_id,values[i],values[i+1],values[i+2]);
-	  cmor_handle_error(msg,CMOR_CRITICAL);
+	
+	cv_convert_doubles( ut_cmor_converter, values, length, values );
+
+	if( ut_get_status(  ) != UT_SUCCESS ) {
+	    snprintf( msg, CMOR_MAX_STRING,
+		      "In udunits converting values, for axis %s (table: %s)",
+		      cmor_axes[axis_id].id,
+		      cmor_tables[cmor_axes[axis_id].ref_table_id].
+		      szTable_id );
+	    cmor_handle_error( msg, CMOR_CRITICAL );
+	    cmor_pop_traceback(  );
+	    return ( 1 );
 	}
-      }
-    }
-
-    if ((refaxis->valid_max!=1.e20) && (treatlon)) {/* ok we are dealing with a longitude need to figure out the offset.... */
-
-      /* The VERY first thing is to make sure we are modulo 360 */
-      values2 = (double *) malloc(sizeof(double)*length);
-      for (i=0;i<length;i++) {
-	values2[i] = fmod(values[i], 360.);
-      }
-
-      /* Now keep looping until we do not have up and downs */
-      mono = -1;
-      nloop=0;
-      while (mono == -1 ) {
-	mono=1;
-	tmp=0;
-	for (i=0;i<length-2;i++) {
-	  tmp =  (values2[i]-values2[i+1])*(values2[i+1]-values2[i+2]);
-	  if (tmp<0) break;
+	
+	cv_free( ut_cmor_converter );
+	
+	if( ut_get_status(  ) != UT_SUCCESS ) {
+	    snprintf( msg, CMOR_MAX_STRING,
+		      "Udunits: Error freeing converter, for axis %s (table: %s)",
+		      cmor_axes[axis_id].id,
+		      cmor_tables[cmor_axes[axis_id].ref_table_id].
+		      szTable_id );
+	    cmor_handle_error( msg, CMOR_CRITICAL );
 	}
-	if (tmp<0) { /* ok we flip floppped */
-	  tmp=values2[0];
-	  for (i=0;i<length-1;i++) {
-	    values2[i]=values2[i+1];
-	  }
-	  values2[i]=tmp;
-	  mono=-1;
-	  nloop+=1;
-	  if (nloop==length) {
-	    sprintf(msg,"longitude axis is not monotonic (axis: %s, table: %s)",cmor_axes[axis_id].id,cmor_tables[cmor_axes[axis_id].ref_table_id].table_id);
-	    cmor_handle_error(msg,CMOR_CRITICAL);
+
+	ut_free( cmor_units );
+	
+	if( ut_get_status(  ) != UT_SUCCESS ) {
+	    snprintf( msg, CMOR_MAX_STRING,
+		      "Udunits: Error freeing units, for axis %s (table: %s)",
+		      cmor_axes[axis_id].id,
+		      cmor_tables[cmor_axes[axis_id].ref_table_id].
+		      szTable_id );
+	    cmor_handle_error( msg, CMOR_CRITICAL );
 	}
+	
+	ut_free( user_units );
+	
+	if( ut_get_status(  ) != UT_SUCCESS ) {
+	    snprintf( msg, CMOR_MAX_STRING,
+		      "Udunits: Error freeing units, for axis %s (table: %s)",
+		      cmor_axes[axis_id].id,
+		      cmor_tables[cmor_axes[axis_id].ref_table_id].
+		      szTable_id );
+	    cmor_handle_error( msg, CMOR_CRITICAL );
 	}
-      }
+	
+    }
 
 
-      if (length>1) {
-	if (values2[0]<values2[1]) {
-	  /* first keep adding 360 until each value is greater than the previous */
-	  for (i=0;i<length-1;i++) {
-	    while (values[i+1]<values[i]) {
-	      values[i+1]+=360.;
+/* -------------------------------------------------------------------- */
+/*      test for requested                                              */
+/*      ok is there some requested values ?                             */
+/* -------------------------------------------------------------------- */
+    if( n_requested != 0 ) {
+	for( j = 0; j < n_requested; j++ ) {
+	    found = 0;
+/* -------------------------------------------------------------------- */
+/*      First test is it within .001 of req_values                      */
+/* -------------------------------------------------------------------- */
+	    eps = ( double ) fabs( 1.e-3 *
+				   refaxis->tolerance *
+				   refaxis->requested[j] );
+
+	    if( j > 0 ) {
+		eps2 = ( double ) fabs( refaxis->requested[j] -
+					refaxis->requested[j - 1] ) *
+		    refaxis->tolerance;
+
+		if( eps2 < eps ) {
+		    eps = eps2;
+		}
 	    }
-	  }
-	}
-	else {
-	  /* first keep removing 360 until each value is lower than the previous */
-	  for (i=0;i<length-1;i++) {
-	    while (values[i+1]>values[i]) {
-	      values[i+1]-=360.;
+	    
+	    for( i = 0; i < length; i++ ) {
+		if( ( double ) fabs( values[i] - refaxis->requested[j] ) <= eps ) {
+		    found = 1;
+		    break;
+		}
+	    }
+	    
+	    if( found == 0 ) {
+		snprintf( msg, CMOR_MAX_STRING,
+			  "requested value %f for axis %s (table: %s) was not found",
+			  refaxis->requested[j], name,
+			  cmor_tables[cmor_axes[axis_id].ref_table_id].
+			  szTable_id );
+		cmor_handle_error( msg, CMOR_CRITICAL );
 	    }
-	  }
-	}
-      }
-      free(values2);
-
-      /* stored_direction*/
-      /* printf("length: %i, storeddir: %c, vlue-1, vlaue0: %lf and %lf\n",length,refaxis->stored_direction,values[length-1],values[0]); */
-      if ((length>1) && (((refaxis->stored_direction=='i') && (values[length-1]<values[0])) || ((refaxis->stored_direction=='d') && (values[0]<values[length-1])))) { /* need to flip that axis */
-	if ((isbounds==1)  && (cmor_axes[axis_id].revert==1)) {
-	  snprintf(msg,CMOR_MAX_STRING, "bounds of axis %s (table: %s), need to be flipped but axis values did not need to. This is inconsistent",name,cmor_tables[cmor_axes[axis_id].ref_table_id].table_id);
-	  cmor_handle_error(msg,CMOR_CRITICAL);
-	}
-	cmor_axes[axis_id].revert=-1;
-	for (i=0;i<length/2;i++) {
-	  tmp = values[i];
-	  values[i] = values[length-1-i];
-	  values[length-1-i] = tmp;
-	}
-      }
-
-
-     /* ok make sure we have data spanning only 1 modulo */
-      if (abs(values[length-1]-values[0])>360.) {
-	snprintf(msg,CMOR_MAX_STRING,"axis %s (table: %s) has values spanning more 360 degrees %lf, %lf",name,cmor_tables[cmor_axes[axis_id].ref_table_id].table_id,values[0],values[length-1]);
-	cmor_handle_error(msg,CMOR_CRITICAL);
-      }
-      /* ok now check the monotonic again */
-      for (i=0;i<length-2;i++) {
-	if (((values[i]-values[i+1])/(values[i+1]-values[i+2]))<0.) {
-	  snprintf(msg,CMOR_MAX_STRING,"axis %s (table: %s) has non monotonic values : %lf, %lf and  %lf",name,cmor_tables[cmor_axes[axis_id].ref_table_id].table_id,values[i],values[i+1],values[i+2]);
-	  cmor_handle_error(msg,CMOR_CRITICAL);
 	}
-      }
     }
-  }
-  cmor_pop_traceback();
-  return treatlon;
-}
 
 
-int cmor_treat_axis_values(int axis_id, double *values, int length, int n_requested, char *units, char *name, int isbounds){
-  extern ut_system *ut_read;
-  ut_unit *user_units, *cmor_units;
-  cv_converter *ut_cmor_converter;
-  char local_unit[CMOR_MAX_STRING];
-  int i,j,treatlon=0;
-  double tmp;
-  char msg[CMOR_MAX_STRING];
-  cdCalenType acal;
-  double *tmplon;
-
-  cmor_axis_def_t *refaxis;
-  cmor_axis_t *axis;
-  int found = 0;
-  double eps,eps2;
-
-  cmor_add_traceback("cmor_treat_axis_values");
-  cmor_is_setup();
-  axis = &cmor_axes[axis_id];
-  refaxis = &cmor_tables[axis->ref_table_id].axes[axis->ref_axis_id];
-
-  /* for (i=0;i<length;i++) printf("isbounds: %i, i: %i, value: %lf\n",isbounds,i,values[i]); */
-
-  if (refaxis->axis=='T') {
-    /*ok this part will try to convert time values to the right units */
-    cmor_get_cur_dataset_attribute("calendar",&msg[0]);
-    if (cmor_calendar_c2i(msg,&acal)!=0) {
-      snprintf(msg,CMOR_MAX_STRING,"non-standard calendar... hum we will try to accomodate this later\n");
-      cmor_handle_error(msg,CMOR_NORMAL);
-      cmor_pop_traceback();
-      return 1;
-    }
-/*     for(i=0;i<length;i++) printf("coming in values are: %i, %lf\n",i,values[i]); */
-    cmor_convert_time_values(&values[0],'d',length,&values[0],units,refaxis->units,msg,msg);
-/*     for(i=0;i<length;i++) printf("converted values are: %i, %lf\n",i,values[i]); */
-  }
-  else { /*ok using udunits to convert */
-    strcpy(local_unit,units);
-    ut_trim(local_unit,UT_ASCII);
-    user_units = ut_parse(ut_read, local_unit, UT_ASCII);
-    if (ut_get_status() != UT_SUCCESS ) {
-      snprintf(msg,CMOR_MAX_STRING,"In udunits analyzing units from user (%s), axis %s (table: %s)",local_unit,cmor_axes[axis_id].id,cmor_tables[cmor_axes[axis_id].ref_table_id].table_id);
-      cmor_handle_error(msg,CMOR_CRITICAL);
-      cmor_pop_traceback();
-      return 1;
-    }
-    if (strcmp(refaxis->units,"?")==0) strcpy(local_unit,units);
-    else strcpy(local_unit,refaxis->units);
-    ut_trim(local_unit,UT_ASCII);
-    cmor_units = ut_parse(ut_read, local_unit,UT_ASCII);
-    if (ut_get_status() != UT_SUCCESS ) {
-      snprintf(msg,CMOR_MAX_STRING,"In udunits analyzing table defined units (%s) for axis: %s (table: %s)",local_unit,refaxis->id,cmor_tables[cmor_axes[axis_id].ref_table_id].table_id );
-      cmor_handle_error(msg,CMOR_CRITICAL);
-      cmor_pop_traceback();
-      return 1;
-    }
-    if (ut_are_convertible(cmor_units,user_units)==0 ) {
-      snprintf(msg,CMOR_MAX_STRING,"axis %i (%s, table: %s): cmor and user units are incompatible: %s and %s",axis_id,cmor_axes[axis_id].id,cmor_tables[cmor_axes[axis_id].ref_table_id].table_id,refaxis->units,units);
-      cmor_handle_error(msg,CMOR_CRITICAL);
-      cmor_pop_traceback();
-      return 1;
-    }
-    ut_cmor_converter=ut_get_converter(user_units,cmor_units);
-    if (ut_get_status() != UT_SUCCESS ) {
-      snprintf(msg,CMOR_MAX_STRING,"In udunits getting converter, for axis %s (table: %s)",cmor_axes[axis_id].id,cmor_tables[cmor_axes[axis_id].ref_table_id].table_id );
-      cmor_handle_error(msg,CMOR_CRITICAL);
-      cmor_pop_traceback();
-      return 1;
-    }
-    cv_convert_doubles(ut_cmor_converter,values,length,values);
-    /*    cv_convert_doubles(ut_cmor_converter,&cmor_axes[cmor_naxes].values[0],length,&cmor_axes[cmor_naxes].values[0]); */
-    if (ut_get_status() != UT_SUCCESS ) {
-      snprintf(msg,CMOR_MAX_STRING,"In udunits converting values, for axis %s (table: %s)",cmor_axes[axis_id].id,cmor_tables[cmor_axes[axis_id].ref_table_id].table_id );
-      cmor_handle_error(msg,CMOR_CRITICAL);
-      cmor_pop_traceback();
-      return 1;
-    }
-    cv_free(ut_cmor_converter);
-    if (ut_get_status() != UT_SUCCESS) {
-      snprintf(msg,CMOR_MAX_STRING,"Udunits: Error freeing converter, for axis %s (table: %s)",cmor_axes[axis_id].id,cmor_tables[cmor_axes[axis_id].ref_table_id].table_id);
-      cmor_handle_error(msg,CMOR_CRITICAL);
-    }
-    
-    ut_free(cmor_units);
-    if (ut_get_status() != UT_SUCCESS) {
-      snprintf(msg,CMOR_MAX_STRING,"Udunits: Error freeing units, for axis %s (table: %s)",cmor_axes[axis_id].id,cmor_tables[cmor_axes[axis_id].ref_table_id].table_id);
-      cmor_handle_error(msg,CMOR_CRITICAL);
-    }
-    ut_free(user_units);
-    if (ut_get_status() != UT_SUCCESS) {
-      snprintf(msg,CMOR_MAX_STRING,"Udunits: Error freeing units, for axis %s (table: %s)",cmor_axes[axis_id].id,cmor_tables[cmor_axes[axis_id].ref_table_id].table_id);
-      cmor_handle_error(msg,CMOR_CRITICAL);
-    }
-  }
-
-
-  /* test for requested */
-  /* ok is there some requested values ? */
-  if (n_requested!=0) {
-    for (j=0;j<n_requested;j++) {
-      found=0;
-      /* First test is it within .001 of req_values */
-      eps = (double) fabs(1.e-3*refaxis->tolerance*refaxis->requested[j]);
-/*       printf("epsilon  is: %lf, tol: %lf\n",eps,refaxis->tolerance); */
-      if (j>0) {
-	eps2 = (double)fabs(refaxis->requested[j]-refaxis->requested[j-1])*refaxis->tolerance;
-/* 	printf("epsilon2 is: %lf\n",eps2); */
-	if (eps2<eps) eps=eps2;
-      }
-      for (i=0;i<length;i++) {
-	/* 	  printf("value %d is: %lf\n",i,values[i]); */
-	if ((double)fabs(values[i]-refaxis->requested[j])<=eps) {
-	  found = 1;
-	  break;
-	}
-      }
-      if (found==0) {
-	snprintf(msg,CMOR_MAX_STRING,"requested value %f for axis %s (table: %s) was not found",refaxis->requested[j],name,cmor_tables[cmor_axes[axis_id].ref_table_id].table_id);
-	cmor_handle_error(msg,CMOR_CRITICAL);
-      }
-    }
-  }
-  
-
-  /* stored_direction*/
-  if ((length>1) && (((refaxis->stored_direction=='i') && (values[length-1]<values[0])) || ((refaxis->stored_direction=='d') && (values[0]<values[length-1])))) { /* need to flip that axis */
-    if ((isbounds==1)  && (axis->revert==1)) {
-      if (length>2) {
-      snprintf(msg,CMOR_MAX_STRING, "bounds of axis %s (table: %s) need to be flipped but axis values did not need to. This is inconsistent",name,cmor_tables[cmor_axes[axis_id].ref_table_id].table_id);
-      cmor_handle_error(msg,CMOR_CRITICAL);
-      }
-    }
-    axis->revert=-1;
-    for (i=0;i<length/2;i++) {
-      tmp = values[i];
-      values[i] = values[length-1-i];
-      values[length-1-i] = tmp;
-    }
-  }
-  if (isbounds==1) {
-    /* ok at that point we need to see if the bounds are stored in the correct first bound/second bounds order */
-    if (refaxis->axis!='X') {
-      if (refaxis->stored_direction=='i') { /* ok values are going incresingly */
-	for (i=0;i<length;i=i+2) { 
-	  if (values[i]>values[i+1]) { /* ok bounds are not stored first bound lower that second one */
-	    tmp = values[i];
-	    values[i] = values[i+1];
-	    values[i+1]=tmp;
-	  }
+/* -------------------------------------------------------------------- */
+/*      stored_direction                                                */
+/* -------------------------------------------------------------------- */
+    if( ( length > 1 ) &&
+	( ( ( refaxis->stored_direction == 'i' ) &&
+	    ( values[length - 1] < values[0] ) ) ||
+	  ( ( refaxis->stored_direction == 'd' ) &&
+	    ( values[0] < values[length - 1] ) ) ) ) {	/* need to flip that axis */
+
+	if( ( isbounds == 1 ) && ( axis->revert == 1 ) ) {
+
+	    if( length > 2 ) {
+		snprintf( msg, CMOR_MAX_STRING,
+			  "bounds of axis %s (table: %s) need to be\n! "
+			  "flipped but axis values did not need to.\n! "
+			  "This is inconsistent",
+			  name,
+			  cmor_tables[cmor_axes[axis_id].ref_table_id].
+			  szTable_id );
+		cmor_handle_error( msg, CMOR_CRITICAL );
+	    }
+	    
 	}
-      }
-      else {
-	for (i=0;i<length;i=i+2) { 
-	  if (values[i]<values[i+1]) { /* ok bounds are not stored first bound greater that second one */
+	
+	axis->revert = -1;
+	
+	for( i = 0; i < length / 2; i++ ) {
 	    tmp = values[i];
-	    values[i] = values[i+1];
-	    values[i+1]=tmp;
-	  }
-	}
-      }
-    }
-    /* need to check for requested bounds */
-    if (refaxis->n_requested_bounds!=0) {
-      /* ok let's loop thru it but basically we need to loop every over ones */
-      for (j=0;j<refaxis->n_requested_bounds;j++) {
-	found=0;
-	/* First test is it within .001 of req_values */
-	eps = (double) fabs(1.e-3*refaxis->tolerance*refaxis->requested_bounds[j]);
-	if ((j % 2) == 0) {
-	  eps2 = (double)fabs(refaxis->requested_bounds[j]-refaxis->requested_bounds[j+1])*refaxis->tolerance;
-	}
-	else {
-	  eps2 = (double)fabs(refaxis->requested_bounds[j]-refaxis->requested_bounds[j-1])*refaxis->tolerance;
+	    values[i] = values[length - 1 - i];
+	    values[length - 1 - i] = tmp;
 	}
-/* 	printf("j, eps 2 is:%i, %lf\n",j,eps2); */
-	if (eps2<eps) eps=eps2;
-	if ((j%2)==0) {
-	  for (i=0;i<length;i=i+2) { /* it is a req beg bounds need to test against beg ones only */
-/* 	    printf("0req: %lf, val: %lf, eps: %lf, diff: %lf\n",refaxis->requested_bounds[j],values[i],eps,fabs(values[i]-refaxis->requested_bounds[j])); */
-	    if ((double)fabs(values[i]-refaxis->requested_bounds[j])<=eps) {
-	      found = 1;
-	      break;
+    }
+    
+    if( isbounds == 1 ) {
+/* --------------------------------------------------------------------- */
+/*      we need to see if the bounds are stored in                       */
+/*      the correct first bound/second bounds order.                     */
+/* --------------------------------------------------------------------- */
+
+	if( refaxis->axis != 'X' ) {
+/* -------------------------------------------------------------------- */
+/*      values are going incresingly                                    */
+/* -------------------------------------------------------------------- */
+	    if( refaxis->stored_direction == 'i' ) {	
+		for( i = 0; i < length; i = i + 2 ) {
+/* -------------------------------------------------------------------- */
+/*      ok bounds are not stored first                                  */
+/*      bound lower that second one                                     */
+/* -------------------------------------------------------------------- */
+		    if( values[i] > values[i + 1] ) {	
+			tmp = values[i];
+			values[i] = values[i + 1];
+			values[i + 1] = tmp;
+		    }
+		}
+	    } else {
+		for( i = 0; i < length; i = i + 2 ) {
+/* -------------------------------------------------------------------- */
+/*      bounds are not stored first bound greater that second one       */
+/* -------------------------------------------------------------------- */
+		    if( values[i] < values[i + 1] ) {
+			tmp = values[i];
+			values[i] = values[i + 1];
+			values[i + 1] = tmp;
+		    }
+		}
 	    }
-	  }
 	}
-	else {
-	  for (i=1;i<length;i=i+2) { /* it is a second bounds, need to test against second nes only */
-/* 	    printf("1req: %lf, val: %lf, eps: %lf, diff: %lf\n",refaxis->requested_bounds[j],values[i],eps,fabs(values[i]-refaxis->requested_bounds[j])); */
-	    if ((double)fabs(values[i]-refaxis->requested_bounds[j])<=eps) {
-	      found = 1;
-	      break;
+	
+/* -------------------------------------------------------------------- */
+/*      need to check for requested bounds                              */
+/* -------------------------------------------------------------------- */
+	if( refaxis->n_requested_bounds != 0 ) {
+/* -------------------------------------------------------------------- */
+/*      let's loop thru it but basically                                */
+/*      we need to loop every over ones                                 */
+/* -------------------------------------------------------------------- */
+	    for( j = 0; j < refaxis->n_requested_bounds; j++ ) {
+		found = 0;
+/* -------------------------------------------------------------------- */
+/*      First test is it within .001 of req_values                      */
+/* -------------------------------------------------------------------- */
+		eps =
+		    ( double ) fabs( 1.e-3 * refaxis->tolerance *
+				     refaxis->requested_bounds[j] );
+		if( ( j % 2 ) == 0 ) {
+		    eps2 =
+			( double ) fabs( refaxis->requested_bounds[j] -
+					 refaxis->requested_bounds[j + 1] ) *
+			refaxis->tolerance;
+		} else {
+		    eps2 =
+			( double ) fabs( refaxis->requested_bounds[j] -
+					 refaxis->requested_bounds[j - 1] ) *
+			refaxis->tolerance;
+		}
+
+		if( eps2 < eps ) {
+		    eps = eps2;
+		}
+		if( ( j % 2 ) == 0 ) {
+/* -------------------------------------------------------------------- */
+/*      it is a req beg bounds need to test against beg ones only       */
+/* -------------------------------------------------------------------- */
+		    for( i = 0; i < length; i = i + 2 ) {	
+
+			if( ( double ) fabs( values[i] -
+					     refaxis->requested_bounds[j] ) <= eps ) {
+			    found = 1;
+			    break;
+			}
+		    }
+		} else {
+/* -------------------------------------------------------------------- */
+/*      it is a second bounds, need to test against second nes only     */
+/* -------------------------------------------------------------------- */
+		    for( i = 1; i < length; i = i + 2 ) {	
+
+			if( ( double )  fabs( values[i] -
+					      refaxis->requested_bounds[j] ) <= eps ) {
+			    found = 1;
+			    break;
+			}
+		    }
+		}
+		if( found == 0 ) {
+		    snprintf( msg, CMOR_MAX_STRING,
+			      "requested value %f for axis %s (table: %s)\n! "
+			      "was not found",
+			      refaxis->requested_bounds[j], name,
+			      cmor_tables[cmor_axes[axis_id].ref_table_id].
+			      szTable_id );
+		    cmor_handle_error( msg, CMOR_CRITICAL );
+		}
 	    }
-	  }
-	}
-	if (found==0) {
-	  snprintf(msg,CMOR_MAX_STRING,"requested value %f for axis %s (table: %s) was not found",refaxis->requested_bounds[j],name,cmor_tables[cmor_axes[axis_id].ref_table_id].table_id);
-	  cmor_handle_error(msg,CMOR_CRITICAL);
 	}
-      }
-    }
-    
-  }
-
-  /* is there any offsetting to be done ? */
-  /*
-  if ((axis->offset!=0) && (isbounds==1)) {
-    tmplon = malloc(2*axis->offset*sizeof(double));
-    for (i=0;i<2*axis->offset;i++) {
-      tmplon[i]=values[i];
-    }
-    for (i=2*axis->offset;i<length;i++) {
-      values[i-2*axis->offset]=values[i];
-    }
-    for (i=0;i<2*axis->offset;i++) {
-      values[i+length-2*axis->offset]=tmplon[i];
-    }
-    free(tmplon);
-  }
- */
-  //for (i=0;i<length;i++) printf("VAL1: %i : %f\n",i,values[i]);
-
-  //i = cmor_check_monotonic(&values[0],length,name,isbounds,axis_id);
-
-  //for (i=0;i<length;i++) printf("VAL2: %i : %f\n",i,values[i]);
-
-  /* now check for valid_min/max things except for longitude bounds */
-  /* The following changed we ALWAYS check but do the wrapping only for coords,
-   * bounds are applied exactly the same number of wrap as the coords, and not
-   * checked for min max */
-  /*if (((isbounds==1) && (refaxis->axis=='X'))==0) {*/
-  {
-    if (refaxis->valid_min!=1.e20) for (i=0;i<length;i++) if (values[i]<refaxis->valid_min) { 
-      if (cmor_isLongitude(refaxis)==1) {
-	treatlon = 1;
-      }
-      else {
-	snprintf(msg,CMOR_MAX_STRING,"axis %s (table: %s), detected value at: %f when valid_min is %f\n",name,cmor_tables[cmor_axes[axis_id].ref_table_id].table_id,values[i],refaxis->valid_min); 
-	cmor_handle_error(msg,CMOR_NORMAL);
-	cmor_pop_traceback();
-	return 1;
-      }
-    }
-    if (treatlon==1) {
-      if (isbounds==0) { /* Dealing with coords */
-          for (i=0;i<length;i++)  /* ok lets add 360. until it's all good */
-            while (values[i]<refaxis->valid_min) {
-                values[i]+=360.;
-                cmor_axes[axis_id].wrapping[i]+=1;
-            }
-              /* ok now need to determine the offset */
-              for (i=0;i<length-1;i++) {
-                if (values[i]>values[i+1]) {
-                  axis->offset = i+1; 
-                  break;
-                }
-              }
-          }
-      }
-    treatlon=0;
-    if (refaxis->valid_max!=1.e20) for (i=0;i<length;i++) if (values[i]>refaxis->valid_max) {
-      if (cmor_isLongitude(refaxis)==1) {
-    	treatlon = 1;
-      }
-      else {
-    	snprintf(msg,CMOR_MAX_STRING,"axis %s (table: %s) , detected value at: %f when valid_max is %f\n",name,cmor_tables[cmor_axes[axis_id].ref_table_id].table_id,values[i],refaxis->valid_max);
-    	cmor_handle_error(msg,CMOR_NORMAL);
-    	cmor_pop_traceback();
-    	return 1;
-      }
-    }
-    if ((treatlon==1)&&(isbounds==0)) {
-      for (i=0;i<length;i++) { /* ok lets add 360. until it's all good */
-    	while (values[i]>refaxis->valid_max){
-            values[i]-=360.;
-            cmor_axes[axis_id].wrapping[i]-=1;
-        }
-      }
-      /* ok now need to determine the offset */
-      for (i=0;i<length-1;i++) {
-    	if (values[i]>values[i+1]) {
-    	  axis->offset = i+1;
-    	  break;
-    	}
-      }
-    }
-    if ((isbounds==1) && (cmor_isLongitude(refaxis)==1)) {
-        for(i=0;i<length/2;i++) {
-            values[2*i ]+=360.*cmor_axes[axis_id].wrapping[i];
-            values[2*i+1]+=360.*cmor_axes[axis_id].wrapping[i];
-        }
+
     }
-    /* ok now need to move the offset thing */
-    if (axis->offset!=0) {
-      if (isbounds==0) {
- 	/*for (i=0;i<length;i++) printf("%i : %f\n",i,values[i]); */
-	tmplon = malloc(axis->offset*sizeof(double));
-	for (i=0;i<axis->offset;i++) {
-	  tmplon[i]=values[i];
+
+
+	if( refaxis->valid_min != 1.e20 )
+	    for( i = 0; i < length; i++ )
+		if( values[i] < refaxis->valid_min ) {
+		    if( cmor_isLongitude( refaxis ) == 1 ) {
+			treatlon = 1;
+		    } else {
+			snprintf( msg, CMOR_MAX_STRING,
+				  "axis %s (table: %s), detected value at: %f when\n! "
+				  "valid_min is %f",
+				  name,
+				  cmor_tables[cmor_axes[axis_id].
+					      ref_table_id].szTable_id,
+				  values[i], refaxis->valid_min );
+			cmor_handle_error( msg, CMOR_NORMAL );
+			cmor_pop_traceback(  );
+			return ( 1 );
+		    }
+		}
+	
+	if( treatlon == 1 ) {
+/* -------------------------------------------------------------------- */
+/*       Dealing with coords                                            */
+/* -------------------------------------------------------------------- */
+	    if( isbounds == 0 ) {	
+/* -------------------------------------------------------------------- */
+/*      lets add 360. until it's all good                               */
+/* -------------------------------------------------------------------- */
+		for( i = 0; i < length; i++ )	
+		    while( values[i] < refaxis->valid_min ) {
+			values[i] += 360.;
+			cmor_axes[axis_id].wrapping[i] += 1;
+		    }
+/* -------------------------------------------------------------------- */
+/*      now need to determine the offset                                */
+/* -------------------------------------------------------------------- */
+		for( i = 0; i < length - 1; i++ ) {
+		    if( values[i] > values[i + 1] ) {
+			axis->offset = i + 1;
+			break;
+		    }
+		}
+	    }
 	}
-	for (i=axis->offset;i<length;i++) {
-	  values[i-axis->offset]=values[i];
+	treatlon = 0;
+	if( refaxis->valid_max != 1.e20 )
+	    for( i = 0; i < length; i++ )
+		if( values[i] > refaxis->valid_max ) {
+		    if( cmor_isLongitude( refaxis ) == 1 ) {
+			treatlon = 1;
+		    } else {
+			snprintf( msg, CMOR_MAX_STRING,
+				  "axis %s (table: %s) , detected value at:\n! "
+				  "%f when valid_max is %f",
+				  name,
+				  cmor_tables[cmor_axes[axis_id].
+					      ref_table_id].szTable_id,
+				  values[i], refaxis->valid_max );
+			cmor_handle_error( msg, CMOR_NORMAL );
+			cmor_pop_traceback(  );
+			return ( 1 );
+		    }
+		}
+	
+	if( ( treatlon == 1 ) && ( isbounds == 0 ) ) {
+/* -------------------------------------------------------------------- */
+/*      ok lets add 360. until it's all good                            */
+/* -------------------------------------------------------------------- */
+	    for( i = 0; i < length; i++ ) {	
+		while( values[i] > refaxis->valid_max ) {
+		    values[i] -= 360.;
+		    cmor_axes[axis_id].wrapping[i] -= 1;
+		}
+	    }
+
+/* -------------------------------------------------------------------- */
+/*      ok now need to determine the offset                             */
+/* -------------------------------------------------------------------- */
+	    for( i = 0; i < length - 1; i++ ) {
+		if( values[i] > values[i + 1] ) {
+		    axis->offset = i + 1;
+		    break;
+		}
+	    }
 	}
-	for (i=0;i<axis->offset;i++) {
-	  values[i+length-axis->offset]=tmplon[i];
+	if( ( isbounds == 1 ) && ( cmor_isLongitude( refaxis ) == 1 ) ) {
+	    for( i = 0; i < length / 2; i++ ) {
+		values[2 * i] += 360. * cmor_axes[axis_id].wrapping[i];
+		values[2 * i + 1] += 360. * cmor_axes[axis_id].wrapping[i];
+	    }
 	}
-	free(tmplon);
-/* 	printf("ok offseted values are (axes): \n"); */
-/* 	for (i=0;i<length;i++) printf("%i : %f\n",i,values[i]); */
-      }
-      else {
-	tmplon = malloc(2*axis->offset*sizeof(double));
-	for (i=0;i<2*axis->offset;i++) {
-	  tmplon[i]=values[i];
+/* -------------------------------------------------------------------- */
+/*      move the offset thing                                           */
+/* -------------------------------------------------------------------- */
+	if( axis->offset != 0 ) {
+	    if( isbounds == 0 ) {
+		tmplon = malloc( axis->offset * sizeof ( double ) );
+		for( i = 0; i < axis->offset; i++ ) {
+		    tmplon[i] = values[i];
+		}
+		for( i = axis->offset; i < length; i++ ) {
+		    values[i - axis->offset] = values[i];
+		}
+		for( i = 0; i < axis->offset; i++ ) {
+		    values[i + length - axis->offset] = tmplon[i];
+		}
+		free( tmplon );
+	    } else {
+		tmplon = malloc( 2 * axis->offset * sizeof ( double ) );
+		for( i = 0; i < 2 * axis->offset; i++ ) {
+		    tmplon[i] = values[i];
+		}
+		for( i = 2 * axis->offset; i < length; i++ ) {
+		    values[i - 2 * axis->offset] = values[i];
+		}
+		for( i = 0; i < 2 * axis->offset; i++ ) {
+		    values[i + length - 2 * axis->offset] = tmplon[i];
+		}
+		free( tmplon );
+	    }
 	}
-	for (i=2*axis->offset;i<length;i++) {
-	  values[i-2*axis->offset]=values[i];
+	i = cmor_check_monotonic( &values[0], length, name, isbounds,
+				  axis_id );
+    cmor_pop_traceback(  );
+    return ( 0 );
+}
+
+
+
+/************************************************************************/
+/*                        cmor_check_interval()                         */
+/************************************************************************/
+int cmor_check_interval( int axis_id, char *interval, double *values,
+			 int nvalues, int isbounds ) {
+    char ctmp[CMOR_MAX_STRING];
+    char ctmp2[CMOR_MAX_STRING];
+    char msg[CMOR_MAX_STRING];
+    int i, j, n, nval;
+    double interv, diff, diff2, tmp;
+    extern ut_system *ut_read;
+    ut_unit *user_units = NULL, *cmor_units = NULL;
+    cv_converter *ut_cmor_converter = NULL;
+    double *tmp_values = NULL;
+    cmor_axis_def_t *refaxis;
+    cmor_axis_t *axis;
+    cdCalenType icali;
+    cdCompTime comptime;
+
+    cmor_add_traceback( "cmor_check_interval" );
+    axis = &cmor_axes[axis_id];
+    refaxis = &cmor_tables[axis->ref_table_id].axes[axis->ref_axis_id];
+
+
+    if( isbounds == 0 ) {
+	nval = nvalues;
+	tmp_values = values;
+    } else {
+	nval = nvalues / 2 + 1;
+	tmp_values = malloc( sizeof ( double ) * nval );
+	if( tmp_values == NULL ) {
+	    snprintf( ctmp, CMOR_MAX_STRING,
+		      "Error allocating memory for %i values in "
+		      "check_interval (%s), axis: %s (table: %s)",
+		      nval, interval, cmor_axes[axis_id].id,
+		      cmor_tables[cmor_axes[axis_id].ref_table_id].
+		      szTable_id );
+	    cmor_handle_error( ctmp, CMOR_CRITICAL );
 	}
-	for (i=0;i<2*axis->offset;i++) {
-	  values[i+length-2*axis->offset]=tmplon[i];
+	for( i = 0; i < nval - 1; i++ )
+	    tmp_values[i] = values[i * 2];
+	tmp_values[nval - 1] = values[nvalues - 1];
+    }
+/* -------------------------------------------------------------------- */
+/*      first of all need to figure out the                             */
+/*      numeric and unit part of the interval                           */
+/* -------------------------------------------------------------------- */
+    cmor_trim_string( interval, ctmp );
+    n = strlen( ctmp );
+    for( i = 0; i < n; i++ ) {
+	if( ctmp[i] == ' ' ) {
+	    ctmp2[i] = '\0';
+	    break;
 	}
-	free(tmplon);
-      }
+	ctmp2[i] = ctmp[i];
+    }
+    interv = atof( ctmp2 );
+    for( j = 0; j < n - i; j++ ) {
+	ctmp2[j] = ctmp[j + i + 1];
+    }
+    ctmp2[j] = '\0';
+/* -------------------------------------------------------------------- */
+/*      convert this in some base units: seconds                        */
+/* -------------------------------------------------------------------- */
+    sprintf( msg, "seconds" );
+    ut_trim( msg, UT_ASCII );
+    cmor_units = ut_parse( ut_read, msg, UT_ASCII );
+    user_units = ut_parse( ut_read, ctmp2, UT_ASCII );
+    if( ut_get_status(  ) != UT_SUCCESS ) {
+	snprintf( msg, CMOR_MAX_STRING,
+		  "In udunuits parsing user units: %s, axis: %s (table: %s)",
+		  ctmp2, cmor_axes[axis_id].id,
+		  cmor_tables[cmor_axes[axis_id].ref_table_id].szTable_id );
+	cmor_handle_error( msg, CMOR_CRITICAL );
+    }
+    if( ut_are_convertible( cmor_units, user_units ) == 0 ) {
+	snprintf( ctmp, CMOR_MAX_STRING,
+		  "axis interval units (%s) are incompatible with\n! "
+	          "seconds, axis: %s (table: %s)",
+		  ctmp2, cmor_axes[axis_id].id,
+		  cmor_tables[cmor_axes[axis_id].ref_table_id].szTable_id );
+	cmor_handle_error( ctmp, CMOR_CRITICAL );
+	cmor_pop_traceback(  );
+	return ( 1 );
+    }
+    ut_cmor_converter = ut_get_converter( user_units, cmor_units );
+    if( ut_get_status(  ) != UT_SUCCESS ) {
+	snprintf( msg, CMOR_MAX_STRING,
+		  "In udunuits getting converter, axis: %s (table: %s)",
+		  cmor_axes[axis_id].id,
+		  cmor_tables[cmor_axes[axis_id].ref_table_id].szTable_id );
+	cmor_handle_error( msg, CMOR_CRITICAL );
+    }
+    tmp = cv_convert_double( ut_cmor_converter, interv );
+    if( ut_get_status(  ) != UT_SUCCESS ) {
+	snprintf( msg, CMOR_MAX_STRING,
+		  "In udunuits converting, axis: %s (table: %s)",
+		  cmor_axes[axis_id].id,
+		  cmor_tables[cmor_axes[axis_id].ref_table_id].szTable_id );
+	cmor_handle_error( msg, CMOR_CRITICAL );
     }
-    i = cmor_check_monotonic(&values[0],length,name,isbounds,axis_id);
+    interv = tmp;
 
-  }
-  cmor_pop_traceback();
-  return 0;
-}
+    cv_free( ut_cmor_converter );
 
-int cmor_check_interval(int axis_id, char *interval, double *values, int nvalues, int isbounds) 
-{
-  char ctmp[CMOR_MAX_STRING];
-  char ctmp2[CMOR_MAX_STRING];
-  char msg[CMOR_MAX_STRING];
-  int i,j,n,nval;
-  double interv,diff,diff2,tmp;
-  extern ut_system *ut_read;
-  ut_unit *user_units=NULL, *cmor_units=NULL;
-  cv_converter *ut_cmor_converter=NULL;
-  double *tmp_values=NULL;
-  cmor_axis_def_t *refaxis;
-  cmor_axis_t *axis;
-  cdCalenType icali;
-  cdCompTime comptime;
-
-  cmor_add_traceback("cmor_check_interval"); 
-  axis = &cmor_axes[axis_id];
-  refaxis = &cmor_tables[axis->ref_table_id].axes[axis->ref_axis_id];
-
-
-  if (isbounds==0) {
-    nval = nvalues;
-    tmp_values=values;
-  }
-  else {
-    nval = nvalues/2+1;
-    tmp_values = malloc(sizeof(double)*nval);
-    if (tmp_values==NULL) {
-      snprintf(ctmp,CMOR_MAX_STRING,"Error allocating memory for %i values in check_interval (%s), axis: %s (table: %s)",nval,interval,cmor_axes[axis_id].id,cmor_tables[cmor_axes[axis_id].ref_table_id].table_id);
-      cmor_handle_error(ctmp,CMOR_CRITICAL);
-    }
-    for (i=0;i<nval-1;i++) tmp_values[i] = values[i*2];
-    tmp_values[nval-1] = values[nvalues-1];
-  }
-  /* first of all need to figure out the numeric and unit part of the interval */
-  cmor_trim_string(interval,ctmp);
-  n = strlen(ctmp);
-  for (i=0;i<n;i++) {
-    if (ctmp[i]==' ') {
-      ctmp2[i]='\0';
-      break;
-    }
-    ctmp2[i]=ctmp[i];
-  }
-  interv = atof(ctmp2);
-  for(j=0;j<n-i;j++) {
-    ctmp2[j]=ctmp[j+i+1];
-  }
-  ctmp2[j]='\0';
-  /* ok at this point we need to convert this in some base units: seconds */
-  sprintf(msg,"seconds");
-  ut_trim(msg,UT_ASCII);
-  cmor_units = ut_parse(ut_read, msg,UT_ASCII);
-  user_units = ut_parse(ut_read, ctmp2, UT_ASCII);
-  if (ut_get_status() != UT_SUCCESS) {
-    snprintf(msg,CMOR_MAX_STRING,"In udunuits parsing user units: %s, axis: %s (table: %s)",ctmp2,cmor_axes[axis_id].id,cmor_tables[cmor_axes[axis_id].ref_table_id].table_id);
-    cmor_handle_error(msg,CMOR_CRITICAL);
-  }
-  if (ut_are_convertible(cmor_units,user_units)==0 ) {
-    snprintf(ctmp,CMOR_MAX_STRING,"axis interval units (%s) are incompatible with seconds, axis: %s (table: %s)",ctmp2,cmor_axes[axis_id].id,cmor_tables[cmor_axes[axis_id].ref_table_id].table_id);
-    cmor_handle_error(ctmp,CMOR_CRITICAL);
-    cmor_pop_traceback();
-    return 1;
-  }
-  ut_cmor_converter=ut_get_converter(user_units,cmor_units);
-  if (ut_get_status() != UT_SUCCESS) {
-    snprintf(msg,CMOR_MAX_STRING,"In udunuits getting converter, axis: %s (table: %s)",cmor_axes[axis_id].id,cmor_tables[cmor_axes[axis_id].ref_table_id].table_id);
-    cmor_handle_error(msg,CMOR_CRITICAL);
-  }
-  tmp = cv_convert_double(ut_cmor_converter,interv);
-  if (ut_get_status() != UT_SUCCESS) {
-    snprintf(msg,CMOR_MAX_STRING,"In udunuits converting, axis: %s (table: %s)",cmor_axes[axis_id].id,cmor_tables[cmor_axes[axis_id].ref_table_id].table_id);
-    cmor_handle_error(msg,CMOR_CRITICAL);
-  }
-  interv = tmp;
-  cv_free(ut_cmor_converter);
-  if (ut_get_status() != UT_SUCCESS) {
-    snprintf(msg,CMOR_MAX_STRING,"Udunits: Error freeing converter, axis: %s (table: %s)",cmor_axes[axis_id].id,cmor_tables[cmor_axes[axis_id].ref_table_id].table_id);
-    cmor_handle_error(msg,CMOR_CRITICAL);
-  }
-  ut_free(user_units);
-  if (ut_get_status() != UT_SUCCESS) {
-    snprintf(msg,CMOR_MAX_STRING,"Udunits: Error freeing units, axis: %s (table: %s)",cmor_axes[axis_id].id,cmor_tables[cmor_axes[axis_id].ref_table_id].table_id);
-    cmor_handle_error(msg,CMOR_CRITICAL);
-  }
-  
-  /* at this point we need to figure out the axis units interval */
-  strcpy(ctmp,refaxis->units);
-  n = strlen(ctmp);
-  for (i=0;i<n;i++) {
-    if (ctmp[i]==' ') {
-      ctmp2[i]='\0';
-      break;
-    }
-    ctmp2[i]=ctmp[i];
-  }
-  user_units = ut_parse(ut_read, ctmp2, UT_ASCII);
-  if (ut_get_status() != UT_SUCCESS) {
-    snprintf(msg,CMOR_MAX_STRING,"In udunits parsing user units: %s, axis: %s (table: %s)",ctmp2,cmor_axes[axis_id].id,cmor_tables[cmor_axes[axis_id].ref_table_id].table_id);
-    cmor_handle_error(msg,CMOR_CRITICAL);
-  }
-  if (ut_are_convertible(cmor_units,user_units)==0 ) {
-    snprintf(ctmp,CMOR_MAX_STRING,"axis interval units (%s) are incompatible with seconds, axis: %s (table: %s)",ctmp2,cmor_axes[axis_id].id,cmor_tables[cmor_axes[axis_id].ref_table_id].table_id);
-    cmor_handle_error(ctmp,CMOR_CRITICAL);
-    cmor_pop_traceback();
-    return 1;
-  }
-  ut_cmor_converter=ut_get_converter(user_units,cmor_units);
-  if (ut_get_status() != UT_SUCCESS) {
-    snprintf(msg,CMOR_MAX_STRING,"Udunits: Error getting converter from %s to %s, axis: %s (table: %s)",ctmp2,msg,cmor_axes[axis_id].id,cmor_tables[cmor_axes[axis_id].ref_table_id].table_id);
-    cmor_handle_error(msg,CMOR_CRITICAL);
-  }
-  tmp=0.;
-  for (i=0;i<nval-1;i++) {
-    diff = tmp_values[i+1]-tmp_values[i]; /* still in user units */
-    /* now converts to seconds */
-    tmp = cv_convert_double(ut_cmor_converter,diff);
-    if (ut_get_status() != UT_SUCCESS) {
-      snprintf(msg,CMOR_MAX_STRING,"In udunits converting, axis: %s (table: %s)",cmor_axes[axis_id].id,cmor_tables[cmor_axes[axis_id].ref_table_id].table_id);
-      cmor_handle_error(msg,CMOR_CRITICAL);
-    }
-    diff2 = tmp;
-    tmp = (double)fabs(diff2-interv);
-    tmp = tmp/interv;
-    if (tmp>cmor_tables[cmor_axes[axis_id].ref_table_id].interval_error) { /* more than 20% diff issues an error */
-      if (isbounds==1) {
-	snprintf(ctmp,CMOR_MAX_STRING,"approximate time axis interval is defined as %f seconds (%s), for value %i we got a difference (based on bounds) of %f seconds, (%f %s), which is %f %% , seems too big, check your values", interv, interval, i+1, diff2,diff, ctmp2,tmp*100.);
-      }
-      else {
-	if (isbounds==1) {
-	  snprintf(ctmp,CMOR_MAX_STRING,"approximate time axis interval is defined as %f seconds (%s), for value %i we got a difference (based on bounds) of %f seconds (%f %s), which is %f %% , seems too big, check your values", interv, interval, i+1, diff2, diff, ctmp2, tmp*100.);
+    if( ut_get_status(  ) != UT_SUCCESS ) {
+	snprintf( msg, CMOR_MAX_STRING,
+		  "Udunits: Error freeing converter, axis: %s (table: %s)",
+		  cmor_axes[axis_id].id,
+		  cmor_tables[cmor_axes[axis_id].ref_table_id].szTable_id );
+	cmor_handle_error( msg, CMOR_CRITICAL );
+    }
+
+    ut_free( user_units );
+
+    if( ut_get_status(  ) != UT_SUCCESS ) {
+	snprintf( msg, CMOR_MAX_STRING,
+		  "Udunits: Error freeing units, axis: %s (table: %s)",
+		  cmor_axes[axis_id].id,
+		  cmor_tables[cmor_axes[axis_id].ref_table_id].szTable_id );
+	cmor_handle_error( msg, CMOR_CRITICAL );
+    }
+
+    /* at this point we need to figure out the axis units interval */
+    strcpy( ctmp, refaxis->units );
+    n = strlen( ctmp );
+    for( i = 0; i < n; i++ ) {
+	if( ctmp[i] == ' ' ) {
+	    ctmp2[i] = '\0';
+	    break;
 	}
-	else {
-	  snprintf(ctmp,CMOR_MAX_STRING,"approximate time axis interval is defined as %f seconds (%s), for value %i we got a difference of %f seconds (%f %s), which is %f %% , seems too big, check your values", interv, interval, i+1, diff2, diff, ctmp2, tmp*100.);
+	ctmp2[i] = ctmp[i];
+    }
+
+    user_units = ut_parse( ut_read, ctmp2, UT_ASCII );
+
+    if( ut_get_status(  ) != UT_SUCCESS ) {
+	snprintf( msg, CMOR_MAX_STRING,
+		  "In udunits parsing user units: %s, axis: %s (table: %s)",
+		  ctmp2, cmor_axes[axis_id].id,
+		  cmor_tables[cmor_axes[axis_id].ref_table_id].szTable_id );
+	cmor_handle_error( msg, CMOR_CRITICAL );
+    }
+
+    if( ut_are_convertible( cmor_units, user_units ) == 0 ) {
+	snprintf( ctmp, CMOR_MAX_STRING,
+		  "axis interval units (%s) are incompatible with seconds, axis: %s (table: %s)",
+		  ctmp2, cmor_axes[axis_id].id,
+		  cmor_tables[cmor_axes[axis_id].ref_table_id].szTable_id );
+	cmor_handle_error( ctmp, CMOR_CRITICAL );
+	cmor_pop_traceback(  );
+	return ( 1 );
+    }
+
+    ut_cmor_converter = ut_get_converter( user_units, cmor_units );
+
+    if( ut_get_status(  ) != UT_SUCCESS ) {
+	snprintf( msg, CMOR_MAX_STRING,
+		  "Udunits: Error getting converter from %s to %s, axis: %s (table: %s)",
+		  ctmp2, msg, cmor_axes[axis_id].id,
+		  cmor_tables[cmor_axes[axis_id].ref_table_id].szTable_id );
+	cmor_handle_error( msg, CMOR_CRITICAL );
+    }
+
+    tmp = 0.;
+    for( i = 0; i < nval - 1; i++ ) {
+	diff = tmp_values[i + 1] - tmp_values[i];	/* still in user units */
+/* -------------------------------------------------------------------- */
+/*      converts to seconds                                             */
+/* -------------------------------------------------------------------- */
+	tmp = cv_convert_double( ut_cmor_converter, diff );
+	if( ut_get_status(  ) != UT_SUCCESS ) {
+	    snprintf( msg, CMOR_MAX_STRING,
+		      "In udunits converting, axis: %s (table: %s)",
+		      cmor_axes[axis_id].id,
+		      cmor_tables[cmor_axes[axis_id].ref_table_id].
+		      szTable_id );
+	    cmor_handle_error( msg, CMOR_CRITICAL );
 	}
-      }
-      cmor_handle_error(ctmp,CMOR_CRITICAL);
-    }
-    else if (tmp>cmor_tables[cmor_axes[axis_id].ref_table_id].interval_warning) { /* more than 10% diff issues a warning */
-      snprintf(ctmp,CMOR_MAX_STRING,"approximate time axis interval is defined as %f seconds (%s), for value %i we got a difference of %f seconds (%f %s), which is %f %% , seems too big, check your values", interv, interval, i+1, diff2, diff, ctmp2,tmp*100.);
-      cmor_handle_error(ctmp,CMOR_WARNING);
-    }
-  }
-
-  /* ok here we test for bounds being at begining and end of the month */
-  if ((isbounds==1) && (fabs(interv-2592000.)/2592000. < .1)) {
-    cmor_get_cur_dataset_attribute("calendar",ctmp);
-    if (cmor_calendar_c2i(ctmp,&icali)!=0) {
-      snprintf(ctmp,CMOR_MAX_STRING,"Cannot convert times for calendar: %s",ctmp);
-      cmor_handle_error(ctmp,CMOR_NORMAL);
-      cmor_pop_traceback();
-      return 1;
-    }
-    for (i=0;i<nvalues;i++) {
-      cmor_convert_time_units(axis->iunits,cmor_tables[axis->ref_table_id].axes[axis->ref_axis_id].units,ctmp);
-      cdRel2Comp(icali,ctmp,values[i],&comptime);
-      if (comptime.day!=1) {
-	snprintf(ctmp,CMOR_MAX_STRING,"Bounds value %ld-%d-%d is not beg or end of month and you seem to be writing monthly data, please check",comptime.year,comptime.month,comptime.day);
-	cmor_handle_error(ctmp,CMOR_WARNING);
-      }
-    }
-  }
-  cv_free(ut_cmor_converter);
-  if (ut_get_status() != UT_SUCCESS) {
-    snprintf(msg,CMOR_MAX_STRING,"Udunits: Error freeing converter, axis: %s (table: %s)",cmor_axes[axis_id].id,cmor_tables[cmor_axes[axis_id].ref_table_id].table_id);
-    cmor_handle_error(msg,CMOR_CRITICAL);
-  }
-  
-  ut_free(cmor_units);
-  if (ut_get_status() != UT_SUCCESS) {
-    snprintf(msg,CMOR_MAX_STRING,"Udunits: Error freeing units, axis: %s (table: %s)",cmor_axes[axis_id].id,cmor_tables[cmor_axes[axis_id].ref_table_id].table_id);
-    cmor_handle_error(msg,CMOR_CRITICAL);
-  }
-  ut_free(user_units);
-  if (ut_get_status() != UT_SUCCESS) {
-    snprintf(msg,CMOR_MAX_STRING,"Udunits: Error freeing units, axis: %s (table: %s)",cmor_axes[axis_id].id,cmor_tables[cmor_axes[axis_id].ref_table_id].table_id);
-    cmor_handle_error(msg,CMOR_CRITICAL);
-  }
-  if (isbounds == 1) free(tmp_values);
-  cmor_pop_traceback();
-  return 0;
-}
 
-int cmor_axis(int *axis_id, char *name,char *units, int length,void *coord_vals, char type, void *cell_bounds,int cell_bounds_ndim,char *interval) 
-{
-  extern int cmor_naxes;
-  extern int CMOR_TABLE;
-
-  int i,iref,j,ierr,k,l;
-  cmor_axis_def_t refaxis;
-  char msg[CMOR_MAX_STRING];
-  char ctmp[CMOR_MAX_STRING];
-  
-  cmor_add_traceback("cmor_axis");
-  cmor_is_setup();
-
-  if (CMOR_TABLE==-1) {
-    cmor_handle_error("You did not define a table yet!",CMOR_CRITICAL);
-  }
-
-  if (cmor_naxes==CMOR_MAX_AXES-1) { 
-    cmor_handle_error("Too many axes defined",CMOR_CRITICAL);
-    cmor_pop_traceback();
-    return 1;
-  }
-
-  /* printf("cell bnds ndims: %i\n",cell_bounds_ndim); */
-  /* if (cell_bounds_ndim==1) { */
-  /*   for (i=0;i<length;i++) { */
-  /*     printf("%lf < %lf < %lf\n",(double)((double *)cell_bounds)[i],(double)((double *)coord_vals)[i],(double)((double *)cell_bounds)[i+1]); */
-  /*   } */
-  /* } */
-   /* for (i=0;i<length;i++) {printf("ok in cmor_axsi we have: %i, %lf, %lf, %lf\n",i,(double)((double *)coord_vals)[i],(double)((double *)cell_bounds)[2*i],(double)((double *)cell_bounds)[2*i+1]);} */
-
-  cmor_naxes+=1;
-  strncpytrim(cmor_axes[cmor_naxes].id,name,CMOR_MAX_STRING);
-  /* ok now look which axis is corresponding in table if not found then error */
-  iref=-1;
-  cmor_trim_string(name,msg);
-  for (i=0;i<=cmor_tables[CMOR_TABLE].naxes;i++) if (strcmp(cmor_tables[CMOR_TABLE].axes[i].id,msg)==0) { iref=i;break;}
-  if (iref==-1) {
-    snprintf(ctmp,CMOR_MAX_STRING,"Could not find a matching axis for name: '%s'\n",msg);
-    cmor_handle_error(ctmp,CMOR_CRITICAL);
-  }
-  /*printf("ok your axis is actually axis %i in table %i\n",iref,CMOR_TABLE);*/
-  refaxis=cmor_tables[CMOR_TABLE].axes[iref];
-  cmor_axes[cmor_naxes].ref_table_id=CMOR_TABLE;
-  cmor_axes[cmor_naxes].ref_axis_id=iref;
-
-  cmor_axes[cmor_naxes].length=length;
-  cmor_axes[cmor_naxes].type=type;
-  cmor_axes[cmor_naxes].store_in_netcdf=1;
-
-  /* attributes settings */
-  if (refaxis.axis=='T') {
-    cmor_get_cur_dataset_attribute("calendar",ctmp);
-    cmor_set_axis_attribute(cmor_naxes,"calendar",'c',ctmp);
-    cmor_convert_time_units(units,refaxis.units,&ctmp[0]);
-    strncpytrim(cmor_axes[cmor_naxes].iunits,units,CMOR_MAX_STRING);
-  }
-  else strcpy(ctmp,refaxis.units);
-  ierr = cmor_set_axis_attribute(cmor_naxes,"units",'c',ctmp);
-  ctmp[0]=refaxis.axis; 
-  ctmp[1]='\0';
-  cmor_axes[cmor_naxes].axis=refaxis.axis;
-/*   printf("axis %s ref axis convert: %s\n",cmor_axes[cmor_naxes].id,refaxis.convert_to); */
-  if (refaxis.axis!='\0') ierr = cmor_set_axis_attribute(cmor_naxes,"axis",'c',ctmp);
-  if (refaxis.positive!='\0') {
-    if (refaxis.positive=='u') cmor_set_axis_attribute(cmor_naxes,"positive",'c',"up");
-    else if (refaxis.positive=='d') cmor_set_axis_attribute(cmor_naxes,"positive",'c',"down");
-  }
-  if (refaxis.long_name[0]!='\0') ierr = cmor_set_axis_attribute(cmor_naxes,"long_name",'c',refaxis.long_name);
-  if (refaxis.standard_name[0]!='\0') ierr = cmor_set_axis_attribute(cmor_naxes,"standard_name",'c',refaxis.standard_name);
-  if (refaxis.formula[0]!='\0') ierr = cmor_set_axis_attribute(cmor_naxes,"formula",'c',refaxis.formula);
-  if (refaxis.z_factors[0]!='\0') ierr = cmor_set_axis_attribute(cmor_naxes,"z_factors",'c',refaxis.z_factors);
-  if ((refaxis.z_bounds_factors[0]!='\0') && (cell_bounds!=NULL)) ierr = cmor_set_axis_attribute(cmor_naxes,"z_bounds_factors",'c',refaxis.z_bounds_factors);
-
-/*   printf("comparing %s\n",cmor_axes[cmor_naxes].id); */
-  if (strcmp(cmor_axes[cmor_naxes].id,"standard_sigma")==0) cmor_axes[cmor_naxes].hybrid_in=3;
-  if (strcmp(cmor_axes[cmor_naxes].id,"standard_hybrid_sigma")==0) cmor_axes[cmor_naxes].hybrid_in=1;
-  if (strcmp(cmor_axes[cmor_naxes].id,"alternate_hybrid_sigma")==0) cmor_axes[cmor_naxes].hybrid_in=2;
-/*   printf("we got hybrid in setto : %i\n",cmor_axes[cmor_naxes].hybrid_in); */
-  if (refaxis.convert_to[0]!='\0') {
-    if (strcmp(refaxis.convert_to,name)!=0) {
-      if (strcmp(refaxis.convert_to,"standard_hybrid_sigma")==0) {
-	/* remembers what the original type was */
-	i = cmor_axes[cmor_naxes].hybrid_in;
-	if ((strcmp(name,"standard_hybrid_sigma")!=0) && (strcmp(name,"alternate_hybrid_sigma")!=0) && (strcmp(name,"standard_sigma")!=0)) {
-	  snprintf(msg,CMOR_MAX_STRING,"axis: %s (table: %s) converting to \"standard_hybrid_sigma\" from unknown type: %s",cmor_axes[cmor_naxes].id,cmor_tables[CMOR_TABLE].table_id,name);
-	  cmor_handle_error(msg,CMOR_CRITICAL);
+	diff2 = tmp;
+	tmp = ( double ) fabs( diff2 - interv );
+	tmp = tmp / interv;
+/* -------------------------------------------------------------------- */
+/* more than 20% diff issues an error                                   */
+/* -------------------------------------------------------------------- */
+
+	if( tmp > cmor_tables[cmor_axes[axis_id].ref_table_id].interval_error ) {
+	    if( isbounds == 1 ) {
+		snprintf( ctmp, CMOR_MAX_STRING,
+			  "approximate time axis interval is defined as %f "
+			  "seconds (%s), for value %i we got a difference "
+			  "(based on bounds) of %f seconds, (%f %s), which "
+			  "is %f %% , seems too big, check your values",
+			  interv, interval, i + 1, diff2, diff, ctmp2,
+			  tmp * 100. );
+	    } else {
+		if( isbounds == 1 ) {
+		    snprintf( ctmp, CMOR_MAX_STRING,
+			      "approximate time axis interval is defined as "
+			      "%f seconds (%s), for value %i we got a difference "
+			      "(based on bounds) of %f seconds (%f %s), which is "
+			      "%f %% , seems too big, check your values",
+			      interv, interval, i + 1, diff2, diff, ctmp2,
+			      tmp * 100. );
+		} else {
+		    snprintf( ctmp, CMOR_MAX_STRING,
+			      "approximate time axis interval is defined as %f "
+			      "seconds (%s), for value %i we got a difference of "
+			      "%f seconds (%f %s), which is %f %% , seems too big, "
+			      "check your values",
+			      interv, interval, i + 1, diff2, diff, ctmp2,
+			      tmp * 100. );
+		}
+	    }
+
+	    cmor_handle_error( ctmp, CMOR_CRITICAL );
+	} else if( tmp > cmor_tables[cmor_axes[axis_id].ref_table_id].
+		   interval_warning ) {
+/* -------------------------------------------------------------------- */
+/*      more than 10% diff issues a warning                             */
+/* -------------------------------------------------------------------- */
+	    snprintf( ctmp, CMOR_MAX_STRING,
+		      "approximate time axis interval is defined as %f "
+		      "seconds (%s), for value %i we got a difference of %f "
+		      "seconds (%f %s), which is %f %% , seems too big, check "
+		      "your values",
+		      interv, interval, i + 1, diff2, diff, ctmp2,
+		      tmp * 100. );
+	    cmor_handle_error( ctmp, CMOR_WARNING );
 	}
-	/* printf("yep we are copnverting to: %s\n",refaxis.convert_to); */
-	ierr = cmor_axis(axis_id,refaxis.convert_to,units,length,coord_vals,type,cell_bounds,cell_bounds_ndim,interval); 
-	cmor_axes[cmor_naxes].hybrid_in=i; 
-	cmor_axes[cmor_naxes].hybrid_out=1;
-	*axis_id = cmor_naxes;
-	cmor_pop_traceback();
-	return 0;
-      }
-      else {
-	snprintf(msg,CMOR_MAX_STRING,"axis: %s (table: %s) is declared to be converted to unknown type: %s",cmor_axes[cmor_naxes].id,cmor_tables[CMOR_TABLE].table_id,refaxis.convert_to);
-	cmor_handle_error(msg,CMOR_CRITICAL);
-      }
-    }
-  }
-  else {
-    cmor_axes[cmor_naxes].hybrid_out=cmor_axes[cmor_naxes].hybrid_in;
-  }
-
-  /* interval attribute */
-  if ((interval!=NULL) && (interval[0]!='\0')) {
-    ierr = cmor_set_axis_attribute(cmor_naxes,"interval",'c',interval);
-  }
-  
-  /* test whether bounds are requested or not */
-  if ((cell_bounds==NULL) && (refaxis.must_have_bounds==1)) {
-    if (refaxis.axis!='T') {
-      snprintf(msg,CMOR_MAX_STRING,"axis: %s (table: %s) must have bounds, you did not pass any when creating it via cmor_axis",cmor_axes[cmor_naxes].id,cmor_tables[CMOR_TABLE].table_id);
-      cmor_handle_error(msg,CMOR_CRITICAL);
-    }
-    else if (coord_vals!=NULL) { /* we passed time values that means we do not intend to pass them later */
-      snprintf(msg,CMOR_MAX_STRING,"axis: %s (table: %s) must have bounds, you did not pass any when creating it via cmor_axis",cmor_axes[cmor_naxes].id,cmor_tables[CMOR_TABLE].table_id);
-      cmor_handle_error(msg,CMOR_CRITICAL);
-    }
-  }
-  if (coord_vals!=NULL) { /* user passed coords need to convert this guys */
-    if (type!='c') {
-      cmor_axes[cmor_naxes].values=malloc(length*sizeof(double));
-      if (refaxis.axis=='X') {
-          /* mallocing space for wrapp issues on longitude */
-          cmor_axes[cmor_naxes].wrapping=malloc(length*sizeof(int));
-          for (i=0;i<length;i++) cmor_axes[cmor_naxes].wrapping[i]=0;
-      }
-      if ( cmor_axes[cmor_naxes].values == NULL ) {
-	snprintf(msg,CMOR_MAX_STRING,"cannot allocate memory for %i double elts for axis %s (table: %s)",length,cmor_axes[cmor_naxes].id,cmor_tables[CMOR_TABLE].table_id);
-	cmor_handle_error(msg,CMOR_CRITICAL);
-      }
-      if (type=='f') for (i=0;i<length;i++) cmor_axes[cmor_naxes].values[i] = (double)((float *)coord_vals)[i];
-      else if (type=='l') for (i=0;i<length;i++) cmor_axes[cmor_naxes].values[i] = (double)((long *)coord_vals)[i];
-      else if (type=='i') for (i=0;i<length;i++) cmor_axes[cmor_naxes].values[i] = (double)((int *)coord_vals)[i];
-      else if (type=='d') for (i=0;i<length;i++) cmor_axes[cmor_naxes].values[i] = (double)((double *)coord_vals)[i];
-
-/*       for(i=0;i<length;i++) printf("ok we received: %i:%lf\n",i,cmor_axes[cmor_naxes].values[i]); */
     }
-    else {
-      /* before we do anything let check that output type is also character */
-      if (type!=refaxis.type) {
-	snprintf(msg,CMOR_MAX_STRING,"You are trying to define axis %s (table: %s) as character when it should be of type: %c\n",cmor_axes[cmor_naxes].id,cmor_tables[CMOR_TABLE].table_id,refaxis.type);
-	cmor_handle_error(msg,CMOR_CRITICAL);
-      }
-      cmor_axes[cmor_naxes].cvalues=malloc(length*sizeof(char *));
-      if (cmor_axes[cmor_naxes].cvalues == NULL)  {
-	snprintf(msg,CMOR_MAX_STRING,"cannot allocate memory for %i char elts for axis %s (table: %s)",length,cmor_axes[cmor_naxes].id,cmor_tables[CMOR_TABLE].table_id);
-	cmor_handle_error(msg,CMOR_CRITICAL);
-      }
-      if (cell_bounds_ndim==0) k=CMOR_MAX_STRING;
-      else k=cell_bounds_ndim;
-      for (i=0;i<length;i++) {
-	j = strlen(&((char *)coord_vals)[i*k]);
-	if (j>k) j=k;
-	cmor_axes[cmor_naxes].cvalues[i]=malloc((j+1)*sizeof(char));
-	if (cmor_axes[cmor_naxes].cvalues[i] == NULL )   {
-	  snprintf(msg,CMOR_MAX_STRING,"cannot allocate memory for %i char elts for axis %s (table: %s)",j+1,cmor_axes[cmor_naxes].id,cmor_tables[CMOR_TABLE].table_id);
-	  cmor_handle_error(msg,CMOR_CRITICAL);
+
+/* -------------------------------------------------------------------- */
+/*      bounds being at begining and end of the month                   */
+/* -------------------------------------------------------------------- */
+    if( ( isbounds == 1 )
+	&& ( fabs( interv - 2592000. ) / 2592000. < .1 ) ) {
+	cmor_get_cur_dataset_attribute( "calendar", ctmp );
+	if( cmor_calendar_c2i( ctmp, &icali ) != 0 ) {
+	    snprintf( ctmp, CMOR_MAX_STRING,
+		      "Cannot convert times for calendar: %s", ctmp );
+	    cmor_handle_error( ctmp, CMOR_NORMAL );
+	    cmor_pop_traceback(  );
+	    return ( 1 );
 	}
-	strncpy(cmor_axes[cmor_naxes].cvalues[i],&((char *)coord_vals)[i*k],j);
-	cmor_axes[cmor_naxes].cvalues[i][j]='\0';
-      }
-      /* we don't want to do the bounds stuff */
-      /* but we need to look at the requested thing! */
-      if (refaxis.crequested!=NULL) {
-	i=0;
-	j=strlen(&refaxis.crequested[0]);
-	for (i=0;i<j;i++) {
-	  k=0;
-	  while ((refaxis.crequested[i]!=' ') && (refaxis.crequested[i]!='\0')) {ctmp[k]=refaxis.crequested[i];i++;k++;}
-	  ctmp[k]='\0';
-	  k=-1;
-	  for (l=0;l<length;l++) {
-/* 	    printf("comparing: %s and %s\n",ctmp,cmor_axes[cmor_naxes].cvalues[l]); */
-	    if (strncmp(ctmp,cmor_axes[cmor_naxes].cvalues[l],strlen(ctmp))==0) k=l;
-	  }
-	  if (k==-1) {
-	    snprintf(msg,CMOR_MAX_STRING,"Requested region for axis '%s' (table: %s) is not passed: '%s'",cmor_axes[cmor_naxes].id,cmor_tables[CMOR_TABLE].table_id,ctmp);
-	    cmor_handle_error(msg,CMOR_CRITICAL);
-	  }
+
+	for( i = 0; i < nvalues; i++ ) {
+	    cmor_convert_time_units( axis->iunits,
+				     cmor_tables[axis->ref_table_id].
+				     axes[axis->ref_axis_id].units, ctmp );
+	    cdRel2Comp( icali, ctmp, values[i], &comptime );
+	    if( comptime.day != 1 ) {
+		snprintf( ctmp, CMOR_MAX_STRING,
+			  "Bounds value %ld-%d-%d is not beg or end of month\n! "
+			  "and you seem to be writing monthly data, please check",
+			  comptime.year, comptime.month, comptime.day );
+		cmor_handle_error( ctmp, CMOR_WARNING );
+	    }
 	}
-      }
-      if (refaxis.out_name[0]!='\0') strcpy(cmor_axes[cmor_naxes].id,refaxis.out_name);
-      *axis_id=cmor_naxes;
-      cmor_pop_traceback();
-      return 0;
-    }
-
-    /* printf("Ok is this the problematic place?\n"); */
-    ierr = cmor_treat_axis_values(cmor_naxes, &cmor_axes[cmor_naxes].values[0],length,refaxis.n_requested, units, name, 0 );
-    /* printf("nope\n"); */
-    /* puts bounds on 2d array */
-    if ((cell_bounds!=NULL) && (cell_bounds_ndim!=0)) {
-      cmor_axes[cmor_naxes].bounds=malloc(2*length*sizeof(double));
-      if (cmor_axes[cmor_naxes].bounds == NULL)   {
-	snprintf(msg,CMOR_MAX_STRING,"cannot allocate memory for %i bounds elts for axis %s (table: %s)",2*length,cmor_axes[cmor_naxes].id,cmor_tables[CMOR_TABLE].table_id);
-	cmor_handle_error(msg,CMOR_CRITICAL);
-      }
-      if (cell_bounds_ndim == 2) {
-	if (type=='f') for (i=0;i<length;i++) { cmor_axes[cmor_naxes].bounds[2*i]=(double)((float *)cell_bounds)[2*i];cmor_axes[cmor_naxes].bounds[2*i+1]=(double)((float *)cell_bounds)[2*i+1]; }
-	else if (type=='d') for (i=0;i<length;i++) { cmor_axes[cmor_naxes].bounds[2*i]=(double)((double *)cell_bounds)[2*i];cmor_axes[cmor_naxes].bounds[2*i+1]=(double)((double *)cell_bounds)[2*i+1]; }
-	else if (type=='l') for (i=0;i<length;i++) { cmor_axes[cmor_naxes].bounds[2*i]=(double)((long *)cell_bounds)[2*i];cmor_axes[cmor_naxes].bounds[2*i+1]=(double)((long *)cell_bounds)[2*i+1]; }
-	else if (type=='i') for (i=0;i<length;i++) { cmor_axes[cmor_naxes].bounds[2*i]=(double)((int *)cell_bounds)[2*i];cmor_axes[cmor_naxes].bounds[2*i+1]=(double)((int *)cell_bounds)[2*i+1]; }
-	else { /* ??? charcter axis code here */ snprintf(msg,CMOR_MAX_STRING,"CMOR cannot handle axes of type %c please change type, axis: %s (table: %s)",type,cmor_axes[cmor_naxes].id,cmor_tables[CMOR_TABLE].table_id); cmor_handle_error(msg,CMOR_CRITICAL);}
-      }
-      else if (cell_bounds_ndim == 1) {
-	if (type=='f') for (i=0;i<length;i++) { cmor_axes[cmor_naxes].bounds[2*i]=(double)((float *)cell_bounds)[i]; cmor_axes[cmor_naxes].bounds[2*i+1]=(double)((float *)cell_bounds)[i+1]; }
-	else if (type=='d') for (i=0;i<length;i++) {cmor_axes[cmor_naxes].bounds[2*i]=(double)((double *)cell_bounds)[i]; cmor_axes[cmor_naxes].bounds[2*i+1]=(double)((double *)cell_bounds)[i+1]; }
-	else if (type=='i') for (i=0;i<length;i++) { cmor_axes[cmor_naxes].bounds[2*i]=(double)((int *)cell_bounds)[i]; cmor_axes[cmor_naxes].bounds[2*i+1]=(double)((int *)cell_bounds)[i+1]; }
-	else if (type=='l') for (i=0;i<length;i++) { cmor_axes[cmor_naxes].bounds[2*i]=(double)((long *)cell_bounds)[i]; cmor_axes[cmor_naxes].bounds[2*i+1]=(double)((long *)cell_bounds)[i+1]; }
-	else { /* ??? charcter axis code here */ snprintf(msg,CMOR_MAX_STRING,"CMOR cannot handle axes of type %c please change type, axis: %s (table: %s)",type,cmor_axes[cmor_naxes].id,cmor_tables[CMOR_TABLE].table_id); cmor_handle_error(msg,CMOR_CRITICAL);}
-      }
-      /* for (i=0;i<length;i++) printf("bounds: %i -> %lf,%lf\n",i,cmor_axes[cmor_naxes].bounds[2*i],cmor_axes[cmor_naxes].bounds[2*i+1]); */
-      ierr = cmor_treat_axis_values(cmor_naxes, &cmor_axes[cmor_naxes].bounds[0],2*length,0,units, name, 1 );
-      /* printf("nope again\n"); */
-      /* At this point we are checking that the axis values are within bounds */
-      /* for (i=0;i<length;i++) printf("check bounds: %i -> %lf,%lf,%lf\n",i,cmor_axes[cmor_naxes].bounds[2*i],cmor_axes[cmor_naxes].values[i],cmor_axes[cmor_naxes].bounds[2*i+1]); */
-      ierr = cmor_check_values_inside_bounds(&cmor_axes[cmor_naxes].values[0],&cmor_axes[cmor_naxes].bounds[0], length, name);
-      if ((refaxis.axis=='T')&&(refaxis.climatology==0)) {
-	/* ok now we need to overwrite the time values with mid point */
-	for (i=0;i<length;i++) cmor_axes[cmor_naxes].values[i]=(cmor_axes[cmor_naxes].bounds[2*i]+cmor_axes[cmor_naxes].bounds[2*i+1])/2.;
-      /* here we check if interval is about right */
-      /* just keep the begining of units out no need to know the since part */
-      j=0;
-      while (refaxis.units[j]==' ') j++;
-      i=0;
-      while ((refaxis.units[i+j]!=' ') && (refaxis.units[i+j]!='\0')) {
-	ctmp[i]=refaxis.units[i+j];
-	i++;
-      }
-      ctmp[i]='\0';
-      snprintf(msg,CMOR_MAX_STRING,"%lf %s",cmor_tables[cmor_axes[cmor_naxes].ref_table_id].interval,ctmp);
-      /* printf("calling chck interv: %i\n",length); */
-      /* for(i=0;i<length;i++) printf("i:%i ,val: %lf\n",i,values[i]); */
-      /* ok skip this for non standard cal */
-      
-      i = cmor_check_interval(cmor_naxes,msg,&cmor_axes[cmor_naxes].values[0],length,0);
-      }
-    }
-  }
-  else {
-    if ((refaxis.axis!='T') && (refaxis.index_only=='n')) {
-      snprintf(msg,CMOR_MAX_STRING,"function called for axis '%s' (table: %s) w/o any values",cmor_axes[cmor_naxes].id,cmor_tables[CMOR_TABLE].table_id);
-	cmor_handle_error(msg,CMOR_CRITICAL);
-    }
-    if (refaxis.index_only!='n') {
-      /* it is an index no need to store values */
-      cmor_axes[cmor_naxes].store_in_netcdf=0;
-    }
-  }
-
-  if (refaxis.out_name[0]!='\0') strcpy(cmor_axes[cmor_naxes].id,refaxis.out_name);
-  *axis_id=cmor_naxes;
-
-  cmor_pop_traceback();
-  free(cmor_axes[cmor_naxes].wrapping);
-  return 0;
-};
-
-void cmor_init_axis_def(cmor_axis_def_t *axis, int table_id)
-{
-  cmor_is_setup();
-  axis->table_id=table_id;
-  axis->climatology=0;
-  axis->standard_name[0]='\0';
-  axis->units[0]='\0';
-  axis->axis='\0';
-  axis->positive='\0';
-  axis->long_name[0]='\0';
-  axis->out_name[0]='\0';
-  axis->type='d';
-  axis->stored_direction='i';
-  axis->valid_min=1.e20; /* means no check */
-  axis->valid_max=1.e20;
-  if (axis->requested!=NULL) free(axis->requested);
-  axis->requested=NULL;
-  if (axis->requested_bounds!=NULL) free(axis->requested_bounds);
-  axis->requested_bounds=NULL;
-  axis->tolerance=1.e-3;
-  axis->value=1.e20;
-  axis->cvalue[0]='\0';
-  axis->bounds_value[0]=1.e20;
-  axis->bounds_value[1]=1.e20;
-  axis->convert_to[0]='\0';
-  axis->formula[0]='\0';
-  axis->z_factors[0]='\0';
-  axis->z_bounds_factors[0]='\0';
-  if (axis->crequested!=NULL) free(axis->requested);
-  axis->crequested=NULL;
-  axis->cname[0]='\0';
-  if (axis->requested_bounds!=NULL) free(axis->requested_bounds);
-  axis->requested=NULL;
-  axis->n_requested=0;
-  axis->n_requested_bounds=0;
-  axis->index_only='n';
-  axis->must_have_bounds=0;
-  axis->must_call_cmor_grid=0;
+    }
+
+    cv_free( ut_cmor_converter );
+
+    if( ut_get_status(  ) != UT_SUCCESS ) {
+	snprintf( msg, CMOR_MAX_STRING,
+		  "Udunits: Error freeing converter, axis: %s (table: %s)",
+		  cmor_axes[axis_id].id,
+		  cmor_tables[cmor_axes[axis_id].ref_table_id].szTable_id );
+	cmor_handle_error( msg, CMOR_CRITICAL );
+    }
+
+    ut_free( cmor_units );
+
+    if( ut_get_status(  ) != UT_SUCCESS ) {
+	snprintf( msg, CMOR_MAX_STRING,
+		  "Udunits: Error freeing units, axis: %s (table: %s)",
+		  cmor_axes[axis_id].id,
+		  cmor_tables[cmor_axes[axis_id].ref_table_id].szTable_id );
+	cmor_handle_error( msg, CMOR_CRITICAL );
+    }
+
+    ut_free( user_units );
+
+    if( ut_get_status(  ) != UT_SUCCESS ) {
+	snprintf( msg, CMOR_MAX_STRING,
+		  "Udunits: Error freeing units, axis: %s (table: %s)",
+		  cmor_axes[axis_id].id,
+		  cmor_tables[cmor_axes[axis_id].ref_table_id].szTable_id );
+	cmor_handle_error( msg, CMOR_CRITICAL );
+    }
+
+    if( isbounds == 1 )
+	free( tmp_values );
+
+    cmor_pop_traceback(  );
+    return ( 0 );
 }
 
-int cmor_set_axis_def_att(cmor_axis_def_t *axis,char att[CMOR_MAX_STRING],char val[CMOR_MAX_STRING] ){
-  int i,n,j;
-  char dim[CMOR_MAX_STRING];
-  char msg[CMOR_MAX_STRING];
-  double vals[CMOR_MAX_ELEMENTS];
-  double *tmp=NULL;
-  
-  cmor_add_traceback("cmor_set_axis_def_att");
-  cmor_is_setup();
-/*   printf("setting %s to %s on axis %s\n",att,val,axis->id); */
-  if (strcmp(att,"required")==0) {
-    strcpy(axis->required,att);
-  }
-  else if (strcmp(att,"id")==0) {
-    strcpy(axis->id,val);
-  }
-  else if (strcmp(att,"climatology")==0) {
-    if (strcmp(val,"yes")==0) axis->climatology=1;
-  }
-  else if (strcmp(att,"out_name")==0) {
-    strcpy(axis->out_name,val);
-  }
-  else if (strcmp(att,"standard_name")==0) {
-    strcpy(axis->standard_name,val);
-  }
-  else if (strcmp(att,"long_name")==0) {
-    strcpy(axis->long_name,val);
-  }
-  else if (strcmp(att,"convert_to")==0) {
-    strcpy(axis->convert_to,val);
-  }
-  else if (strcmp(att,"formula")==0) {
-    strcpy(axis->formula,val);
-  }
-  else if (strcmp(att,"z_factors")==0) {
-    strcpy(axis->z_factors,val);
-  }
-  else if (strcmp(att,"z_bounds_factors")==0) {
-    strcpy(axis->z_bounds_factors,val);
-  }
-  else if (strcmp(att,"units")==0) {
-    strncpy(axis->units,val,CMOR_MAX_STRING);
-  }
-  else if (strcmp(att,"stored_direction")==0) {
-    if (val[0]=='i') axis->stored_direction='i';
-    else if (val[0]=='d') axis->stored_direction='d';
-  }
-  else if (strcmp(att,"positive")==0) {
-    axis->positive=val[0];
-  }
-  else if (strcmp(att,"axis")==0) {
-    axis->axis=val[0];
-  }
-  else if (strcmp(att,"index_only")==0) {
-    axis->index_only=val[0];
-  }
-  else if (strcmp(att,"must_have_bounds")==0) {
-    if (strcmp(val,"yes")==0) axis->must_have_bounds=1;
-  }
-  else if (strcmp(att,"must_call_cmor_grid")==0) {
-    if (strcmp(val,"yes")==0) axis->must_call_cmor_grid=1;
-  }
-  else if (strcmp(att,"type")==0) {
-    if (strcmp(val,"real")==0) axis->type='f';
-    else if (strcmp(val,"double")==0) axis->type='d';
-    else if (strcmp(val,"integer")==0) axis->type='i';
-    else if (strcmp(val,"long")==0) axis->type='l';
-    else if (strcmp(val,"character")==0) axis->type='c';
-  }
-  else if (strcmp(att,"valid_min")==0) {
-    axis->valid_min=atof(val);
-  }
-  else if (strcmp(att,"valid_max")==0) {
-    axis->valid_max=atof(val);
-  }
-  else if (strcmp(att,"tolerance")==0) {
-    axis->tolerance = atof(val);
-  }
-  else if (strcmp(att,"tol_on_requests")==0) {
-    axis->tolerance = atof(val);
-  }
-  else if (strcmp(att,"value")==0) {
-    strncpytrim(axis->cvalue,val,CMOR_MAX_STRING);
-    axis->value = atof(val);
-  }
-  else if (strcmp(att,"bounds_values")==0) {
-    sscanf(val,"%lf %lf",&axis->bounds_value[0],&axis->bounds_value[1]);
-  }
-  else if (strcmp(att,"coords_attrib")==0) {
-    strncpytrim(axis->cname,val,CMOR_MAX_STRING);
-  }
-  else if ((strcmp(att,"bounds_requested")==0) || (strcmp(att,"requested_bounds")==0)) { /* requested values for axis */
-    dim[0]='\0';
-    n=0;
-    for(i=0;i<strlen(val);i++) {
-      j=i;
-      while(((val[i]!=' ')&&(val[i]!='\0')) && (i<strlen(val))) {
-	dim[i-j]=val[i];
-	i++;
-      }
-      dim[i-j]='\0';
-      sscanf(dim,"%lf",&vals[n]);
-      while((val[i]==' ') && (val[i]!='\0')) {
-	i++;
-      }
-      i--;
-      n++;
-    }
-    if (axis->n_requested_bounds!=0) { /* ok we already had some read in need to memorize it */
-      if (axis->requested_bounds == NULL)  {
-	snprintf(msg,CMOR_MAX_STRING,"axis (%s, table: %s): looks like we already read %d requested bounds but they are not stored in the internal tables, maybe some bad cleanup",axis->id, cmor_tables[axis->table_id].table_id,axis->n_requested_bounds);
-	cmor_handle_error(msg,CMOR_CRITICAL);
-      }
-      tmp=malloc(axis->n_requested_bounds*sizeof(double));
-      if (tmp == NULL)  {
-	snprintf(msg,CMOR_MAX_STRING,"axis (%s, table: %s): cannot allocate memory for %i requested bounds elts for axis %s",axis->id, cmor_tables[axis->table_id].table_id,axis->n_requested,axis->id);
-	cmor_handle_error(msg,CMOR_CRITICAL);
-      }
-      for (i=0;i<axis->n_requested_bounds;i++) {
-	tmp[i]=axis->requested_bounds[i];
-      }
-      free(axis->requested_bounds);
-      axis->n_requested_bounds+=n;
+/************************************************************************/
+/*                             cmor_axis()                              */
+/************************************************************************/
+int cmor_axis(int *axis_id, char *name, char *units, int length,
+        void *coord_vals, char type, void *cell_bounds, int cell_bounds_ndim,
+        char *interval) {
+    extern int cmor_naxes;
+    extern int CMOR_TABLE;
+
+    int i, iref, j, k, l;
+    cmor_axis_def_t refaxis;
+    char msg[CMOR_MAX_STRING];
+    char ctmp[CMOR_MAX_STRING];
+
+    cmor_add_traceback("cmor_axis");
+    cmor_is_setup();
+
+    if (CMOR_TABLE == -1) {
+
+        cmor_handle_error("You did not define a table yet!", CMOR_CRITICAL);
     }
-    else {
-      axis->n_requested_bounds=n;
-    }
-    axis->requested_bounds=malloc(axis->n_requested_bounds*sizeof(double));
-    if (axis->requested_bounds == NULL)  {
-      snprintf(msg,CMOR_MAX_STRING,"axis (%s, table: %s): cannot allocate memory for %i requested bounds elts for axis %s",axis->id, cmor_tables[axis->table_id].table_id,axis->n_requested,axis->id);
-      cmor_handle_error(msg,CMOR_CRITICAL);
-    }
-    for (i=0;i<n;i++) {  axis->requested_bounds[axis->n_requested_bounds-n+i]=vals[i];}
-    if (tmp!=NULL) { /* ok we had previously read in data need to add this */
-      for (i=0;i<axis->n_requested_bounds-n;i++) {
-	axis->requested_bounds[i]=tmp[i];
-      }
-      free(tmp); /* we don't need this any longer */
-      tmp=NULL;
-    }
-  }
-  else if (strcmp(att,"requested")==0) { /* requested values for axis */
-    if (axis->type!='c') {
-      dim[0]='\0';
-      n=0;
-      for(i=0;i<strlen(val);i++) {
-	j=i;
-	while(((val[i]!=' ')&&(val[i]!='\0')) && (i<strlen(val))) {
-	  dim[i-j]=val[i];
-	  i++;
-	}
-	dim[i-j]='\0';
-	sscanf(dim,"%lf",&vals[n]);
-	while((val[i]==' ') && (val[i]!='\0')) {
-	  i++;
-	}
-	i--;
-	n++;
-      }
-      if (axis->n_requested!=0) { /* ok we already had some read in need to memorize it */
-	if (axis->requested == NULL)  {
-	  snprintf(msg,CMOR_MAX_STRING,"axis (%s, table: %s): looks like we already read %d requested values but they are not stored in the internal tables, maybe some bad cleanup",axis->id, cmor_tables[axis->table_id].table_id,axis->n_requested);
-	  cmor_handle_error(msg,CMOR_CRITICAL);
-	}
-	tmp=malloc(axis->n_requested*sizeof(double));
-	if (tmp == NULL)  {
-	  snprintf(msg,CMOR_MAX_STRING,"axis (%s, table: %s): cannot allocate memory for %i requested elts for axis %s",axis->id, cmor_tables[axis->table_id].table_id,axis->n_requested,axis->id);
-	  cmor_handle_error(msg,CMOR_CRITICAL);
-	}
-	for (i=0;i<axis->n_requested;i++) {
-	  tmp[i]=axis->requested[i];
-	}
-	free(axis->requested);
-	axis->n_requested+=n;
-      }
-      else {
-	axis->n_requested=n;
-      }
-      axis->requested=malloc(axis->n_requested*sizeof(double));
-      if (axis->requested == NULL)  {
-	snprintf(msg,CMOR_MAX_STRING,"axis (%s, table: %s): cannot allocate memory for %i requested elts for axis %s",axis->id, cmor_tables[axis->table_id].table_id,axis->n_requested,axis->id);
-	cmor_handle_error(msg,CMOR_CRITICAL);
-      }
-      for (i=0;i<n;i++) { /* printf("requested: %i : %f\n",i,vals[i]); */ axis->requested[i]=vals[i];}
-      if (tmp!=NULL) { /* ok we had previously read in data need to add this */
-	for (i=0;i<axis->n_requested-n;i++) {
-	  axis->requested[i+n]=tmp[i];
-	}
-	free(tmp); /* we don't need this any longer */
-	tmp=NULL;
-      }
+
+    if (cmor_naxes == CMOR_MAX_AXES - 1) {
+        cmor_handle_error("Too many axes defined", CMOR_CRITICAL);
+        cmor_pop_traceback();
+        return (1);
     }
-    else {
-      axis->n_requested=1;
-      axis->crequested=malloc((strlen(val)+1)*sizeof(char));
-      if (axis->crequested == NULL ) {
-	snprintf(msg,CMOR_MAX_STRING,"axis (%s, table: %s): cannot allocate memory for %ld requested char elts for axis %s",axis->id, cmor_tables[axis->table_id].table_id,(long int)strlen(val)+1,axis->id);
-	cmor_handle_error(msg,CMOR_CRITICAL);
-      }
-      strcpy(axis->crequested,val); 
-    }
-  }
-  else {
-    snprintf(msg,CMOR_MAX_STRING,"Unknown attribute >>>%s<<< for axis section (%s, table: %s), value: %s",att,axis->id, cmor_tables[axis->table_id].table_id,val);
-    cmor_handle_error(msg,CMOR_WARNING);
-  }
-  cmor_pop_traceback();
-  return 0;
+    cmor_naxes += 1;
+    strncpytrim(cmor_axes[cmor_naxes].id, name, CMOR_MAX_STRING);
+
+/* -------------------------------------------------------------------- */
+/*        ok now look which axis is corresponding in                    */
+/*        table if not found then error                                 */
+/* -------------------------------------------------------------------- */
+    iref = -1;
+    cmor_trim_string(name, msg);
+
+    for (i = 0; i <= cmor_tables[CMOR_TABLE].naxes; i++) {
+        if (strcmp(cmor_tables[CMOR_TABLE].axes[i].id, msg) == 0) {
+            iref = i;
+            break;
+        }
+    }
+
+    if (iref == -1) {
+        snprintf(ctmp, CMOR_MAX_STRING,
+                "Could not find all axes for this variable. \n! "
+                "Check that all your axes name matches the ones found in \n! "
+                "the table %s. \n!", cmor_tables[CMOR_TABLE].szTable_id);
+        cmor_handle_error(ctmp, CMOR_CRITICAL);
+    }
+
+    refaxis = cmor_tables[CMOR_TABLE].axes[iref];
+    cmor_axes[cmor_naxes].ref_table_id = CMOR_TABLE;
+    cmor_axes[cmor_naxes].ref_axis_id = iref;
+
+    cmor_axes[cmor_naxes].length = length;
+    cmor_axes[cmor_naxes].type = type;
+    cmor_axes[cmor_naxes].store_in_netcdf = 1;
+
+    if (refaxis.axis == 'T') {
+        cmor_get_cur_dataset_attribute("calendar", ctmp);
+        cmor_set_axis_attribute(cmor_naxes, "calendar", 'c', ctmp);
+        cmor_convert_time_units(units, refaxis.units, &ctmp[0]);
+        strncpytrim(cmor_axes[cmor_naxes].iunits, units, CMOR_MAX_STRING);
+    } else {
+        strcpy(ctmp, refaxis.units);
+    }
+
+    cmor_set_axis_attribute(cmor_naxes, "units", 'c', ctmp);
+    ctmp[0] = refaxis.axis;
+    ctmp[1] = '\0';
+    cmor_axes[cmor_naxes].axis = refaxis.axis;
+
+    if (refaxis.axis != '\0') {
+        cmor_set_axis_attribute(cmor_naxes, "axis", 'c', ctmp);
+    }
+
+    if (refaxis.positive != '\0') {
+
+        if (refaxis.positive == 'u')
+            cmor_set_axis_attribute(cmor_naxes, "positive", 'c', "up");
+        else if (refaxis.positive == 'd')
+            cmor_set_axis_attribute(cmor_naxes, "positive", 'c', "down");
+
+    }
+
+    if (refaxis.long_name[0] != '\0') {
+         cmor_set_axis_attribute(cmor_naxes, "long_name", 'c',
+                refaxis.long_name);
+    }
+    if (refaxis.standard_name[0] != '\0') {
+        cmor_set_axis_attribute(cmor_naxes, "standard_name", 'c',
+                refaxis.standard_name);
+    }
+    if (refaxis.formula[0] != '\0') {
+        cmor_set_axis_attribute(cmor_naxes, "formula", 'c',
+                refaxis.formula);
+    }
+    if (refaxis.z_factors[0] != '\0') {
+        cmor_set_axis_attribute(cmor_naxes, "z_factors", 'c',
+                refaxis.z_factors);
+    }
+    if ((refaxis.z_bounds_factors[0] != '\0') && (cell_bounds != NULL)) {
+        cmor_set_axis_attribute(cmor_naxes, "z_bounds_factors", 'c',
+                refaxis.z_bounds_factors);
+    }
+
+    if (strcmp(cmor_axes[cmor_naxes].id, "standard_sigma") == 0) {
+        cmor_axes[cmor_naxes].hybrid_in = 3;
+    }
+
+    if (strcmp(cmor_axes[cmor_naxes].id, "standard_hybrid_sigma") == 0) {
+        cmor_axes[cmor_naxes].hybrid_in = 1;
+    }
+
+    if (strcmp(cmor_axes[cmor_naxes].id, "alternate_hybrid_sigma") == 0) {
+        cmor_axes[cmor_naxes].hybrid_in = 2;
+    }
+
+    if (refaxis.convert_to[0] != '\0') {
+        if (strcmp(refaxis.convert_to, name) != 0) {
+            if (strcmp(refaxis.convert_to, "standard_hybrid_sigma") == 0) {
+                /* remembers what the original type was */
+                i = cmor_axes[cmor_naxes].hybrid_in;
+                if ((strcmp(name, "standard_hybrid_sigma") != 0)
+                        && (strcmp(name, "alternate_hybrid_sigma") != 0)
+                        && (strcmp(name, "standard_sigma") != 0)) {
+                    snprintf(msg, CMOR_MAX_STRING,
+                            "axis: %s (table: %s) converting to \"standard_hybrid_sigma\" from unknown type: %s",
+                            cmor_axes[cmor_naxes].id,
+                            cmor_tables[CMOR_TABLE].szTable_id, name);
+                    cmor_handle_error(msg, CMOR_CRITICAL);
+                }
+
+                cmor_axis(axis_id, refaxis.convert_to, units, length,
+                        coord_vals, type, cell_bounds, cell_bounds_ndim,
+                        interval);
+                cmor_axes[cmor_naxes].hybrid_in = i;
+                cmor_axes[cmor_naxes].hybrid_out = 1;
+                *axis_id = cmor_naxes;
+                cmor_pop_traceback();
+                return( 0 );
+            } else {
+                snprintf(msg, CMOR_MAX_STRING,
+                        "axis: %s (table: %s) is declared to be converted "
+                        "to unknown type: %s",
+                        cmor_axes[cmor_naxes].id,
+                        cmor_tables[CMOR_TABLE].szTable_id, refaxis.convert_to);
+                cmor_handle_error(msg, CMOR_CRITICAL);
+            }
+        }
+    } else {
+        cmor_axes[cmor_naxes].hybrid_out = cmor_axes[cmor_naxes].hybrid_in;
+    }
+
+/* -------------------------------------------------------------------- */
+/*      interval attribute                                              */
+/* -------------------------------------------------------------------- */
+
+    if ((interval != NULL) && (interval[0] != '\0')) {
+        cmor_set_axis_attribute(cmor_naxes, "interval", 'c', interval);
+    }
+
+/* -------------------------------------------------------------------- */
+/*      test whether bounds are requested or not                        */
+/* -------------------------------------------------------------------- */
+
+    if ((cell_bounds == NULL) && (refaxis.must_have_bounds == 1)) {
+        if (refaxis.axis != 'T') {
+            snprintf(msg, CMOR_MAX_STRING,
+                    "axis: %s (table: %s) must have bounds, you did not "
+                    "pass any when creating it via cmor_axis",
+                    cmor_axes[cmor_naxes].id, cmor_tables[CMOR_TABLE].szTable_id);
+            cmor_handle_error(msg, CMOR_CRITICAL);
+        } else if (coord_vals != NULL) {
+/* -------------------------------------------------------------------- */
+/*      we passed time values that means we                             */
+/*      do not intend to pass them later                                */
+/* -------------------------------------------------------------------- */
+            snprintf(msg, CMOR_MAX_STRING,
+                    "axis: %s (table: %s) must have bounds, you did not "
+                    "pass any when creating it via cmor_axis",
+                    cmor_axes[cmor_naxes].id, cmor_tables[CMOR_TABLE].szTable_id);
+            cmor_handle_error(msg, CMOR_CRITICAL);
+        }
+    }
+/* -------------------------------------------------------------------- */
+/*      user passed coords need to convert this guys                    */
+/* -------------------------------------------------------------------- */
+
+    if (coord_vals != NULL) { 
+        if (type != 'c') {
+
+            cmor_axes[cmor_naxes].values = malloc(length * sizeof(double));
+
+            if (refaxis.axis == 'X') {
+
+                cmor_axes[cmor_naxes].wrapping = malloc(length * sizeof(int));
+                for (i = 0; i < length; i++)
+                    cmor_axes[cmor_naxes].wrapping[i] = 0;
+            }
+
+            if (cmor_axes[cmor_naxes].values == NULL) {
+                snprintf(msg, CMOR_MAX_STRING,
+                        "cannot allocate memory for %i double elts for "
+			 "axis %s (table: %s)",
+                        length, cmor_axes[cmor_naxes].id,
+                        cmor_tables[CMOR_TABLE].szTable_id);
+                cmor_handle_error(msg, CMOR_CRITICAL);
+            }
+
+            if (type == 'f') {
+                for (i = 0; i < length; i++) {
+                    cmor_axes[cmor_naxes].values[i] =
+                            (double) ((float *) coord_vals)[i];
+                }
+            } else if (type == 'l') {
+                for (i = 0; i < length; i++) {
+                    cmor_axes[cmor_naxes].values[i] =
+                            (double) ((long *) coord_vals)[i];
+                }
+            } else if (type == 'i') {
+                for (i = 0; i < length; i++) {
+                    cmor_axes[cmor_naxes].values[i] =
+                            (double) ((int *) coord_vals)[i];
+                }
+            } else if (type == 'd') {
+                for (i = 0; i < length; i++) {
+                    cmor_axes[cmor_naxes].values[i] =
+                            (double) ((double *) coord_vals)[i];
+                }
+            }
+        } else {
+
+/* -------------------------------------------------------------------- */
+/*        check that output type is also character                      */
+/* -------------------------------------------------------------------- */
+            if (type != refaxis.type) {
+                snprintf(msg, CMOR_MAX_STRING,
+                        "You are trying to define axis %s (table: %s) as "
+			 "character when it should be of type: %c\n! ",
+                        cmor_axes[cmor_naxes].id,
+                        cmor_tables[CMOR_TABLE].szTable_id, refaxis.type);
+                cmor_handle_error(msg, CMOR_CRITICAL);
+            }
+
+            cmor_axes[cmor_naxes].cvalues = malloc(length * sizeof(char *));
+
+            if (cmor_axes[cmor_naxes].cvalues == NULL) {
+                snprintf(msg, CMOR_MAX_STRING,
+                        "cannot allocate memory for %i char elts for axis "
+			 "%s (table: %s)",
+                        length, cmor_axes[cmor_naxes].id,
+                        cmor_tables[CMOR_TABLE].szTable_id);
+                cmor_handle_error(msg, CMOR_CRITICAL);
+            }
+
+            if (cell_bounds_ndim == 0)
+                k = CMOR_MAX_STRING;
+            else
+                k = cell_bounds_ndim;
+
+            for (i = 0; i < length; i++) {
+                j = strlen(&((char *) coord_vals)[i * k]);
+
+                if (j > k)
+                    j = k;
+                cmor_axes[cmor_naxes].cvalues[i] =
+                            malloc((j + 1) * sizeof(char));
+
+                if (cmor_axes[cmor_naxes].cvalues[i] == NULL) {
+                    snprintf(msg, CMOR_MAX_STRING,
+                            "cannot allocate memory for %i char elts for axis "
+			     "%s (table: %s)",
+                            j + 1, cmor_axes[cmor_naxes].id,
+                            cmor_tables[CMOR_TABLE].szTable_id);
+                    cmor_handle_error(msg, CMOR_CRITICAL);
+                }
+
+                strncpy(cmor_axes[cmor_naxes].cvalues[i],
+                        &((char *) coord_vals)[i * k], j);
+                cmor_axes[cmor_naxes].cvalues[i][j] = '\0';
+
+            }
+/* -------------------------------------------------------------------- */
+/*      we don't want to do the bounds stuff                            */
+/*      but we need to look at the requested thing!                     */
+/* -------------------------------------------------------------------- */
+            if (refaxis.crequested != NULL) {
+                i = 0;
+                j = strlen(&refaxis.crequested[0]);
+
+                for (i = 0; i < j; i++) {
+                    k = 0;
+                    while ((refaxis.crequested[i] != ' ')
+                            && (refaxis.crequested[i] != '\0')) {
+                        ctmp[k] = refaxis.crequested[i];
+                        i++;
+                        k++;
+                    }
+
+                    ctmp[k] = '\0';
+                    k = -1;
+                    for (l = 0; l < length; l++) {
+                        if (strncmp(ctmp, cmor_axes[cmor_naxes].cvalues[l],
+                                strlen(ctmp)) == 0)
+                            k = l;
+                    }
+
+                    if (k == -1) {
+                        snprintf(msg, CMOR_MAX_STRING,
+                                "Requested region for axis '%s' (table: %s) "
+				 "is not passed: '%s'",
+                                cmor_axes[cmor_naxes].id,
+                                cmor_tables[CMOR_TABLE].szTable_id, ctmp);
+                        cmor_handle_error(msg, CMOR_CRITICAL);
+                    }
+                }
+            }
+
+            if (refaxis.out_name[0] != '\0') {
+                strcpy(cmor_axes[cmor_naxes].id, refaxis.out_name);
+            }
+            *axis_id = cmor_naxes;
+            cmor_pop_traceback();
+            return( 0 );
+        }
+
+        cmor_treat_axis_values(cmor_naxes,
+                &cmor_axes[cmor_naxes].values[0],
+                length,
+                refaxis.n_requested,
+                units,
+                name,
+                0);
+
+/* -------------------------------------------------------------------- */
+/*      puts bounds on 2d array                                         */
+/* -------------------------------------------------------------------- */
+        if ((cell_bounds != NULL) && (cell_bounds_ndim != 0)) {
+
+            cmor_axes[cmor_naxes].bounds = malloc(2 * length * sizeof(double));
+
+            if (cmor_axes[cmor_naxes].bounds == NULL) {
+                snprintf(msg, CMOR_MAX_STRING,
+                        "cannot allocate memory for %i bounds elts for axis "
+                        "%s (table: %s)",
+                        2 * length, cmor_axes[cmor_naxes].id,
+                        cmor_tables[CMOR_TABLE].szTable_id);
+                free(cmor_axes[cmor_naxes].bounds);
+                cmor_handle_error(msg, CMOR_CRITICAL);
+            }
+
+            if (cell_bounds_ndim == 2) {
+                if (type == 'f') {
+                    for (i = 0; i < length; i++) {
+                        cmor_axes[cmor_naxes].bounds[2 * i] =
+                                (double) ((float *) cell_bounds)[2 * i];
+                        cmor_axes[cmor_naxes].bounds[2 * i + 1] =
+                                (double) ((float *) cell_bounds)[2 * i + 1];
+                    }
+                } else if (type == 'd') {
+                    for (i = 0; i < length; i++) {
+                        cmor_axes[cmor_naxes].bounds[2 * i] =
+                                (double) ((double *) cell_bounds)[2 * i];
+                        cmor_axes[cmor_naxes].bounds[2 * i + 1] =
+                                (double) ((double *) cell_bounds)[2 * i + 1];
+                    }
+                } else if (type == 'l') {
+                    for (i = 0; i < length; i++) {
+                        cmor_axes[cmor_naxes].bounds[2 * i] =
+                                (double) ((long *) cell_bounds)[2 * i];
+                        cmor_axes[cmor_naxes].bounds[2 * i + 1] =
+                                (double) ((long *) cell_bounds)[2 * i + 1];
+                    }
+                } else if (type == 'i') {
+                    for (i = 0; i < length; i++) {
+                        cmor_axes[cmor_naxes].bounds[2 * i] =
+                                (double) ((int *) cell_bounds)[2 * i];
+                        cmor_axes[cmor_naxes].bounds[2 * i + 1] =
+                                (double) ((int *) cell_bounds)[2 * i + 1];
+                    }
+                } else { /* ??? charcter axis code here */
+                    snprintf(msg, CMOR_MAX_STRING,
+                            "CMOR cannot handle axes of type %c please "
+                            "change type, axis: %s (table: %s)",
+                            type, cmor_axes[cmor_naxes].id,
+                            cmor_tables[CMOR_TABLE].szTable_id);
+                    cmor_handle_error(msg, CMOR_CRITICAL);
+                }
+            } else if (cell_bounds_ndim == 1) {
+                if (type == 'f') {
+                    for (i = 0; i < length; i++) {
+                        cmor_axes[cmor_naxes].bounds[2 * i] =
+                                (double) ((float *) cell_bounds)[i];
+                        cmor_axes[cmor_naxes].bounds[2 * i + 1] =
+                                (double) ((float *) cell_bounds)[i + 1];
+                    }
+                } else if (type == 'd') {
+                    for (i = 0; i < length; i++) {
+                        cmor_axes[cmor_naxes].bounds[2 * i] =
+                                (double) ((double *) cell_bounds)[i];
+                        cmor_axes[cmor_naxes].bounds[2 * i + 1] =
+                                (double) ((double *) cell_bounds)[i + 1];
+                    }
+                } else if (type == 'i') {
+                    for (i = 0; i < length; i++) {
+                        cmor_axes[cmor_naxes].bounds[2 * i] =
+                                (double) ((int *) cell_bounds)[i];
+                        cmor_axes[cmor_naxes].bounds[2 * i + 1] =
+                                (double) ((int *) cell_bounds)[i + 1];
+                    }
+                } else if (type == 'l') {
+                    for (i = 0; i < length; i++) {
+                        cmor_axes[cmor_naxes].bounds[2 * i] =
+                                (double) ((long *) cell_bounds)[i];
+                        cmor_axes[cmor_naxes].bounds[2 * i + 1] =
+                                (double) ((long *) cell_bounds)[i + 1];
+                    }
+                }  else { /* ??? charcter axis code here */
+                    snprintf(msg, CMOR_MAX_STRING,
+                            "CMOR cannot handle axes of type %c please "
+                            "change type, axis: %s (table: %s)",
+                            type, cmor_axes[cmor_naxes].id,
+                            cmor_tables[CMOR_TABLE].szTable_id);
+                    cmor_handle_error(msg, CMOR_CRITICAL);
+                }
+            }
+
+            cmor_treat_axis_values(cmor_naxes,
+                    &cmor_axes[cmor_naxes].bounds[0], 2 * length, 0, units,
+                    name, 1);
+/* -------------------------------------------------------------------- */
+/*      At this point we are checking that                              */
+/*      the axis values are within bounds                               */
+/* -------------------------------------------------------------------- */
+            cmor_check_values_inside_bounds(
+                    &cmor_axes[cmor_naxes].values[0],
+                    &cmor_axes[cmor_naxes].bounds[0], length, name);
+
+            if ((refaxis.axis == 'T') && (refaxis.climatology == 0)) {
+/* -------------------------------------------------------------------- */
+/*      ok now we need to overwrite the time values with mid point      */
+/* -------------------------------------------------------------------- */
+                for (i = 0; i < length; i++)
+                    cmor_axes[cmor_naxes].values[i] =
+			(cmor_axes[cmor_naxes].bounds[2 * i]
+			 + cmor_axes[cmor_naxes].bounds[2 * i + 1]) / 2.;
+/* -------------------------------------------------------------------- */
+/*      here we check if interval is about right                        */
+/*      just keep the begining of units out                             */
+/*      no need to know the since par                                   */
+/* -------------------------------------------------------------------- */
+                j = 0;
+                while (refaxis.units[j] == ' ')
+                    j++;
+                i = 0;
+                while((refaxis.units[i + j] != ' ') &&
+		      (refaxis.units[i + j] != '\0')) {
+                    ctmp[i] = refaxis.units[i + j];
+                    i++;
+                }
+                ctmp[i] = '\0';
+                snprintf(msg, CMOR_MAX_STRING, "%lf %s",
+                        cmor_tables[cmor_axes[cmor_naxes].ref_table_id].interval,
+                        ctmp);
+/* -------------------------------------------------------------------- */
+/*      skip this for non standard cal                                  */
+/* -------------------------------------------------------------------- */
+                i = cmor_check_interval( cmor_naxes, msg,
+					 &cmor_axes[cmor_naxes].values[0],
+					 length,
+					 0 );
+            }
+        }
+    } else {
+        if ((refaxis.axis != 'T') && (refaxis.index_only == 'n')) {
+            snprintf(msg, CMOR_MAX_STRING,
+                    "function called for axis '%s' (table: %s) w/o any values",
+                    cmor_axes[cmor_naxes].id, cmor_tables[CMOR_TABLE].szTable_id);
+            cmor_handle_error(msg, CMOR_CRITICAL);
+        }
+        if (refaxis.index_only != 'n') {
+/* -------------------------------------------------------------------- */
+/*       index no need to store values                                  */
+/* -------------------------------------------------------------------- */
+            cmor_axes[cmor_naxes].store_in_netcdf = 0;
+        }
+    }
+
+    if (refaxis.out_name[0] != '\0')
+        strcpy(cmor_axes[cmor_naxes].id, refaxis.out_name);
+    *axis_id = cmor_naxes;
+
+    cmor_pop_traceback();
+    free(cmor_axes[cmor_naxes].wrapping);
+
+/* -------------------------------------------------------------------- */
+/*     Fix issue #6 setting the pointer to NULL                         */
+/* -------------------------------------------------------------------- */
+    cmor_axes[cmor_naxes].wrapping = NULL;
+
+    return( 0 );
+}
+
+/************************************************************************/
+/*                       cmor_init_axis_def()                           */
+/************************************************************************/
+void cmor_init_axis_def(cmor_axis_def_t *axis, int table_id) {
+    cmor_is_setup();
+    axis->table_id = table_id;
+    axis->climatology = 0;
+    axis->standard_name[0] = '\0';
+    axis->units[0] = '\0';
+    axis->axis = '\0';
+    axis->positive = '\0';
+    axis->long_name[0] = '\0';
+    axis->out_name[0] = '\0';
+    axis->type = 'd';
+    axis->stored_direction = 'i';
+    axis->valid_min = 1.e20; /* means no check */
+    axis->valid_max = 1.e20;
+    if (axis->requested != NULL)
+        free(axis->requested);
+    axis->requested = NULL;
+    if (axis->requested_bounds != NULL)
+        free(axis->requested_bounds);
+    axis->requested_bounds = NULL;
+    axis->tolerance = 1.e-3;
+    axis->value = 1.e20;
+    axis->cvalue[0] = '\0';
+    axis->bounds_value[0] = 1.e20;
+    axis->bounds_value[1] = 1.e20;
+    axis->convert_to[0] = '\0';
+    axis->formula[0] = '\0';
+    axis->z_factors[0] = '\0';
+    axis->z_bounds_factors[0] = '\0';
+    if (axis->crequested != NULL)
+        free(axis->requested);
+    axis->crequested = NULL;
+    axis->cname[0] = '\0';
+    if (axis->requested_bounds != NULL)
+        free(axis->requested_bounds);
+    axis->requested = NULL;
+    axis->n_requested = 0;
+    axis->n_requested_bounds = 0;
+    axis->index_only = 'n';
+    axis->must_have_bounds = 0;
+    axis->must_call_cmor_grid = 0;
 }
+/************************************************************************/
+/*                      cmor_set_axis_def_att()                         */
+/************************************************************************/
+
+int cmor_set_axis_def_att(cmor_axis_def_t *axis, char att[CMOR_MAX_STRING],
+        char val[CMOR_MAX_STRING]) {
+    int i, n, j;
+    char dim[CMOR_MAX_STRING];
+    char msg[CMOR_MAX_STRING];
+    double vals[CMOR_MAX_ELEMENTS];
+    double *tmp = NULL;
+
+    cmor_add_traceback("cmor_set_axis_def_att");
+    cmor_is_setup();
+/*----------------------------------------------------------------------*/
+/*  If val is an empty string keep default values set in init_axs_def   */
+/*----------------------------------------------------------------------*/
+    if(strcmp(val, "") == 0 ) {
+        cmor_pop_traceback();
+        return(0);
+    }
+    if (strcmp(att, AXIS_ATT_REQUIRED) == 0) {
+
+        strcpy(axis->required, att);
+
+    } else if (strcmp(att, AXIS_ATT_ID) == 0) {
+
+        strcpy(axis->id, val);
+
+    } else if (strcmp(att, AXIS_ATT_CLIMATOLOGY) == 0) {
+
+        if (strcmp(val, "yes") == 0) {
+            axis->climatology = 1;
+        }
+
+    } else if (strcmp(att, AXIS_ATT_OUTNAME) == 0) {
+
+        strcpy(axis->out_name, val);
+
+    } else if (strcmp(att, AXIS_ATT_STANDARDNAME) == 0) {
+
+        strcpy(axis->standard_name, val);
+
+    } else if (strcmp(att, AXIS_ATT_LONGNAME) == 0) {
+
+        strcpy(axis->long_name, val);
+
+    } else if (strcmp(att, AXIS_ATT_CONVERTTO) == 0) {
+
+        strcpy(axis->convert_to, val);
+
+    } else if (strcmp(att, AXIS_ATT_FORMULA) == 0) {
+
+        strcpy(axis->formula, val);
+
+    } else if (strcmp(att, AXIS_ATT_ZFACTORS) == 0) {
+
+        strcpy(axis->z_factors, val);
+
+    } else if (strcmp(att, AXIS_ATT_ZBOUNDSFACTORS) == 0) {
+
+        strcpy(axis->z_bounds_factors, val);
+
+    } else if (strcmp(att, AXIS_ATT_UNITS) == 0) {
+
+        strncpy(axis->units, val, CMOR_MAX_STRING);
+
+    } else if (strcmp(att, AXIS_ATT_STOREDDIRECTION) == 0) {
+
+        if (val[0] == 'i')
+            axis->stored_direction = 'i';
+        else if (val[0] == 'd')
+            axis->stored_direction = 'd';
+
+    } else if (strcmp(att, AXIS_ATT_POSITIVE) == 0) {
+
+        axis->positive = val[0];
+
+    } else if (strcmp(att, AXIS_ATT_AXIS) == 0) {
+
+        axis->axis = val[0];
+
+    } else if (strcmp(att, AXIS_ATT_INDEXONLY) == 0) {
+
+        axis->index_only = val[0];
+
+    } else if (strcmp(att, AXIS_ATT_MUSTBOUNDS) == 0) {
+
+        if (strcmp(val, "yes") == 0) {
+            axis->must_have_bounds = 1;
+        }
+
+    } else if (strcmp(att, AXIS_ATT_MUSTCALLGRID) == 0) {
+
+        if (strcmp(val, "yes") == 0)
+            axis->must_call_cmor_grid = 1;
+
+    } else if (strcmp(att, AXIS_ATT_TYPE) == 0) {
+
+        if (strcmp(val, "real") == 0)
+            axis->type = 'f';
+        else if (strcmp(val, "double") == 0)
+            axis->type = 'd';
+        else if (strcmp(val, "integer") == 0)
+            axis->type = 'i';
+        else if (strcmp(val, "long") == 0)
+            axis->type = 'l';
+        else if (strcmp(val, "character") == 0)
+            axis->type = 'c';
+
+    } else if (strcmp(att, AXIS_ATT_VALIDMIN) == 0) {
+
+        axis->valid_min = atof(val);
+
+    } else if (strcmp(att, AXIS_ATT_VALIDMAX) == 0) {
+
+        axis->valid_max = atof(val);
+
+    } else if (strcmp(att, AXIS_ATT_TOLERANCE) == 0) {
+
+        axis->tolerance = atof(val);
+
+    } else if (strcmp(att, AXIS_ATT_TOLONREQUESTS) == 0) {
+
+        axis->tolerance = atof(val);
 
+    } else if (strcmp(att, AXIS_ATT_VALUE) == 0) {
+
+        strncpytrim(axis->cvalue, val, CMOR_MAX_STRING);
+        axis->value = atof(val);
+
+    } else if (strcmp(att, AXIS_ATT_BOUNDVALUES) == 0) {
+
+        sscanf(val, "%lf %lf", &axis->bounds_value[0], &axis->bounds_value[1]);
+
+    } else if (strcmp(att, AXIS_ATT_COORDSATTRIB) == 0) {
+
+        strncpytrim(axis->cname, val, CMOR_MAX_STRING);
+
+    } else if ((strcmp(att, AXIS_ATT_BOUNDSREQUESTED) == 0)
+            || (strcmp(att, AXIS_ATT_REQUESTEDBOUNDS) == 0)) {
+/* -------------------------------------------------------------------- */
+/*      requested values for axis                                       */
+/* -------------------------------------------------------------------- */
+        dim[0] = '\0';
+        n = 0;
+        for (i = 0; i < strlen(val); i++) {
+            while (((val[i] == '[') || (val[i] == ']') || (val[i] == ' ') ||
+                    (val[i] == ',') || (val[i] == '"')) && (i < strlen(val))) {
+                i++;
+            }
+            j = i;
+            while (((val[i] != ' ') && (val[i] != '\0')) && (val[i] != '"')
+                    && (i < strlen(val))) {
+                dim[i - j] = val[i];
+                i++;
+
+            }
+            dim[i - j] = '\0';
+            sscanf(dim, "%lf", &vals[n]);
+            while (((val[i] == '[') || (val[i] == ']') ||
+                    (val[i] == ' ') || (val[i] == ',') || (val[i] == '"')) &&
+                    (val[i] != '\0')) {
+                i++;
+            }
+            i--;
+            n++;
+        }
+        if (axis->n_requested_bounds != 0) {
+/* -------------------------------------------------------------------- */
+/*      we already had some read in need to memorize it                 */
+/* -------------------------------------------------------------------- */
+            if (axis->requested_bounds == NULL) {
+
+                snprintf(msg, CMOR_MAX_STRING,
+                        "axis (%s, table: %s): looks like we already read "
+			 "%d requested bounds but they are not stored in the "
+			 "internal tables, maybe some bad cleanup",
+                        axis->id, cmor_tables[axis->table_id].szTable_id,
+                        axis->n_requested_bounds);
+                cmor_handle_error(msg, CMOR_CRITICAL);
+            }
+
+            tmp = malloc(axis->n_requested_bounds * sizeof(double));
+
+            if (tmp == NULL) {
+
+                snprintf(msg, CMOR_MAX_STRING,
+                        "axis (%s, table: %s): cannot allocate memory for "
+			 "%i requested bounds elts for axis %s",
+                        axis->id, cmor_tables[axis->table_id].szTable_id,
+                        axis->n_requested, axis->id);
+                cmor_handle_error(msg, CMOR_CRITICAL);
+            }
+
+            for (i = 0; i < axis->n_requested_bounds; i++) {
+                tmp[i] = axis->requested_bounds[i];
+            }
+
+            free(axis->requested_bounds);
+            axis->n_requested_bounds += n;
+        } else {
+            axis->n_requested_bounds = n;
+
+        }
+        axis->requested_bounds =
+                malloc(axis->n_requested_bounds * sizeof(double));
+        if (axis->requested_bounds == NULL) {
+            snprintf(msg, CMOR_MAX_STRING,
+                    "axis (%s, table: %s): cannot allocate memory for %i "
+		     "requested bounds elts for axis %s",
+                    axis->id, cmor_tables[axis->table_id].szTable_id,
+                    axis->n_requested, axis->id);
+            cmor_handle_error(msg, CMOR_CRITICAL);
+        }
+
+        for (i = 0; i < n; i++) {
+            axis->requested_bounds[axis->n_requested_bounds - n + i] = vals[i];
+        }
+/* -------------------------------------------------------------------- */
+/*      ok we had previously read in data need to add this              */
+/* -------------------------------------------------------------------- */
+        if (tmp != NULL) { 
+            for (i = 0; i < axis->n_requested_bounds - n; i++) {
+                axis->requested_bounds[i] = tmp[i];
+            }
+            free(tmp);
+            tmp = NULL;
+
+        }
+    } else if (strcmp(att, AXIS_ATT_REQUESTED ) == 0) { 
+        if (axis->type != 'c') {
+            dim[0] = '\0';
+            n = 0;
+            for (i = 0; i < strlen(val); i++) {
+
+/* -------------------------------------------------------------------- */
+/*      Skip double quote (")                                           */
+/* -------------------------------------------------------------------- */
+                while ((val[i] == '[') || (val[i] == ']') ||
+                        (val[i] == '"') || (val[i] == ' ') || val[i] == ',') {
+                    i++;
+                }
+                j = i;
+                while (((val[i] != ' ') && (val[i] != '\0') && (val[i] != '"') )
+                        && (i < strlen(val))) {
+                    dim[i - j] = val[i];
+                    i++;
+                }
+                dim[i - j] = '\0';
+                sscanf(dim, "%lf", &vals[n]);
+
+                while (((val[i] == '[') || (val[i] == ']') ||
+                        (val[i] == ' ') || (val[i]== ',') || (val[i] == '"'))
+                        && (val[i] != '\0') ) {
+                    i++;
+                }
+                i--;
+                n++;
+            }
+/* -------------------------------------------------------------------- */
+/*      ok we already had some read in                                  */
+/*      need to memorize it                                             */
+/* -------------------------------------------------------------------- */
+            if (axis->n_requested != 0) { 
+                if (axis->requested == NULL) {
+                    snprintf(msg, CMOR_MAX_STRING,
+                            "axis (%s, table: %s): looks like we already read "
+			     "%d requested values but they are not stored in "
+			     "the internal tables, maybe some bad cleanup",
+                            axis->id, cmor_tables[axis->table_id].szTable_id,
+                            axis->n_requested);
+                    cmor_handle_error(msg, CMOR_CRITICAL);
+                }
+
+                tmp = malloc(axis->n_requested * sizeof(double));
+
+                if (tmp == NULL) {
+                    snprintf(msg, CMOR_MAX_STRING,
+                            "axis (%s, table: %s): cannot allocate memory for "
+			     "%i requested elts for axis %s",
+                            axis->id, cmor_tables[axis->table_id].szTable_id,
+                            axis->n_requested, axis->id);
+                    cmor_handle_error(msg, CMOR_CRITICAL);
+                }
+                for (i = 0; i < axis->n_requested; i++) {
+                    tmp[i] = axis->requested[i];
+                }
+                free(axis->requested);
+                axis->n_requested += n;
+            } else {
+                axis->n_requested = n;
+            }
+            axis->requested = malloc(axis->n_requested * sizeof(double));
+            if (axis->requested == NULL) {
+                snprintf(msg, CMOR_MAX_STRING,
+                        "axis (%s, table: %s): cannot allocate memory for %i "
+			 "requested elts for axis %s",
+                        axis->id, cmor_tables[axis->table_id].szTable_id,
+                        axis->n_requested, axis->id);
+                cmor_handle_error(msg, CMOR_CRITICAL);
+            }
+            for (i = 0; i < n; i++) { 
+                axis->requested[i] = vals[i];
+            }
+/* -------------------------------------------------------------------- */
+/*       ok we had previously read in data need to add this             */
+/* -------------------------------------------------------------------- */
+            if (tmp != NULL) { 
+                for (i = 0; i < axis->n_requested - n; i++) {
+                    axis->requested[i + n] = tmp[i];
+                }
+                free(tmp); 
+                tmp = NULL;
+            }
+        } else {
+            axis->n_requested = 1;
+            axis->crequested = malloc((strlen(val) + 1) * sizeof(char));
+
+            if (axis->crequested == NULL) {
+                snprintf(msg, CMOR_MAX_STRING,
+                        "axis (%s, table: %s): cannot allocate memory "
+                        "for %ld requested char elts for axis %s",
+                        axis->id, cmor_tables[axis->table_id].szTable_id,
+                        (long int) strlen(val) + 1, axis->id);
+                cmor_handle_error(msg, CMOR_CRITICAL);
+            }
+            strcpy(axis->crequested, val);
+        }
+
+    } else {
+        snprintf(msg, CMOR_MAX_STRING,
+                "Unknown attribute >>>%s<<< for axis section "
+                "(%s, table: %s), value: %s",
+                att, axis->id, cmor_tables[axis->table_id].szTable_id, val);
+        cmor_handle_error(msg, CMOR_WARNING);
+    }
+    cmor_pop_traceback();
+    return( 0 );
+}
diff --git a/Src/cmor_cfortran_interface.c b/Src/cmor_cfortran_interface.c
index 13e5716..3659110 100644
--- a/Src/cmor_cfortran_interface.c
+++ b/Src/cmor_cfortran_interface.c
@@ -2,496 +2,822 @@
 #include <string.h>
 #include "cmor.h"
 
-int cmor_ftn_get_tlen_cff_(int *var_id) {
-  int length;
-  int ierr;
-  ierr = cmor_get_variable_time_length(var_id,&length);
-  return length;
+/************************************************************************/
+/*                       cmor_ftn_get_tlen_cff_()                       */
+/************************************************************************/
+
+int cmor_ftn_get_tlen_cff_( int *var_id ) {
+    int length;
+
+    cmor_get_variable_time_length( var_id, &length );
+    return length;
+}
+
+/************************************************************************/
+/*                    cmor_get_original_shape_cff_()                    */
+/************************************************************************/
+
+int cmor_get_original_shape_cff_( int *var_id, int *shape_array ) {
+    int tmp, i;
+
+    i = 7;
+    tmp = cmor_get_original_shape( var_id, shape_array, &i, 1 );
+/* -------------------------------------------------------------------- */
+/*      reverse it for fortran order                                    */
+/* -------------------------------------------------------------------- */
+
+    for( i = 0; i < 3; i++ ) {
+	tmp = shape_array[i];
+	shape_array[i] = shape_array[6 - i];
+	shape_array[6 - i] = tmp;
+    }
+/* -------------------------------------------------------------------- */
+/*       now need to put the -1 back at the end                         */
+/* -------------------------------------------------------------------- */
+
+    tmp = 0;
+    for( i = 0; i < 7; i++ )
+	if( shape_array[i] == -1 )
+	    tmp += 1;
+    for( i = 0; i < 7 - tmp; i++ )
+	shape_array[i] = shape_array[i + tmp];
+    for( i = 0; i < tmp; i++ )
+	shape_array[i + 7 - tmp] = -1;
+    return 0;
+}
+
+
+/************************************************************************/
+/*                  cmor_get_cur_dset_attribute_cff_()                  */
+/************************************************************************/
+
+int cmor_get_cur_dset_attribute_cff_( char *name, char *value ) {
+    return cmor_get_cur_dataset_attribute( name, value );
+}
+
+/************************************************************************/
+/*                  cmor_has_cur_dset_attribute_cff_()                  */
+/************************************************************************/
+
+int cmor_has_cur_dset_attribute_cff_( char *name ) {
+    return cmor_has_cur_dataset_attribute( name );
+}
+
+/************************************************************************/
+/*                  cmor_set_variable_attribute_cff_()                  */
+/************************************************************************/
+
+int cmor_set_variable_attribute_cff_( int *varid, char *name, char *value ) {
+    return cmor_set_variable_attribute( *varid, name, 'c', value );
+}
+
+/************************************************************************/
+/*                       cmor_set_deflate_cff_()                        */
+/************************************************************************/
+int cmor_set_deflate_cff_( int *var_id, int *shuffle,
+                           int *deflate, int *deflate_level ) {
+return( cmor_set_deflate( *var_id, *shuffle, *deflate, *deflate_level ) );
+}
+
+/************************************************************************/
+/*                  cmor_get_variable_attribute_cff_()                  */
+/************************************************************************/
+int cmor_get_variable_attribute_cff_( int *varid, char *name, char *value ) {
+    return cmor_get_variable_attribute( *varid, name, value );
+}
+
+/************************************************************************/
+/*                  cmor_has_variable_attribute_cff_()                  */
+/************************************************************************/
+int cmor_has_variable_attribute_cff_( int *varid, char *name ) {
+    return cmor_has_variable_attribute( *varid, name );
+}
+
+/************************************************************************/
+/*                          cmor_close_cff_()                           */
+/************************************************************************/
+int cmor_close_cff_( void ) {
+    return cmor_close(  );
+}
+
+/************************************************************************/
+/*                     cmor_close_var_nofnm_cff_()                      */
+/************************************************************************/
+
+int cmor_close_var_nofnm_cff_( int *var_id ) {
+    return cmor_close_variable( *var_id, NULL, NULL );
+}
+
+/************************************************************************/
+/*                      cmor_close_var_fnm_cff_()                       */
+/************************************************************************/
+int cmor_close_var_fnm_cff_( int *var_id, char *fnm ) {
+    return cmor_close_variable( *var_id, fnm, NULL );
+}
+
+/************************************************************************/
+/*                 cmor_close_var_nofnm_preserve_cff_()                 */
+/************************************************************************/
+int cmor_close_var_nofnm_preserve_cff_( int *var_id, int *preserve ) {
+    return cmor_close_variable( *var_id, NULL, preserve );
+}
+
+/************************************************************************/
+/*                  cmor_close_var_fnm_preserve_cff_()                  */
+/************************************************************************/
+
+int cmor_close_var_fnm_preserve_cff_( int *var_id, char *fnm,
+				      int *preserve ) {
+    return cmor_close_variable( *var_id, fnm, preserve );
+}
+
+/************************************************************************/
+/*                       cmor_set_grd_map_cff_()                        */
+/************************************************************************/
+int cmor_set_grd_map_cff_( int *gid, char *name, int *nparam,
+			   char **attributes_names, int *lparam,
+			   double *values, char **units, int *lnunits ) {
+    return cmor_set_grid_mapping( *gid, name, *nparam, attributes_names,
+				  *lparam, values, units, *lnunits );
+}
+
+/************************************************************************/
+/*                    cmor_grid_cff_noarea_double_()                    */
+/************************************************************************/
+int cmor_grid_cff_noarea_double_( int *grid_id, int *ndims, int *axes_ids,
+				  void *lat, void *lon, int *nvertices,
+				  void *blat, void *blon ) {
+    return cmor_grid( grid_id, *ndims, axes_ids, 'd', lat, lon, *nvertices,
+		      blat, blon );
+}
+
+/************************************************************************/
+/*                   cmor_grid_cff_noblaar_double_()                    */
+/************************************************************************/
+int cmor_grid_cff_noblaar_double_( int *grid_id, int *ndims, int *axes_ids,
+				   void *lat, void *lon, int *nvertices,
+				   void *blon ) {
+    return cmor_grid( grid_id, *ndims, axes_ids, 'd', lat, lon, *nvertices,
+		      NULL, blon );
+}
+
+/************************************************************************/
+/*                   cmor_grid_cff_nobloar_double_()                    */
+/************************************************************************/
+int cmor_grid_cff_nobloar_double_( int *grid_id, int *ndims, int *axes_ids,
+				   void *lat, void *lon, int *nvertices,
+				   void *blat ) {
+    return cmor_grid( grid_id, *ndims, axes_ids, 'd', lat, lon, *nvertices,
+		      blat, NULL );
+}
+
+/************************************************************************/
+/*                    cmor_grid_cff_nothg_double_()                     */
+/************************************************************************/
+int cmor_grid_cff_nothg_double_( int *grid_id, int *ndims, int *axes_ids,
+				 void *lat, void *lon, int *nvertices ) {
+    return cmor_grid( grid_id, *ndims, axes_ids, 'd', lat, lon, *nvertices,
+		      NULL, NULL );
+}
+
+/************************************************************************/
+/*                     cmor_grid_cff_noarea_real_()                     */
+/************************************************************************/
+int cmor_grid_cff_noarea_real_( int *grid_id, int *ndims, int *axes_ids,
+				void *lat, void *lon, int *nvertices,
+				void *blat, void *blon ) {
+    return cmor_grid( grid_id, *ndims, axes_ids, 'f', lat, lon, *nvertices,
+		      blat, blon );
+}
+
+/************************************************************************/
+/*                    cmor_grid_cff_noblaar_real_()                     */
+/************************************************************************/
+
+int cmor_grid_cff_noblaar_real_( int *grid_id, int *ndims, int *axes_ids,
+				 void *lat, void *lon, int *nvertices,
+				 void *blon ) {
+    return cmor_grid( grid_id, *ndims, axes_ids, 'f', lat, lon, *nvertices,
+		      NULL, blon );
+}
+
+/************************************************************************/
+/*                    cmor_grid_cff_nobloar_real_()                     */
+/************************************************************************/
+
+int cmor_grid_cff_nobloar_real_( int *grid_id, int *ndims, int *axes_ids,
+				 void *lat, void *lon, int *nvertices,
+				 void *blat ) {
+    return cmor_grid( grid_id, *ndims, axes_ids, 'f', lat, lon, *nvertices,
+		      blat, NULL );
 }
 
-int cmor_get_original_shape_cff_(int *var_id,int *shape_array) {
-  int tmp,i;
-  i=7;
-  tmp = cmor_get_original_shape(var_id,shape_array,&i,1);
-  /* reverse it for fortran order */
-  for (i=0;i<3;i++) {
-    tmp = shape_array[i];
-    shape_array[i]=shape_array[6-i];
-    shape_array[6-i]=tmp;
-  }
-  /* now need to put the -1 back at the end */
-  tmp=0;
-  for (i=0;i<7;i++) if (shape_array[i]==-1) tmp+=1;
-  for (i=0;i<7-tmp;i++) shape_array[i]=shape_array[i+tmp];
-  for (i=0;i<tmp;i++) shape_array[i+7-tmp]=-1;
-  return 0;
+/************************************************************************/
+/*                     cmor_grid_cff_nothg_real_()                      */
+/************************************************************************/
+
+int cmor_grid_cff_nothg_real_( int *grid_id, int *ndims, int *axes_ids,
+			       void *lat, void *lon, int *nvertices ) {
+    return cmor_grid( grid_id, *ndims, axes_ids, 'f', lat, lon, *nvertices,
+		      NULL, NULL );
+}
+
+/************************************************************************/
+/*                      cmor_grid_cff_nocoords_()                       */
+/************************************************************************/
+int cmor_grid_cff_nocoords_( int *grid_id, int *ndims, int *axes_ids,
+			     int *nvert ) {
+    return cmor_grid( grid_id, *ndims, axes_ids, 'f', NULL, NULL, *nvert,
+		      NULL, NULL );
+}
+
+/************************************************************************/
+/*                     cmor_grid_cff_noarea_int_()                      */
+/************************************************************************/
+
+int cmor_grid_cff_noarea_int_( int *grid_id, int *ndims, int *axes_ids,
+			       void *lat, void *lon, int *nvertices,
+			       void *blat, void *blon ) {
+    return cmor_grid( grid_id, *ndims, axes_ids, 'i', lat, lon, *nvertices,
+		      blat, blon );
+}
+
+/************************************************************************/
+/*                     cmor_grid_cff_noblaar_int_()                     */
+/************************************************************************/
+
+int cmor_grid_cff_noblaar_int_( int *grid_id, int *ndims, int *axes_ids,
+				void *lat, void *lon, int *nvertices,
+				void *blon ) {
+    return cmor_grid( grid_id, *ndims, axes_ids, 'i', lat, lon, *nvertices,
+		      NULL, blon );
+}
+
+/************************************************************************/
+/*                     cmor_grid_cff_nobloar_int_(                      */
+/************************************************************************/
+
+int cmor_grid_cff_nobloar_int_( int *grid_id, int *ndims, int *axes_ids,
+				void *lat, void *lon, int *nvertices,
+				void *blat ) {
+    return cmor_grid( grid_id, *ndims, axes_ids, 'i', lat, lon, *nvertices,
+		      blat, NULL );
+}
+
+/************************************************************************/
+/*                      cmor_grid_cff_nothg_int_()                      */
+/************************************************************************/
+int cmor_grid_cff_nothg_int_( int *grid_id, int *ndims, int *axes_ids,
+			      void *lat, void *lon, int *nvertices ) {
+    return cmor_grid( grid_id, *ndims, axes_ids, 'i', lat, lon, *nvertices,
+		      NULL, NULL );
+}
+
+/************************************************************************/
+/*                        cmor_grid_cff_tvc_f_()                        */
+/************************************************************************/
+
+int cmor_grid_cff_tvc_f_( int *coord_grid_id, int *grid_id, char *name,
+			  char *units, void *missing ) {
+    return cmor_time_varying_grid_coordinate( coord_grid_id, *grid_id,
+					      name, units, 'f', missing,
+					      NULL );
+}
+
+/************************************************************************/
+/*                        cmor_grid_cff_tvc_d_()                        */
+/************************************************************************/
+
+int cmor_grid_cff_tvc_d_( int *coord_grid_id, int *grid_id, char *name,
+			  char *units, void *missing ) {
+    return cmor_time_varying_grid_coordinate( coord_grid_id, *grid_id,
+					      name, units, 'd', missing,
+					      NULL );
+}
+
+/************************************************************************/
+/*                        cmor_grid_cff_tvc_i_()                        */
+/************************************************************************/
+
+int cmor_grid_cff_tvc_i_( int *coord_grid_id, int *grid_id, char *name,
+			  char *units, void *missing ) {
+    return cmor_time_varying_grid_coordinate( coord_grid_id, *grid_id,
+					      name, units, 'i', missing,
+					      NULL );
+}
+
+/************************************************************************/
+/*                       cmor_grid_cff_tvc_no_()                        */
+/************************************************************************/
+
+int cmor_grid_cff_tvc_no_( int *coord_grid_id, int *grid_id, char *name,
+			   char *units ) {
+    return cmor_time_varying_grid_coordinate( coord_grid_id, *grid_id,
+					      name, units, 'f', NULL,
+					      NULL );
+}
+
+
+/************************************************************************/
+/*                        cmor_load_table_cff_()                        */
+/************************************************************************/
+
+int cmor_load_table_cff_( char table[CMOR_MAX_STRING], int *table_id ) {
+    return cmor_load_table( table, table_id );
 }
 
-void cmor_create_output_path_cff_(int *var_id, char *path, int *slen) {
-  int isfixed;
-  isfixed = cmor_create_output_path(*var_id,path);
-  *slen = strlen(path);
+/************************************************************************/
+/*                        cmor_set_table_cff_()                         */
+/************************************************************************/
+void cmor_set_table_cff_( int *table ) {
+
+    cmor_set_table( *table );
 }
 
-int cmor_set_cur_dset_attribute_cff_(char *name, char *value) {
-  return cmor_set_cur_dataset_attribute(name, value, 1);
+/************************************************************************/
+/*                       cmor_handle_error_cff_()                       */
+/************************************************************************/
+void cmor_handle_error_cff_( char error_msg[CMOR_MAX_STRING], int *level ) {
+    cmor_handle_error( error_msg, *level );
 }
 
-int cmor_get_cur_dset_attribute_cff_(char *name, char *value) {
-  return cmor_get_cur_dataset_attribute(name, value) ;
+
+/************************************************************************/
+/*                       cmor_setup_cff_nolog_()                        */
+/************************************************************************/
+int cmor_setup_cff_nolog_( char *path, int *netcdf, int *verbosity,
+			   int *mode, int *crsub ) {
+    return cmor_setup( path, netcdf, verbosity, mode, NULL, crsub );
 }
 
-int cmor_has_cur_dset_attribute_cff_(char *name) {
-  return  cmor_has_cur_dataset_attribute(name);
+/************************************************************************/
+/*                          cmor_setup_cff_()                           */
+/************************************************************************/
+int cmor_setup_cff_( char *path, int *netcdf, int *verbosity, int *mode,
+		     char *logfile, int *crsub ) {
+    return cmor_setup( path, netcdf, verbosity, mode, logfile, crsub );
 }
 
-int cmor_set_variable_attribute_cff_(int *varid, char *name, char *value) {
-  return cmor_set_variable_attribute(*varid, name, 'c', value );
+/************************************************************************/
+/*                      cmor_dataset_json_cff_()                        */
+/************************************************************************/
+int cmor_dataset_json_cff_( char *json_file) {
+    return cmor_dataset_json( json_file );
 }
 
-int cmor_get_variable_attribute_cff_(int *varid, char *name, char *value) {
-  return cmor_get_variable_attribute(*varid, name, value) ;
+
+/************************************************************************/
+/*                       cmor_axis_cff_double_()                        */
+/************************************************************************/
+
+int cmor_axis_cff_double_( int *axis_id, char *name, char *units,
+			   int *length, void *coord_vals,
+			   void *cell_bounds, int *cell_bounds_ndim,
+			   char *interval ) {
+    return cmor_axis( axis_id, name, units, *length, coord_vals, 'd',
+		      cell_bounds, *cell_bounds_ndim, interval );
+}
+int cmor_axis_cff_real_( int *axis_id, char *name, char *units,
+			 int *length, void *coord_vals, void *cell_bounds,
+			 int *cell_bounds_ndim, char *interval ) {
+    return cmor_axis( axis_id, name, units, *length, coord_vals, 'f',
+		      cell_bounds, *cell_bounds_ndim, interval );
+/************************************************************************/
+/*                         cmor_axis_cff_int_()                         */
+/************************************************************************/
+}
+int cmor_axis_cff_int_( int *axis_id, char *name, char *units, int *length,
+			void *coord_vals, void *cell_bounds,
+			int *cell_bounds_ndim, char *interval ) {
+    return cmor_axis( axis_id, name, units, *length, coord_vals, 'i',
+		      cell_bounds, *cell_bounds_ndim, interval );
 }
 
-int cmor_has_variable_attribute_cff_(int *varid, char *name) {
-  return  cmor_has_variable_attribute(*varid, name);
+/************************************************************************/
+/*                        cmor_axis_cff_long_()                         */
+/************************************************************************/
+int cmor_axis_cff_long_( int *axis_id, char *name, char *units,
+			 int *length, void *coord_vals, void *cell_bounds,
+			 int *cell_bounds_ndim, char *interval ) {
+    return cmor_axis( axis_id, name, units, *length, coord_vals, 'l',
+		      cell_bounds, *cell_bounds_ndim, interval );
 }
 
-int cmor_close_cff_(void) {
-  return cmor_close();
+/************************************************************************/
+/*                    cmor_axis_cff_nobnds_double_()                    */
+/************************************************************************/
+
+int cmor_axis_cff_nobnds_double_( int *axis_id, char *name, char *units,
+				  int *length, void *coord_vals,
+				  char *interval ) {
+    return cmor_axis( axis_id, name, units, *length, coord_vals, 'd', NULL,
+		      0, interval );
 }
 
-int cmor_close_var_nofnm_cff_(int *var_id) {
-  return cmor_close_variable(*var_id,NULL,NULL);
+/************************************************************************/
+/*                     cmor_axis_cff_nobnds_real_()                     */
+/************************************************************************/
+
+int cmor_axis_cff_nobnds_real_( int *axis_id, char *name, char *units,
+				int *length, void *coord_vals,
+				char *interval ) {
+    return cmor_axis( axis_id, name, units, *length, coord_vals, 'f', NULL,
+		      0, interval );
 }
 
-int cmor_close_var_fnm_cff_(int *var_id, char *fnm) {
-  return cmor_close_variable(*var_id,fnm,NULL);
+/************************************************************************/
+/*                     cmor_axis_cff_nobnds_int_()                      */
+/************************************************************************/
+
+int cmor_axis_cff_nobnds_int_( int *axis_id, char *name, char *units,
+			       int *length, void *coord_vals,
+			       char *interval ) {
+    return cmor_axis( axis_id, name, units, *length, coord_vals, 'i', NULL,
+		      0, interval );
 }
 
-int cmor_close_var_nofnm_preserve_cff_(int *var_id, int *preserve) {
-  return cmor_close_variable(*var_id,NULL,preserve);
+/************************************************************************/
+/*                     cmor_axis_cff_nobnds_long_()                     */
+/************************************************************************/
+
+int cmor_axis_cff_nobnds_long_( int *axis_id, char *name, char *units,
+				int *length, void *coord_vals,
+				char *interval ) {
+    return cmor_axis( axis_id, name, units, *length, coord_vals, 'l', NULL,
+		      0, interval );
 }
 
-int cmor_close_var_fnm_preserve_cff_(int *var_id, char *fnm, int *preserve) {
-  return cmor_close_variable(*var_id,fnm,preserve);
+/************************************************************************/
+/*                     cmor_axis_cff_nobnds_char_()                     */
+/************************************************************************/
+
+int cmor_axis_cff_nobnds_char_( int *axis_id, char *name, char *units,
+				int *length, void *coord_vals,
+				int *cell_bounds_ndim, char *interval ) {
+    return cmor_axis( axis_id, name, units, *length, coord_vals, 'c', NULL,
+		      *cell_bounds_ndim, interval );
 }
 
-int cmor_set_grd_map_cff_(int *gid, char *name, int *nparam, char **attributes_names, int *lparam, double *values, char **units, int *lnunits){
-  return cmor_set_grid_mapping(*gid, name, *nparam, attributes_names, *lparam, values, units, *lnunits);
+/************************************************************************/
+/*                      cmor_axis_cff_nocoords_()                       */
+/************************************************************************/
+
+int cmor_axis_cff_nocoords_( int *axis_id, char *name, char *units,
+			     int *length, char *interval ) {
+    return cmor_axis( axis_id, name, units, *length, NULL, 'd', NULL, 0,
+		      interval );
 }
 
-/* int cmor_grid_cff_long_(int *grid_id, int *ndims, int *axes_ids, void *lat, void *lon, int *nvertices, void *blat, void *blon,void *area){ */
-/*   return cmor_grid(grid_id,*ndims,axes_ids,'l',lat,lon,*nvertices,blat,blon,area); */
-/* } */
-/* int cmor_grid_cff_noarea_long_(int *grid_id, int *ndims, int *axes_ids, void *lat, void *lon, int *nvertices, void *blat, void *blon){ */
-/*   return cmor_grid(grid_id,*ndims,axes_ids,'l',lat,lon,*nvertices,blat,blon); */
-/* } */
-/* int cmor_grid_cff_noblon_long_(int *grid_id, int *ndims, int *axes_ids, void *lat, void *lon, int *nvertices, void *blat, void *area){ */
-/*   return cmor_grid(grid_id,*ndims,axes_ids,'l',lat,lon,*nvertices,blat,NULL,area); */
-/* } */
-/* int cmor_grid_cff_noblat_long_(int *grid_id, int *ndims, int *axes_ids, void *lat, void *lon, int *nvertices, void *blon,void *area){ */
-/*   return cmor_grid(grid_id,*ndims,axes_ids,'l',lat,lon,*nvertices,NULL,blon,area); */
-/* } */
-/* int cmor_grid_cff_nobnds_long_(int *grid_id, int *ndims, int *axes_ids, void *lat, void *lon, int *nvertices, void *area){ */
-/*   return cmor_grid(grid_id,*ndims,axes_ids,'l',lat,lon,*nvertices,NULL,NULL,area); */
-/* } */
-/* int cmor_grid_cff_noblaar_long_(int *grid_id, int *ndims, int *axes_ids, void *lat, void *lon, int *nvertices, void *blon){ */
-/*   return cmor_grid(grid_id,*ndims,axes_ids,'l',lat,lon,*nvertices,NULL,blon); */
-/* } */
-/* int cmor_grid_cff_nobloar_long_(int *grid_id, int *ndims, int *axes_ids, void *lat, void *lon, int *nvertices, void *blat){ */
-/*   return cmor_grid(grid_id,*ndims,axes_ids,'l',lat,lon,*nvertices,blat,NULL); */
-/* } */
-/* int cmor_grid_cff_nothg_long_(int *grid_id, int *ndims, int *axes_ids, void *lat, void *lon, int *nvertices, void *blat, void *blon,void *area){ */
-/*   return cmor_grid(grid_id,*ndims,axes_ids,'l',lat,lon,*nvertices,NULL,NULL,NULL); */
-/* } */
+/************************************************************************/
+/*                      cmor_zfactor_cff_double_()                      */
+/************************************************************************/
 
-/* int cmor_grid_cff_double_(int *grid_id, int *ndims, int *axes_ids, void *lat, void *lon, int *nvertices, void *blat, void *blon,void *area){ */
-/*   return cmor_grid(grid_id,*ndims,axes_ids,'d',lat,lon,*nvertices,blat,blon,area); */
-/* } */
-int cmor_grid_cff_noarea_double_(int *grid_id, int *ndims, int *axes_ids, void *lat, void *lon, int *nvertices, void *blat, void *blon){
-  return cmor_grid(grid_id,*ndims,axes_ids,'d',lat,lon,*nvertices,blat,blon);
+int cmor_zfactor_cff_double_( int *zvar_id, int *axis_id, char *name,
+			      char *units, int *ndims, int *axes_ids,
+			      void *values, void *bounds ) {
+    return cmor_zfactor( zvar_id, *axis_id, name, units, *ndims, axes_ids,
+			 'd', values, bounds );
 }
 
-/* int cmor_grid_cff_noblon_double_(int *grid_id, int *ndims, int *axes_ids, void *lat, void *lon, int *nvertices, void *blat, void *area){ */
-/*   return cmor_grid(grid_id,*ndims,axes_ids,'d',lat,lon,*nvertices,blat,NULL,area); */
-/* } */
-/* int cmor_grid_cff_noblat_double_(int *grid_id, int *ndims, int *axes_ids, void *lat, void *lon, int *nvertices, void *blon,void *area){ */
-/*   return cmor_grid(grid_id,*ndims,axes_ids,'d',lat,lon,*nvertices,NULL,blon,area); */
-/* } */
-/* int cmor_grid_cff_nobnds_double_(int *grid_id, int *ndims, int *axes_ids, void *lat, void *lon, int *nvertices, void *area){ */
-/*   return cmor_grid(grid_id,*ndims,axes_ids,'d',lat,lon,*nvertices,NULL,NULL,area); */
-/* } */
-int cmor_grid_cff_noblaar_double_(int *grid_id, int *ndims, int *axes_ids, void *lat, void *lon, int *nvertices, void *blon){
-  return cmor_grid(grid_id,*ndims,axes_ids,'d',lat,lon,*nvertices,NULL,blon);
+/************************************************************************/
+/*                  cmor_zfactor_cff_double_nobnds_()                   */
+/************************************************************************/
+
+int cmor_zfactor_cff_double_nobnds_( int *zvar_id, int *axis_id,
+				     char *name, char *units, int *ndims,
+				     int *axes_ids, void *values ) {
+    return cmor_zfactor( zvar_id, *axis_id, name, units, *ndims, axes_ids,
+			 'd', values, NULL );
 }
-int cmor_grid_cff_nobloar_double_(int *grid_id, int *ndims, int *axes_ids, void *lat, void *lon, int *nvertices, void *blat){
-  return cmor_grid(grid_id,*ndims,axes_ids,'d',lat,lon,*nvertices,blat,NULL);
+
+/************************************************************************/
+/*                       cmor_zfactor_cff_int_()                        */
+/************************************************************************/
+
+int cmor_zfactor_cff_int_( int *zvar_id, int *axis_id, char *name,
+			   char *units, int *ndims, int *axes_ids,
+			   void *values, void *bounds ) {
+    return cmor_zfactor( zvar_id, *axis_id, name, units, *ndims, axes_ids,
+			 'i', values, bounds );
 }
-int cmor_grid_cff_nothg_double_(int *grid_id, int *ndims, int *axes_ids, void *lat, void *lon, int *nvertices){
-  return cmor_grid(grid_id,*ndims,axes_ids,'d',lat,lon,*nvertices,NULL,NULL);
+
+/************************************************************************/
+/*                    cmor_zfactor_cff_int_nobnds_()                    */
+/************************************************************************/
+
+int cmor_zfactor_cff_int_nobnds_( int *zvar_id, int *axis_id, char *name,
+				  char *units, int *ndims, int *axes_ids,
+				  void *values ) {
+    return cmor_zfactor( zvar_id, *axis_id, name, units, *ndims, axes_ids,
+			 'i', values, NULL );
 }
 
-/* int cmor_grid_cff_real_(int *grid_id, int *ndims, int *axes_ids, void *lat, void *lon, int *nvertices, void *blat, void *blon,void *area){ */
-/*   return cmor_grid(grid_id,*ndims,axes_ids,'f',lat,lon,*nvertices,blat,blon,area); */
-/* } */
-int cmor_grid_cff_noarea_real_(int *grid_id, int *ndims, int *axes_ids, void *lat, void *lon, int *nvertices, void *blat, void *blon){
-  return cmor_grid(grid_id,*ndims,axes_ids,'f',lat,lon,*nvertices,blat,blon);
+/************************************************************************/
+/*                       cmor_zfactor_cff_long_()                       */
+/************************************************************************/
+
+int cmor_zfactor_cff_long_( int *zvar_id, int *axis_id, char *name,
+			    char *units, int *ndims, int *axes_ids,
+			    void *values, void *bounds ) {
+    return cmor_zfactor( zvar_id, *axis_id, name, units, *ndims, axes_ids,
+			 'l', values, bounds );
 }
-/* int cmor_grid_cff_noblon_real_(int *grid_id, int *ndims, int *axes_ids, void *lat, void *lon, int *nvertices, void *blat, void *area){ */
-/*   return cmor_grid(grid_id,*ndims,axes_ids,'f',lat,lon,*nvertices,blat,NULL,area); */
-/* } */
-/* int cmor_grid_cff_noblat_real_(int *grid_id, int *ndims, int *axes_ids, void *lat, void *lon, int *nvertices, void *blon,void *area){ */
-/*   return cmor_grid(grid_id,*ndims,axes_ids,'f',lat,lon,*nvertices,NULL,blon,area); */
-/* } */
-/* int cmor_grid_cff_nobnds_real_(int *grid_id, int *ndims, int *axes_ids, void *lat, void *lon, int *nvertices, void *area){ */
-/*   return cmor_grid(grid_id,*ndims,axes_ids,'f',lat,lon,*nvertices,NULL,NULL,area); */
-/* } */
-int cmor_grid_cff_noblaar_real_(int *grid_id, int *ndims, int *axes_ids, void *lat, void *lon, int *nvertices, void *blon){
-  return cmor_grid(grid_id,*ndims,axes_ids,'f',lat,lon,*nvertices,NULL,blon);
+
+/************************************************************************/
+/*                   cmor_zfactor_cff_long_nobnds_()                    */
+/************************************************************************/
+
+int cmor_zfactor_cff_long_nobnds_( int *zvar_id, int *axis_id, char *name,
+				   char *units, int *ndims, int *axes_ids,
+				   void *values ) {
+    return cmor_zfactor( zvar_id, *axis_id, name, units, *ndims, axes_ids,
+			 'l', values, NULL );
 }
-int cmor_grid_cff_nobloar_real_(int *grid_id, int *ndims, int *axes_ids, void *lat, void *lon, int *nvertices, void *blat){
-  return cmor_grid(grid_id,*ndims,axes_ids,'f',lat,lon,*nvertices,blat,NULL);
+
+/************************************************************************/
+/*                       cmor_zfactor_cff_real_()                       */
+/************************************************************************/
+
+int cmor_zfactor_cff_real_( int *zvar_id, int *axis_id, char *name,
+			    char *units, int *ndims, int *axes_ids,
+			    void *values, void *bounds ) {
+    return cmor_zfactor( zvar_id, *axis_id, name, units, *ndims, axes_ids,
+			 'f', values, bounds );
 }
-int cmor_grid_cff_nothg_real_(int *grid_id, int *ndims, int *axes_ids, void *lat, void *lon, int *nvertices){
-  return cmor_grid(grid_id,*ndims,axes_ids,'f',lat,lon,*nvertices,NULL,NULL);
+
+/************************************************************************/
+/*                   cmor_zfactor_cff_real_nobnds_()                    */
+/************************************************************************/
+
+int cmor_zfactor_cff_real_nobnds_( int *zvar_id, int *axis_id, char *name,
+				   char *units, int *ndims, int *axes_ids,
+				   void *values ) {
+    return cmor_zfactor( zvar_id, *axis_id, name, units, *ndims, axes_ids,
+			 'f', values, NULL );
 }
-int cmor_grid_cff_nocoords_(int *grid_id, int *ndims, int *axes_ids, int *nvert) {
-  return cmor_grid(grid_id,*ndims,axes_ids,'f',NULL,NULL,*nvert,NULL,NULL);
-}
-
-/* int cmor_grid_cff_int_(int *grid_id, int *ndims, int *axes_ids, void *lat, void *lon, int *nvertices, void *blat, void *blon,void *area){ */
-/*   return cmor_grid(grid_id,*ndims,axes_ids,'i',lat,lon,*nvertices,blat,blon,area); */
-/* } */
-int cmor_grid_cff_noarea_int_(int *grid_id, int *ndims, int *axes_ids, void *lat, void *lon, int *nvertices, void *blat, void *blon){
-  return cmor_grid(grid_id,*ndims,axes_ids,'i',lat,lon,*nvertices,blat,blon);
-}
-/* int cmor_grid_cff_noblon_int_(int *grid_id, int *ndims, int *axes_ids, void *lat, void *lon, int *nvertices, void *blat, void *area){ */
-/*   return cmor_grid(grid_id,*ndims,axes_ids,'i',lat,lon,*nvertices,blat,NULL,area); */
-/* } */
-/* int cmor_grid_cff_noblat_int_(int *grid_id, int *ndims, int *axes_ids, void *lat, void *lon, int *nvertices, void *blon,void *area){ */
-/*   return cmor_grid(grid_id,*ndims,axes_ids,'i',lat,lon,*nvertices,NULL,blon,area); */
-/* } */
-/* int cmor_grid_cff_nobnds_int_(int *grid_id, int *ndims, int *axes_ids, void *lat, void *lon, int *nvertices, void *area){ */
-/*   return cmor_grid(grid_id,*ndims,axes_ids,'i',lat,lon,*nvertices,NULL,NULL,area); */
-/* } */
-
-int cmor_grid_cff_noblaar_int_(int *grid_id, int *ndims, int *axes_ids, void *lat, void *lon, int *nvertices, void *blon){
-  return cmor_grid(grid_id,*ndims,axes_ids,'i',lat,lon,*nvertices,NULL,blon);
-}
-int cmor_grid_cff_nobloar_int_(int *grid_id, int *ndims, int *axes_ids, void *lat, void *lon, int *nvertices, void *blat){
-  return cmor_grid(grid_id,*ndims,axes_ids,'i',lat,lon,*nvertices,blat,NULL);
-}
-int cmor_grid_cff_nothg_int_(int *grid_id, int *ndims, int *axes_ids, void *lat, void *lon, int *nvertices){
-  return cmor_grid(grid_id,*ndims,axes_ids,'i',lat,lon,*nvertices,NULL,NULL);
-}
-
-int cmor_grid_cff_tvc_f_(int *coord_grid_id, int *grid_id, char *name, char *units, void *missing) {
-  return cmor_time_varying_grid_coordinate(coord_grid_id, *grid_id, name, units, 'f', missing, NULL);
-}
-int cmor_grid_cff_tvc_d_(int *coord_grid_id, int *grid_id, char *name, char *units, void *missing) {
-  return cmor_time_varying_grid_coordinate(coord_grid_id, *grid_id, name, units, 'd', missing, NULL);
-}
-int cmor_grid_cff_tvc_i_(int *coord_grid_id, int *grid_id, char *name, char *units, void *missing) {
-  return cmor_time_varying_grid_coordinate(coord_grid_id, *grid_id, name, units, 'i', missing, NULL);
-}
-int cmor_grid_cff_tvc_no_(int *coord_grid_id, int *grid_id, char *name, char *units) {
-  return cmor_time_varying_grid_coordinate(coord_grid_id, *grid_id, name, units, 'f', NULL, NULL);
-}
-
-
-
-int cmor_load_table_cff_(char table[CMOR_MAX_STRING], int *table_id) {
-  return cmor_load_table(table,table_id);
-}
-
-void cmor_set_table_cff_(int *table) {
-  int i;
-  i = cmor_set_table(*table);
-}
-
-void cmor_handle_error_cff_(char error_msg[CMOR_MAX_STRING],int *level) {
-  cmor_handle_error(error_msg,*level);
-}
-
-
-int cmor_setup_cff_nolog_(char *path, int *netcdf, int *verbosity, int *mode, int *crsub)
-{ 
-  return  cmor_setup(path,netcdf,verbosity,mode,NULL,crsub);
-}
-int cmor_setup_cff_(char *path, int *netcdf, int *verbosity, int *mode, char *logfile, int *crsub)
-{ 
-  return  cmor_setup(path,netcdf,verbosity,mode,logfile,crsub);
-}
-
-int cmor_dataset_cff_(char *outpath, 
-		      char *experiment_id,
-		      char *institution, 
-		      char *source,   
-		      char *calendar, 
-		      int *realization, 
-		      char *contact, 
-		      char *history, 
-		      char *comment, 
-		      char *references,	 
-		      int *leap_year, 
-		      int *leap_month, 
-		      int *month_lengths,
-		      char *model_name,
-		      char *forcing,
-		      int *initialization_method,
-		      int *physics_version,
-		      char *institute_id,
-		      char *parent_exp_id,
-		      double *branch_time,
-		      char *parent_exp_rip)
-{
-  return cmor_dataset(outpath,experiment_id,institution,source,calendar,*realization,contact,history,comment,references,*leap_year,*leap_month,month_lengths,model_name,forcing,*initialization_method,*physics_version,institute_id,parent_exp_id,branch_time,parent_exp_rip);
-}
-int cmor_dataset_cff_null_(char *outpath, 
-			   char *experiment_id,
-			   char *institution, 
-			   char *source,   
-			   char *calendar, 
-			   int  *realization, 
-			   char *contact, 
-			   char *history, 
-			   char *comment, 
-			   char *references,	 
-			   int  *leap_year, 
-			   int  *leap_month,
-			   char *model_name,
-			   char *forcing,
-			   int  *initialization_method,
-			   int  *physics_version,
-			   char *institute_id,
-			   char *parent_exp_id,
-			   double *branch_time,
-			   char *parent_exp_rip)
-{
-  return cmor_dataset(outpath,experiment_id,institution,source,calendar,*realization,contact,history,comment,references,*leap_year,*leap_month,NULL,model_name,forcing,*initialization_method,*physics_version,institute_id,parent_exp_id,branch_time,parent_exp_rip);
-}
-int cmor_dataset_cff_nobrch_(char *outpath, 
-			     char *experiment_id,
-			     char *institution, 
-			     char *source,   
-			     char *calendar, 
-			     int *realization, 
-			     char *contact, 
-			     char *history, 
-			     char *comment, 
-			     char *references,	 
-			     int *leap_year, 
-			     int *leap_month, 
-			     int *month_lengths,
-			     char *model_name,
-			     char *forcing,
-			     int *initialization_method,
-			     int *physics_version,
-			     char *institute_id,
-			     char *parent_exp_id,
-			     char *parent_exp_rip)
-{
-  return cmor_dataset(outpath,experiment_id,institution,source,calendar,*realization,contact,history,comment,references,*leap_year,*leap_month,month_lengths,model_name,forcing,*initialization_method,*physics_version,institute_id,parent_exp_id,NULL,parent_exp_rip);
-}
-int cmor_dataset_cff_null_nobrch_(char *outpath, 
-				  char *experiment_id,
-				  char *institution, 
-				  char *source,   
-				  char *calendar, 
-				  int  *realization, 
-				  char *contact, 
-				  char *history, 
-				  char *comment, 
-				  char *references,	 
-				  int  *leap_year, 
-				  int  *leap_month,
-				  char *model_name,
-				  char *forcing,
-				  int  *initialization_method,
-				  int  *physics_version,
-				  char *institute_id,
-				  char *parent_exp_id,
-				  char *parent_exp_rip)
-{
-  return cmor_dataset(outpath,experiment_id,institution,source,calendar,*realization,contact,history,comment,references,*leap_year,*leap_month,NULL,model_name,forcing,*initialization_method,*physics_version,institute_id,parent_exp_id,NULL,parent_exp_rip);
-}
-
-int cmor_axis_cff_double_(int *axis_id, char *name,char *units, int *length,void *coord_vals, void *cell_bounds,int *cell_bounds_ndim,char *interval) {
-  return cmor_axis(axis_id,name,units,*length,coord_vals,'d', cell_bounds, *cell_bounds_ndim, interval);
-}
-int cmor_axis_cff_real_(int *axis_id, char *name,char *units, int *length,void *coord_vals, void *cell_bounds,int *cell_bounds_ndim,char *interval) {
-  return cmor_axis(axis_id,name,units,*length,coord_vals,'f', cell_bounds, *cell_bounds_ndim, interval);
-}
-int cmor_axis_cff_int_(int *axis_id, char *name,char *units, int *length,void *coord_vals, void *cell_bounds,int *cell_bounds_ndim,char *interval) {
-  return cmor_axis(axis_id,name,units,*length,coord_vals,'i', cell_bounds, *cell_bounds_ndim, interval);
-}
-int cmor_axis_cff_long_(int *axis_id, char *name,char *units, int *length,void *coord_vals, void *cell_bounds,int *cell_bounds_ndim,char *interval) {
-  return cmor_axis(axis_id,name,units,*length,coord_vals,'l', cell_bounds, *cell_bounds_ndim, interval);
-}
-int cmor_axis_cff_nobnds_double_(int *axis_id, char *name,char *units, int *length,void *coord_vals,char *interval) {
-  return cmor_axis(axis_id,name,units,*length,coord_vals,'d', NULL, 0, interval);
-}
-int cmor_axis_cff_nobnds_real_(int *axis_id, char *name,char *units, int *length,void *coord_vals,char *interval) {
-  return cmor_axis(axis_id,name,units,*length,coord_vals,'f', NULL, 0, interval);
-}
-int cmor_axis_cff_nobnds_int_(int *axis_id, char *name,char *units, int *length,void *coord_vals,char *interval) {
-  return cmor_axis(axis_id,name,units,*length,coord_vals,'i', NULL, 0, interval);
-}
-int cmor_axis_cff_nobnds_long_(int *axis_id, char *name,char *units, int *length,void *coord_vals,char *interval) {
-  return cmor_axis(axis_id,name,units,*length,coord_vals,'l', NULL, 0, interval);
-}
-int cmor_axis_cff_nobnds_char_(int *axis_id, char *name,char *units, int *length,void *coord_vals, int *cell_bounds_ndim,char *interval) {
-  return cmor_axis(axis_id,name,units,*length,coord_vals,'c', NULL, *cell_bounds_ndim, interval);
-}
-int cmor_axis_cff_nocoords_(int *axis_id, char *name,char *units, int *length,char *interval) {
-  return cmor_axis(axis_id,name,units,*length,NULL,'d', NULL, 0, interval);
-}
-
-int cmor_zfactor_cff_double_(int *zvar_id,int *axis_id, char *name, char *units, int *ndims, int *axes_ids, void *values, void *bounds) {
-  return cmor_zfactor(zvar_id, *axis_id, name, units, *ndims, axes_ids, 'd', values, bounds);
-}
-int cmor_zfactor_cff_double_nobnds_(int *zvar_id,int *axis_id, char *name, char *units, int *ndims, int *axes_ids, void *values) {
-  return cmor_zfactor(zvar_id, *axis_id, name, units, *ndims, axes_ids, 'd', values, NULL);
-}
-int cmor_zfactor_cff_int_(int *zvar_id,int *axis_id, char *name, char *units, int *ndims, int *axes_ids, void *values, void *bounds) {
-  return cmor_zfactor(zvar_id, *axis_id, name, units, *ndims, axes_ids, 'i', values, bounds);
-}
-int cmor_zfactor_cff_int_nobnds_(int *zvar_id,int *axis_id, char *name, char *units, int *ndims, int *axes_ids, void *values) {
-  return cmor_zfactor(zvar_id, *axis_id, name, units, *ndims, axes_ids, 'i', values, NULL);
-}
-int cmor_zfactor_cff_long_(int *zvar_id,int *axis_id, char *name, char *units, int *ndims, int *axes_ids, void *values, void *bounds) {
-  return cmor_zfactor(zvar_id, *axis_id, name, units, *ndims, axes_ids, 'l', values, bounds);
-}
-int cmor_zfactor_cff_long_nobnds_(int *zvar_id,int *axis_id, char *name, char *units, int *ndims, int *axes_ids, void *values) {
-  return cmor_zfactor(zvar_id, *axis_id, name, units, *ndims, axes_ids, 'l', values, NULL);
-}
-int cmor_zfactor_cff_real_(int *zvar_id,int *axis_id, char *name, char *units, int *ndims, int *axes_ids, void *values, void *bounds) {
-  return cmor_zfactor(zvar_id, *axis_id, name, units, *ndims, axes_ids, 'f', values, bounds);
-}
-int cmor_zfactor_cff_real_nobnds_(int *zvar_id,int *axis_id, char *name, char *units, int *ndims, int *axes_ids, void *values) {
-  return cmor_zfactor(zvar_id, *axis_id, name, units, *ndims, axes_ids, 'f', values, NULL);
-}
-int cmor_zfactor_cff_novals_(int *zvar_id,int *axis_id, char *name, char *units, int *ndims, int *axes_ids) {
-  return cmor_zfactor(zvar_id, *axis_id, name, units, *ndims, axes_ids, 'd', NULL, NULL);
-}
-
-int cmor_variable_cff_double_(int *var_id, char *name, char *units, int *ndims, int *axes_ids, double *missing, double *tolerance, char *positive, char*original_name, char *history, char *comment) {
-  return cmor_variable(var_id,name,units,*ndims,axes_ids,'d',missing,tolerance,positive,original_name,history,comment);
-}
-int cmor_variable_cff_real_(int *var_id, char *name, char *units, int *ndims, int *axes_ids, float *missing, double *tolerance, char *positive, char*original_name, char *history, char *comment) {
-  return cmor_variable(var_id,name,units,*ndims,axes_ids,'f',missing,tolerance,positive,original_name,history,comment);
-}
-int cmor_variable_cff_int_(int *var_id, char *name, char *units, int *ndims, int *axes_ids, int *missing, double *tolerance, char *positive, char*original_name, char *history, char *comment) {
-  return cmor_variable(var_id,name,units,*ndims,axes_ids,'i',missing,tolerance,positive,original_name,history,comment);
-}
-int cmor_variable_cff_long_(int *var_id, char *name, char *units, int *ndims, int *axes_ids, long *missing, double *tolerance, char *positive, char*original_name, char *history, char *comment) {
-  return cmor_variable(var_id,name,units,*ndims,axes_ids,'l',missing,tolerance,positive,original_name,history,comment);
-}
-int cmor_variable_cff_nomiss_(int *var_id, char *name, char *units, int *ndims, int *axes_ids, double *tolerance, char *positive, char*original_name, char *history, char *comment) {
-  return cmor_variable(var_id,name,units,*ndims,axes_ids,'f',NULL,tolerance,positive,original_name,history,comment);
-}
-
-int cmor_write_cff_double_(int *var_id,void *data, char *suffix, int *ntimes_passed, double *time_vals, double *time_bounds, int *refvar) {
-  if (*refvar<0) {
-    return cmor_write(*var_id,data,'d',suffix,*ntimes_passed,time_vals,time_bounds,NULL);
-  }
-  else {
-    return cmor_write(*var_id,data,'d',suffix,*ntimes_passed,time_vals,time_bounds,refvar);
-  }
-}
-int cmor_write_cff_double_nobnds_(int *var_id,void *data, char *suffix, int *ntimes_passed, double *time_vals, int *refvar) {
-  if (*refvar<0) {
-    return cmor_write(*var_id,data,'d',suffix,*ntimes_passed,time_vals,NULL,NULL);
-  }
-  else {
-    return cmor_write(*var_id,data,'d',suffix,*ntimes_passed,time_vals,NULL,refvar);
-  }
-}
-int cmor_write_cff_double_notime_(int *var_id,void *data, char *suffix, int *ntimes_passed, int *refvar) {
-  if (*refvar<0) {
-    return cmor_write(*var_id,data,'d',suffix,*ntimes_passed,NULL,NULL,NULL);
-  }
-  else {
-    return cmor_write(*var_id,data,'d',suffix,*ntimes_passed,NULL,NULL,refvar);
-  }
-}
-
-int cmor_write_cff_real_(int *var_id,void *data, char *suffix, int *ntimes_passed, double *time_vals, double *time_bounds, int *refvar) {
-  /*   int i; */
-  /*   printf("in interface\n"); */
-  /*   for(i=0;i<12;i++) printf("ok in here we got: %i, %i, %f\n",*var_id,*refvar,(float)((float *)data)[i]); */
-  if (*refvar<0) {
-    return cmor_write(*var_id,data,'f',suffix,*ntimes_passed,time_vals,time_bounds,NULL);
-  }
-  else {
-    return cmor_write(*var_id,data,'f',suffix,*ntimes_passed,time_vals,time_bounds,refvar);
-  }
-}
-int cmor_write_cff_real_nobnds_(int *var_id,void *data, char *suffix, int *ntimes_passed, double *time_vals, int *refvar) {
-  if (*refvar<0) {
-    return cmor_write(*var_id,data,'f',suffix,*ntimes_passed,time_vals,NULL,NULL);
-  }
-  else {
-    return cmor_write(*var_id,data,'f',suffix,*ntimes_passed,time_vals,NULL,refvar);
-  }
-}
-int cmor_write_cff_real_notime_(int *var_id,void *data, char *suffix, int *ntimes_passed, int *refvar) {
-  /*   int i; */
-  /*   for(i=0;i<12;i++) printf("ok in here we got: %i, %i, %f\n",*var_id,*refvar,(float)((float *)data)[i]); */
-  if (*refvar<0) {
-    return cmor_write(*var_id,data,'f',suffix,*ntimes_passed,NULL,NULL,NULL);
-  }
-  else {
-    return cmor_write(*var_id,data,'f',suffix,*ntimes_passed,NULL,NULL,refvar);
-  }
-}
-
-int cmor_write_cff_int_(int *var_id,void *data, char *suffix, int *ntimes_passed, double *time_vals, double *time_bounds, int *refvar) {
-  if (*refvar<0) {
-    return cmor_write(*var_id,data,'i',suffix,*ntimes_passed,time_vals,time_bounds,NULL);
-  }
-  else {
-    return cmor_write(*var_id,data,'i',suffix,*ntimes_passed,time_vals,time_bounds,refvar);
-  }
-}
-int cmor_write_cff_int_nobnds_(int *var_id,void *data, char *suffix, int *ntimes_passed, double *time_vals, int *refvar) {
-  if (*refvar<0) {
-    return cmor_write(*var_id,data,'i',suffix,*ntimes_passed,time_vals,NULL,NULL);
-  }
-  else {
-    return cmor_write(*var_id,data,'i',suffix,*ntimes_passed,time_vals,NULL,refvar);
-  }
-}
-int cmor_write_cff_int_notime_(int *var_id,void *data, char *suffix, int *ntimes_passed, int *refvar) {
-  if (*refvar<0) {
-    return cmor_write(*var_id,data,'i',suffix,*ntimes_passed,NULL,NULL,NULL);
-  }
-  else {
-    return cmor_write(*var_id,data,'i',suffix,*ntimes_passed,NULL,NULL,refvar);
-  }
-}
-int cmor_write_cff_long_(int *var_id,void *data, char *suffix, int *ntimes_passed, double *time_vals, double *time_bounds, int *refvar) {
-  if (*refvar<0) {
-    return cmor_write(*var_id,data,'l',suffix,*ntimes_passed,time_vals,time_bounds,NULL);
-  }
-  else {
-    return cmor_write(*var_id,data,'l',suffix,*ntimes_passed,time_vals,time_bounds,refvar);
-  }
-}
-int cmor_write_cff_long_nobnds_(int *var_id,void *data, char *suffix, int *ntimes_passed, double *time_vals, int *refvar) {
-  if (*refvar<0) {
-    return cmor_write(*var_id,data,'l',suffix,*ntimes_passed,time_vals,NULL,NULL);
-  }
-  else {
-    return cmor_write(*var_id,data,'l',suffix,*ntimes_passed,time_vals,NULL,refvar);
-  }
-}
-int cmor_write_cff_long_notime_(int *var_id,void *data, char *suffix, int *ntimes_passed, int *refvar) {
-  if (*refvar<0) {
-    return cmor_write(*var_id,data,'l',suffix,*ntimes_passed,NULL,NULL,NULL);
-  }
-  else {
-    return cmor_write(*var_id,data,'l',suffix,*ntimes_passed,NULL,NULL,refvar);
-  }
+
+/************************************************************************/
+/*                      cmor_zfactor_cff_novals_()                      */
+/************************************************************************/
+
+int cmor_zfactor_cff_novals_( int *zvar_id, int *axis_id, char *name,
+			      char *units, int *ndims, int *axes_ids ) {
+    return cmor_zfactor( zvar_id, *axis_id, name, units, *ndims, axes_ids,
+			 'd', NULL, NULL );
+}
+
+/************************************************************************/
+/*                     cmor_variable_cff_double_()                      */
+/************************************************************************/
+
+int cmor_variable_cff_double_( int *var_id, char *name, char *units,
+			       int *ndims, int *axes_ids, double *missing,
+			       double *tolerance, char *positive,
+			       char *original_name, char *history,
+			       char *comment ) {
+    return cmor_variable( var_id, name, units, *ndims, axes_ids, 'd',
+			  missing, tolerance, positive, original_name,
+			  history, comment );
+}
+
+/************************************************************************/
+/*                      cmor_variable_cff_real_()                       */
+/************************************************************************/
+
+int cmor_variable_cff_real_( int *var_id, char *name, char *units,
+			     int *ndims, int *axes_ids, float *missing,
+			     double *tolerance, char *positive,
+			     char *original_name, char *history,
+			     char *comment ) {
+    return cmor_variable( var_id, name, units, *ndims, axes_ids, 'f',
+			  missing, tolerance, positive, original_name,
+			  history, comment );
+}
+
+/************************************************************************/
+/*                       cmor_variable_cff_int_()                       */
+/************************************************************************/
+
+int cmor_variable_cff_int_( int *var_id, char *name, char *units,
+			    int *ndims, int *axes_ids, int *missing,
+			    double *tolerance, char *positive,
+			    char *original_name, char *history,
+			    char *comment ) {
+    return cmor_variable( var_id, name, units, *ndims, axes_ids, 'i',
+			  missing, tolerance, positive, original_name,
+			  history, comment );
+}
+
+/************************************************************************/
+/*                      cmor_variable_cff_long_()                       */
+/************************************************************************/
+
+int cmor_variable_cff_long_( int *var_id, char *name, char *units,
+			     int *ndims, int *axes_ids, long *missing,
+			     double *tolerance, char *positive,
+			     char *original_name, char *history,
+			     char *comment ) {
+    return cmor_variable( var_id, name, units, *ndims, axes_ids, 'l',
+			  missing, tolerance, positive, original_name,
+			  history, comment );
+}
+
+/************************************************************************/
+/*                     cmor_variable_cff_nomiss_()                      */
+/************************************************************************/
+
+int cmor_variable_cff_nomiss_( int *var_id, char *name, char *units,
+			       int *ndims, int *axes_ids,
+			       double *tolerance, char *positive,
+			       char *original_name, char *history,
+			       char *comment ) {
+    return cmor_variable( var_id, name, units, *ndims, axes_ids, 'f', NULL,
+			  tolerance, positive, original_name, history,
+			  comment );
+}
+
+/************************************************************************/
+/*                       cmor_write_cff_double_()                       */
+/************************************************************************/
+
+int cmor_write_cff_double_( int *var_id, void *data, 
+			    int *ntimes_passed, double *time_vals,
+			    double *time_bounds, int *refvar ) {
+    if( *refvar < 0 ) {
+	return cmor_write( *var_id, data, 'd',  *ntimes_passed,
+			   time_vals, time_bounds, NULL );
+    } else {
+	return cmor_write( *var_id, data, 'd',  *ntimes_passed,
+			   time_vals, time_bounds, refvar );
+    }
+}
+
+/************************************************************************/
+/*                   cmor_write_cff_double_nobnds_()                    */
+/************************************************************************/
+
+int cmor_write_cff_double_nobnds_( int *var_id, void *data, 
+				   int *ntimes_passed, double *time_vals,
+				   int *refvar ) {
+    if( *refvar < 0 ) {
+	return cmor_write( *var_id, data, 'd',  *ntimes_passed,
+			   time_vals, NULL, NULL );
+    } else {
+	return cmor_write( *var_id, data, 'd',  *ntimes_passed,
+			   time_vals, NULL, refvar );
+    }
+}
+
+/************************************************************************/
+/*                   cmor_write_cff_double_notime_()                    */
+/************************************************************************/
+
+int cmor_write_cff_double_notime_( int *var_id, void *data, 
+				   int *ntimes_passed, int *refvar ) {
+    if( *refvar < 0 ) {
+	return cmor_write( *var_id, data, 'd',  *ntimes_passed,
+			   NULL, NULL, NULL );
+    } else {
+	return cmor_write( *var_id, data, 'd',  *ntimes_passed,
+			   NULL, NULL, refvar );
+    }
+}
+
+/************************************************************************/
+/*                        cmor_write_cff_real_()                        */
+/************************************************************************/
+int cmor_write_cff_real_( int *var_id, void *data, 
+			  int *ntimes_passed, double *time_vals,
+			  double *time_bounds, int *refvar ) {
+    if( *refvar < 0 ) {
+	return cmor_write( *var_id, data, 'f',  *ntimes_passed,
+			   time_vals, time_bounds, NULL );
+    } else {
+	return cmor_write( *var_id, data, 'f',  *ntimes_passed,
+			   time_vals, time_bounds, refvar );
+    }
+}
+
+/************************************************************************/
+/*                    cmor_write_cff_real_nobnds_()                     */
+/************************************************************************/
+int cmor_write_cff_real_nobnds_( int *var_id, void *data, 
+				 int *ntimes_passed, double *time_vals,
+				 int *refvar ) {
+    if( *refvar < 0 ) {
+	return cmor_write( *var_id, data, 'f',  *ntimes_passed,
+			   time_vals, NULL, NULL );
+    } else {
+	return cmor_write( *var_id, data, 'f',  *ntimes_passed,
+			   time_vals, NULL, refvar );
+    }
+}
+
+/************************************************************************/
+/*                    cmor_write_cff_real_notime_()                     */
+/************************************************************************/
+
+int cmor_write_cff_real_notime_( int *var_id, void *data, 
+				 int *ntimes_passed, int *refvar ) {
+
+    if( *refvar < 0 ) {
+	return cmor_write( *var_id, data, 'f',  *ntimes_passed,
+			   NULL, NULL, NULL );
+    } else {
+	return cmor_write( *var_id, data, 'f',  *ntimes_passed,
+			   NULL, NULL, refvar );
+    }
+}
+
+/************************************************************************/
+/*                        cmor_write_cff_int_()                         */
+/************************************************************************/
+
+int cmor_write_cff_int_( int *var_id, void *data, 
+			 int *ntimes_passed, double *time_vals,
+			 double *time_bounds, int *refvar ) {
+    if( *refvar < 0 ) {
+	return cmor_write( *var_id, data, 'i',  *ntimes_passed,
+			   time_vals, time_bounds, NULL );
+    } else {
+	return cmor_write( *var_id, data, 'i',  *ntimes_passed,
+			   time_vals, time_bounds, refvar );
+    }
+}
+
+/************************************************************************/
+/*                     cmor_write_cff_int_nobnds_()                     */
+/************************************************************************/
+
+int cmor_write_cff_int_nobnds_( int *var_id, void *data, 
+				int *ntimes_passed, double *time_vals,
+				int *refvar ) {
+    if( *refvar < 0 ) {
+	return cmor_write( *var_id, data, 'i',  *ntimes_passed,
+			   time_vals, NULL, NULL );
+    } else {
+	return cmor_write( *var_id, data, 'i',  *ntimes_passed,
+			   time_vals, NULL, refvar );
+    }
+}
+
+/************************************************************************/
+/*                     cmor_write_cff_int_notime_()                     */
+/************************************************************************/
+
+int cmor_write_cff_int_notime_( int *var_id, void *data, 
+				int *ntimes_passed, int *refvar ) {
+    if( *refvar < 0 ) {
+	return cmor_write( *var_id, data, 'i',  *ntimes_passed,
+			   NULL, NULL, NULL );
+    } else {
+	return cmor_write( *var_id, data, 'i',  *ntimes_passed,
+			   NULL, NULL, refvar );
+    }
+}
+
+/************************************************************************/
+/*                        cmor_write_cff_long_()                        */
+/************************************************************************/
+
+int cmor_write_cff_long_( int *var_id, void *data, 
+			  int *ntimes_passed, double *time_vals,
+			  double *time_bounds, int *refvar ) {
+    if( *refvar < 0 ) {
+	return cmor_write( *var_id, data, 'l',  *ntimes_passed,
+			   time_vals, time_bounds, NULL );
+    } else {
+	return cmor_write( *var_id, data, 'l',  *ntimes_passed,
+			   time_vals, time_bounds, refvar );
+    }
+}
+
+/************************************************************************/
+/*                    cmor_write_cff_long_nobnds_()                     */
+/************************************************************************/
+int cmor_write_cff_long_nobnds_( int *var_id, void *data, 
+				 int *ntimes_passed, double *time_vals,
+				 int *refvar ) {
+    if( *refvar < 0 ) {
+	return cmor_write( *var_id, data, 'l',  *ntimes_passed,
+			   time_vals, NULL, NULL );
+    } else {
+	return cmor_write( *var_id, data, 'l',  *ntimes_passed,
+			   time_vals, NULL, refvar );
+    }
+}
+
+/************************************************************************/
+/*                    cmor_write_cff_long_notime_()                     */
+/************************************************************************/
+
+int cmor_write_cff_long_notime_( int *var_id, void *data, 
+				 int *ntimes_passed, int *refvar ) {
+    if( *refvar < 0 ) {
+	return cmor_write( *var_id, data, 'l',  *ntimes_passed,
+			   NULL, NULL, NULL );
+    } else {
+	return cmor_write( *var_id, data, 'l',  *ntimes_passed,
+			   NULL, NULL, refvar );
+    }
 }
diff --git a/Src/cmor_fortran_interface.f90 b/Src/cmor_fortran_interface.f90
index f3f42e9..237ac9c 100644
--- a/Src/cmor_fortran_interface.f90
+++ b/Src/cmor_fortran_interface.f90
@@ -1,19 +1,5 @@
 module cmor_users_functions
   interface 
-     subroutine cmor_create_output_path_cff(var_id, path, slen)
-       character(*), intent(out) ::  path
-       integer var_id
-       integer , intent(out) :: slen
-     end subroutine cmor_create_output_path_cff
-  end interface
-  interface 
-     function cmor_set_cur_dset_attribute_cff(nm, value) result (ierr)
-       character(*) nm
-       character (*) value
-       integer ierr
-     end function cmor_set_cur_dset_attribute_cff
-  end interface
-  interface 
      function cmor_get_cur_dset_attribute_cff(name, value) result (ierr)
        character(*) name
        character(*) value
@@ -70,6 +56,17 @@ module cmor_users_functions
      end subroutine cmor_load_table_cff
   end interface
 
+  interface
+     function cmor_set_deflate_cff(var_id, shuffle, deflate, deflate_level )result (ierr)
+
+       integer, intent(in) :: var_id
+       integer, intent(in) :: shuffle
+       integer, intent(in) :: deflate
+       integer, intent(in) :: deflate_level
+       integer :: ierr
+     end function cmor_set_deflate_cff
+  end interface
+
   interface 
      function cmor_setup_cff_nolog(path,ncmode,verbosity,mode,crsub) result (j)
        integer ncmode,verbosity,mode, j, crsub
@@ -89,52 +86,58 @@ module cmor_users_functions
      end function cmor_ftn_get_tlen_cff
   end interface
 
+  interface cmor_dataset_json_cff
+     function cmor_dataset_json_cff(json_file) result (ierr)
+       character(*) json_file
+     end function cmor_dataset_json_cff
+  end interface
+
   interface cmor_dataset_cff
      function cmor_dataset_cff(outpath,experiment_id,institution,&
           source,calendar,realization,contact,history,comment,&
           references, leap_year,leap_month,month_lengths,model_id,&
-          forcing,initialization_method,physics_version,institute_id,&
+          forcing,initialization_method,physics_index,institute_id,&
           parent_exp_id,branch_time,parent_experiment_rip) result (ierr)
        character(*) :: outpath,experiment_id,institution,source,calendar,contact
        character(*) :: history,comment,references,model_id,forcing,institute_id
        character(*) :: parent_exp_id,parent_experiment_rip
        integer :: realization,leap_year,leap_month,month_lengths
-       integer :: ierr,initialization_method,physics_version
+       integer :: ierr,initialization_method,physics_index
        double precision branch_time
      end function cmor_dataset_cff
      function cmor_dataset_cff_null(outpath,experiment_id,institution,&
           source,calendar,realization,contact,history,comment,&
           references, leap_year,leap_month,model_id,forcing,&
-          initialization_method,physics_version,institute_id, &
+          initialization_method,physics_index,institute_id, &
           parent_exp_id,branch_time,parent_experiment_rip) result (ierr)
        character(*) :: outpath,experiment_id,institution,source,calendar,contact
        character(*) :: history,comment,references,model_id,forcing,institute_id
        character(*) :: parent_exp_id,parent_experiment_rip
        integer :: realization,leap_year,leap_month
-       integer :: ierr,initialization_method,physics_version
+       integer :: ierr,initialization_method,physics_index
        double precision branch_time
      end function cmor_dataset_cff_null
      function cmor_dataset_cff_nobrch(outpath,experiment_id,institution,&
           source,calendar,realization,contact,history,comment,&
           references, leap_year,leap_month,month_lengths,model_id,&
-          forcing,initialization_method,physics_version,institute_id, &
+          forcing,initialization_method,physics_index,institute_id, &
           parent_exp_id,parent_experiment_rip) result (ierr)
        character(*) :: outpath,experiment_id,institution,source,calendar,contact
        character(*) :: history,comment,references,model_id,forcing,institute_id
        character(*) :: parent_exp_id,parent_experiment_rip
        integer :: realization,leap_year,leap_month,month_lengths
-       integer :: ierr,initialization_method,physics_version
+       integer :: ierr,initialization_method,physics_index
      end function cmor_dataset_cff_nobrch
      function cmor_dataset_cff_null_nobrch(outpath,experiment_id,institution,&
           source,calendar,realization,contact,history,comment,&
           references, leap_year,leap_month,model_id,forcing,&
-          initialization_method,physics_version,institute_id, &
+          initialization_method,physics_index,institute_id, &
           parent_exp_id,parent_experiment_rip) result (ierr)
        character(*) :: outpath,experiment_id,institution,source,calendar,contact
        character(*) :: history,comment,references,model_id,forcing,institute_id
        character(*) :: parent_exp_id,parent_experiment_rip
        integer :: realization,leap_year,leap_month
-       integer :: ierr,initialization_method,physics_version
+       integer :: ierr,initialization_method,physics_index
      end function cmor_dataset_cff_null_nobrch
   end interface
 
@@ -386,218 +389,92 @@ module cmor_users_functions
   end interface
 
   interface 
-     function cmor_write_cff_real(var_id,data,suffix,ntimes_passed, &
+     function cmor_write_cff_real(var_id,data,ntimes_passed, &
           time_vals,time_bounds,refvar) result(ierr)
        integer var_id
        real :: data
-       character(*) suffix
        integer ntimes_passed
        double precision time_vals, time_bounds
        integer refvar,ierr
      end function cmor_write_cff_real
   end interface
   interface 
-     function cmor_write_cff_real_nobnds(var_id,data,suffix,ntimes_passed, &
+     function cmor_write_cff_real_nobnds(var_id,data,ntimes_passed, &
           time_vals,refvar) result(ierr)
        integer var_id
        real :: data
-       character(*) suffix
        integer ntimes_passed
        double precision time_vals
        integer refvar,ierr
      end function cmor_write_cff_real_nobnds
   end interface
   interface 
-     function cmor_write_cff_real_notime(var_id,data,suffix,ntimes_passed, &
+     function cmor_write_cff_real_notime(var_id,data,ntimes_passed, &
           refvar) result(ierr)
        integer var_id
        real :: data
-       character(*) suffix
        integer ntimes_passed
        integer refvar,ierr
      end function cmor_write_cff_real_notime
   end interface
   interface 
-     function cmor_write_cff_double(var_id,data,suffix,ntimes_passed, &
+     function cmor_write_cff_double(var_id,data,ntimes_passed, &
           time_vals,time_bounds,refvar) result(ierr)
        integer var_id
        double precision :: data
-       character(*) suffix
        integer ntimes_passed
        double precision time_vals, time_bounds
        integer refvar,ierr
      end function cmor_write_cff_double
   end interface
   interface 
-     function cmor_write_cff_double_nobnds(var_id,data,suffix,ntimes_passed, &
+     function cmor_write_cff_double_nobnds(var_id,data,ntimes_passed, &
           time_vals,refvar) result(ierr)
        integer var_id
        double precision:: data
-       character(*) suffix
        integer ntimes_passed
        double precision time_vals
        integer refvar,ierr
      end function cmor_write_cff_double_nobnds
   end interface
   interface 
-     function cmor_write_cff_double_notime(var_id,data,suffix,ntimes_passed, &
+     function cmor_write_cff_double_notime(var_id,data,ntimes_passed, &
           refvar) result(ierr)
        integer var_id
        double precision :: data
-       character(*) suffix
        integer ntimes_passed
        integer refvar,ierr
      end function cmor_write_cff_double_notime
   end interface
   interface 
-     function cmor_write_cff_int(var_id,data,suffix,ntimes_passed, &
+     function cmor_write_cff_int(var_id,data,ntimes_passed, &
           time_vals,time_bounds,refvar) result(ierr)
        integer var_id
        integer :: data
-       character(*) suffix
        integer ntimes_passed
        double precision time_vals, time_bounds
        integer refvar,ierr
      end function cmor_write_cff_int
   end interface
   interface 
-     function cmor_write_cff_int_nobnds(var_id,data,suffix,ntimes_passed, &
+     function cmor_write_cff_int_nobnds(var_id,data,ntimes_passed, &
           time_vals,refvar) result(ierr)
        integer var_id
        integer :: data
-       character(*) suffix
        integer ntimes_passed
        double precision time_vals
        integer refvar,ierr
      end function cmor_write_cff_int_nobnds
   end interface
   interface 
-     function cmor_write_cff_int_notime(var_id,data,suffix,ntimes_passed, &
+     function cmor_write_cff_int_notime(var_id,data,ntimes_passed, &
           refvar) result(ierr)
        integer var_id
        integer :: data
-       character(*) suffix
        integer ntimes_passed
        integer refvar,ierr
      end function cmor_write_cff_int_notime
   end interface
-!!$  interface 
-!!$     function cmor_write_cff_long(var_id,data,suffix,ntimes_passed, &
-!!$          time_vals,time_bounds,refvar) result(ierr)
-!!$       integer var_id
-!!$       integer(kind=8) :: data
-!!$       character(*) suffix
-!!$       integer ntimes_passed
-!!$       double precision time_vals, time_bounds
-!!$       integer refvar,ierr
-!!$     end function cmor_write_cff_long
-!!$  end interface
-!!$  interface 
-!!$     function cmor_write_cff_long_nobnds(var_id,data,suffix,ntimes_passed, &
-!!$          time_vals,refvar) result(ierr)
-!!$       integer var_id
-!!$       integer(kind=8) :: data
-!!$       character(*) suffix
-!!$       integer ntimes_passed
-!!$       double precision time_vals
-!!$       integer refvar,ierr
-!!$     end function cmor_write_cff_long_nobnds
-!!$  end interface
-!!$  interface 
-!!$     function cmor_write_cff_long_notime(var_id,data,suffix,ntimes_passed, &
-!!$          refvar) result(ierr)
-!!$       integer var_id
-!!$       integer(kind=8) :: data
-!!$       character(*) suffix
-!!$       integer ntimes_passed
-!!$       integer refvar,ierr
-!!$     end function cmor_write_cff_long_notime
-!!$  end interface
-!!$
-!!$
-!!$  interface 
-!!$     function cmor_grid_cff_long(grid_id,ndims,axes_ids,&
-!!$       lat,lon,nvertices,blat,blon,area) result(ierr)
-!!$       integer, intent(out) :: grid_id
-!!$       integer ierr,nvertices,ndims
-!!$       integer axes_ids
-!!$       INTEGER (KIND=8) :: lat,lon,area,blat,blon
-!!$     end function cmor_grid_cff_long
-!!$  end interface
-!!$  interface  
-!!$     function cmor_grid_cff_noarea_long(grid_id,ndims,axes_ids,&
-!!$          lat,lon,nvertices,blat,blon) result(ierr)
-!!$       integer, intent(out) :: grid_id
-!!$       integer ierr,nvertices,ndims
-!!$       integer axes_ids
-!!$       INTEGER (KIND=8) :: lat,lon,blat,blon
-!!$     end function cmor_grid_cff_noarea_long
-!!$  end interface
-!!$  interface  
-!!$     function  cmor_grid_cff_noblon_long(grid_id,ndims,axes_ids,&
-!!$          lat,lon,nvertices,blat,area) result(ierr)
-!!$       integer, intent(out) :: grid_id
-!!$       integer ierr,nvertices,ndims
-!!$       integer axes_ids
-!!$       INTEGER (KIND=8) :: lat,lon,blat,area
-!!$     end function cmor_grid_cff_noblon_long
-!!$  end interface
-!!$  interface  
-!!$     function  cmor_grid_cff_noblat_long(grid_id,ndims,axes_ids,&
-!!$          lat,lon,nvertices,blon,area) result(ierr)
-!!$       integer, intent(out) :: grid_id
-!!$       integer ierr,nvertices,ndims
-!!$       integer axes_ids
-!!$       INTEGER (KIND=8) :: lat,lon,area,blon
-!!$     end function cmor_grid_cff_noblat_long
-!!$  end interface
-!!$  interface  
-!!$     function  cmor_grid_cff_nobnds_long(grid_id,ndims,axes_ids,&
-!!$          lat,lon,nvertices,area) result(ierr)
-!!$       integer, intent(out) :: grid_id
-!!$       integer ierr,nvertices,ndims
-!!$       integer axes_ids
-!!$       INTEGER (KIND=8) :: lat,lon,area
-!!$     end function cmor_grid_cff_nobnds_long
-!!$  end interface
-!!$  interface   
-!!$     function cmor_grid_cff_noblaar_long(grid_id,ndims,axes_ids,&
-!!$          lat,lon,nvertices,blon) result(ierr)
-!!$       integer, intent(out) :: grid_id
-!!$       integer ierr,nvertices,ndims
-!!$       integer axes_ids
-!!$       INTEGER (KIND=8) :: lat,lon,blon
-!!$     end function cmor_grid_cff_noblaar_long
-!!$  end interface
-!!$  interface  
-!!$     function  cmor_grid_cff_nobloar_long(grid_id,ndims,axes_ids,&
-!!$          lat,lon,nvertices,blat) result(ierr)
-!!$       integer, intent(out) :: grid_id
-!!$       integer ierr,nvertices,ndims
-!!$       integer axes_ids
-!!$       INTEGER (KIND=8) :: lat,lon,blat
-!!$     end function cmor_grid_cff_nobloar_long
-!!$  end interface
-!!$  interface  
-!!$     function  cmor_grid_cff_nothg_long(grid_id,ndims,axes_ids,&
-!!$          lat,lon,nvertices) result(ierr)
-!!$       integer, intent(out) :: grid_id
-!!$       integer ierr,nvertices,ndims
-!!$       integer axes_ids
-!!$       INTEGER (KIND=8) :: lat,lon
-!!$     end function cmor_grid_cff_nothg_long
-!!$  end interface
-
-
-!!$  interface 
-!!$     function cmor_grid_cff_double(grid_id,ndims,axes_ids,&
-!!$       lat,lon,nvertices,blat,blon,area) result(ierr)
-!!$       integer, intent(out) :: grid_id
-!!$       integer ierr,nvertices,ndims
-!!$       integer axes_ids
-!!$       DOUBLE PRECISION :: lat,lon,area,blat,blon
-!!$     end function cmor_grid_cff_double
-!!$  end interface
   interface  
      function cmor_grid_cff_noarea_double(grid_id,ndims,axes_ids,&
           lat,lon,nvertices,blat,blon) result(ierr)
@@ -607,33 +484,6 @@ module cmor_users_functions
        DOUBLE PRECISION :: lat,lon,blat,blon
      end function cmor_grid_cff_noarea_double
   end interface
-!!$  interface  
-!!$     function  cmor_grid_cff_noblon_double(grid_id,ndims,axes_ids,&
-!!$          lat,lon,nvertices,blat,area) result(ierr)
-!!$       integer, intent(out) :: grid_id
-!!$       integer ierr,nvertices,ndims
-!!$       integer axes_ids
-!!$       DOUBLE PRECISION :: lat,lon,blat,area
-!!$     end function cmor_grid_cff_noblon_double
-!!$  end interface
-!!$  interface  
-!!$     function  cmor_grid_cff_noblat_double(grid_id,ndims,axes_ids,&
-!!$          lat,lon,nvertices,blon,area) result(ierr)
-!!$       integer, intent(out) :: grid_id
-!!$       integer ierr,nvertices,ndims
-!!$       integer axes_ids
-!!$       DOUBLE PRECISION :: lat,lon,area,blon
-!!$     end function cmor_grid_cff_noblat_double
-!!$  end interface
-!!$  interface  
-!!$     function  cmor_grid_cff_nobnds_double(grid_id,ndims,axes_ids,&
-!!$          lat,lon,nvertices,area) result(ierr)
-!!$       integer, intent(out) :: grid_id
-!!$       integer ierr,nvertices,ndims
-!!$       integer axes_ids
-!!$       DOUBLE PRECISION :: lat,lon,area
-!!$     end function cmor_grid_cff_nobnds_double
-!!$  end interface
   interface   
      function cmor_grid_cff_noblaar_double(grid_id,ndims,axes_ids,&
           lat,lon,nvertices,blon) result(ierr)
@@ -4076,20 +3926,18 @@ contains
   end function cmor_grid_6d_i
 
 
-  FUNCTION cmor_write_1d_r(var_id, data, file_suffix, ntimes_passed,  &
+  FUNCTION cmor_write_1d_r(var_id, data, ntimes_passed,  &
         time_vals,time_bnds,store_with) RESULT(ierr)
     implicit none
     REAL, target :: data(:)
     REAL, pointer :: mdata(:)
     real, pointer :: pdata(:)
     INTEGER, INTENT(in) ::var_id
-    CHARACTER(len=*), INTENT(in), OPTIONAL :: file_suffix
     INTEGER, INTENT(in), OPTIONAL :: ntimes_passed
     DOUBLE PRECISION, INTENT(in), OPTIONAL :: time_vals(:)
     DOUBLE PRECISION, INTENT(in), OPTIONAL :: time_bnds(:,:)
     INTEGER, INTENT(in), OPTIONAL :: store_with
     integer refvar,ierr,ntp,did_malloc,vshape(7)
-    character(1024) suf
     call cmor_get_original_shape_cff(var_id,vshape(1))
     if (present(ntimes_passed)) then 
        did_malloc = cmor_ftn_map_data(vshape,pdata,data,mdata,ntimes_passed)
@@ -4097,11 +3945,6 @@ contains
        ierr = cmor_ftn_get_tlen_cff(var_id)
        did_malloc = cmor_ftn_map_data(vshape,pdata,data,mdata,ierr)
     endif
-    if (present(file_suffix)) then
-       suf = trim(file_suffix)//char(0)
-    else
-       suf = char(0)
-    endif
 
     if (present(store_with)) then
        refvar = store_with
@@ -4116,14 +3959,14 @@ contains
     if (present(time_vals)) then
        if (ntp==0) ntp = size(time_vals)
        if (present(time_bnds)) then
-          ierr = cmor_write_cff_real(var_id,pdata(1),suf,ntp,&
+          ierr = cmor_write_cff_real(var_id,pdata(1),ntp,&
                time_vals(1),time_bnds(1,1),refvar)
        else
-          ierr = cmor_write_cff_real_nobnds(var_id,pdata(1),suf,ntp,&
+          ierr = cmor_write_cff_real_nobnds(var_id,pdata(1),ntp,&
                time_vals(1),refvar)
        end if
     else
-       ierr = cmor_write_cff_real_notime(var_id,pdata(1),suf,ntp,&
+       ierr = cmor_write_cff_real_notime(var_id,pdata(1),ntp,&
             refvar)
     endif
     if (did_malloc.eq.1) then
@@ -4132,20 +3975,18 @@ contains
     nullify(pdata)
     
   END FUNCTION cmor_write_1d_r
-  FUNCTION cmor_write_2d_r(var_id, data, file_suffix, ntimes_passed,  &
+  FUNCTION cmor_write_2d_r(var_id, data, ntimes_passed,  &
         time_vals,time_bnds,store_with) RESULT(ierr)
     implicit none
     REAL,target :: data(:,:)
     REAL,pointer :: mdata(:,:)
     REAL, pointer :: pdata(:,:)
     INTEGER, INTENT(in) ::var_id
-    CHARACTER(len=*), INTENT(in), OPTIONAL :: file_suffix
     INTEGER, INTENT(in), OPTIONAL :: ntimes_passed
     DOUBLE PRECISION, INTENT(in), OPTIONAL :: time_vals(:)
     DOUBLE PRECISION, INTENT(in), OPTIONAL :: time_bnds(:,:)
     INTEGER, INTENT(in), OPTIONAL :: store_with
     integer refvar,ierr,ntp,did_malloc,vshape(7)
-    character(1024) suf
     call cmor_get_original_shape_cff(var_id,vshape(1))
     if (present(ntimes_passed)) then 
        did_malloc = cmor_ftn_map_data(vshape,pdata,data,mdata,ntimes_passed)
@@ -4153,11 +3994,6 @@ contains
        ierr = cmor_ftn_get_tlen_cff(var_id)
        did_malloc = cmor_ftn_map_data(vshape,pdata,data,mdata,ierr)
     endif
-    if (present(file_suffix)) then
-       suf = trim(file_suffix)//char(0)
-    else
-       suf = char(0)
-    endif
 
     if (present(store_with)) then
        refvar = store_with
@@ -4172,14 +4008,14 @@ contains
     if (present(time_vals)) then
        if (ntp==0) ntp = size(time_vals)
        if (present(time_bnds)) then
-          ierr = cmor_write_cff_real(var_id,pdata(1,1),suf,ntp,&
+          ierr = cmor_write_cff_real(var_id,pdata(1,1),ntp,&
                time_vals(1),time_bnds(1,1),refvar)
        else
-          ierr = cmor_write_cff_real_nobnds(var_id,pdata(1,1),suf,ntp,&
+          ierr = cmor_write_cff_real_nobnds(var_id,pdata(1,1),ntp,&
                time_vals(1),refvar)
        end if
     else
-       ierr = cmor_write_cff_real_notime(var_id,pdata(1,1),suf,ntp,&
+       ierr = cmor_write_cff_real_notime(var_id,pdata(1,1),ntp,&
             refvar)
     endif
     if (did_malloc.eq.1) then
@@ -4188,20 +4024,18 @@ contains
     nullify(pdata)
     
   END FUNCTION cmor_write_2d_r
-  FUNCTION cmor_write_3d_r(var_id, data, file_suffix, ntimes_passed,  &
+  FUNCTION cmor_write_3d_r(var_id, data,  ntimes_passed,  &
         time_vals,time_bnds,store_with) RESULT(ierr)
     implicit none
     REAL, target :: data(:,:,:)
     REAL, pointer :: mdata(:,:,:)
     REAL, pointer :: pdata(:,:,:)
     INTEGER, INTENT(in) ::var_id
-    CHARACTER(len=*), INTENT(in), OPTIONAL :: file_suffix
     INTEGER, INTENT(in), OPTIONAL :: ntimes_passed
     DOUBLE PRECISION, INTENT(in), OPTIONAL :: time_vals(:)
     DOUBLE PRECISION, INTENT(in), OPTIONAL :: time_bnds(:,:)
     INTEGER, INTENT(in), OPTIONAL :: store_with
     integer refvar,ierr,ntp,did_malloc,vshape(7)
-    character(1024) suf
 
     call cmor_get_original_shape_cff(var_id,vshape(1))
     if (present(ntimes_passed)) then 
@@ -4210,11 +4044,6 @@ contains
        ierr = cmor_ftn_get_tlen_cff(var_id)
        did_malloc = cmor_ftn_map_data(vshape,pdata,data,mdata,ierr)
     endif
-    if (present(file_suffix)) then
-       suf = trim(file_suffix)//char(0)
-    else
-       suf = char(0)
-    endif
 
     if (present(store_with)) then
        refvar = store_with
@@ -4229,14 +4058,14 @@ contains
     if (present(time_vals)) then
        if (ntp==0) ntp = size(time_vals)
        if (present(time_bnds)) then
-          ierr = cmor_write_cff_real(var_id,pdata(1,1,1),suf,ntp,&
+          ierr = cmor_write_cff_real(var_id,pdata(1,1,1),ntp,&
                time_vals(1),time_bnds(1,1),refvar)
        else
-          ierr = cmor_write_cff_real_nobnds(var_id,pdata(1,1,1),suf,ntp,&
+          ierr = cmor_write_cff_real_nobnds(var_id,pdata(1,1,1),ntp,&
                time_vals(1),refvar)
        end if
     else
-       ierr = cmor_write_cff_real_notime(var_id,pdata(1,1,1),suf,ntp,&
+       ierr = cmor_write_cff_real_notime(var_id,pdata(1,1,1),ntp,&
             refvar)
     endif
     if (did_malloc.eq.1) then
@@ -4245,20 +4074,18 @@ contains
        nullify(pdata)
    
   END FUNCTION cmor_write_3d_r
-  FUNCTION cmor_write_4d_r(var_id, data, file_suffix, ntimes_passed,  &
+  FUNCTION cmor_write_4d_r(var_id, data, ntimes_passed,  &
         time_vals,time_bnds,store_with) RESULT(ierr)
     implicit none
     REAL, target :: data(:,:,:,:)
     REAL, pointer :: mdata(:,:,:,:)
     REAL, pointer :: pdata(:,:,:,:)
     INTEGER, INTENT(in) ::var_id
-    CHARACTER(len=*), INTENT(in), OPTIONAL :: file_suffix
     INTEGER, INTENT(in), OPTIONAL :: ntimes_passed
     DOUBLE PRECISION, INTENT(in), OPTIONAL :: time_vals(:)
     DOUBLE PRECISION, INTENT(in), OPTIONAL :: time_bnds(:,:)
     INTEGER, INTENT(in), OPTIONAL :: store_with
     integer refvar,ierr,ntp,vshape(7),did_malloc
-    character(1024) suf
     call cmor_get_original_shape_cff(var_id,vshape(1))
     if (present(ntimes_passed)) then 
        did_malloc = cmor_ftn_map_data(vshape,pdata,data,mdata,ntimes_passed)
@@ -4266,11 +4093,6 @@ contains
        ierr = cmor_ftn_get_tlen_cff(var_id)
        did_malloc = cmor_ftn_map_data(vshape,pdata,data,mdata,ierr)
     endif
-    if (present(file_suffix)) then
-       suf = trim(file_suffix)//char(0)
-    else
-       suf = char(0)
-    endif
 
     if (present(store_with)) then
        refvar = store_with
@@ -4285,14 +4107,14 @@ contains
     if (present(time_vals)) then
        if (ntp==0) ntp = size(time_vals)
        if (present(time_bnds)) then
-          ierr = cmor_write_cff_real(var_id,pdata(1,1,1,1),suf,ntp,&
+          ierr = cmor_write_cff_real(var_id,pdata(1,1,1,1),ntp,&
                time_vals(1),time_bnds(1,1),refvar)
        else
-          ierr = cmor_write_cff_real_nobnds(var_id,pdata(1,1,1,1),suf,ntp,&
+          ierr = cmor_write_cff_real_nobnds(var_id,pdata(1,1,1,1),ntp,&
                time_vals(1),refvar)
        end if
     else
-       ierr = cmor_write_cff_real_notime(var_id,pdata(1,1,1,1),suf,ntp,&
+       ierr = cmor_write_cff_real_notime(var_id,pdata(1,1,1,1),ntp,&
             refvar)
     endif
     if (did_malloc.eq.1) then
@@ -4300,20 +4122,18 @@ contains
     endif
        nullify(pdata)
   END FUNCTION cmor_write_4d_r
-  FUNCTION cmor_write_5d_r(var_id, data, file_suffix, ntimes_passed,  &
+  FUNCTION cmor_write_5d_r(var_id, data, ntimes_passed,  &
         time_vals,time_bnds,store_with) RESULT(ierr)
     implicit none
     REAL, target :: data(:,:,:,:,:)
     REAL, pointer :: mdata(:,:,:,:,:)
     REAL, pointer :: pdata(:,:,:,:,:)
     INTEGER, INTENT(in) ::var_id
-    CHARACTER(len=*), INTENT(in), OPTIONAL :: file_suffix
     INTEGER, INTENT(in), OPTIONAL :: ntimes_passed
     DOUBLE PRECISION, INTENT(in), OPTIONAL :: time_vals(:)
     DOUBLE PRECISION, INTENT(in), OPTIONAL :: time_bnds(:,:)
     INTEGER, INTENT(in), OPTIONAL :: store_with
     integer refvar,ierr,ntp,did_malloc,vshape(7)
-    character(1024) suf
     call cmor_get_original_shape_cff(var_id,vshape(1))
     if (present(ntimes_passed)) then 
        did_malloc = cmor_ftn_map_data(vshape,pdata,data,mdata,ntimes_passed)
@@ -4321,11 +4141,6 @@ contains
        ierr = cmor_ftn_get_tlen_cff(var_id)
        did_malloc = cmor_ftn_map_data(vshape,pdata,data,mdata,ierr)
     endif
-    if (present(file_suffix)) then
-       suf = trim(file_suffix)//char(0)
-    else
-       suf = char(0)
-    endif
 
     if (present(store_with)) then
        refvar = store_with
@@ -4340,14 +4155,14 @@ contains
     if (present(time_vals)) then
        if (ntp==0) ntp = size(time_vals)
        if (present(time_bnds)) then
-          ierr = cmor_write_cff_real(var_id,pdata(1,1,1,1,1),suf,ntp,&
+          ierr = cmor_write_cff_real(var_id,pdata(1,1,1,1,1),ntp,&
                time_vals(1),time_bnds(1,1),refvar)
        else
-          ierr = cmor_write_cff_real_nobnds(var_id,pdata(1,1,1,1,1),suf,ntp,&
+          ierr = cmor_write_cff_real_nobnds(var_id,pdata(1,1,1,1,1),ntp,&
                time_vals(1),refvar)
        end if
     else
-       ierr = cmor_write_cff_real_notime(var_id,pdata(1,1,1,1,1),suf,ntp,&
+       ierr = cmor_write_cff_real_notime(var_id,pdata(1,1,1,1,1),ntp,&
             refvar)
     endif
     if (did_malloc.eq.1) then
@@ -4356,20 +4171,18 @@ contains
     nullify(pdata)
     
   END FUNCTION cmor_write_5d_r
-  FUNCTION cmor_write_6d_r(var_id, data, file_suffix, ntimes_passed,  &
+  FUNCTION cmor_write_6d_r(var_id, data, ntimes_passed,  &
         time_vals,time_bnds,store_with) RESULT(ierr)
     implicit none
     REAL, target :: data(:,:,:,:,:,:)
     REAL, pointer :: mdata(:,:,:,:,:,:)
     REAL, pointer :: pdata(:,:,:,:,:,:)
     INTEGER, INTENT(in) ::var_id
-    CHARACTER(len=*), INTENT(in), OPTIONAL :: file_suffix
     INTEGER, INTENT(in), OPTIONAL :: ntimes_passed
     DOUBLE PRECISION, INTENT(in), OPTIONAL :: time_vals(:)
     DOUBLE PRECISION, INTENT(in), OPTIONAL :: time_bnds(:,:)
     INTEGER, INTENT(in), OPTIONAL :: store_with
     integer refvar,ierr,ntp,did_malloc,vshape(7)
-    character(1024) suf
     call cmor_get_original_shape_cff(var_id,vshape(1))
     if (present(ntimes_passed)) then 
        did_malloc = cmor_ftn_map_data(vshape,pdata,data,mdata,ntimes_passed)
@@ -4378,12 +4191,6 @@ contains
        did_malloc = cmor_ftn_map_data(vshape,pdata,data,mdata,ierr)
     endif
 
-    if (present(file_suffix)) then
-       suf = trim(file_suffix)//char(0)
-    else
-       suf = char(0)
-    endif
-
     if (present(store_with)) then
        refvar = store_with
     else
@@ -4397,14 +4204,14 @@ contains
     if (present(time_vals)) then
        if (ntp==0) ntp = size(time_vals)
        if (present(time_bnds)) then
-          ierr = cmor_write_cff_real(var_id,pdata(1,1,1,1,1,1),suf,ntp,&
+          ierr = cmor_write_cff_real(var_id,pdata(1,1,1,1,1,1),ntp,&
                time_vals(1),time_bnds(1,1),refvar)
        else
-          ierr = cmor_write_cff_real_nobnds(var_id,pdata(1,1,1,1,1,1),suf,ntp,&
+          ierr = cmor_write_cff_real_nobnds(var_id,pdata(1,1,1,1,1,1),ntp,&
                time_vals(1),refvar)
        end if
     else
-       ierr = cmor_write_cff_real_notime(var_id,pdata(1,1,1,1,1,1),suf,ntp,&
+       ierr = cmor_write_cff_real_notime(var_id,pdata(1,1,1,1,1,1),ntp,&
             refvar)
     endif
     if (did_malloc.eq.1) then
@@ -4413,20 +4220,18 @@ contains
     nullify(pdata)
    
   END FUNCTION cmor_write_6d_r
-  FUNCTION cmor_write_7d_r(var_id, data, file_suffix, ntimes_passed,  &
+  FUNCTION cmor_write_7d_r(var_id, data, ntimes_passed,  &
         time_vals,time_bnds,store_with) RESULT(ierr)
     implicit none
     REAL, target :: data(:,:,:,:,:,:,:)
     REAL, pointer :: mdata(:,:,:,:,:,:,:)
     REAL, pointer :: pdata(:,:,:,:,:,:,:)
     INTEGER, INTENT(in) ::var_id
-    CHARACTER(len=*), INTENT(in), OPTIONAL :: file_suffix
     INTEGER, INTENT(in), OPTIONAL :: ntimes_passed
     DOUBLE PRECISION, INTENT(in), OPTIONAL :: time_vals(:)
     DOUBLE PRECISION, INTENT(in), OPTIONAL :: time_bnds(:,:)
     INTEGER, INTENT(in), OPTIONAL :: store_with
     integer refvar,ierr,ntp,did_malloc,vshape(7)
-    character(1024) suf
     call cmor_get_original_shape_cff(var_id,vshape(1))
     if (present(ntimes_passed)) then 
        did_malloc = cmor_ftn_map_data(vshape,pdata,data,mdata,ntimes_passed)
@@ -4434,11 +4239,6 @@ contains
        ierr = cmor_ftn_get_tlen_cff(var_id)
        did_malloc = cmor_ftn_map_data(vshape,pdata,data,mdata,ierr)
     endif
-    if (present(file_suffix)) then
-       suf = trim(file_suffix)//char(0)
-    else
-       suf = char(0)
-    endif
 
     if (present(store_with)) then
        refvar = store_with
@@ -4453,14 +4253,14 @@ contains
     if (present(time_vals)) then
        if (ntp==0) ntp = size(time_vals)
        if (present(time_bnds)) then
-          ierr = cmor_write_cff_real(var_id,pdata(1,1,1,1,1,1,1),suf,ntp,&
+          ierr = cmor_write_cff_real(var_id,pdata(1,1,1,1,1,1,1),ntp,&
                time_vals(1),time_bnds(1,1),refvar)
        else
-          ierr = cmor_write_cff_real_nobnds(var_id,pdata(1,1,1,1,1,1,1),suf,ntp,&
+          ierr = cmor_write_cff_real_nobnds(var_id,pdata(1,1,1,1,1,1,1),ntp,&
                time_vals(1),refvar)
        end if
     else
-       ierr = cmor_write_cff_real_notime(var_id,pdata(1,1,1,1,1,1,1),suf,ntp,&
+       ierr = cmor_write_cff_real_notime(var_id,pdata(1,1,1,1,1,1,1),ntp,&
             refvar)
     endif
     if (did_malloc.eq.1) then
@@ -4469,31 +4269,24 @@ contains
     nullify(pdata)
   END FUNCTION cmor_write_7d_r
 
-  FUNCTION cmor_write_1d_d(var_id, data, file_suffix, ntimes_passed,  &
+  FUNCTION cmor_write_1d_d(var_id, data, ntimes_passed,  &
         time_vals,time_bnds,store_with) RESULT(ierr)
     implicit none
     DOUBLE PRECISION,target :: data(:)
     DOUBLE PRECISION,pointer :: mdata(:)
     DOUBLE PRECISION, pointer:: pdata(:)
     INTEGER, INTENT(in) ::var_id
-    CHARACTER(len=*), INTENT(in), OPTIONAL :: file_suffix
     INTEGER, INTENT(in), OPTIONAL :: ntimes_passed
     DOUBLE PRECISION, INTENT(in), OPTIONAL :: time_vals(:)
     DOUBLE PRECISION, INTENT(in), OPTIONAL :: time_bnds(:,:)
     INTEGER, INTENT(in), OPTIONAL :: store_with
     integer refvar,ierr,ntp,vshape(7),did_malloc
-    character(1024) suf
     call cmor_get_original_shape_cff(var_id,vshape(1))
     if (present(ntimes_passed)) then 
        did_malloc = cmor_ftn_map_data(vshape,pdata,data,mdata,ntimes_passed)
     else
        did_malloc = cmor_ftn_map_data(vshape,pdata,data,mdata,1)
     endif
-    if (present(file_suffix)) then
-       suf = trim(file_suffix)//char(0)
-    else
-       suf = char(0)
-    endif
 
     if (present(store_with)) then
        refvar = store_with
@@ -4508,14 +4301,14 @@ contains
     if (present(time_vals)) then
        if (ntp==0) ntp = size(time_vals)
        if (present(time_bnds)) then
-          ierr = cmor_write_cff_double(var_id,pdata(1),suf,ntp,&
+          ierr = cmor_write_cff_double(var_id,pdata(1),ntp,&
                time_vals(1),time_bnds(1,1),refvar)
        else
-          ierr = cmor_write_cff_double_nobnds(var_id,pdata(1),suf,ntp,&
+          ierr = cmor_write_cff_double_nobnds(var_id,pdata(1),ntp,&
                time_vals(1),refvar)
        end if
     else
-       ierr = cmor_write_cff_double_notime(var_id,pdata(1),suf,ntp,&
+       ierr = cmor_write_cff_double_notime(var_id,pdata(1),ntp,&
             refvar)
     endif
     if (did_malloc.eq.1) then
@@ -4523,20 +4316,18 @@ contains
     end if
     nullify(pdata)
   END FUNCTION cmor_write_1d_d
-  FUNCTION cmor_write_2d_d(var_id, data, file_suffix, ntimes_passed,  &
+  FUNCTION cmor_write_2d_d(var_id, data, ntimes_passed,  &
         time_vals,time_bnds,store_with) RESULT(ierr)
     implicit none
     DOUBLE PRECISION,target :: data(:,:)
     DOUBLE PRECISION,pointer :: mdata(:,:)
     DOUBLE PRECISION, pointer :: pdata(:,:)
     INTEGER, INTENT(in) ::var_id
-    CHARACTER(len=*), INTENT(in), OPTIONAL :: file_suffix
     INTEGER, INTENT(in), OPTIONAL :: ntimes_passed
     DOUBLE PRECISION, INTENT(in), OPTIONAL :: time_vals(:)
     DOUBLE PRECISION, INTENT(in), OPTIONAL :: time_bnds(:,:)
     INTEGER, INTENT(in), OPTIONAL :: store_with
     integer refvar,ierr,ntp,did_malloc,vshape(7)
-    character(1024) suf
     call cmor_get_original_shape_cff(var_id,vshape(1))
     if (present(ntimes_passed)) then 
        did_malloc = cmor_ftn_map_data(vshape,pdata,data,mdata,ntimes_passed)
@@ -4544,11 +4335,6 @@ contains
        ierr = cmor_ftn_get_tlen_cff(var_id)
        did_malloc = cmor_ftn_map_data(vshape,pdata,data,mdata,ierr)
     endif
-    if (present(file_suffix)) then
-       suf = trim(file_suffix)//char(0)
-    else
-       suf = char(0)
-    endif
 
     if (present(store_with)) then
        refvar = store_with
@@ -4563,14 +4349,14 @@ contains
     if (present(time_vals)) then
        if (ntp==0) ntp = size(time_vals)
        if (present(time_bnds)) then
-          ierr = cmor_write_cff_double(var_id,data(1,1),suf,ntp,&
+          ierr = cmor_write_cff_double(var_id,data(1,1),ntp,&
                time_vals(1),time_bnds(1,1),refvar)
        else
-          ierr = cmor_write_cff_double_nobnds(var_id,data(1,1),suf,ntp,&
+          ierr = cmor_write_cff_double_nobnds(var_id,data(1,1),ntp,&
                time_vals(1),refvar)
        end if
     else
-       ierr = cmor_write_cff_double_notime(var_id,data(1,1),suf,ntp,&
+       ierr = cmor_write_cff_double_notime(var_id,data(1,1),ntp,&
             refvar)
     endif
     if (did_malloc.eq.1) then
@@ -4579,31 +4365,24 @@ contains
     nullify(pdata)
    
   END FUNCTION cmor_write_2d_d
-  FUNCTION cmor_write_3d_d(var_id, data, file_suffix, ntimes_passed,  &
+  FUNCTION cmor_write_3d_d(var_id, data, ntimes_passed,  &
         time_vals,time_bnds,store_with) RESULT(ierr)
     implicit none
     DOUBLE PRECISION , target:: data(:,:,:)
     DOUBLE PRECISION , pointer:: mdata(:,:,:)
     DOUBLE PRECISION, pointer :: pdata(:,:,:)
     INTEGER, INTENT(in) ::var_id
-    CHARACTER(len=*), INTENT(in), OPTIONAL :: file_suffix
     INTEGER, INTENT(in), OPTIONAL :: ntimes_passed
     DOUBLE PRECISION, INTENT(in), OPTIONAL :: time_vals(:)
     DOUBLE PRECISION, INTENT(in), OPTIONAL :: time_bnds(:,:)
     INTEGER, INTENT(in), OPTIONAL :: store_with
     integer refvar,ierr,ntp,did_malloc,vshape(7)
-    character(1024) suf
     call cmor_get_original_shape_cff(var_id,vshape(1))
     if (present(ntimes_passed)) then 
        did_malloc = cmor_ftn_map_data(vshape,pdata,data,mdata,ntimes_passed)
     else
        did_malloc = cmor_ftn_map_data(vshape,pdata,data,mdata,1)
     endif
-    if (present(file_suffix)) then
-       suf = trim(file_suffix)//char(0)
-    else
-       suf = char(0)
-    endif
 
     if (present(store_with)) then
        refvar = store_with
@@ -4618,14 +4397,14 @@ contains
     if (present(time_vals)) then
        if (ntp==0) ntp = size(time_vals)
        if (present(time_bnds)) then
-          ierr = cmor_write_cff_double(var_id,pdata(1,1,1),suf,ntp,&
+          ierr = cmor_write_cff_double(var_id,pdata(1,1,1),ntp,&
                time_vals(1),time_bnds(1,1),refvar)
        else
-          ierr = cmor_write_cff_double_nobnds(var_id,pdata(1,1,1),suf,ntp,&
+          ierr = cmor_write_cff_double_nobnds(var_id,pdata(1,1,1),ntp,&
                time_vals(1),refvar)
        end if
     else
-       ierr = cmor_write_cff_double_notime(var_id,pdata(1,1,1),suf,ntp,&
+       ierr = cmor_write_cff_double_notime(var_id,pdata(1,1,1),ntp,&
             refvar)
     endif
     if (did_malloc.eq.1) then
@@ -4634,19 +4413,17 @@ contains
     nullify(pdata)
   END FUNCTION cmor_write_3d_d
 
-  FUNCTION cmor_write_4d_d(var_id, data, file_suffix, ntimes_passed,  &
+  FUNCTION cmor_write_4d_d(var_id, data, ntimes_passed,  &
         time_vals,time_bnds,store_with) RESULT(ierr)
     implicit none
     DOUBLE PRECISION, INTENT(IN), target :: data(:,:,:,:)
     DOUBLE PRECISION, pointer :: mdata(:,:,:,:)
     INTEGER, INTENT(in) ::var_id
-    CHARACTER(len=*), INTENT(in), OPTIONAL :: file_suffix
     INTEGER, INTENT(in), OPTIONAL :: ntimes_passed
     DOUBLE PRECISION, INTENT(in), OPTIONAL :: time_vals(:)
     DOUBLE PRECISION, INTENT(in), OPTIONAL :: time_bnds(:,:)
     INTEGER, INTENT(in), OPTIONAL :: store_with
     integer refvar,ierr,ntp
-    character(1024) suf
     integer   vshape(7),did_malloc
     double precision, pointer :: pdata(:,:,:,:)
 
@@ -4657,11 +4434,6 @@ contains
        ierr = cmor_ftn_get_tlen_cff(var_id)
        did_malloc = cmor_ftn_map_data(vshape,pdata,data,mdata,ierr)
     endif
-    if (present(file_suffix)) then
-       suf = trim(file_suffix)//char(0)
-    else
-       suf = char(0)
-    endif
 
     if (present(store_with)) then
        refvar = store_with
@@ -4676,44 +4448,37 @@ contains
     if (present(time_vals)) then
        if (ntp==0) ntp = size(time_vals)
        if (present(time_bnds)) then
-          ierr = cmor_write_cff_double(var_id,pdata(1,1,1,1),suf,ntp,&
+          ierr = cmor_write_cff_double(var_id,pdata(1,1,1,1),ntp,&
                time_vals(1),time_bnds(1,1),refvar)
        else
-          ierr = cmor_write_cff_double_nobnds(var_id,pdata(1,1,1,1),suf,ntp,&
+          ierr = cmor_write_cff_double_nobnds(var_id,pdata(1,1,1,1),ntp,&
                time_vals(1),refvar)
        end if
     else
-       ierr = cmor_write_cff_double_notime(var_id,pdata(1,1,1,1),suf,ntp,&
+       ierr = cmor_write_cff_double_notime(var_id,pdata(1,1,1,1),ntp,&
             refvar)
     endif
     if (did_malloc.eq.1) deallocate(mdata)
     nullify(pdata)
   END FUNCTION cmor_write_4d_d
-  FUNCTION cmor_write_5d_d(var_id, data, file_suffix, ntimes_passed,  &
+  FUNCTION cmor_write_5d_d(var_id, data, ntimes_passed,  &
         time_vals,time_bnds,store_with) RESULT(ierr)
     implicit none
     DOUBLE PRECISION, target :: data(:,:,:,:,:)
     DOUBLE PRECISION, pointer :: mdata(:,:,:,:,:)
     DOUBLE PRECISION, pointer :: pdata(:,:,:,:,:)
     INTEGER, INTENT(in) ::var_id
-    CHARACTER(len=*), INTENT(in), OPTIONAL :: file_suffix
     INTEGER, INTENT(in), OPTIONAL :: ntimes_passed
     DOUBLE PRECISION, INTENT(in), OPTIONAL :: time_vals(:)
     DOUBLE PRECISION, INTENT(in), OPTIONAL :: time_bnds(:,:)
     INTEGER, INTENT(in), OPTIONAL :: store_with
     integer refvar,ierr,ntp,did_malloc,vshape(7)
-    character(1024) suf
     call cmor_get_original_shape_cff(var_id,vshape(1))
     if (present(ntimes_passed)) then 
        did_malloc = cmor_ftn_map_data(vshape,pdata,data,mdata,ntimes_passed)
     else
        did_malloc = cmor_ftn_map_data(vshape,pdata,data,mdata,1)
     endif
-    if (present(file_suffix)) then
-       suf = trim(file_suffix)//char(0)
-    else
-       suf = char(0)
-    endif
 
     if (present(store_with)) then
        refvar = store_with
@@ -4728,14 +4493,14 @@ contains
     if (present(time_vals)) then
        if (ntp==0) ntp = size(time_vals)
        if (present(time_bnds)) then
-          ierr = cmor_write_cff_double(var_id,pdata(1,1,1,1,1),suf,ntp,&
+          ierr = cmor_write_cff_double(var_id,pdata(1,1,1,1,1),ntp,&
                time_vals(1),time_bnds(1,1),refvar)
        else
-          ierr = cmor_write_cff_double_nobnds(var_id,pdata(1,1,1,1,1),suf,ntp,&
+          ierr = cmor_write_cff_double_nobnds(var_id,pdata(1,1,1,1,1),ntp,&
                time_vals(1),refvar)
        end if
     else
-       ierr = cmor_write_cff_double_notime(var_id,pdata(1,1,1,1,1),suf,ntp,&
+       ierr = cmor_write_cff_double_notime(var_id,pdata(1,1,1,1,1),ntp,&
             refvar)
     endif
     if (did_malloc.eq.1) then
@@ -4743,20 +4508,18 @@ contains
     endif
     nullify(pdata)
   END FUNCTION cmor_write_5d_d
-  FUNCTION cmor_write_6d_d(var_id, data, file_suffix, ntimes_passed,  &
+  FUNCTION cmor_write_6d_d(var_id, data, ntimes_passed,  &
         time_vals,time_bnds,store_with) RESULT(ierr)
     implicit none
     DOUBLE PRECISION,target :: data(:,:,:,:,:,:)
     DOUBLE PRECISION,pointer :: mdata(:,:,:,:,:,:)
     DOUBLE PRECISION, pointer :: pdata(:,:,:,:,:,:)
     INTEGER, INTENT(in) ::var_id
-    CHARACTER(len=*), INTENT(in), OPTIONAL :: file_suffix
     INTEGER, INTENT(in), OPTIONAL :: ntimes_passed
     DOUBLE PRECISION, INTENT(in), OPTIONAL :: time_vals(:)
     DOUBLE PRECISION, INTENT(in), OPTIONAL :: time_bnds(:,:)
     INTEGER, INTENT(in), OPTIONAL :: store_with
     integer refvar,ierr,ntp,did_malloc,vshape(7)
-    character(1024) suf
     call cmor_get_original_shape_cff(var_id,vshape(1))
     if (present(ntimes_passed)) then 
        did_malloc = cmor_ftn_map_data(vshape,pdata,data,mdata,ntimes_passed)
@@ -4764,11 +4527,6 @@ contains
        ierr = cmor_ftn_get_tlen_cff(var_id)
        did_malloc = cmor_ftn_map_data(vshape,pdata,data,mdata,ierr)
     endif
-    if (present(file_suffix)) then
-       suf = trim(file_suffix)//char(0)
-    else
-       suf = char(0)
-    endif
 
     if (present(store_with)) then
        refvar = store_with
@@ -4783,14 +4541,14 @@ contains
     if (present(time_vals)) then
        if (ntp==0) ntp = size(time_vals)
        if (present(time_bnds)) then
-          ierr = cmor_write_cff_double(var_id,pdata(1,1,1,1,1,1),suf,ntp,&
+          ierr = cmor_write_cff_double(var_id,pdata(1,1,1,1,1,1),ntp,&
                time_vals(1),time_bnds(1,1),refvar)
        else
-          ierr = cmor_write_cff_double_nobnds(var_id,pdata(1,1,1,1,1,1),suf,ntp,&
+          ierr = cmor_write_cff_double_nobnds(var_id,pdata(1,1,1,1,1,1),ntp,&
                time_vals(1),refvar)
        end if
     else
-       ierr = cmor_write_cff_double_notime(var_id,pdata(1,1,1,1,1,1),suf,ntp,&
+       ierr = cmor_write_cff_double_notime(var_id,pdata(1,1,1,1,1,1),ntp,&
             refvar)
     endif
     if (did_malloc.eq.1) then
@@ -4799,20 +4557,18 @@ contains
     nullify(pdata)
     
   END FUNCTION cmor_write_6d_d
-  FUNCTION cmor_write_7d_d(var_id, data, file_suffix, ntimes_passed,  &
+  FUNCTION cmor_write_7d_d(var_id, data, ntimes_passed,  &
         time_vals,time_bnds,store_with) RESULT(ierr)
     implicit none
     DOUBLE PRECISION, target :: data(:,:,:,:,:,:,:)
     DOUBLE PRECISION, pointer :: mdata(:,:,:,:,:,:,:)
     DOUBLE PRECISION, pointer :: pdata(:,:,:,:,:,:,:)
     INTEGER, INTENT(in) ::var_id
-    CHARACTER(len=*), INTENT(in), OPTIONAL :: file_suffix
     INTEGER, INTENT(in), OPTIONAL :: ntimes_passed
     DOUBLE PRECISION, INTENT(in), OPTIONAL :: time_vals(:)
     DOUBLE PRECISION, INTENT(in), OPTIONAL :: time_bnds(:,:)
     INTEGER, INTENT(in), OPTIONAL :: store_with
     integer refvar,ierr,ntp,did_malloc,vshape(7)
-    character(1024) suf
     call cmor_get_original_shape_cff(var_id,vshape(1))
     if (present(ntimes_passed)) then 
        did_malloc = cmor_ftn_map_data(vshape,pdata,data,mdata,ntimes_passed)
@@ -4820,11 +4576,6 @@ contains
        ierr = cmor_ftn_get_tlen_cff(var_id)
        did_malloc = cmor_ftn_map_data(vshape,pdata,data,mdata,ierr)
     endif
-    if (present(file_suffix)) then
-       suf = trim(file_suffix)//char(0)
-    else
-       suf = char(0)
-    endif
 
     if (present(store_with)) then
        refvar = store_with
@@ -4839,14 +4590,14 @@ contains
     if (present(time_vals)) then
        if (ntp==0) ntp = size(time_vals)
        if (present(time_bnds)) then
-          ierr = cmor_write_cff_double(var_id,pdata(1,1,1,1,1,1,1),suf,ntp,&
+          ierr = cmor_write_cff_double(var_id,pdata(1,1,1,1,1,1,1),ntp,&
                time_vals(1),time_bnds(1,1),refvar)
        else
-          ierr = cmor_write_cff_double_nobnds(var_id,pdata(1,1,1,1,1,1,1),suf,ntp,&
+          ierr = cmor_write_cff_double_nobnds(var_id,pdata(1,1,1,1,1,1,1),ntp,&
                time_vals(1),refvar)
        end if
     else
-       ierr = cmor_write_cff_double_notime(var_id,pdata(1,1,1,1,1,1,1),suf,ntp,&
+       ierr = cmor_write_cff_double_notime(var_id,pdata(1,1,1,1,1,1,1),ntp,&
             refvar)
     endif
     if (did_malloc.eq.1) then
@@ -4855,20 +4606,18 @@ contains
     nullify(pdata)
   END FUNCTION cmor_write_7d_d
 
-  FUNCTION cmor_write_1d_i(var_id, data, file_suffix, ntimes_passed,  &
+  FUNCTION cmor_write_1d_i(var_id, data,  ntimes_passed,  &
         time_vals,time_bnds,store_with) RESULT(ierr)
     implicit none
     INTEGER, target :: data(:)
     INTEGER, pointer :: mdata(:)
     INTEGER, pointer :: pdata(:)
     INTEGER, INTENT(in) ::var_id
-    CHARACTER(len=*), INTENT(in), OPTIONAL :: file_suffix
     INTEGER, INTENT(in), OPTIONAL :: ntimes_passed
     DOUBLE PRECISION, INTENT(in), OPTIONAL :: time_vals(:)
     DOUBLE PRECISION, INTENT(in), OPTIONAL :: time_bnds(:,:)
     INTEGER, INTENT(in), OPTIONAL :: store_with
     integer refvar,ierr,ntp,did_malloc,vshape(7)
-    character(1024) suf
     call cmor_get_original_shape_cff(var_id,vshape(1))
     if (present(ntimes_passed)) then 
        did_malloc = cmor_ftn_map_data(vshape,pdata,data,mdata,ntimes_passed)
@@ -4876,11 +4625,6 @@ contains
        ierr = cmor_ftn_get_tlen_cff(var_id)
        did_malloc = cmor_ftn_map_data(vshape,pdata,data,mdata,ierr)
     endif
-    if (present(file_suffix)) then
-       suf = trim(file_suffix)//char(0)
-    else
-       suf = char(0)
-    endif
 
     if (present(store_with)) then
        refvar = store_with
@@ -4895,14 +4639,14 @@ contains
     if (present(time_vals)) then
        if (ntp==0) ntp = size(time_vals)
        if (present(time_bnds)) then
-          ierr = cmor_write_cff_int(var_id,pdata(1),suf,ntp,&
+          ierr = cmor_write_cff_int(var_id,pdata(1),ntp,&
                time_vals(1),time_bnds(1,1),refvar)
        else
-          ierr = cmor_write_cff_int_nobnds(var_id,pdata(1),suf,ntp,&
+          ierr = cmor_write_cff_int_nobnds(var_id,pdata(1),ntp,&
                time_vals(1),refvar)
        end if
     else
-       ierr = cmor_write_cff_int_notime(var_id,pdata(1),suf,ntp,&
+       ierr = cmor_write_cff_int_notime(var_id,pdata(1),ntp,&
             refvar)
     endif
     if (did_malloc.eq.1) then
@@ -4911,20 +4655,18 @@ contains
     nullify(pdata)
        
   END FUNCTION cmor_write_1d_i
-  FUNCTION cmor_write_2d_i(var_id, data, file_suffix, ntimes_passed,  &
+  FUNCTION cmor_write_2d_i(var_id, data, ntimes_passed,  &
         time_vals,time_bnds,store_with) RESULT(ierr)
     implicit none
     INTEGER,target :: data(:,:)
     INTEGER,pointer :: mdata(:,:)
     INTEGER, pointer :: pdata(:,:)
     INTEGER, INTENT(in) ::var_id
-    CHARACTER(len=*), INTENT(in), OPTIONAL :: file_suffix
     INTEGER, INTENT(in), OPTIONAL :: ntimes_passed
     DOUBLE PRECISION, INTENT(in), OPTIONAL :: time_vals(:)
     DOUBLE PRECISION, INTENT(in), OPTIONAL :: time_bnds(:,:)
     INTEGER, INTENT(in), OPTIONAL :: store_with
     integer refvar,ierr,ntp,did_malloc,vshape(7)
-    character(1024) suf
     call cmor_get_original_shape_cff(var_id,vshape(1))
     if (present(ntimes_passed)) then 
        did_malloc = cmor_ftn_map_data(vshape,pdata,data,mdata,ntimes_passed)
@@ -4932,11 +4674,6 @@ contains
        ierr = cmor_ftn_get_tlen_cff(var_id)
        did_malloc = cmor_ftn_map_data(vshape,pdata,data,mdata,ierr)
     endif
-    if (present(file_suffix)) then
-       suf = trim(file_suffix)//char(0)
-    else
-       suf = char(0)
-    endif
 
     if (present(store_with)) then
        refvar = store_with
@@ -4951,14 +4688,14 @@ contains
     if (present(time_vals)) then
        if (ntp==0) ntp = size(time_vals)
        if (present(time_bnds)) then
-          ierr = cmor_write_cff_int(var_id,data(1,1),suf,ntp,&
+          ierr = cmor_write_cff_int(var_id,data(1,1),ntp,&
                time_vals(1),time_bnds(1,1),refvar)
        else
-          ierr = cmor_write_cff_int_nobnds(var_id,data(1,1),suf,ntp,&
+          ierr = cmor_write_cff_int_nobnds(var_id,data(1,1),ntp,&
                time_vals(1),refvar)
        end if
     else
-       ierr = cmor_write_cff_int_notime(var_id,data(1,1),suf,ntp,&
+       ierr = cmor_write_cff_int_notime(var_id,data(1,1),ntp,&
             refvar)
     endif
     if (did_malloc.eq.1) then
@@ -4967,20 +4704,18 @@ contains
     nullify(pdata)
     
   END FUNCTION cmor_write_2d_i
-  FUNCTION cmor_write_3d_i(var_id, data, file_suffix, ntimes_passed,  &
+  FUNCTION cmor_write_3d_i(var_id, data,  ntimes_passed,  &
         time_vals,time_bnds,store_with) RESULT(ierr)
     implicit none
     INTEGER, target :: data(:,:,:)
     INTEGER, pointer :: mdata(:,:,:)
     INTEGER, pointer :: pdata(:,:,:)
     INTEGER, INTENT(in) ::var_id
-    CHARACTER(len=*), INTENT(in), OPTIONAL :: file_suffix
     INTEGER, INTENT(in), OPTIONAL :: ntimes_passed
     DOUBLE PRECISION, INTENT(in), OPTIONAL :: time_vals(:)
     DOUBLE PRECISION, INTENT(in), OPTIONAL :: time_bnds(:,:)
     INTEGER, INTENT(in), OPTIONAL :: store_with
     integer refvar,ierr,ntp,did_malloc,vshape(7)
-    character(1024) suf
     call cmor_get_original_shape_cff(var_id,vshape(1))
     if (present(ntimes_passed)) then 
        did_malloc = cmor_ftn_map_data(vshape,pdata,data,mdata,ntimes_passed)
@@ -4988,11 +4723,6 @@ contains
        ierr = cmor_ftn_get_tlen_cff(var_id)
        did_malloc = cmor_ftn_map_data(vshape,pdata,data,mdata,ierr)
     endif
-    if (present(file_suffix)) then
-       suf = trim(file_suffix)//char(0)
-    else
-       suf = char(0)
-    endif
 
     if (present(store_with)) then
        refvar = store_with
@@ -5007,14 +4737,14 @@ contains
     if (present(time_vals)) then
        if (ntp==0) ntp = size(time_vals)
        if (present(time_bnds)) then
-          ierr = cmor_write_cff_int(var_id,pdata(1,1,1),suf,ntp,&
+          ierr = cmor_write_cff_int(var_id,pdata(1,1,1),ntp,&
                time_vals(1),time_bnds(1,1),refvar)
        else
-          ierr = cmor_write_cff_int_nobnds(var_id,pdata(1,1,1),suf,ntp,&
+          ierr = cmor_write_cff_int_nobnds(var_id,pdata(1,1,1),ntp,&
                time_vals(1),refvar)
        end if
     else
-       ierr = cmor_write_cff_int_notime(var_id,pdata(1,1,1),suf,ntp,&
+       ierr = cmor_write_cff_int_notime(var_id,pdata(1,1,1),ntp,&
             refvar)
     endif
     if (did_malloc.eq.1) then
@@ -5023,20 +4753,18 @@ contains
     nullify(pdata)
    
   END FUNCTION cmor_write_3d_i
-  FUNCTION cmor_write_4d_i(var_id, data, file_suffix, ntimes_passed,  &
+  FUNCTION cmor_write_4d_i(var_id, data, ntimes_passed,  &
         time_vals,time_bnds,store_with) RESULT(ierr)
     implicit none
     INTEGER, target :: data(:,:,:,:)
     INTEGER, pointer :: mdata(:,:,:,:)
     INTEGER, pointer :: pdata(:,:,:,:)
     INTEGER, INTENT(in) ::var_id
-    CHARACTER(len=*), INTENT(in), OPTIONAL :: file_suffix
     INTEGER, INTENT(in), OPTIONAL :: ntimes_passed
     DOUBLE PRECISION, INTENT(in), OPTIONAL :: time_vals(:)
     DOUBLE PRECISION, INTENT(in), OPTIONAL :: time_bnds(:,:)
     INTEGER, INTENT(in), OPTIONAL :: store_with
     integer refvar,ierr,ntp,did_malloc,vshape(7)
-    character(1024) suf
     call cmor_get_original_shape_cff(var_id,vshape(1))
     if (present(ntimes_passed)) then 
        did_malloc = cmor_ftn_map_data(vshape,pdata,data,mdata,ntimes_passed)
@@ -5044,11 +4772,6 @@ contains
        ierr = cmor_ftn_get_tlen_cff(var_id)
        did_malloc = cmor_ftn_map_data(vshape,pdata,data,mdata,ierr)
     endif
-    if (present(file_suffix)) then
-       suf = trim(file_suffix)//char(0)
-    else
-       suf = char(0)
-    endif
 
     if (present(store_with)) then
        refvar = store_with
@@ -5063,14 +4786,14 @@ contains
     if (present(time_vals)) then
        if (ntp==0) ntp = size(time_vals)
        if (present(time_bnds)) then
-          ierr = cmor_write_cff_int(var_id,pdata(1,1,1,1),suf,ntp,&
+          ierr = cmor_write_cff_int(var_id,pdata(1,1,1,1),ntp,&
                time_vals(1),time_bnds(1,1),refvar)
        else
-          ierr = cmor_write_cff_int_nobnds(var_id,pdata(1,1,1,1),suf,ntp,&
+          ierr = cmor_write_cff_int_nobnds(var_id,pdata(1,1,1,1),ntp,&
                time_vals(1),refvar)
        end if
     else
-       ierr = cmor_write_cff_int_notime(var_id,pdata(1,1,1,1),suf,ntp,&
+       ierr = cmor_write_cff_int_notime(var_id,pdata(1,1,1,1),ntp,&
             refvar)
     endif
     if (did_malloc.eq.1) then
@@ -5079,20 +4802,18 @@ contains
     nullify(pdata)
    
   END FUNCTION cmor_write_4d_i
-  FUNCTION cmor_write_5d_i(var_id, data, file_suffix, ntimes_passed,  &
+  FUNCTION cmor_write_5d_i(var_id, data, ntimes_passed,  &
         time_vals,time_bnds,store_with) RESULT(ierr)
     implicit none
     INTEGER , target:: data(:,:,:,:,:)
     INTEGER , pointer:: mdata(:,:,:,:,:)
     INTEGER, pointer :: pdata(:,:,:,:,:)
     INTEGER, INTENT(in) ::var_id
-    CHARACTER(len=*), INTENT(in), OPTIONAL :: file_suffix
     INTEGER, INTENT(in), OPTIONAL :: ntimes_passed
     DOUBLE PRECISION, INTENT(in), OPTIONAL :: time_vals(:)
     DOUBLE PRECISION, INTENT(in), OPTIONAL :: time_bnds(:,:)
     INTEGER, INTENT(in), OPTIONAL :: store_with
     integer refvar,ierr,ntp,did_malloc,vshape(7)
-    character(1024) suf
     call cmor_get_original_shape_cff(var_id,vshape(1))
     if (present(ntimes_passed)) then 
        did_malloc = cmor_ftn_map_data(vshape,pdata,data,mdata,ntimes_passed)
@@ -5100,11 +4821,6 @@ contains
        ierr = cmor_ftn_get_tlen_cff(var_id)
        did_malloc = cmor_ftn_map_data(vshape,pdata,data,mdata,ierr)
     endif
-    if (present(file_suffix)) then
-       suf = trim(file_suffix)//char(0)
-    else
-       suf = char(0)
-    endif
 
     if (present(store_with)) then
        refvar = store_with
@@ -5119,14 +4835,14 @@ contains
     if (present(time_vals)) then
        if (ntp==0) ntp = size(time_vals)
        if (present(time_bnds)) then
-          ierr = cmor_write_cff_int(var_id,pdata(1,1,1,1,1),suf,ntp,&
+          ierr = cmor_write_cff_int(var_id,pdata(1,1,1,1,1),ntp,&
                time_vals(1),time_bnds(1,1),refvar)
        else
-          ierr = cmor_write_cff_int_nobnds(var_id,pdata(1,1,1,1,1),suf,ntp,&
+          ierr = cmor_write_cff_int_nobnds(var_id,pdata(1,1,1,1,1),ntp,&
                time_vals(1),refvar)
        end if
     else
-       ierr = cmor_write_cff_int_notime(var_id,pdata(1,1,1,1,1),suf,ntp,&
+       ierr = cmor_write_cff_int_notime(var_id,pdata(1,1,1,1,1),ntp,&
             refvar)
     endif
     if (did_malloc.eq.1) then
@@ -5134,20 +4850,18 @@ contains
     endif
     nullify(pdata)
   END FUNCTION cmor_write_5d_i
-  FUNCTION cmor_write_6d_i(var_id, data, file_suffix, ntimes_passed,  &
+  FUNCTION cmor_write_6d_i(var_id, data, ntimes_passed,  &
         time_vals,time_bnds,store_with) RESULT(ierr)
     implicit none
     INTEGER,target :: data(:,:,:,:,:,:)
     INTEGER, pointer :: mdata(:,:,:,:,:,:)
     INTEGER, pointer :: pdata(:,:,:,:,:,:)
     INTEGER, INTENT(in) ::var_id
-    CHARACTER(len=*), INTENT(in), OPTIONAL :: file_suffix
     INTEGER, INTENT(in), OPTIONAL :: ntimes_passed
     DOUBLE PRECISION, INTENT(in), OPTIONAL :: time_vals(:)
     DOUBLE PRECISION, INTENT(in), OPTIONAL :: time_bnds(:,:)
     INTEGER, INTENT(in), OPTIONAL :: store_with
     integer refvar,ierr,ntp,did_malloc,vshape(7)
-    character(1024) suf
     call cmor_get_original_shape_cff(var_id,vshape(1))
     if (present(ntimes_passed)) then 
        did_malloc = cmor_ftn_map_data(vshape,pdata,data,mdata,ntimes_passed)
@@ -5155,11 +4869,6 @@ contains
        ierr = cmor_ftn_get_tlen_cff(var_id)
        did_malloc = cmor_ftn_map_data(vshape,pdata,data,mdata,ierr)
     endif
-    if (present(file_suffix)) then
-       suf = trim(file_suffix)//char(0)
-    else
-       suf = char(0)
-    endif
 
     if (present(store_with)) then
        refvar = store_with
@@ -5174,14 +4883,14 @@ contains
     if (present(time_vals)) then
        if (ntp==0) ntp = size(time_vals)
        if (present(time_bnds)) then
-          ierr = cmor_write_cff_int(var_id,pdata(1,1,1,1,1,1),suf,ntp,&
+          ierr = cmor_write_cff_int(var_id,pdata(1,1,1,1,1,1),ntp,&
                time_vals(1),time_bnds(1,1),refvar)
        else
-          ierr = cmor_write_cff_int_nobnds(var_id,pdata(1,1,1,1,1,1),suf,ntp,&
+          ierr = cmor_write_cff_int_nobnds(var_id,pdata(1,1,1,1,1,1),ntp,&
                time_vals(1),refvar)
        end if
     else
-       ierr = cmor_write_cff_int_notime(var_id,pdata(1,1,1,1,1,1),suf,ntp,&
+       ierr = cmor_write_cff_int_notime(var_id,pdata(1,1,1,1,1,1),ntp,&
             refvar)
     endif
     if (did_malloc.eq.1) then
@@ -5190,20 +4899,18 @@ contains
     nullify(pdata)
        
   END FUNCTION cmor_write_6d_i
-  FUNCTION cmor_write_7d_i(var_id, data, file_suffix, ntimes_passed,  &
+  FUNCTION cmor_write_7d_i(var_id, data, ntimes_passed,  &
         time_vals,time_bnds,store_with) RESULT(ierr)
     implicit none
     INTEGER, target :: data(:,:,:,:,:,:,:)
     INTEGER, pointer :: mdata(:,:,:,:,:,:,:)
     INTEGER, pointer :: pdata(:,:,:,:,:,:,:)
     INTEGER, INTENT(in) ::var_id
-    CHARACTER(len=*), INTENT(in), OPTIONAL :: file_suffix
     INTEGER, INTENT(in), OPTIONAL :: ntimes_passed
     DOUBLE PRECISION, INTENT(in), OPTIONAL :: time_vals(:)
     DOUBLE PRECISION, INTENT(in), OPTIONAL :: time_bnds(:,:)
     INTEGER, INTENT(in), OPTIONAL :: store_with
     integer refvar,ierr,ntp,did_malloc,vshape(7)
-    character(1024) suf
     call cmor_get_original_shape_cff(var_id,vshape(1))
     if (present(ntimes_passed)) then 
        did_malloc = cmor_ftn_map_data(vshape,pdata,data,mdata,ntimes_passed)
@@ -5211,11 +4918,6 @@ contains
        ierr = cmor_ftn_get_tlen_cff(var_id)
        did_malloc = cmor_ftn_map_data(vshape,pdata,data,mdata,ierr)
     endif
-    if (present(file_suffix)) then
-       suf = trim(file_suffix)//char(0)
-    else
-       suf = char(0)
-    endif
 
     if (present(store_with)) then
        refvar = store_with
@@ -5230,14 +4932,14 @@ contains
     if (present(time_vals)) then
        if (ntp==0) ntp = size(time_vals)
        if (present(time_bnds)) then
-          ierr = cmor_write_cff_int(var_id,pdata(1,1,1,1,1,1,1),suf,ntp,&
+          ierr = cmor_write_cff_int(var_id,pdata(1,1,1,1,1,1,1),ntp,&
                time_vals(1),time_bnds(1,1),refvar)
        else
-          ierr = cmor_write_cff_int_nobnds(var_id,pdata(1,1,1,1,1,1,1),suf,ntp,&
+          ierr = cmor_write_cff_int_nobnds(var_id,pdata(1,1,1,1,1,1,1),ntp,&
                time_vals(1),refvar)
        end if
     else
-       ierr = cmor_write_cff_int_notime(var_id,pdata(1,1,1,1,1,1,1),suf,ntp,&
+       ierr = cmor_write_cff_int_notime(var_id,pdata(1,1,1,1,1,1,1),ntp,&
             refvar)
     endif
     if (did_malloc.eq.1) then
@@ -5247,300 +4949,6 @@ contains
 
   END FUNCTION cmor_write_7d_i
 
-!!$  FUNCTION cmor_write_1d_l(var_id, data, file_suffix, ntimes_passed,  &
-!!$        time_vals,time_bnds,store_with) RESULT(ierr)
-!!$    implicit none
-!!$    INTEGER (KIND=8), INTENT(IN) :: data(:)
-!!$    INTEGER, INTENT(in) ::var_id
-!!$    CHARACTER(len=*), INTENT(in), OPTIONAL :: file_suffix
-!!$    INTEGER, INTENT(in), OPTIONAL :: ntimes_passed
-!!$    DOUBLE PRECISION, INTENT(in), OPTIONAL :: time_vals(:)
-!!$    DOUBLE PRECISION, INTENT(in), OPTIONAL :: time_bnds(:,:)
-!!$    INTEGER, INTENT(in), OPTIONAL :: store_with
-!!$    integer refvar,ierr,n(1),ntp
-!!$    character(1024) suf
-!!$    if (present(file_suffix)) then
-!!$       suf = trim(file_suffix)//char(0)
-!!$    else
-!!$       suf = char(0)
-!!$    endif
-!!$
-!!$    if (present(store_with)) then
-!!$       refvar = store_with
-!!$    else
-!!$       refvar = -1 ! means do not pass it
-!!$    end if
-!!$    if (present(ntimes_passed)) then
-!!$       ntp = ntimes_passed
-!!$    else
-!!$       ntp=0
-!!$    endif
-!!$    if (present(time_vals)) then
-!!$       if (ntp==0) ntp = size(time_vals)
-!!$       if (present(time_bnds)) then
-!!$          ierr = cmor_write_cff_long(var_id,data(1),suf,ntp,&
-!!$               time_vals(1),time_bnds(1,1),refvar)
-!!$       else
-!!$          ierr = cmor_write_cff_long_nobnds(var_id,data(1),suf,ntp,&
-!!$               time_vals(1),refvar)
-!!$       end if
-!!$    else
-!!$       ierr = cmor_write_cff_long_notime(var_id,data(1),suf,ntp,&
-!!$            refvar)
-!!$    endif
-!!$  END FUNCTION cmor_write_1d_l
-!!$  FUNCTION cmor_write_2d_l(var_id, data, file_suffix, ntimes_passed,  &
-!!$        time_vals,time_bnds,store_with) RESULT(ierr)
-!!$    implicit none
-!!$    INTEGER (KIND=8), INTENT(IN) :: data(:,:)
-!!$    INTEGER, INTENT(in) ::var_id
-!!$    CHARACTER(len=*), INTENT(in), OPTIONAL :: file_suffix
-!!$    INTEGER, INTENT(in), OPTIONAL :: ntimes_passed
-!!$    DOUBLE PRECISION, INTENT(in), OPTIONAL :: time_vals(:)
-!!$    DOUBLE PRECISION, INTENT(in), OPTIONAL :: time_bnds(:,:)
-!!$    INTEGER, INTENT(in), OPTIONAL :: store_with
-!!$    integer refvar,ierr,n(1),ntp
-!!$    character(1024) suf
-!!$    if (present(file_suffix)) then
-!!$       suf = trim(file_suffix)//char(0)
-!!$    else
-!!$       suf = char(0)
-!!$    endif
-!!$
-!!$    if (present(store_with)) then
-!!$       refvar = store_with
-!!$    else
-!!$       refvar = -1 ! means do not pass it
-!!$    end if
-!!$    if (present(ntimes_passed)) then
-!!$       ntp = ntimes_passed
-!!$    else
-!!$       ntp=0
-!!$    endif
-!!$    if (present(time_vals)) then
-!!$       if (ntp==0) ntp = size(time_vals)
-!!$       if (present(time_bnds)) then
-!!$          ierr = cmor_write_cff_long(var_id,data(1,1),suf,ntp,&
-!!$               time_vals(1),time_bnds(1,1),refvar)
-!!$       else
-!!$          ierr = cmor_write_cff_long_nobnds(var_id,data(1,1),suf,ntp,&
-!!$               time_vals(1),refvar)
-!!$       end if
-!!$    else
-!!$       ierr = cmor_write_cff_long_notime(var_id,data(1,1),suf,ntp,&
-!!$            refvar)
-!!$    endif
-!!$  END FUNCTION cmor_write_2d_l
-!!$  FUNCTION cmor_write_3d_l(var_id, data, file_suffix, ntimes_passed,  &
-!!$        time_vals,time_bnds,store_with) RESULT(ierr)
-!!$    implicit none
-!!$    INTEGER (KIND=8), INTENT(IN) :: data(:,:,:)
-!!$    INTEGER, INTENT(in) ::var_id
-!!$    CHARACTER(len=*), INTENT(in), OPTIONAL :: file_suffix
-!!$    INTEGER, INTENT(in), OPTIONAL :: ntimes_passed
-!!$    DOUBLE PRECISION, INTENT(in), OPTIONAL :: time_vals(:)
-!!$    DOUBLE PRECISION, INTENT(in), OPTIONAL :: time_bnds(:,:)
-!!$    INTEGER, INTENT(in), OPTIONAL :: store_with
-!!$    integer refvar,ierr,n(1),ntp
-!!$    character(1024) suf
-!!$    if (present(file_suffix)) then
-!!$       suf = trim(file_suffix)//char(0)
-!!$    else
-!!$       suf = char(0)
-!!$    endif
-!!$
-!!$    if (present(store_with)) then
-!!$       refvar = store_with
-!!$    else
-!!$       refvar = -1 ! means do not pass it
-!!$    end if
-!!$    if (present(ntimes_passed)) then
-!!$       ntp = ntimes_passed
-!!$    else
-!!$       ntp=0
-!!$    endif
-!!$    if (present(time_vals)) then
-!!$       if (ntp==0) ntp = size(time_vals)
-!!$       if (present(time_bnds)) then
-!!$          ierr = cmor_write_cff_long(var_id,data(1,1,1),suf,ntp,&
-!!$               time_vals(1),time_bnds(1,1),refvar)
-!!$       else
-!!$          ierr = cmor_write_cff_long_nobnds(var_id,data(1,1,1),suf,ntp,&
-!!$               time_vals(1),refvar)
-!!$       end if
-!!$    else
-!!$       ierr = cmor_write_cff_long_notime(var_id,data(1,1,1),suf,ntp,&
-!!$            refvar)
-!!$    endif
-!!$  END FUNCTION cmor_write_3d_l
-!!$  FUNCTION cmor_write_4d_l(var_id, data, file_suffix, ntimes_passed,  &
-!!$        time_vals,time_bnds,store_with) RESULT(ierr)
-!!$    implicit none
-!!$    INTEGER (KIND=8), INTENT(IN) :: data(:,:,:,:)
-!!$    INTEGER, INTENT(in) ::var_id
-!!$    CHARACTER(len=*), INTENT(in), OPTIONAL :: file_suffix
-!!$    INTEGER, INTENT(in), OPTIONAL :: ntimes_passed
-!!$    DOUBLE PRECISION, INTENT(in), OPTIONAL :: time_vals(:)
-!!$    DOUBLE PRECISION, INTENT(in), OPTIONAL :: time_bnds(:,:)
-!!$    INTEGER, INTENT(in), OPTIONAL :: store_with
-!!$    integer refvar,ierr,n(1),ntp
-!!$    character(1024) suf
-!!$    if (present(file_suffix)) then
-!!$       suf = trim(file_suffix)//char(0)
-!!$    else
-!!$       suf = char(0)
-!!$    endif
-!!$
-!!$    if (present(store_with)) then
-!!$       refvar = store_with
-!!$    else
-!!$       refvar = -1 ! means do not pass it
-!!$    end if
-!!$    if (present(ntimes_passed)) then
-!!$       ntp = ntimes_passed
-!!$    else
-!!$       ntp=0
-!!$    endif
-!!$    if (present(time_vals)) then
-!!$       if (ntp==0) ntp = size(time_vals)
-!!$       if (present(time_bnds)) then
-!!$          ierr = cmor_write_cff_long(var_id,data(1,1,1,1),suf,ntp,&
-!!$               time_vals(1),time_bnds(1,1),refvar)
-!!$       else
-!!$          ierr = cmor_write_cff_long_nobnds(var_id,data(1,1,1,1),suf,ntp,&
-!!$               time_vals(1),refvar)
-!!$       end if
-!!$    else
-!!$       ierr = cmor_write_cff_long_notime(var_id,data(1,1,1,1),suf,ntp,&
-!!$            refvar)
-!!$    endif
-!!$  END FUNCTION cmor_write_4d_l
-!!$  FUNCTION cmor_write_5d_l(var_id, data, file_suffix, ntimes_passed,  &
-!!$        time_vals,time_bnds,store_with) RESULT(ierr)
-!!$    implicit none
-!!$    INTEGER (KIND=8), INTENT(IN) :: data(:,:,:,:,:)
-!!$    INTEGER, INTENT(in) ::var_id
-!!$    CHARACTER(len=*), INTENT(in), OPTIONAL :: file_suffix
-!!$    INTEGER, INTENT(in), OPTIONAL :: ntimes_passed
-!!$    DOUBLE PRECISION, INTENT(in), OPTIONAL :: time_vals(:)
-!!$    DOUBLE PRECISION, INTENT(in), OPTIONAL :: time_bnds(:,:)
-!!$    INTEGER, INTENT(in), OPTIONAL :: store_with
-!!$    integer refvar,ierr,n(1),ntp
-!!$    character(1024) suf
-!!$    if (present(file_suffix)) then
-!!$       suf = trim(file_suffix)//char(0)
-!!$    else
-!!$       suf = char(0)
-!!$    endif
-!!$
-!!$    if (present(store_with)) then
-!!$       refvar = store_with
-!!$    else
-!!$       refvar = -1 ! means do not pass it
-!!$    end if
-!!$    if (present(ntimes_passed)) then
-!!$       ntp = ntimes_passed
-!!$    else
-!!$       ntp=0
-!!$    endif
-!!$    if (present(time_vals)) then
-!!$       if (ntp==0) ntp = size(time_vals)
-!!$       if (present(time_bnds)) then
-!!$          ierr = cmor_write_cff_long(var_id,data(1,1,1,1,1),suf,ntp,&
-!!$               time_vals(1),time_bnds(1,1),refvar)
-!!$       else
-!!$          ierr = cmor_write_cff_long_nobnds(var_id,data(1,1,1,1,1),suf,ntp,&
-!!$               time_vals(1),refvar)
-!!$       end if
-!!$    else
-!!$       ierr = cmor_write_cff_long_notime(var_id,data(1,1,1,1,1),suf,ntp,&
-!!$            refvar)
-!!$    endif
-!!$  END FUNCTION cmor_write_5d_l
-!!$  FUNCTION cmor_write_6d_l(var_id, data, file_suffix, ntimes_passed,  &
-!!$        time_vals,time_bnds,store_with) RESULT(ierr)
-!!$    implicit none
-!!$    INTEGER (KIND=8), INTENT(IN) :: data(:,:,:,:,:,:)
-!!$    INTEGER, INTENT(in) ::var_id
-!!$    CHARACTER(len=*), INTENT(in), OPTIONAL :: file_suffix
-!!$    INTEGER, INTENT(in), OPTIONAL :: ntimes_passed
-!!$    DOUBLE PRECISION, INTENT(in), OPTIONAL :: time_vals(:)
-!!$    DOUBLE PRECISION, INTENT(in), OPTIONAL :: time_bnds(:,:)
-!!$    INTEGER, INTENT(in), OPTIONAL :: store_with
-!!$    integer refvar,ierr,n(1),ntp
-!!$    character(1024) suf
-!!$    if (present(file_suffix)) then
-!!$       suf = trim(file_suffix)//char(0)
-!!$    else
-!!$       suf = char(0)
-!!$    endif
-!!$
-!!$    if (present(store_with)) then
-!!$       refvar = store_with
-!!$    else
-!!$       refvar = -1 ! means do not pass it
-!!$    end if
-!!$    if (present(ntimes_passed)) then
-!!$       ntp = ntimes_passed
-!!$    else
-!!$       ntp=0
-!!$    endif
-!!$    if (present(time_vals)) then
-!!$       if (ntp==0) ntp = size(time_vals)
-!!$       if (present(time_bnds)) then
-!!$          ierr = cmor_write_cff_long(var_id,data(1,1,1,1,1,1),suf,ntp,&
-!!$               time_vals(1),time_bnds(1,1),refvar)
-!!$       else
-!!$          ierr = cmor_write_cff_long_nobnds(var_id,data(1,1,1,1,1,1),suf,ntp,&
-!!$               time_vals(1),refvar)
-!!$       end if
-!!$    else
-!!$       ierr = cmor_write_cff_long_notime(var_id,data(1,1,1,1,1,1),suf,ntp,&
-!!$            refvar)
-!!$    endif
-!!$  END FUNCTION cmor_write_6d_l
-!!$  FUNCTION cmor_write_7d_l(var_id, data, file_suffix, ntimes_passed,  &
-!!$        time_vals,time_bnds,store_with) RESULT(ierr)
-!!$    implicit none
-!!$    INTEGER (KIND=8), INTENT(IN) :: data(:,:,:,:,:,:,:)
-!!$    INTEGER, INTENT(in) ::var_id
-!!$    CHARACTER(len=*), INTENT(in), OPTIONAL :: file_suffix
-!!$    INTEGER, INTENT(in), OPTIONAL :: ntimes_passed
-!!$    DOUBLE PRECISION, INTENT(in), OPTIONAL :: time_vals(:)
-!!$    DOUBLE PRECISION, INTENT(in), OPTIONAL :: time_bnds(:,:)
-!!$    INTEGER, INTENT(in), OPTIONAL :: store_with
-!!$    integer refvar,ierr,n(1),ntp
-!!$    character(1024) suf
-!!$    if (present(file_suffix)) then
-!!$       suf = trim(file_suffix)//char(0)
-!!$    else
-!!$       suf = char(0)
-!!$    endif
-!!$
-!!$    if (present(store_with)) then
-!!$       refvar = store_with
-!!$    else
-!!$       refvar = -1 ! means do not pass it
-!!$    end if
-!!$    if (present(ntimes_passed)) then
-!!$       ntp = ntimes_passed
-!!$    else
-!!$       ntp=0
-!!$    endif
-!!$    if (present(time_vals)) then
-!!$       if (ntp==0) ntp = size(time_vals)
-!!$       if (present(time_bnds)) then
-!!$          ierr = cmor_write_cff_long(var_id,data(1,1,1,1,1,1,1),suf,ntp,&
-!!$               time_vals(1),time_bnds(1,1),refvar)
-!!$       else
-!!$          ierr = cmor_write_cff_long_nobnds(var_id,data(1,1,1,1,1,1,1),suf,ntp,&
-!!$               time_vals(1),refvar)
-!!$       end if
-!!$    else
-!!$       ierr = cmor_write_cff_long_notime(var_id,data(1,1,1,1,1,1,1),suf,ntp,&
-!!$            refvar)
-!!$    endif
-!!$  END FUNCTION cmor_write_7d_l
 
   function cmor_variable_double(table,table_entry,units,axis_ids,missing_value,&
        tolerance,positive,original_name,history,comment) result(ierr)
@@ -7515,15 +6923,6 @@ contains
 !!$  end function cmor_axis_long_2
      
 
-  subroutine cmor_create_output_path(var_id, path)
-    implicit none
-    character(*), intent(out) :: path
-    integer var_id
-    integer slen
-    call cmor_create_output_path_cff(var_id,path,slen)
-    path = path(1:slen)
-  end subroutine cmor_create_output_path
-
   function cmor_has_cur_dataset_attribute(value) result (ierr)
     implicit none
     character (*), intent (in) :: value
@@ -7539,13 +6938,6 @@ contains
     ierr = cmor_get_cur_dset_attribute_cff(trim(name)//char(0), value)
   end function cmor_get_cur_dataset_attribute
 
-  function cmor_set_cur_dataset_attribute(name, value) result (ierr)
-    implicit none
-    character (*), intent (in) :: name
-    character (*), intent (in) :: value
-    integer ierr
-    ierr = cmor_set_cur_dset_attribute_cff(trim(name)//char(0), trim(value)//char(0))
-  end function cmor_set_cur_dataset_attribute
   function cmor_has_variable_attribute(var_id, value) result (ierr)
     implicit none
     character (*), intent (in) :: value
@@ -7572,6 +6964,16 @@ contains
     ierr = cmor_set_variable_attribute_cff(var_id,trim(name)//char(0), trim(value)//char(0))
   end function cmor_set_variable_attribute
 
+  function cmor_set_deflate(var_id, shuffle, deflate, deflate_level) result (ierr)
+    implicit none
+    integer, intent (in) :: var_id
+    integer, intent (in) :: shuffle
+    integer, intent (in) :: deflate
+    integer, intent (in) :: deflate_level
+    integer ierr
+    ierr = cmor_set_deflate_cff(var_id, shuffle, deflate, deflate_level)
+  end function cmor_set_deflate
+
   function cmor_setup_ints(inpath,netcdf_file_action, set_verbosity,&
        exit_control, logfile, create_subdirectories) result(ierr)
     implicit none
@@ -7738,118 +7140,11 @@ contains
     endif
   end function cmor_setup_nc_char
 
-  function cmor_dataset(outpath,experiment_id,institution,source,calendar,&
-       realization,&
-       contact,history,comment,references,&
-       leap_year,leap_month,month_lengths,model_id,forcing, &
-       initialization_method,physics_version,institute_id,parent_experiment_id,branch_time,parent_experiment_rip) result (ierr)
-    implicit none
-    character(*), INTENT(in) :: outpath,experiment_id,institution,source,calendar
-    character(*), optional, intent(in) :: model_id,forcing
-    character(*), optional, intent(in) :: contact,history,comment,references,institute_id
-    character(*), optional, intent(in) :: parent_experiment_id,parent_experiment_rip
-    integer, optional,intent(in) :: leap_year,leap_month,month_lengths(12)
-    integer r,ly,lm,im,pv
-    integer, optional, intent(in) :: realization,initialization_method,physics_version
-    character(1024) cntct,hist,comt,ref,mnm,fnm,instid,peid,perip
-    integer ierr
-    double precision, optional, intent(in) :: branch_time
-
-    if (present(realization)) then
-       r = realization
-    else
-       r = 1
-    endif
-    if (present(initialization_method)) then
-       im = initialization_method
-    else
-       im = 0
-    endif
-    if (present(physics_version)) then
-       pv = physics_version
-    else
-       pv = 0
-    endif
-    if (present(leap_year)) then
-       ly = leap_year
-    else
-       ly =0
-    endif
-    if (present(leap_month)) then
-       lm = leap_month
-    else
-       lm =0
-    endif
-    if (present(contact)) then
-       cntct = trim(contact)//char(0)
-    else
-       cntct = char(0)
-    endif
-    if (present(history)) then
-       hist = trim(history)//char(0)
-    else
-       hist = char(0)
-    endif
-    if (present(comment)) then
-       comt = trim(comment)//char(0)
-    else
-       comt = char(0)
-    endif
-    if (present(references)) then
-       ref = trim(references)//char(0)
-    else
-       ref = char(0)
-    endif
-    if (present(model_id)) then
-       mnm = trim(model_id)//char(0)
-    else
-       mnm  = char(0)
-    endif
-    if (present(forcing)) then
-       fnm = trim(forcing)//char(0)
-    else
-       fnm  = char(0)
-    endif
-    if (present(institute_id)) then
-       instid = trim(institute_id)//char(0)
-    else
-       instid= char(0)
-    endif
-    if (present(parent_experiment_id)) then
-       peid = trim(parent_experiment_id)//char(0)
-    else
-       peid= char(0)
-    endif
-    if (present(parent_experiment_rip)) then
-       perip = trim(parent_experiment_rip)//char(0)
-    else
-       perip= char(0)
-    endif
-    if (present(month_lengths)) then
-       if (present(branch_time)) then
-          ierr = cmor_dataset_cff(trim(outpath)//char(0),trim(experiment_id)//char(0),&
-               trim(institution)//char(0),trim(source)//char(0),trim(calendar)//char(0),r,&
-               cntct,hist,comt,ref,&
-               ly,lm,month_lengths(1),mnm,fnm,im,pv,instid,peid,branch_time,perip)
-       else
-          ierr = cmor_dataset_cff_nobrch(trim(outpath)//char(0),trim(experiment_id)//char(0),&
-               trim(institution)//char(0),trim(source)//char(0),trim(calendar)//char(0),r,&
-               cntct,hist,comt,ref,&
-               ly,lm,month_lengths(1),mnm,fnm,im,pv,instid,peid,perip)
-       endif
-    else
-       if (present(branch_time)) then
-          ierr = cmor_dataset_cff_null(trim(outpath)//char(0),trim(experiment_id)//char(0),&
-               trim(institution)//char(0),trim(source)//char(0),trim(calendar)//char(0),r,&
-               cntct,hist,comt,ref,&
-               ly,lm,mnm,fnm,im,pv,instid,peid,branch_time,perip)
-       else
-          ierr = cmor_dataset_cff_null_nobrch(trim(outpath)//char(0),trim(experiment_id)//char(0),&
-               trim(institution)//char(0),trim(source)//char(0),trim(calendar)//char(0),r,&
-               cntct,hist,comt,ref,&
-               ly,lm,mnm,fnm,im,pv,instid,peid,perip)
-       endif
-    endif
+  function cmor_dataset_json(json_file)
+    character(*) json_file
+    ierr = cmor_dataset_json_cff(trim(json_file)//char(0))
     ierr = -ierr
-  end function cmor_dataset
+  end function cmor_dataset_json
+
+
 end module cmor_users_functions
diff --git a/Src/cmor_grids.c b/Src/cmor_grids.c
index db397bc..1c2f015 100644
--- a/Src/cmor_grids.c
+++ b/Src/cmor_grids.c
@@ -4,731 +4,1064 @@
 #include "cmor.h"
 #include <udunits2.h>
 
-/* functions prototyping */
+/* ==================================================================== */
+/*      functions prototyping                                           */
+/* ==================================================================== */
+
 extern int CMOR_TABLE;
-extern int cmor_set_variable_attribute_internal(int id, char *attribute_name, char type, void *value);
-
-void cmor_init_grid_mapping(cmor_mappings_t *mapping,char *id)
-{
-  int n;
-  cmor_add_traceback("cmor_init_grid_mapping");
-  cmor_is_setup();
-  mapping->nattributes=0;
-  for(n=0;n<CMOR_MAX_GRID_ATTRIBUTES;n++) mapping->attributes_names[n][0]='\0';
-  strcpy(mapping->coordinates,"");
-  strncpy(mapping->id,id,CMOR_MAX_STRING);
-  cmor_pop_traceback();
-  return;
-}
+extern int cmor_set_variable_attribute_internal( int id,
+						 char *attribute_name,
+						 char type, void *value );
+
+/************************************************************************/
+/*                       cmor_init_grid_mapping()                       */
+/************************************************************************/
+void cmor_init_grid_mapping( cmor_mappings_t * mapping, char *id ) {
+    int n;
+
+    cmor_add_traceback( "cmor_init_grid_mapping" );
+    cmor_is_setup(  );
 
-int cmor_copy_data(double **dest1, void *data, char type, int nelts) {
-  int i;
-  char msg[CMOR_MAX_STRING];
-  double *dest;
-
-  cmor_add_traceback("cmor_copy_data");
-  dest = *dest1;
-  /* First free the dest if already allocated */
-  if (dest !=NULL) {
-    free(dest);
-  }
-  /* allocate space */
-  dest = malloc(nelts*sizeof(double));
-  /* and copy elements */
-  for (i=0;i<nelts;i++) {
-    if (type=='f') dest[i] = (double)((float *)data)[i];
-    else if (type=='i') dest[i] = (double)((int *)data)[i];
-    else if (type=='l') dest[i] = (double)((long *)data)[i];
-    else if (type=='d') dest[i] = (double)((double *)data)[i];
-    else {
-      snprintf(msg,CMOR_MAX_STRING,"wrong data type: %c",type);
-      cmor_handle_error(msg,CMOR_CRITICAL);
+    mapping->nattributes = 0;
+    for( n = 0; n < CMOR_MAX_GRID_ATTRIBUTES; n++ ) {
+	mapping->attributes_names[n][0] = '\0';
     }
-  }
-  *dest1=dest;
-  cmor_pop_traceback();
-  return 0;
-}
 
-int cmor_has_grid_attribute(int gid, char *name) {
-  int i;
-  int grid_id;
-  grid_id=-gid-CMOR_MAX_GRIDS;
-  for (i=0;i<cmor_grids[grid_id].nattributes;i++) {
-    if (strcmp(name,cmor_grids[grid_id].attributes_names[i])==0) return 0;
-  }
-  return 1;
-}
+    strcpy( mapping->coordinates, "" );
+    strncpy( mapping->id, id, CMOR_MAX_STRING );
+    cmor_pop_traceback(  );
+
+    return;
 
-int cmor_get_grid_attribute(int gid, char *name, double *value) {
-  int i,j;
-  int grid_id;
-  grid_id=-gid-CMOR_MAX_GRIDS;
-  j=-1;
-  for (i=0;i<cmor_grids[grid_id].nattributes;i++) {
-    if (strcmp(name,cmor_grids[grid_id].attributes_names[i])==0) j=i;
-  }
-  if (j!=-1) {
-    *value = cmor_grids[grid_id].attributes_values[j];
-    return 0;
-  }
-  return 1;
 }
-void cmor_convert_value(char *units,char *ctmp,double *tmp){
-  ut_unit *user_units=NULL, *cmor_units=NULL;
-  cv_converter *ut_cmor_converter=NULL;
-  double value;
-  char msg[CMOR_MAX_STRING];
-
-
-  cmor_add_traceback("cmor_convert_value");
-
-  value = *tmp;
-  if (units[0]!='\0') {
-    cmor_prep_units(ctmp,units,&cmor_units,&user_units,&ut_cmor_converter);
-    *tmp = cv_convert_double(ut_cmor_converter,value);
-    if (ut_get_status() != UT_SUCCESS) {
-      snprintf(msg,CMOR_MAX_STRING,"Udunits: Error converting units from %s to %s",units,ctmp);
-      cmor_handle_error(msg,CMOR_CRITICAL);
-    }
 
-    cv_free(ut_cmor_converter);
-    if (ut_get_status() != UT_SUCCESS) {
-      snprintf(msg,CMOR_MAX_STRING,"Udunits: Error freeing converter");
-      cmor_handle_error(msg,CMOR_CRITICAL);
-    }
-    ut_free(cmor_units);
-    if (ut_get_status() != UT_SUCCESS) {
-      snprintf(msg,CMOR_MAX_STRING,"Udunits: Error freeing units");
-      cmor_handle_error(msg,CMOR_CRITICAL);
+/************************************************************************/
+/*                           cmor_copy_data()                           */
+/************************************************************************/
+int cmor_copy_data( double **dest1, void *data, char type, int nelts ) {
+    int i;
+    char msg[CMOR_MAX_STRING];
+    double *dest;
+
+    cmor_add_traceback( "cmor_copy_data" );
+    dest = *dest1;
+/* -------------------------------------------------------------------- */
+/*      First free the dest if already allocated                        */
+/* -------------------------------------------------------------------- */
+    if( dest != NULL ) {
+	free( dest );
     }
-    ut_free(user_units);
-    if (ut_get_status() != UT_SUCCESS) {
-      snprintf(msg,CMOR_MAX_STRING,"Udunits: Error freeing units");
-      cmor_handle_error(msg,CMOR_CRITICAL);
+    dest = malloc( nelts * sizeof ( double ) );
+    for( i = 0; i < nelts; i++ ) {
+	if( type == 'f' )
+	    dest[i] = ( double ) ( ( float * ) data )[i];
+	else if( type == 'i' )
+	    dest[i] = ( double ) ( ( int * ) data )[i];
+	else if( type == 'l' )
+	    dest[i] = ( double ) ( ( long * ) data )[i];
+	else if( type == 'd' )
+	    dest[i] = ( double ) ( ( double * ) data )[i];
+	else {
+	    snprintf( msg, CMOR_MAX_STRING, "wrong data type: %c", type );
+	    cmor_handle_error( msg, CMOR_CRITICAL );
+	}
     }
-  }
-  else *tmp=value;
-  cmor_pop_traceback();
-  return;
+    *dest1 = dest;
+    cmor_pop_traceback(  );
+    return(0);
 }
+/************************************************************************/
+/*                      cmor_has_grid_attribute()                       */
+/************************************************************************/
 
-int cmor_set_grid_attribute(int gid, char *name, double *value, char *units) {
-  int i,j,iatt;
-  int grid_id;
-  char ctmp[CMOR_MAX_STRING];
-  char msg[CMOR_MAX_STRING];
-  double tmp;
-
-  cmor_add_traceback("cmor_set_grid_attribute");
-  grid_id=-gid-CMOR_MAX_GRIDS;
-  iatt = cmor_grids[grid_id].nattributes;
-  tmp = *value;
-
-  /* locate attribute index */
-  for (i=0;i<cmor_grids[grid_id].nattributes;i++) {
-    if (strcmp(name,cmor_grids[grid_id].attributes_names[i])==0) iatt=i;
-  }
-
-  if (iatt==cmor_grids[grid_id].nattributes) cmor_grids[grid_id].nattributes++;
-
-  /* loop thru attributes */
-  if (strcmp(name,"false_easting")==0) {
-    j=-1;
-    for (i=0;i<cmor_grids[grid_id].ndims;i++) {
-      cmor_get_axis_attribute(cmor_grids[grid_id].axes_ids[i],"standard_name",'c',&ctmp[0]);
-      if (strcmp(ctmp,"projection_x_coordinate")==0) j=i;
-    }
-    if (j==-1) {
-      snprintf(ctmp,CMOR_MAX_STRING,"grid mapping attribute: 'false easting' must be set in conjunction with ut_cmor_a 'projection_x_coordinate' axis, I could not find such an axis on your grid, we will not set this attribute");
-      cmor_handle_error(ctmp,CMOR_NORMAL);
-      cmor_pop_traceback();
-      return 1;
-    }
-    cmor_get_axis_attribute(cmor_grids[grid_id].axes_ids[j],"units",'c',&ctmp[0]);
-    cmor_convert_value(units,ctmp,&tmp);
-  }
-  else if (strcmp(name,"false_northing")==0) {
-    j=-1;
-    for (i=0;i<cmor_grids[grid_id].ndims;i++) {
-      cmor_get_axis_attribute(cmor_grids[grid_id].axes_ids[i],"standard_name",'c',&ctmp[0]);
-      if (strcmp(ctmp,"projection_y_coordinate")==0) j=i;
-    }
-    if (j==-1) {
-      snprintf(ctmp,CMOR_MAX_STRING,"grid mapping attribute: 'false easting' must be set in conjunction with a 'projection_x_coordinate' axis, I could not find such an axis on your grid, we will not set this attribute");
-      cmor_handle_error(ctmp,CMOR_NORMAL);
-      cmor_pop_traceback();
-      return 1;
-    }
-    cmor_get_axis_attribute(cmor_grids[grid_id].axes_ids[j],"units",'c',&ctmp[0]);
-    cmor_convert_value(units,ctmp,&tmp);
-  }
-  else if (strcmp(name,"grid_north_pole_latitude")==0 || strcmp(name,"latitude_of_projection_origin")==0 || strcmp(name,"standard_parallel")==0 || strcmp(name,"standard_parallel1")==0 || strcmp(name,"standard_parallel2")==0 ) {
-    strcpy(ctmp,"degrees_north");
-    cmor_convert_value(units,ctmp,&tmp);
-    if ((tmp<-90) || (tmp>90.)) {
-      snprintf(msg,CMOR_MAX_STRING,"%s parameter must be between -90 and 90 %s, will not be set",name,ctmp);
-      cmor_handle_error(msg,CMOR_NORMAL);
-      cmor_pop_traceback();
-      return 1;
+int cmor_has_grid_attribute( int gid, char *name ) {
+    int i;
+    int grid_id;
+
+    grid_id = -gid - CMOR_MAX_GRIDS;
+    for( i = 0; i < cmor_grids[grid_id].nattributes; i++ ) {
+	if( strcmp( name, cmor_grids[grid_id].attributes_names[i] ) == 0 )
+	    return(0);
     }
-  }
-  else if (strcmp(name,"grid_north_pole_longitude")==0 || strcmp(name,"longitude_of_prime_meridian")==0 || strcmp(name,"longitude_of_central_meridian")==0 || strcmp(name,"longitude_of_projection_origin")==0 || strcmp(name,"north_pole_grid_longitude")==0 || strcmp(name,"straight_vertical_longitude_from_pole")==0) {
-    strcpy(ctmp,"degrees_east");
-    cmor_convert_value(units,ctmp,&tmp);
-    if ((tmp<-180) || (tmp>180.)) {
-      snprintf(msg,CMOR_MAX_STRING,"%s parameter must be between -180 and 180 %s, will not be set",name,ctmp);
-      cmor_handle_error(msg,CMOR_NORMAL);
-      cmor_pop_traceback();
-      return 1;
+    return(1);
+}
+/************************************************************************/
+/*                      cmor_get_grid_attribute()                       */
+/************************************************************************/
+
+int cmor_get_grid_attribute( int gid, char *name, double *value ) {
+    int i, j;
+    int grid_id;
+
+    grid_id = -gid - CMOR_MAX_GRIDS;
+    j = -1;
+    for( i = 0; i < cmor_grids[grid_id].nattributes; i++ ) {
+	if( strcmp( name, cmor_grids[grid_id].attributes_names[i] ) == 0 )
+	    j = i;
     }
-  }
-  else if (strcmp(name,"perspective_point_height")==0 || strcmp(name,"semi_major_axis")==0 || strcmp(name,"semi_minor_axis")==0 ) {
-    strcpy(ctmp,"m");
-    cmor_convert_value(units,ctmp,&tmp);
-  }
-  else if (strcmp(name,"scale_factor_at_central_meridian")==0 || strcmp(name,"scale_factor_at_projection_origin")==0 ) {
-    strcpy(ctmp,"m");
-    cmor_convert_value(units,ctmp,&tmp);
-    if (tmp<0) {
-      snprintf(msg,CMOR_MAX_STRING,"%s parameter must be between positive, will not be set",name);
-      cmor_handle_error(msg,CMOR_NORMAL);
-      cmor_pop_traceback();
-      return 1;
+    if( j != -1 ) {
+	*value = cmor_grids[grid_id].attributes_values[j];
+	return(0);
     }
-  }
-  /*printf("setting: %s to %lf (orig: %lf)\n",name,tmp,value);*/
-  strncpy(cmor_grids[grid_id].attributes_names[iatt],name,CMOR_MAX_STRING);
-  cmor_grids[grid_id].attributes_values[iatt] = tmp;
-  cmor_pop_traceback();
-  return 0;
+    return(1);
 }
+/************************************************************************/
+/*                         cmor_convert_value()                         */
+/************************************************************************/
 
-int cmor_attribute_in_list(char *name, int n, char (*atts)[CMOR_MAX_STRING]) {
-  int i,found=1;
+void cmor_convert_value( char *units, char *ctmp, double *tmp ) {
+/* -------------------------------------------------------------------- */
+/*      Local variables                                                 */
+/* -------------------------------------------------------------------- */
+    ut_unit *user_units = NULL, *cmor_units = NULL;
+    cv_converter *ut_cmor_converter = NULL;
+    double value;
+    char msg[CMOR_MAX_STRING];
 
-  for (i=0;i<n;i++) {
-    if (strcmp(name,atts[i])==0) found=0;
-  }
-  return found;
-}
 
-int cmor_grid_valid_mapping_attribute_names(char *name, int *natt, char (*att)[CMOR_MAX_STRING],int *ndims, char (*dims)[CMOR_MAX_STRING]){
-  int i,j;
-
-  *natt = -1; /* -1 means mapping name not found */
-  *ndims=0;
-/*   printf("mapping name: %s\n",name); */
-  if (strcmp(name,"albers_conical_equal_area")==0) {
-    *natt = 5;
-    strcpy(att[0],"standard_parallel"); 
-    strcpy(att[1],"longitude_of_central_meridian"); 
-    strcpy(att[2],"latitude_of_projection_origin"); 
-    strcpy(att[3],"false_easting"); 
-    strcpy(att[4],"false_northing"); 
-    *ndims=2;
-    strcpy(dims[0],"projection_y_coordinate");
-    strcpy(dims[1],"projection_x_coordinate");
-  }
-  else if (strcmp(name,"azimuthal_equidistant")==0) {
-    *natt = 4;
-    strcpy(att[0],"longitude_of_projection_origin");
-    strcpy(att[1],"latitude_of_projection_origin");
-    strcpy(att[2],"false_easting"); 
-    strcpy(att[3],"false_northing"); 
-    *ndims=2;
-    strcpy(dims[0],"projection_y_coordinate");
-    strcpy(dims[1],"projection_x_coordinate");
-  }
-  else if (strcmp(name,"lambert_azimuthal_equal_area")==0) {
-    *natt = 4;
-    strcpy(att[0],"longitude_of_projection_origin");
-    strcpy(att[1],"latitude_of_projection_origin");
-    strcpy(att[2],"false_easting"); 
-    strcpy(att[3],"false_northing"); 
-    *ndims=2;
-    strcpy(dims[0],"projection_y_coordinate");
-    strcpy(dims[1],"projection_x_coordinate");
-  }
-  else if (strcmp(name,"lambert_conformal_conic")==0) {
-    *natt = 5;
-    strcpy(att[0],"standard_parallel"); 
-    strcpy(att[1],"longitude_of_central_meridian"); 
-    strcpy(att[2],"latitude_of_projection_origin"); 
-    strcpy(att[3],"false_easting"); 
-    strcpy(att[4],"false_northing"); 
-    *ndims=2;
-    strcpy(dims[0],"projection_y_coordinate");
-    strcpy(dims[1],"projection_x_coordinate");
-  }
-  else if (strcmp(name,"lambert_cylindrical_equal_area")==0) {
-    *natt = 5;
-    strcpy(att[0],"standard_parallel"); 
-    strcpy(att[1],"longitude_of_central_meridian"); 
-    strcpy(att[2],"scale_factor_at_projection_origin"); 
-    strcpy(att[3],"false_easting"); 
-    strcpy(att[4],"false_northing"); 
-    *ndims=2;
-    strcpy(dims[0],"projection_y_coordinate");
-    strcpy(dims[1],"projection_x_coordinate");
-  }
-  else if (strcmp(name,"latitude_longitude")==0) {
-    *natt=0;
-    *ndims=0;
-  }
-  else if (strcmp(name,"mercator")==0) {
-    *natt = 5;
-    strcpy(att[0],"standard_parallel"); 
-    strcpy(att[1],"longitude_of_projection_origin"); 
-    strcpy(att[2],"scale_factor_at_projection_origin"); 
-    strcpy(att[3],"false_easting"); 
-    strcpy(att[4],"false_northing"); 
-    *ndims=2;
-    strcpy(dims[0],"projection_y_coordinate");
-    strcpy(dims[1],"projection_x_coordinate");
-  }
-  else if (strcmp(name,"orthographic")==0) {
-    *natt = 4;
-    strcpy(att[0],"longitude_of_projection_origin"); 
-    strcpy(att[1],"latitude_of_projection_origin"); 
-    strcpy(att[2],"scale_factor_at_projection_origin"); 
-    strcpy(att[3],"false_easting"); 
-    strcpy(att[4],"false_northing"); 
-    *ndims=2;
-    strcpy(dims[0],"projection_x_coordinate");
-    strcpy(dims[1],"projection_y_coordinate");
-  }
-  else if (strcmp(name,"polar_stereographic")==0) {
-    *natt=6;
-    strcpy(att[0],"straight_vertical_longitude_from_pole"); 
-    strcpy(att[1],"latitude_of_projection_origin");
-    strcpy(att[2],"standard_parallel"); 
-    strcpy(att[3],"scale_factor_at_projection_origin"); 
-    strcpy(att[4],"false_easting"); 
-    strcpy(att[5],"false_northing"); 
-    *ndims=2;
-    strcpy(dims[0],"projection_y_coordinate");
-    strcpy(dims[1],"projection_x_coordinate");
-  }
-  else if (strcmp(name,"rotated_latitude_longitude")==0) {
-    *natt=3;
-    strcpy(att[0],"grid_north_pole_latitude"); 
-    strcpy(att[1],"grid_north_pole_longitude"); 
-    strcpy(att[2],"north_pole_grid_longitude"); 
-    *ndims=2;
-    strcpy(dims[0],"grid_latitude");
-    strcpy(dims[1],"grid_longitude");
-  }
-  else if (strcmp(name,"stereographic")==0) {
-    *natt=5;
-    strcpy(att[0],"longitude_of_projection_origin");
-    strcpy(att[1],"latitude_of_projection_origin");
-    strcpy(att[2],"scale_factor_at_projection_origin"); 
-    strcpy(att[3],"false_easting"); 
-    strcpy(att[4],"false_northing"); 
-    *ndims=2;
-    strcpy(dims[0],"projection_y_coordinate");
-    strcpy(dims[1],"projection_x_coordinate");
-  }
-  else if (strcmp(name,"transverse_mercator")==0) {
-    *natt=5;
-    strcpy(att[0],"scale_factor_at_central_meridian"); 
-    strcpy(att[1],"longitude_of_central_meridian"); 
-    strcpy(att[2],"latitude_of_projection_origin"); 
-    strcpy(att[3],"false_easting"); 
-    strcpy(att[4],"false_northing"); 
-    *ndims=2;
-    strcpy(dims[0],"projection_y_coordinate");
-    strcpy(dims[1],"projection_x_coordinate");
-  }
-  else if (strcmp(name,"vertical_perspective")==0) {
-    *natt=5;
-    strcpy(att[0],"longitude_of_projection_origin");
-    strcpy(att[1],"latitude_of_projection_origin");
-    strcpy(att[2],"perspective_height_point"); 
-    strcpy(att[3],"false_easting"); 
-    strcpy(att[4],"false_northing"); 
-    *ndims=2;
-    strcpy(dims[0],"projection_y_coordinate");
-    strcpy(dims[1],"projection_x_coordinate");
-  }
-
-  /* Now looks up in table */
-  for (i=0;i<cmor_tables[CMOR_TABLE].nmappings;i++) {
-    if (strcmp(name,cmor_tables[CMOR_TABLE].mappings[i].id)==0) { /* ok that is the mapping */
-      *natt = cmor_tables[CMOR_TABLE].mappings[i].nattributes;
-      for (j=0;j<cmor_tables[CMOR_TABLE].mappings[i].nattributes;j++) {
-	strcpy(att[j],cmor_tables[CMOR_TABLE].mappings[i].attributes_names[j]);
-      }
-    }
-  }
-
-  if (*natt!=-1) {
-    strcpy(att[*natt+0],"earth_radius");
-    strcpy(att[*natt+1],"inverse_flattening");
-    strcpy(att[*natt+2],"longitude_of_prime_meridian");
-    strcpy(att[*natt+3],"perspective_point_height");
-    strcpy(att[*natt+4],"semi_major_axis");
-    strcpy(att[*natt+5],"semi_minor_axis");
-    *natt = *natt+6;
-  }
-  return 0;
+    cmor_add_traceback( "cmor_convert_value" );
+
+    value = *tmp;
+    if( units[0] != '\0' ) {
+	cmor_prep_units( ctmp, units, &cmor_units, &user_units,
+			 &ut_cmor_converter );
+	*tmp = cv_convert_double( ut_cmor_converter, value );
+	if( ut_get_status(  ) != UT_SUCCESS ) {
+	    snprintf( msg, CMOR_MAX_STRING,
+		      "Udunits: Error converting units from %s to %s",
+		      units, ctmp );
+	    cmor_handle_error( msg, CMOR_CRITICAL );
+	}
+
+	cv_free( ut_cmor_converter );
+	if( ut_get_status(  ) != UT_SUCCESS ) {
+	    snprintf( msg, CMOR_MAX_STRING,
+		      "Udunits: Error freeing converter" );
+	    cmor_handle_error( msg, CMOR_CRITICAL );
+	}
+	ut_free( cmor_units );
+	if( ut_get_status(  ) != UT_SUCCESS ) {
+	    snprintf( msg, CMOR_MAX_STRING,
+		      "Udunits: Error freeing units" );
+	    cmor_handle_error( msg, CMOR_CRITICAL );
+	}
+	ut_free( user_units );
+	if( ut_get_status(  ) != UT_SUCCESS ) {
+	    snprintf( msg, CMOR_MAX_STRING,
+		      "Udunits: Error freeing units" );
+	    cmor_handle_error( msg, CMOR_CRITICAL );
+	}
+    } else
+	*tmp = value;
+    cmor_pop_traceback(  );
+    return;
 }
+/************************************************************************/
+/*                      cmor_set_grid_attribute()                       */
+/************************************************************************/
 
-void cmor_set_mapping_attribute(cmor_mappings_t *mapping,char att[CMOR_MAX_STRING],char val[CMOR_MAX_STRING] )
-{
-  int i,n;
-  char msg[CMOR_MAX_STRING];
-
-  cmor_add_traceback("cmor_set_mapping_attribute");
-  if (strcmp(att,"coordinates")==0) {
-    strncpy(mapping->coordinates,val,CMOR_MAX_STRING);
-  }
-  else if (strcmp(att,"parameter")==0) {
-    n=-1;
-    for (i=0;i<mapping->nattributes;i++) {
-      if (strcmp(mapping->attributes_names[i],val)==0) {
-	n=i;
-	break;
-      }
+int cmor_set_grid_attribute( int gid, char *name, double *value,
+			     char *units ) {
+    int i, j, iatt;
+    int grid_id;
+    char ctmp[CMOR_MAX_STRING];
+    char msg[CMOR_MAX_STRING];
+    double tmp;
+
+    cmor_add_traceback( "cmor_set_grid_attribute" );
+    grid_id = -gid - CMOR_MAX_GRIDS;
+    iatt = cmor_grids[grid_id].nattributes;
+    tmp = *value;
+
+/* -------------------------------------------------------------------- */
+/*      locate attribute index                                          */
+/* -------------------------------------------------------------------- */
+
+    for( i = 0; i < cmor_grids[grid_id].nattributes; i++ ) {
+	if( strcmp( name, cmor_grids[grid_id].attributes_names[i] ) == 0 )
+	    iatt = i;
     }
-    if (n==-1) {
-      n = mapping->nattributes;
-      mapping->nattributes++;
+
+    if( iatt == cmor_grids[grid_id].nattributes )
+	cmor_grids[grid_id].nattributes++;
+
+/* -------------------------------------------------------------------- */
+/*      loop thru attributes                                            */
+/* -------------------------------------------------------------------- */
+
+    if( strcmp( name, "false_easting" ) == 0 ) {
+	j = -1;
+	for( i = 0; i < cmor_grids[grid_id].ndims; i++ ) {
+	    cmor_get_axis_attribute( cmor_grids[grid_id].axes_ids[i],
+				     "standard_name", 'c', &ctmp[0] );
+	    if( strcmp( ctmp, "projection_x_coordinate" ) == 0 )
+		j = i;
+	}
+	if( j == -1 ) {
+	    snprintf( ctmp, CMOR_MAX_STRING,
+		      "grid mapping attribute: 'false easting' must be set in conjunction with ut_cmor_a 'projection_x_coordinate' axis, I could not find such an axis on your grid, we will not set this attribute" );
+	    cmor_handle_error( ctmp, CMOR_NORMAL );
+	    cmor_pop_traceback(  );
+	    return(1);
+	}
+	cmor_get_axis_attribute( cmor_grids[grid_id].axes_ids[j], "units",
+				 'c', &ctmp[0] );
+	cmor_convert_value( units, ctmp, &tmp );
+    } else if( strcmp( name, "false_northing" ) == 0 ) {
+	j = -1;
+	for( i = 0; i < cmor_grids[grid_id].ndims; i++ ) {
+	    cmor_get_axis_attribute( cmor_grids[grid_id].axes_ids[i],
+				     "standard_name", 'c', &ctmp[0] );
+	    if( strcmp( ctmp, "projection_y_coordinate" ) == 0 )
+		j = i;
+	}
+	if( j == -1 ) {
+	    snprintf( ctmp, CMOR_MAX_STRING,
+		      "grid mapping attribute: 'false easting' must be set in conjunction with a 'projection_x_coordinate' axis, I could not find such an axis on your grid, we will not set this attribute" );
+	    cmor_handle_error( ctmp, CMOR_NORMAL );
+	    cmor_pop_traceback(  );
+	    return(1);
+	}
+	cmor_get_axis_attribute( cmor_grids[grid_id].axes_ids[j], "units",
+				 'c', &ctmp[0] );
+	cmor_convert_value( units, ctmp, &tmp );
+    } else if( strcmp( name, "grid_north_pole_latitude" ) == 0
+	       || strcmp( name, "latitude_of_projection_origin" ) == 0
+	       || strcmp( name, "standard_parallel" ) == 0
+	       || strcmp( name, "standard_parallel1" ) == 0
+	       || strcmp( name, "standard_parallel2" ) == 0 ) {
+	strcpy( ctmp, "degrees_north" );
+	cmor_convert_value( units, ctmp, &tmp );
+	if( ( tmp < -90 ) || ( tmp > 90. ) ) {
+	    snprintf( msg, CMOR_MAX_STRING,
+		      "%s parameter must be between -90 and 90 %s, will not be set",
+		      name, ctmp );
+	    cmor_handle_error( msg, CMOR_NORMAL );
+	    cmor_pop_traceback(  );
+	    return(1);
+	}
+    } else if( strcmp( name, "grid_north_pole_longitude" ) == 0
+	       || strcmp( name, "longitude_of_prime_meridian" ) == 0
+	       || strcmp( name, "longitude_of_central_meridian" ) == 0
+	       || strcmp( name, "longitude_of_projection_origin" ) == 0
+	       || strcmp( name, "north_pole_grid_longitude" ) == 0
+	       || strcmp( name,
+			  "straight_vertical_longitude_from_pole" ) ==
+	       0 ) {
+	strcpy( ctmp, "degrees_east" );
+	cmor_convert_value( units, ctmp, &tmp );
+	if( ( tmp < -180 ) || ( tmp > 180. ) ) {
+	    snprintf( msg, CMOR_MAX_STRING,
+		      "%s parameter must be between -180 and 180 %s, will not be set",
+		      name, ctmp );
+	    cmor_handle_error( msg, CMOR_NORMAL );
+	    cmor_pop_traceback(  );
+	    return(1);
+	}
+    } else if( strcmp( name, "perspective_point_height" ) == 0
+	       || strcmp( name, "semi_major_axis" ) == 0
+	       || strcmp( name, "semi_minor_axis" ) == 0 ) {
+	strcpy( ctmp, "m" );
+	cmor_convert_value( units, ctmp, &tmp );
+    } else if( strcmp( name, "scale_factor_at_central_meridian" ) == 0
+	       || strcmp( name,
+			  "scale_factor_at_projection_origin" ) == 0 ) {
+	strcpy( ctmp, "m" );
+	cmor_convert_value( units, ctmp, &tmp );
+	if( tmp < 0 ) {
+	    snprintf( msg, CMOR_MAX_STRING,
+		      "%s parameter must be between positive, will not be set",
+		      name );
+	    cmor_handle_error( msg, CMOR_NORMAL );
+	    cmor_pop_traceback(  );
+	    return(1);
+	}
     }
-    strncpy(mapping->attributes_names[n],val,CMOR_MAX_STRING);
-  }
-  else {
-    snprintf(msg,CMOR_MAX_STRING,"Unknown attribute: '%s' for mapping '%s' (value was: '%s')",att,mapping->id,val);
-    cmor_handle_error(msg,CMOR_WARNING);
-  }
-  cmor_pop_traceback();
+    /*printf("setting: %s to %lf (orig: %lf)\n",name,tmp,value); */
+    strncpy( cmor_grids[grid_id].attributes_names[iatt], name,
+	     CMOR_MAX_STRING );
+    cmor_grids[grid_id].attributes_values[iatt] = tmp;
+    cmor_pop_traceback(  );
+    return(0);
 }
 
-int cmor_set_grid_mapping(int gid, char *name, int nparam, char **attributes_names, int lparams, double attributes_values[CMOR_MAX_GRID_ATTRIBUTES], char **units, int lnunits ){
-  int grid_id, nattributes,ndims;
-  int i,j,k,l;
-  char *achar,*bchar;
-  char lattributes_names[CMOR_MAX_GRID_ATTRIBUTES][CMOR_MAX_STRING];
-  char lunits[CMOR_MAX_GRID_ATTRIBUTES][CMOR_MAX_STRING];
-  char grid_attributes[CMOR_MAX_GRID_ATTRIBUTES][CMOR_MAX_STRING];
-  char msg[CMOR_MAX_STRING];
-  char msg2[CMOR_MAX_STRING];
-  char grid_dimensions[CMOR_MAX_DIMENSIONS][CMOR_MAX_STRING];
-
-  cmor_add_traceback("cmor_set_grid_mapping");
-  if (nparam>=CMOR_MAX_GRID_ATTRIBUTES) {
-    snprintf(msg,CMOR_MAX_STRING,"CMOR allows only %i grid parameters too be defined , you are trying to define %i parameters, if you really need that many recompile cmor changing the value of parameter: CMOR_MAX_GRID_ATTRIBUTES",CMOR_MAX_GRID_ATTRIBUTES,nparam);
-    cmor_handle_error(msg,CMOR_CRITICAL);
-  }
-  achar = (char *)attributes_names;
-  bchar = (char *)units;
-  for(i=0;i<nparam;i++) {
-    strncpy(lattributes_names[i],achar,CMOR_MAX_STRING);
-    strncpy(lunits[i],bchar,CMOR_MAX_STRING);
-    achar += lparams;
-    bchar += lnunits;
-  }
-/*   for(i=0;i<nparam;i++) printf("ok paramter: %i is: %s, with value %lf and units '%s'\n",i,lattributes_names[i],attributes_values[i],lunits[i]); */
-  grid_id =  -gid-CMOR_MAX_GRIDS;
-
-  /* reads in grid definitions */
-  cmor_grid_valid_mapping_attribute_names(name, &nattributes, grid_attributes,&ndims,grid_dimensions);
-
-/*   printf("coming back we haver set %i atts\n",nattributes); */
-/*   for (i=0;i<nattributes;i++) {printf("%i, %s, %s, %s\n",i,grid_attributes[i],grid_dimensions[0],grid_dimensions[1]);} */
-
-  if (ndims!=cmor_grids[grid_id].ndims) {
-    snprintf(msg,CMOR_MAX_STRING,"you defined your grid with %i axes but grid_mapping '%s' requires exactly %i axes",cmor_grids[grid_id].ndims,name,ndims);
-    cmor_handle_error(msg,CMOR_CRITICAL);
-  }
-
-  /* first of all depending on some grid names we need to make sure we have the right axes set in the right order */
-  k=0;
-  for(i=0;i<ndims;i++){
-    for(j=0;j<cmor_grids[grid_id].ndims;j++) {
-      cmor_get_axis_attribute(cmor_grids[grid_id].original_axes_ids[j],"standard_name",'c',&msg);
-      if (strcmp(grid_dimensions[i],msg)==0) {
-	cmor_grids[grid_id].axes_ids[i]=cmor_grids[grid_id].original_axes_ids[j];
-	/* Now we probably need to alter the lat/lon,etc.. associated variables as well ! */
-	for (l=0;l<4;l++) {
-	  if (cmor_vars[cmor_grids[cmor_ngrids].associated_variables[l]].ndims!=0) {
-	    cmor_vars[cmor_grids[cmor_ngrids].associated_variables[l]].axes_ids[i]=cmor_grids[grid_id].original_axes_ids[j];
-	  }
-	}
-	k++;
-      }
+/************************************************************************/
+/*                       cmor_attribute_in_list()                       */
+/************************************************************************/
+
+int cmor_attribute_in_list( char *name, int n,
+			    char ( *atts )[CMOR_MAX_STRING] ) {
+    int i, found = 1;
+
+    for( i = 0; i < n; i++ ) {
+	if( strcmp( name, atts[i] ) == 0 )
+	    found = 0;
     }
-  }
-
-
-  if (k!=ndims) {
-    snprintf(msg,CMOR_MAX_STRING,"setting grid mapping to '%s' we could not find all the required axes, required axes are:",name);
-    for (i=0;i<ndims;i++) {snprintf(msg2,CMOR_MAX_STRING," %s",grid_dimensions[i]);strncat(msg,msg2,CMOR_MAX_STRING-strlen(msg) );}
-    cmor_handle_error(msg,CMOR_CRITICAL);
-  }
-
-  
-  for (i=0;i<nparam;i++) {
-    if (cmor_attribute_in_list(lattributes_names[i],nattributes, &grid_attributes[0])==1) {
-      if ((strcmp(lattributes_names[i],"standard_parallel1")==0 || strcmp(lattributes_names[i],"standard_parallel2")==0) && ( strcmp(name,"lambert_conformal_conic")==0)) {/* ok do nothing it is just that we need 2 values for this parameter */
-	cmor_set_grid_attribute(gid,lattributes_names[i],&attributes_values[i],lunits[i]);
-     }
-      else {
-	snprintf(msg,CMOR_MAX_STRING,"in grid_mapping, attribute '%s' (with value: %lf) is not a known attribute for grid mapping: '%s'",lattributes_names[i],attributes_values[i],name);
-	cmor_handle_error(msg,CMOR_WARNING);
-      }
+    return(found);
+}
+/************************************************************************/
+/*              cmor_grid_valid_mapping_attribute_names()               */
+/************************************************************************/
+
+int cmor_grid_valid_mapping_attribute_names( char *name, int *natt,
+					     char ( *att )
+					     [CMOR_MAX_STRING], int *ndims,
+					     char ( *dims )
+					     [CMOR_MAX_STRING] ) {
+    int i, j;
+
+    *natt = -1;			/* -1 means mapping name not found */
+    *ndims = 0;
+
+    if( strcmp( name, "albers_conical_equal_area" ) == 0 ) {
+	*natt = 5;
+	strcpy( att[0], "standard_parallel" );
+	strcpy( att[1], "longitude_of_central_meridian" );
+	strcpy( att[2], "latitude_of_projection_origin" );
+	strcpy( att[3], "false_easting" );
+	strcpy( att[4], "false_northing" );
+	*ndims = 2;
+	strcpy( dims[0], "projection_y_coordinate" );
+	strcpy( dims[1], "projection_x_coordinate" );
+    } else if( strcmp( name, "azimuthal_equidistant" ) == 0 ) {
+	*natt = 4;
+	strcpy( att[0], "longitude_of_projection_origin" );
+	strcpy( att[1], "latitude_of_projection_origin" );
+	strcpy( att[2], "false_easting" );
+	strcpy( att[3], "false_northing" );
+	*ndims = 2;
+	strcpy( dims[0], "projection_y_coordinate" );
+	strcpy( dims[1], "projection_x_coordinate" );
+    } else if( strcmp( name, "lambert_azimuthal_equal_area" ) == 0 ) {
+	*natt = 4;
+	strcpy( att[0], "longitude_of_projection_origin" );
+	strcpy( att[1], "latitude_of_projection_origin" );
+	strcpy( att[2], "false_easting" );
+	strcpy( att[3], "false_northing" );
+	*ndims = 2;
+	strcpy( dims[0], "projection_y_coordinate" );
+	strcpy( dims[1], "projection_x_coordinate" );
+    } else if( strcmp( name, "lambert_conformal_conic" ) == 0 ) {
+	*natt = 5;
+	strcpy( att[0], "standard_parallel" );
+	strcpy( att[1], "longitude_of_central_meridian" );
+	strcpy( att[2], "latitude_of_projection_origin" );
+	strcpy( att[3], "false_easting" );
+	strcpy( att[4], "false_northing" );
+	*ndims = 2;
+	strcpy( dims[0], "projection_y_coordinate" );
+	strcpy( dims[1], "projection_x_coordinate" );
+    } else if( strcmp( name, "lambert_cylindrical_equal_area" ) == 0 ) {
+	*natt = 5;
+	strcpy( att[0], "standard_parallel" );
+	strcpy( att[1], "longitude_of_central_meridian" );
+	strcpy( att[2], "scale_factor_at_projection_origin" );
+	strcpy( att[3], "false_easting" );
+	strcpy( att[4], "false_northing" );
+	*ndims = 2;
+	strcpy( dims[0], "projection_y_coordinate" );
+	strcpy( dims[1], "projection_x_coordinate" );
+    } else if( strcmp( name, "latitude_longitude" ) == 0 ) {
+	*natt = 0;
+	*ndims = 0;
+    } else if( strcmp( name, "mercator" ) == 0 ) {
+	*natt = 5;
+	strcpy( att[0], "standard_parallel" );
+	strcpy( att[1], "longitude_of_projection_origin" );
+	strcpy( att[2], "scale_factor_at_projection_origin" );
+	strcpy( att[3], "false_easting" );
+	strcpy( att[4], "false_northing" );
+	*ndims = 2;
+	strcpy( dims[0], "projection_y_coordinate" );
+	strcpy( dims[1], "projection_x_coordinate" );
+    } else if( strcmp( name, "orthographic" ) == 0 ) {
+	*natt = 4;
+	strcpy( att[0], "longitude_of_projection_origin" );
+	strcpy( att[1], "latitude_of_projection_origin" );
+	strcpy( att[2], "scale_factor_at_projection_origin" );
+	strcpy( att[3], "false_easting" );
+	strcpy( att[4], "false_northing" );
+	*ndims = 2;
+	strcpy( dims[0], "projection_x_coordinate" );
+	strcpy( dims[1], "projection_y_coordinate" );
+    } else if( strcmp( name, "polar_stereographic" ) == 0 ) {
+	*natt = 6;
+	strcpy( att[0], "straight_vertical_longitude_from_pole" );
+	strcpy( att[1], "latitude_of_projection_origin" );
+	strcpy( att[2], "standard_parallel" );
+	strcpy( att[3], "scale_factor_at_projection_origin" );
+	strcpy( att[4], "false_easting" );
+	strcpy( att[5], "false_northing" );
+	*ndims = 2;
+	strcpy( dims[0], "projection_y_coordinate" );
+	strcpy( dims[1], "projection_x_coordinate" );
+    } else if( strcmp( name, "rotated_latitude_longitude" ) == 0 ) {
+	*natt = 3;
+	strcpy( att[0], "grid_north_pole_latitude" );
+	strcpy( att[1], "grid_north_pole_longitude" );
+	strcpy( att[2], "north_pole_grid_longitude" );
+	*ndims = 2;
+	strcpy( dims[0], "grid_latitude" );
+	strcpy( dims[1], "grid_longitude" );
+    } else if( strcmp( name, "stereographic" ) == 0 ) {
+	*natt = 5;
+	strcpy( att[0], "longitude_of_projection_origin" );
+	strcpy( att[1], "latitude_of_projection_origin" );
+	strcpy( att[2], "scale_factor_at_projection_origin" );
+	strcpy( att[3], "false_easting" );
+	strcpy( att[4], "false_northing" );
+	*ndims = 2;
+	strcpy( dims[0], "projection_y_coordinate" );
+	strcpy( dims[1], "projection_x_coordinate" );
+    } else if( strcmp( name, "transverse_mercator" ) == 0 ) {
+	*natt = 5;
+	strcpy( att[0], "scale_factor_at_central_meridian" );
+	strcpy( att[1], "longitude_of_central_meridian" );
+	strcpy( att[2], "latitude_of_projection_origin" );
+	strcpy( att[3], "false_easting" );
+	strcpy( att[4], "false_northing" );
+	*ndims = 2;
+	strcpy( dims[0], "projection_y_coordinate" );
+	strcpy( dims[1], "projection_x_coordinate" );
+    } else if( strcmp( name, "vertical_perspective" ) == 0 ) {
+	*natt = 5;
+	strcpy( att[0], "longitude_of_projection_origin" );
+	strcpy( att[1], "latitude_of_projection_origin" );
+	strcpy( att[2], "perspective_height_point" );
+	strcpy( att[3], "false_easting" );
+	strcpy( att[4], "false_northing" );
+	*ndims = 2;
+	strcpy( dims[0], "projection_y_coordinate" );
+	strcpy( dims[1], "projection_x_coordinate" );
     }
-    else {
-      cmor_set_grid_attribute(gid,lattributes_names[i],&attributes_values[i],lunits[i]);
+
+    /* Now looks up in table */
+    for( i = 0; i < cmor_tables[CMOR_TABLE].nmappings; i++ ) {
+
+	if( strcmp( name, cmor_tables[CMOR_TABLE].mappings[i].id ) == 0 ) {
+	    /* ok that is the mapping */
+	    *natt = cmor_tables[CMOR_TABLE].mappings[i].nattributes;
+	    for( j = 0;
+		 j < cmor_tables[CMOR_TABLE].mappings[i].nattributes;
+		 j++ ) {
+		strcpy( att[j],
+			cmor_tables[CMOR_TABLE].mappings[i].
+			attributes_names[j] );
+	    }
+	}
     }
-  }
-  /* checks all paramter (but last 6 which are optional) have been set */
-  for (i=0;i<nattributes-6;i++) {
-    if (cmor_has_grid_attribute(gid,grid_attributes[i])==1) {
-      snprintf(msg,CMOR_MAX_STRING,"Grid mapping attribute %s has not been set, you should consider setting it",grid_attributes[i]);
-      cmor_handle_error(msg,CMOR_WARNING);
+
+    if( *natt != -1 ) {
+	strcpy( att[*natt + 0], "earth_radius" );
+	strcpy( att[*natt + 1], "inverse_flattening" );
+	strcpy( att[*natt + 2], "longitude_of_prime_meridian" );
+	strcpy( att[*natt + 3], "perspective_point_height" );
+	strcpy( att[*natt + 4], "semi_major_axis" );
+	strcpy( att[*natt + 5], "semi_minor_axis" );
+	*natt = *natt + 6;
     }
-  }
-  /* ok finally we need to copy the name to the grid struct */
-  strncpy(cmor_grids[grid_id].mapping,name,CMOR_MAX_STRING);
-  cmor_pop_traceback();
-  return 0;
+    return(0);
 }
 
+void cmor_set_mapping_attribute( cmor_mappings_t * mapping,
+				 char att[CMOR_MAX_STRING],
+				 char val[CMOR_MAX_STRING] ) {
+    int i, n;
+    char msg[CMOR_MAX_STRING];
 
-int cmor_time_varying_grid_coordinate(int *coord_grid_id, int  grid_id, char *table_entry, char *units, char type, void *missing, int *coordinate_type) {
-  int ierr=0,j;
-  int axes[2];
-  char msg[CMOR_MAX_STRING];
-  int ctype=-1;
-  double *dummy_values;
-  int nvertices=cmor_grids[-grid_id-CMOR_MAX_GRIDS].nvertices;
+    cmor_add_traceback( "cmor_set_mapping_attribute" );
 
-  axes[0]=grid_id;
+    if( strcmp( att, "coordinates" ) == 0 ) {
 
-  cmor_add_traceback("cmor_time_varying_grid_coordinate");
-  cmor_is_setup();
+	strncpy( mapping->coordinates, val, CMOR_MAX_STRING );
+
+    } else if( strncmp( att, "parameter", 9 ) == 0 ) {
+
+	n = -1;
+
+	for( i = 0; i < mapping->nattributes; i++ ) {
+
+	    if( strcmp( mapping->attributes_names[i], val ) == 0 ) {
+		n = i;
+		break;
+	    }
+	}
+
+	if( n == -1 ) {
+	    n = mapping->nattributes;
+	    mapping->nattributes++;
+	}
+
+	strncpy( mapping->attributes_names[n], val, CMOR_MAX_STRING );
+
+    } else {
+
+	snprintf( msg, CMOR_MAX_STRING,
+		  "Unknown attribute: '%s' for mapping '%s' (value was: '%s')",
+		  att, mapping->id, val );
+	cmor_handle_error( msg, CMOR_WARNING );
 
-  strcpy(msg,"not found");
-  if (coordinate_type == NULL) {
-    for (j=0;j<cmor_tables[cmor_axes[cmor_grids[-grid_id-CMOR_MAX_GRIDS].axes_ids[0]].ref_table_id].nvars;j++) {
-      if (strcmp(cmor_tables[cmor_axes[cmor_grids[-grid_id-CMOR_MAX_GRIDS].axes_ids[0]].ref_table_id].vars[j].id,table_entry)==0) {
-	strncpy(msg,cmor_tables[cmor_axes[cmor_grids[-grid_id-CMOR_MAX_GRIDS].axes_ids[0]].ref_table_id].vars[j].standard_name,CMOR_MAX_STRING);
-	break;
-      }
-    }
-    if (strcmp(msg,"latitude")==0) ctype = 0;
-    if (strcmp(msg,"longitude")==0) ctype = 1;
-    if (strcmp(msg,"vertices_latitude")==0) ctype = 2;
-    if (strcmp(msg,"vertices_longitude")==0) ctype = 3;
-  }
-  else {
-    ctype = *coordinate_type;
-  }
-  switch (ctype) {
-  case (0) :
-    ierr = cmor_variable(coord_grid_id,table_entry,units,1,axes,type,missing,NULL,NULL,NULL,NULL,NULL);
-    cmor_grids[cmor_vars[*coord_grid_id].grid_id].associated_variables[0] = *coord_grid_id;
-    /* ??? additional attributes to add to this variable ? */
-    break;
-  case (1) :
-    ierr = cmor_variable(coord_grid_id,table_entry,units,1,axes,type,missing,NULL,NULL,NULL,NULL,NULL);
-    cmor_grids[cmor_vars[*coord_grid_id].grid_id].associated_variables[1] = *coord_grid_id;
-    /* ??? additional attributes to add to this variable ? */
-    break;
-  case (2) :
-    if (nvertices == 0 ) {
-      sprintf(msg,"your defining a vertices dependent variable (%s) associated wth grid %i, but you declared this grid as having 0 vertices",table_entry,grid_id);
-      cmor_handle_error(msg,CMOR_CRITICAL);
-    }
-    if (cmor_grids[cmor_vars[*coord_grid_id].grid_id].associated_variables[3] == -1) {
-      dummy_values=malloc(sizeof(double)*nvertices);
-      for (j=0;j<nvertices;j++) dummy_values[j]=(double)j;
-      cmor_axis(&axes[1],"vertices","1",nvertices,dummy_values,'d',NULL,0,NULL);
-      free(dummy_values);
-      cmor_grids[-grid_id-CMOR_MAX_GRIDS].nvertices = axes[1];
-    }
-    else {
-      axes[1] = cmor_grids[-grid_id-CMOR_MAX_GRIDS].nvertices;
     }
-    ierr = cmor_variable(coord_grid_id,table_entry,units,2,axes,type,missing,NULL,NULL,NULL,NULL,NULL);
-    cmor_grids[cmor_vars[*coord_grid_id].grid_id].associated_variables[2] = *coord_grid_id;
-    /* adds the bounds attribute */
-    if (cmor_has_variable_attribute(cmor_grids[cmor_vars[*coord_grid_id].grid_id].associated_variables[0],"bounds")==0) {
-      cmor_get_variable_attribute(cmor_grids[cmor_vars[*coord_grid_id].grid_id].associated_variables[0],"bounds",&msg);
-      strncat(msg," ",CMOR_MAX_STRING-strlen(msg) );
-      strncat(msg,cmor_vars[*coord_grid_id].id,CMOR_MAX_STRING-strlen(msg) );
+    cmor_pop_traceback(  );
+}
+/************************************************************************/
+/*                       cmor_set_grid_mapping()                        */
+/************************************************************************/
+
+int cmor_set_grid_mapping( int gid, char *name, int nparam,
+			   char **attributes_names, int lparams,
+			   double
+			   attributes_values[CMOR_MAX_GRID_ATTRIBUTES],
+			   char **units, int lnunits ) {
+    int grid_id, nattributes, ndims;
+    int i, j, k, l;
+    char *achar, *bchar;
+    char lattributes_names[CMOR_MAX_GRID_ATTRIBUTES][CMOR_MAX_STRING];
+    char lunits[CMOR_MAX_GRID_ATTRIBUTES][CMOR_MAX_STRING];
+    char grid_attributes[CMOR_MAX_GRID_ATTRIBUTES][CMOR_MAX_STRING];
+    char msg[CMOR_MAX_STRING];
+    char msg2[CMOR_MAX_STRING];
+    char grid_dimensions[CMOR_MAX_DIMENSIONS][CMOR_MAX_STRING];
+
+    cmor_add_traceback( "cmor_set_grid_mapping" );
+    if( nparam >= CMOR_MAX_GRID_ATTRIBUTES ) {
+	snprintf( msg, CMOR_MAX_STRING,
+		  "CMOR allows only %i grid parameters too be defined, "
+	          "you are trying to define %i parameters, if you really "
+	          "need that many recompile cmor changing the value of "
+	          "parameter: CMOR_MAX_GRID_ATTRIBUTES",
+		  CMOR_MAX_GRID_ATTRIBUTES, nparam );
+	cmor_handle_error( msg, CMOR_CRITICAL );
     }
-    else {
-      strncpy(msg,cmor_vars[*coord_grid_id].id,CMOR_MAX_STRING);
+    achar = ( char * ) attributes_names;
+    bchar = ( char * ) units;
+    for( i = 0; i < nparam; i++ ) {
+	strncpy( lattributes_names[i], achar, CMOR_MAX_STRING );
+	strncpy( lunits[i], bchar, CMOR_MAX_STRING );
+	achar += lparams;
+	bchar += lnunits;
     }
-    cmor_set_variable_attribute_internal(cmor_grids[cmor_vars[*coord_grid_id].grid_id].associated_variables[0],"bounds",'c',msg);
-    break;
-  case (3) :
-    if (nvertices == 0 ) {
-      sprintf(msg,"your defining a vertices dependent variable (%s) associated wth grid %i, but you declared this grid as having 0 vertices",table_entry,grid_id);
-      cmor_handle_error(msg,CMOR_CRITICAL);
+    grid_id = -gid - CMOR_MAX_GRIDS;
+
+/* -------------------------------------------------------------------- */
+/*      reads in grid definitions                                       */
+/* -------------------------------------------------------------------- */
+
+    cmor_grid_valid_mapping_attribute_names( name, &nattributes,
+					     grid_attributes, &ndims,
+					     grid_dimensions );
+
+    if( ndims != cmor_grids[grid_id].ndims ) {
+	snprintf( msg, CMOR_MAX_STRING,
+		  "you defined your grid with %i axes but grid_mapping "
+	          "'%s' requires exactly %i axes",
+		  cmor_grids[grid_id].ndims, name, ndims );
+	cmor_handle_error( msg, CMOR_CRITICAL );
     }
-    if (cmor_grids[cmor_vars[*coord_grid_id].grid_id].associated_variables[2] == -1) {
-      dummy_values=malloc(sizeof(double)*nvertices);
-      for (j=0;j<nvertices;j++) dummy_values[j]=(double)j;
-      cmor_axis(&axes[1],"vertices","1",nvertices,dummy_values,'d',NULL,0,NULL);
-      free(dummy_values);
-      cmor_grids[-grid_id-CMOR_MAX_GRIDS].nvertices = axes[1];
+
+/* -------------------------------------------------------------------- */
+/*      First of all depending on some grid names we need to make       */
+/*      sure we have the right axes set in the right order              */
+/* -------------------------------------------------------------------- */
+
+    k = 0;
+    for( i = 0; i < ndims; i++ ) {
+	for( j = 0; j < cmor_grids[grid_id].ndims; j++ ) {
+	    cmor_get_axis_attribute( cmor_grids[grid_id].
+				     original_axes_ids[j], "standard_name",
+				     'c', &msg );
+	    if( strcmp( grid_dimensions[i], msg ) == 0 ) {
+		cmor_grids[grid_id].axes_ids[i] =
+		    cmor_grids[grid_id].original_axes_ids[j];
+/* -------------------------------------------------------------------- */
+/*      Now we probably need to alter the lat/lon,etc.. associated      */
+/*      variables as well !                                             */
+/* -------------------------------------------------------------------- */
+
+		for( l = 0; l < 4; l++ ) {
+		    if( cmor_vars
+			[cmor_grids[cmor_ngrids].associated_variables[l]].
+			ndims != 0 ) {
+			cmor_vars[cmor_grids[cmor_ngrids].
+				  associated_variables[l]].axes_ids[i] =
+			    cmor_grids[grid_id].original_axes_ids[j];
+		    }
+		}
+		k++;
+	    }
+	}
     }
-    else {
-      axes[1] = cmor_grids[-grid_id-CMOR_MAX_GRIDS].nvertices;
+
+
+    if( k != ndims ) {
+	snprintf( msg, CMOR_MAX_STRING,
+		  "setting grid mapping to '%s' we could not find all "
+	          "the required axes, required axes are:",
+		  name );
+	for( i = 0; i < ndims; i++ ) {
+	    snprintf( msg2, CMOR_MAX_STRING, " %s", grid_dimensions[i] );
+	    strncat( msg, msg2, CMOR_MAX_STRING - strlen( msg ) );
+	}
+	cmor_handle_error( msg, CMOR_CRITICAL );
     }
-    ierr = cmor_variable(coord_grid_id,table_entry,units,2,axes,type,missing,NULL,NULL,NULL,NULL,NULL);
-    cmor_grids[cmor_vars[*coord_grid_id].grid_id].associated_variables[3] = *coord_grid_id;
-    /* adds the bounds attribute */
-    if (cmor_has_variable_attribute(cmor_grids[cmor_vars[*coord_grid_id].grid_id].associated_variables[1],"bounds")==0) {
-      cmor_get_variable_attribute(cmor_grids[cmor_vars[*coord_grid_id].grid_id].associated_variables[1],"bounds",&msg);
-      strncat(msg," ",CMOR_MAX_STRING-strlen(msg) );
-      strncat(msg,cmor_vars[*coord_grid_id].id,CMOR_MAX_STRING-strlen(msg) );
+
+
+    for( i = 0; i < nparam; i++ ) {
+	if( cmor_attribute_in_list
+	    ( lattributes_names[i], nattributes,
+	      &grid_attributes[0] ) == 1 ) {
+	    if( ( strcmp( lattributes_names[i], "standard_parallel1" ) == 0 ||
+	          strcmp( lattributes_names[i], "standard_parallel2" ) == 0 )
+	          && ( strcmp( name, "lambert_conformal_conic" ) == 0 ) ) {
+
+/* -------------------------------------------------------------------- */
+/*      ok do nothing it is just that we need 2 values for this         */
+/*      parameter                                                       */
+/* -------------------------------------------------------------------- */
+		
+		cmor_set_grid_attribute( gid, lattributes_names[i],
+					 &attributes_values[i],
+					 lunits[i] );
+	    } else {
+		snprintf( msg, CMOR_MAX_STRING,
+			  "in grid_mapping, attribute '%s' (with value: %lf) is not a known attribute for grid mapping: '%s'",
+			  lattributes_names[i], attributes_values[i],
+			  name );
+		cmor_handle_error( msg, CMOR_WARNING );
+	    }
+	} else {
+	    cmor_set_grid_attribute( gid, lattributes_names[i],
+				     &attributes_values[i], lunits[i] );
+	}
     }
-    else {
-      strncpy(msg,cmor_vars[*coord_grid_id].id,CMOR_MAX_STRING);
+/* -------------------------------------------------------------------- */
+/*      checks all paramter (but last 6 which are optional) have        */
+/*      been set                                                        */
+/* -------------------------------------------------------------------- */
+
+    for( i = 0; i < nattributes - 6; i++ ) {
+	if( cmor_has_grid_attribute( gid, grid_attributes[i] ) == 1 ) {
+	    snprintf( msg, CMOR_MAX_STRING,
+		      "Grid mapping attribute %s has not been set, you should consider setting it",
+		      grid_attributes[i] );
+	    cmor_handle_error( msg, CMOR_WARNING );
+	}
     }
-    cmor_set_variable_attribute_internal(cmor_grids[cmor_vars[*coord_grid_id].grid_id].associated_variables[1],"bounds",'c',msg);
-    break;
-  default:
-    sprintf(msg,"unknown coord type: %i",ctype);
-    cmor_handle_error(msg,CMOR_CRITICAL);
-    break;
-  }
-  cmor_vars[*coord_grid_id].needsinit=0;
-
-  cmor_pop_traceback();
-  return ierr;
+
+/* -------------------------------------------------------------------- */
+/*      Ok finally we need to copy the name to the grid struct          */
+/* -------------------------------------------------------------------- */
+
+    strncpy( cmor_grids[grid_id].mapping, name, CMOR_MAX_STRING );
+    cmor_pop_traceback(  );
+    return(0);
 }
 
-int cmor_grid(int *grid_id, int ndims, int *axes_ids, char type, void *lat, void *lon, int nvertices, void *blat, void *blon) {
-  int i,j,n,did_vertices=0;
-  char msg[CMOR_MAX_STRING];
-  int axes[2];
-  double *dummy_values;
-
-  cmor_add_traceback("cmor_grid");
-  if ((axes_ids==NULL) || (ndims==0)) {
-    snprintf(msg,CMOR_MAX_STRING,"You need to define the grid axes first");
-    cmor_handle_error(msg,CMOR_CRITICAL);
-  }
-  cmor_ngrids+=1;
-  if (cmor_ngrids>=CMOR_MAX_GRIDS) {
-    snprintf(msg,CMOR_MAX_STRING,"Too many grids defined, maximum possible grids is currently set to %i", CMOR_MAX_GRIDS);
-    cmor_handle_error(msg,CMOR_CRITICAL);
-  }
-  n=1;
-  for (i=0;i<ndims;i++) {
-    if (axes_ids[i]>cmor_naxes) {
-      snprintf(msg,CMOR_MAX_STRING,"Defining grid, Axis %i not defined yet",axes_ids[i]);
-      cmor_handle_error(msg,CMOR_CRITICAL);
-    }
-    if (cmor_tables[cmor_axes[axes_ids[i]].ref_table_id].axes[cmor_axes[axes_ids[i]].ref_axis_id].axis=='T') {
-      cmor_grids[cmor_ngrids].istimevarying = 1;
-/*       snprintf(msg,CMOR_MAX_STRING,"defining grid: axis: %s is time axis, grids are not allowed to be time-varying at the moment",cmor_axes[axes_ids[i]].id); */
-/*       cmor_handle_error(msg,CMOR_CRITICAL); */
-    }
-    cmor_grids[cmor_ngrids].original_axes_ids[i]=axes_ids[i];
-    cmor_grids[cmor_ngrids].axes_ids[i]=axes_ids[i];
-    cmor_axes[axes_ids[i]].isgridaxis=1;
-    n*=cmor_axes[axes_ids[i]].length;
-  }
-  cmor_grids[cmor_ngrids].ndims = ndims;
-  cmor_grids[cmor_ngrids].nvertices = nvertices;
-  if (lat==NULL) {
-    if (cmor_grids[cmor_ngrids].istimevarying != 1) {
-      snprintf(msg,CMOR_MAX_STRING,"you need to pass the latitude values when defining a grid");
-      cmor_handle_error(msg,CMOR_CRITICAL);
-    }
-  }
-  else {
-    axes[0]=-cmor_ngrids-CMOR_MAX_GRIDS;
-    if (cmor_grids[cmor_ngrids].istimevarying != 1) {
-      cmor_copy_data(&cmor_grids[cmor_ngrids].lats,lat,type,n);
-      cmor_variable(&cmor_grids[cmor_ngrids].associated_variables[0],"latitude","degrees_north",1,&axes[0],'d',NULL,NULL,NULL,NULL,NULL,NULL);
-      cmor_vars[cmor_grids[cmor_ngrids].associated_variables[0]].needsinit=0;
-      /*     for (i=0;i<5;i++) { */
-      /*       printf("%i:  %lf\n",i,cmor_grids[cmor_ngrids].lats[i]); */
-      /*     } */
+/************************************************************************/
+/*                 cmor_time_varying_grid_coordinate()                  */
+/************************************************************************/
+
+int cmor_time_varying_grid_coordinate( int *coord_grid_id, int grid_id,
+				       char *table_entry, char *units,
+				       char type, void *missing,
+				       int *coordinate_type ) {
+    int ierr = 0, j;
+    int axes[2];
+    char msg[CMOR_MAX_STRING];
+    int ctype = -1;
+    double *dummy_values;
+    cmor_grid_t *current_cmor_grids;
+
+    int nvertices;
+    int table_id;
+
+    axes[0] = grid_id;
+    current_cmor_grids = &cmor_grids[-grid_id - CMOR_MAX_GRIDS];
+    nvertices = current_cmor_grids->nvertices;
+    table_id = cmor_axes[current_cmor_grids->axes_ids[0]].ref_table_id;
+
+    cmor_add_traceback( "cmor_time_varying_grid_coordinate" );
+    cmor_is_setup(  );
+
+    strcpy( msg, "not found" );
+    if( coordinate_type == NULL ) {
+	for( j = 0; j < cmor_tables[table_id].nvars; j++ ) {
+	    if( strcmp( cmor_tables[table_id].vars[j].id, table_entry ) == 0 ) {
+		strncpy( msg, cmor_tables[table_id].vars[j].standard_name,
+			 CMOR_MAX_STRING );
+		break;
+	    }
+	}
+	if( strcmp( msg, "latitude" ) == 0 )
+	    ctype = 0;
+	if( strcmp( msg, "longitude" ) == 0 )
+	    ctype = 1;
+	if( strcmp( msg, "vertices_latitude" ) == 0 )
+	    ctype = 2;
+	if( strcmp( msg, "vertices_longitude" ) == 0 )
+	    ctype = 3;
+    } else {
+	ctype = *coordinate_type;
     }
-  }
-  if (lon==NULL) {
-    if (cmor_grids[cmor_ngrids].istimevarying != 1) {
-      snprintf(msg,CMOR_MAX_STRING,"you need to pass the longitude values when defining a grid");
-      cmor_handle_error(msg,CMOR_CRITICAL);
+    switch ( ctype ) {
+    case ( 0 ):
+	ierr =
+	    cmor_variable( coord_grid_id, table_entry, units, 1, axes,
+			   type, missing, NULL, NULL, NULL, NULL, NULL );
+	cmor_grids[cmor_vars[*coord_grid_id].grid_id].
+	    associated_variables[0] = *coord_grid_id;
+	break;
+    case ( 1 ):
+	ierr =
+	    cmor_variable( coord_grid_id, table_entry, units, 1, axes,
+			   type, missing, NULL, NULL, NULL, NULL, NULL );
+	cmor_grids[cmor_vars[*coord_grid_id].grid_id].
+	    associated_variables[1] = *coord_grid_id;
+
+	break;
+    case ( 2 ):
+	if( nvertices == 0 ) {
+	    sprintf( msg,
+		     "your defining a vertices dependent variable (%s) associated wth grid %i, but you declared this grid as having 0 vertices",
+		     table_entry, grid_id );
+	    cmor_handle_error( msg, CMOR_CRITICAL );
+	}
+	if( cmor_grids[cmor_vars[*coord_grid_id].grid_id].
+	        associated_variables[3] == -1 ) {
+	    dummy_values = malloc( sizeof ( double ) * nvertices );
+
+	    for( j = 0; j < nvertices; j++ ) {
+		dummy_values[j] = ( double ) j;
+	    }
+
+	    cmor_axis( &axes[1], "vertices", "1", nvertices, dummy_values,
+		       'd', NULL, 0, NULL );
+
+	    free( dummy_values );
+
+	    cmor_grids[-grid_id - CMOR_MAX_GRIDS].nvertices = axes[1];
+
+	} else {
+
+	    axes[1] = cmor_grids[-grid_id - CMOR_MAX_GRIDS].nvertices;
+
+	}
+	ierr =
+	    cmor_variable( coord_grid_id, table_entry, units, 2, axes,
+			   type, missing, NULL, NULL, NULL, NULL, NULL );
+
+	cmor_grids[cmor_vars[*coord_grid_id].grid_id].
+	    associated_variables[2] = *coord_grid_id;
+
+/* -------------------------------------------------------------------- */
+/*      adds the bounds attribute                                       */
+/* -------------------------------------------------------------------- */
+
+	if( cmor_has_variable_attribute
+	    ( cmor_grids[cmor_vars[*coord_grid_id].grid_id].
+	      associated_variables[0], "bounds" ) == 0 ) {
+
+	    cmor_get_variable_attribute( cmor_grids
+					 [cmor_vars[*coord_grid_id].
+					  grid_id].associated_variables[0],
+					 "bounds", &msg );
+
+	    strncat( msg, " ", CMOR_MAX_STRING - strlen( msg ) );
+	    strncat( msg, cmor_vars[*coord_grid_id].id,
+		     CMOR_MAX_STRING - strlen( msg ) );
+
+	} else {
+
+	    strncpy( msg, cmor_vars[*coord_grid_id].id, CMOR_MAX_STRING );
+
+	}
+
+	cmor_set_variable_attribute_internal( cmor_grids
+					      [cmor_vars[*coord_grid_id].grid_id].
+					      associated_variables[0],
+					      "bounds", 'c', msg );
+
+	break;
+    case ( 3 ):
+	if( nvertices == 0 ) {
+
+	    sprintf( msg,"your defining a vertices dependent "
+	             "variable (%s) associated with grid %i, "
+                      "but you declared this grid as having "
+	             "0 vertices",table_entry, grid_id );
+
+	    cmor_handle_error( msg, CMOR_CRITICAL );
+	}
+
+	if( cmor_grids[cmor_vars[*coord_grid_id].grid_id].
+	    associated_variables[2] == -1 ) {
+
+	    dummy_values = malloc( sizeof ( double ) * nvertices );
+
+	    for( j = 0; j < nvertices; j++ ) {
+		dummy_values[j] = ( double ) j;
+	    }
+	    cmor_axis( &axes[1], "vertices", "1", nvertices, dummy_values,
+		       'd', NULL, 0, NULL );
+
+	    free( dummy_values );
+
+	    cmor_grids[-grid_id - CMOR_MAX_GRIDS].nvertices = axes[1];
+
+	} else {
+
+	    axes[1] = cmor_grids[-grid_id - CMOR_MAX_GRIDS].nvertices;
+
+	}
+	ierr = cmor_variable( coord_grid_id, table_entry, units, 2, axes,
+			      type, missing, NULL, NULL, NULL, NULL, NULL );
+
+	cmor_grids[cmor_vars[*coord_grid_id].grid_id].
+	    associated_variables[3] = *coord_grid_id;
+
+	/* adds the bounds attribute */
+	if( cmor_has_variable_attribute(
+	        cmor_grids[cmor_vars[*coord_grid_id].grid_id].
+	        associated_variables[1], "bounds" ) == 0 ) {
+
+	    cmor_get_variable_attribute( cmor_grids
+					 [cmor_vars[*coord_grid_id].
+					  grid_id].associated_variables[1],
+					 "bounds", &msg );
+
+	    strncat( msg, " ", CMOR_MAX_STRING - strlen( msg ) );
+
+	    strncat( msg, cmor_vars[*coord_grid_id].id,
+		     CMOR_MAX_STRING - strlen( msg ) );
+
+	} else {
+
+	    strncpy( msg, cmor_vars[*coord_grid_id].id, CMOR_MAX_STRING );
+
+	}
+	cmor_set_variable_attribute_internal( cmor_grids
+					      [cmor_vars[*coord_grid_id].
+					       grid_id].
+					      associated_variables[1],
+					      "bounds", 'c', msg );
+	break;
+
+    default:
+
+	sprintf( msg, "unknown coord type: %i", ctype );
+	cmor_handle_error( msg, CMOR_CRITICAL );
+	break;
+
     }
-  }
-  else {
-    cmor_copy_data(&cmor_grids[cmor_ngrids].lons,lon,type,n);
-    axes[0]=-cmor_ngrids-CMOR_MAX_GRIDS;
-    /*     for (i=0;i<5;i++) printf("%i:  %lf\n",i,cmor_grids[cmor_ngrids].lons[i]); */
-    cmor_variable(&cmor_grids[cmor_ngrids].associated_variables[1],"longitude","degrees_east",1,&axes[0],'d',NULL,NULL,NULL,NULL,NULL,NULL);
-    cmor_vars[cmor_grids[cmor_ngrids].associated_variables[1]].needsinit=0;
-  }
-  if (blat==NULL) {
-    if (cmor_grids[cmor_ngrids].istimevarying != 1) {
-      snprintf(msg,CMOR_MAX_STRING,"it is recommended you pass the latitude bounds values when defining a grid");
-      cmor_handle_error(msg,CMOR_WARNING);
+    cmor_vars[*coord_grid_id].needsinit = 0;
+
+    cmor_pop_traceback(  );
+    return(ierr);
+}
+/************************************************************************/
+/*                             cmor_grid()                              */
+/************************************************************************/
+
+int cmor_grid( int *grid_id, int ndims, int *axes_ids, char type,
+	       void *lat, void *lon, int nvertices, void *blat,
+	       void *blon ) {
+
+    int i, j, n, did_vertices = 0;
+    char msg[CMOR_MAX_STRING];
+    int axes[2];
+    double *dummy_values;
+
+    cmor_add_traceback( "cmor_grid" );
+    if( ( axes_ids == NULL ) || ( ndims == 0 ) ) {
+	snprintf( msg, CMOR_MAX_STRING,
+		  "You need to define the grid axes first" );
+	cmor_handle_error( msg, CMOR_CRITICAL );
     }
-  }
-  else {
-    cmor_copy_data(&cmor_grids[cmor_ngrids].blats,blat,type,n*nvertices);
-    dummy_values=malloc(sizeof(double)*nvertices);
-    for (j=0;j<nvertices;j++) dummy_values[j]=(double)j;
-    cmor_axis(&axes[1],"vertices","1",nvertices,dummy_values,'d',NULL,0,NULL);
-    free(dummy_values);
-    did_vertices=1;
-    cmor_variable(&cmor_grids[cmor_ngrids].associated_variables[2],"vertices_latitude","degrees_north",2,&axes[0],'d',NULL,NULL,NULL,NULL,NULL,NULL);
-    cmor_vars[cmor_grids[cmor_ngrids].associated_variables[2]].needsinit=0;
-    if (cmor_has_variable_attribute(cmor_grids[cmor_ngrids].associated_variables[0],"bounds")==0) {
-      cmor_get_variable_attribute(cmor_grids[cmor_ngrids].associated_variables[0],"bounds",&msg);
-      strncat(msg," ",CMOR_MAX_STRING-strlen(msg) );
-      strncat(msg,cmor_vars[cmor_grids[cmor_ngrids].associated_variables[2]].id,CMOR_MAX_STRING-strlen(msg) );
+
+    cmor_ngrids += 1;
+
+    if( cmor_ngrids >= CMOR_MAX_GRIDS ) {
+	snprintf( msg, CMOR_MAX_STRING,
+		  "Too many grids defined, maximum possible "
+	          "grids is currently set to %i",
+		  CMOR_MAX_GRIDS );
+	cmor_handle_error( msg, CMOR_CRITICAL );
     }
-    else {
-      strncpy(msg,cmor_vars[cmor_grids[cmor_ngrids].associated_variables[2]].id,CMOR_MAX_STRING);
+
+    n = 1;
+
+    for( i = 0; i < ndims; i++ ) {
+
+        if( axes_ids[i] > cmor_naxes ) {
+	    snprintf( msg, CMOR_MAX_STRING,
+		      "Defining grid, Axis %i not defined yet",
+		      axes_ids[i] );
+	    cmor_handle_error( msg, CMOR_CRITICAL );
+	}
+
+        if( cmor_tables[cmor_axes[axes_ids[i]].ref_table_id].
+	    axes[cmor_axes[axes_ids[i]].ref_axis_id].axis == 'T' ) {
+	    cmor_grids[cmor_ngrids].istimevarying = 1;
+	}
+
+        cmor_grids[cmor_ngrids].original_axes_ids[i] = axes_ids[i];
+	cmor_grids[cmor_ngrids].axes_ids[i] = axes_ids[i];
+	cmor_axes[axes_ids[i]].isgridaxis = 1;
+	n *= cmor_axes[axes_ids[i]].length;
     }
-    cmor_set_variable_attribute_internal(cmor_grids[cmor_ngrids].associated_variables[0],"bounds",'c',msg);
-  }
-  if (blon==NULL) {
-    if (cmor_grids[cmor_ngrids].istimevarying != 1) {
-      snprintf(msg,CMOR_MAX_STRING,"it is recommended you pass the longitude bounds values when defining a grid");
-      cmor_handle_error(msg,CMOR_WARNING);
+
+    cmor_grids[cmor_ngrids].ndims = ndims;
+    cmor_grids[cmor_ngrids].nvertices = nvertices;
+
+    if( lat == NULL ) {
+
+	if( cmor_grids[cmor_ngrids].istimevarying != 1 ) {
+	    snprintf( msg, CMOR_MAX_STRING,
+		      "you need to pass the latitude values when defining a grid" );
+	    cmor_handle_error( msg, CMOR_CRITICAL );
+	}
+
+    } else {
+	axes[0] = -cmor_ngrids - CMOR_MAX_GRIDS;
+	if( cmor_grids[cmor_ngrids].istimevarying != 1 ) {
+	    cmor_copy_data( &cmor_grids[cmor_ngrids].lats, lat, type, n );
+	    cmor_variable( &cmor_grids[cmor_ngrids].
+			   associated_variables[0], "latitude",
+			   "degrees_north", 1, &axes[0], 'd', NULL, NULL,
+			   NULL, NULL, NULL, NULL );
+	    cmor_vars[cmor_grids[cmor_ngrids].associated_variables[0]].
+		needsinit = 0;
+	}
     }
-  }
-  else {
-    cmor_copy_data(&cmor_grids[cmor_ngrids].blons,blon,type,n*nvertices);
-    if (did_vertices == 0 ) {
-      dummy_values=malloc(sizeof(double)*nvertices);
-      for (j=0;j<nvertices;j++) dummy_values[j]=(double)j;
-      cmor_axis(&axes[1],"vertices","1",nvertices,dummy_values,'d',NULL,0,NULL);
-      free(dummy_values);
+
+    if( lon == NULL ) {
+
+	if( cmor_grids[cmor_ngrids].istimevarying != 1 ) {
+	    snprintf( msg, CMOR_MAX_STRING,
+		      "you need to pass the longitude values when "
+	              "defining a grid" );
+	    cmor_handle_error( msg, CMOR_CRITICAL );
+	}
+
+    } else {
+	cmor_copy_data( &cmor_grids[cmor_ngrids].lons, lon, type, n );
+	axes[0] = -cmor_ngrids - CMOR_MAX_GRIDS;
+
+	cmor_variable( &cmor_grids[cmor_ngrids].associated_variables[1],
+		       "longitude", "degrees_east", 1, &axes[0], 'd', NULL,
+		       NULL, NULL, NULL, NULL, NULL );
+	cmor_vars[cmor_grids[cmor_ngrids].associated_variables[1]].
+	    needsinit = 0;
     }
-    cmor_variable(&cmor_grids[cmor_ngrids].associated_variables[3],"vertices_longitude","degrees_east",2,&axes[0],'d',NULL,NULL,NULL,NULL,NULL,NULL);
-    cmor_vars[cmor_grids[cmor_ngrids].associated_variables[3]].needsinit=0;
-    if (cmor_has_variable_attribute(cmor_grids[cmor_ngrids].associated_variables[1],"bounds")==0) {
-      cmor_get_variable_attribute(cmor_grids[cmor_ngrids].associated_variables[1],"bounds",&msg);
-      strncat(msg," ",CMOR_MAX_STRING-strlen(msg) );
-      strncat(msg,cmor_vars[cmor_grids[cmor_ngrids].associated_variables[3]].id,CMOR_MAX_STRING-strlen(msg) );
+    if( blat == NULL ) {
+	if( cmor_grids[cmor_ngrids].istimevarying != 1 ) {
+	    snprintf( msg, CMOR_MAX_STRING,
+		      "it is recommended you pass the latitude bounds "
+	              "values when defining a grid" );
+	    cmor_handle_error( msg, CMOR_WARNING );
+	}
+    } else {
+	cmor_copy_data( &cmor_grids[cmor_ngrids].blats, blat, type,
+			n * nvertices );
+
+	dummy_values = malloc( sizeof ( double ) * nvertices );
+
+	for( j = 0; j < nvertices; j++ )
+	    dummy_values[j] = ( double ) j;
+
+	cmor_axis( &axes[1], "vertices", "1", nvertices, dummy_values, 'd',
+		   NULL, 0, NULL );
+
+	free( dummy_values );
+
+	did_vertices = 1;
+
+	cmor_variable( &cmor_grids[cmor_ngrids].associated_variables[2],
+		       "vertices_latitude", "degrees_north", 2, &axes[0],
+		       'd', NULL, NULL, NULL, NULL, NULL, NULL );
+
+	cmor_vars[cmor_grids[cmor_ngrids].associated_variables[2]].
+	    needsinit = 0;
+
+	if( cmor_has_variable_attribute
+	    ( cmor_grids[cmor_ngrids].associated_variables[0],
+	      "bounds" ) == 0 ) {
+
+	    cmor_get_variable_attribute( cmor_grids[cmor_ngrids].
+					 associated_variables[0], "bounds",
+					 &msg );
+	    strncat( msg, " ", CMOR_MAX_STRING - strlen( msg ) );
+	    strncat( msg,
+		     cmor_vars[cmor_grids[cmor_ngrids].
+			       associated_variables[2]].id,
+		     CMOR_MAX_STRING - strlen( msg ) );
+
+	} else {
+	    strncpy( msg,
+		     cmor_vars[cmor_grids[cmor_ngrids].
+			       associated_variables[2]].id,
+		     CMOR_MAX_STRING );
+	}
+	cmor_set_variable_attribute_internal( cmor_grids[cmor_ngrids].
+					      associated_variables[0],
+					      "bounds", 'c', msg );
     }
-    else {
-      strncpy(msg,cmor_vars[cmor_grids[cmor_ngrids].associated_variables[3]].id,CMOR_MAX_STRING);
+    if( blon == NULL ) {
+
+	if( cmor_grids[cmor_ngrids].istimevarying != 1 ) {
+	    snprintf( msg, CMOR_MAX_STRING,
+		      "it is recommended you pass the longitude bounds values when defining a grid" );
+	    cmor_handle_error( msg, CMOR_WARNING );
+	}
+
+    } else {
+
+	cmor_copy_data( &cmor_grids[cmor_ngrids].blons, blon, type,
+			n * nvertices );
+
+	if( did_vertices == 0 ) {
+
+	    dummy_values = malloc( sizeof ( double ) * nvertices );
+
+	    for( j = 0; j < nvertices; j++ ) {
+		dummy_values[j] = ( double ) j;
+	    }
+	    cmor_axis( &axes[1], "vertices", "1", nvertices, dummy_values,
+		       'd', NULL, 0, NULL );
+	    free( dummy_values );
+	}
+
+	cmor_variable( &cmor_grids[cmor_ngrids].associated_variables[3],
+		       "vertices_longitude", "degrees_east", 2, &axes[0],
+		       'd', NULL, NULL, NULL, NULL, NULL, NULL );
+
+	cmor_vars[cmor_grids[cmor_ngrids].associated_variables[3]].
+	    needsinit = 0;
+
+	if( cmor_has_variable_attribute
+	    ( cmor_grids[cmor_ngrids].associated_variables[1],
+	      "bounds" ) == 0 ) {
+
+	    cmor_get_variable_attribute( cmor_grids[cmor_ngrids].
+					 associated_variables[1], "bounds",
+					 &msg );
+
+	    strncat( msg, " ", CMOR_MAX_STRING - strlen( msg ) );
+	    strncat( msg, cmor_vars[cmor_grids[cmor_ngrids].
+	                            associated_variables[3]].id,
+		     CMOR_MAX_STRING - strlen( msg ) );
+
+	} else {
+	    strncpy( msg, cmor_vars[cmor_grids[cmor_ngrids].
+	                            associated_variables[3]].id,
+	                            CMOR_MAX_STRING );
+	}
+	cmor_set_variable_attribute_internal( cmor_grids[cmor_ngrids].
+					      associated_variables[1],
+					      "bounds", 'c', msg );
     }
-    cmor_set_variable_attribute_internal(cmor_grids[cmor_ngrids].associated_variables[1],"bounds",'c',msg);
-  }
-  /*   if (area==NULL) { */
-  /*     snprintf(msg,CMOR_MAX_STRING,"it is recommended you pass the area values when defining a grid"); */
-  /*     cmor_handle_error(msg,CMOR_WARNING); */
-  /*   } */
-  /*   else { */
-  /*     cmor_copy_data(&cmor_grids[cmor_ngrids].area,area,type,n); */
-  /*     cmor_variable(&cmor_grids[cmor_ngrids].associated_variables[4],"area","m2",1,&axes[0],'d',NULL,NULL,NULL,NULL,NULL,NULL); */
-  /*     cmor_vars[cmor_grids[cmor_ngrids].associated_variables[4]].needsinit=0; */
-  /*   } */
-  *grid_id = -cmor_ngrids-CMOR_MAX_GRIDS;
-  cmor_pop_traceback();
-  return 0;
+
+    *grid_id = -cmor_ngrids - CMOR_MAX_GRIDS;
+    cmor_pop_traceback(  );
+    return(0);
 }
diff --git a/Src/cmor_tables.c b/Src/cmor_tables.c
index e8954fc..9783083 100644
--- a/Src/cmor_tables.c
+++ b/Src/cmor_tables.c
@@ -1,449 +1,832 @@
 #include <stdio.h>
 #include <string.h>
+#include <libgen.h>
 #include "cmor.h"
 #include "cmor_func_def.h"
 #include <netcdf.h>
 #include <udunits2.h>
 #include <stdlib.h>
 #include "cmor_locale.h"
+#include "json.h"
+#include "json_tokener.h"
+#include <sys/stat.h>
 
-int wfgetc(FILE *afile) {
-  int i = fgetc(afile);
-  while (i=='\r') {
-    i=fgetc(afile);
-  }
-  return i;
-}
+/************************************************************************/
+/*                               wfgetc()                               */
+/************************************************************************/
+int wfgetc( FILE * afile ) {
+    int i = fgetc( afile );
 
-void cmor_init_table(cmor_table_t *table, int id)
-{
-  int i;
-  cmor_add_traceback("cmor_init_table");
-  cmor_is_setup();
-  /* init the table */
-  table->id=id;
-  table->nvars=-1;
-  table->naxes=-1;
-  table->nexps=-1;
-  table->nmappings=-1;
-  table->cf_version=1.4;
-  table->cmor_version=2.0;
-  table->project_id[0]='\0';
-  table->table_id[0]='\0';
-  strcpy(table->realm,"REALM");
-  table->date[0]='\0';
-  table->missing_value=1.e20;
-  table->interval=0.;
-  table->interval_warning=.1;
-  table->interval_error=.2;
-  table->URL[0]='\0';
-  table->tracking_prefix[0]='\0';
-  strcpy(table->product,"output");
-  table->path[0]='\0';
-  table->required_gbl_att[0]='\0';
-  table->frequency[0]='\0';
-  table->nforcings=0;
-  for (i=0;i<CMOR_MAX_ELEMENTS;i++) {
-    table->expt_ids[i][0]='\0';
-    table->sht_expt_ids[i][0]='\0';
-    table->generic_levels[i][0]='\0';
-  }
-
-  cmor_pop_traceback();
+    while( i == '\r' ) {
+	i = fgetc( afile );
+    }
+    return(i);
 }
+/************************************************************************/
+/*                       cmor_get_table_attr                            */
+/*                                                                      */
+/*  tags for template used in input config file (.json)                 */
+/*                                                                      */
+/************************************************************************/
+int cmor_get_table_attr( char *szToken, cmor_table_t * table, char *out) {
+    int i;
+    t_symstruct lookuptable[]= {
+            {"mip_era",     table->mip_era  },
+            {"table",       table->szTable_id    },
+            {"realm",       table->realm       },
+            {"date",        table->date        },
+            {"product",     table->product     },
+            {"path",        table->path        },
+            {"frequency",   table->frequency   },
+            {"", ""},
+            {"", ""},
+            {"", ""}
+    };
 
-int cmor_set_dataset_att(cmor_table_t *table, char att[CMOR_MAX_STRING],char val[CMOR_MAX_STRING] ){
-  int n,i,j;
-  float d,d2;
-  char value[CMOR_MAX_STRING];
-  char value2[CMOR_MAX_STRING];
-  extern int cmor_ntables;
-
-  cmor_add_traceback("cmor_set_dataset_att");
-  cmor_is_setup();
-
-  strncpy(value,val,CMOR_MAX_STRING);
-
-  if (strcmp(att,"cmor_version")==0) {
-    d2 = CMOR_VERSION_MAJOR;
-    d = CMOR_VERSION_MINOR;
-    while(d>1.) d/=10.;
-    d2+=d;
-    sscanf(value,"%f",&d);
-    if (d>d2) {
-      snprintf(value2,CMOR_MAX_STRING,"Table %s is defined for cmor_version %f, this library verson is: %i.%i.%i, %f",table->table_id,d,CMOR_VERSION_MAJOR,CMOR_VERSION_MINOR,CMOR_VERSION_PATCH,d2);
-      cmor_handle_error(value2,CMOR_CRITICAL);
-      cmor_ntables--;
-      cmor_pop_traceback();
-      return 1;
+    int nKeys=(sizeof(lookuptable)/sizeof(t_symstruct));
+
+    for (i=0; i < nKeys; i++) {
+        t_symstruct *sym = &lookuptable[i];
+        if(strcmp(szToken, sym->key) == 0) {
+            strcpy(out, sym->value);
+            cmor_pop_traceback(  );
+            return(0);
+        }
     }
-    table->cmor_version=d;
-  }
-  else if (strcmp(att,"generic_levels")==0) {
-    n=0;
-    i=0;
-    while(i<strlen(value)) {
-      while(value[i]==' ') i++;
-      j=0;
-      while (i<strlen(value) && value[i]!=' ') {
-	table->generic_levels[n][j]=value[i];
-	j++;
-	i++;
-      }
-      table->generic_levels[n][j]='\0';
-      n+=1;
+
+    cmor_pop_traceback(  );
+    return(1);
+
+}
+
+
+/************************************************************************/
+/*                          cmor_init_table()                           */
+/************************************************************************/
+void cmor_init_table( cmor_table_t * table, int id ) {
+    int i;
+
+    cmor_add_traceback( "cmor_init_table" );
+    cmor_is_setup(  );
+    /* init the table */
+    table->id = id;
+    table->nvars = -1;
+    table->naxes = -1;
+    table->nexps = -1;
+    table->nmappings = -1;
+    table->cf_version = 1.6;
+    table->cmor_version = 3.0;
+    table->mip_era[0] = '\0';
+    table->szTable_id[0] = '\0';
+    strcpy( table->realm, "REALM" );
+    table->date[0] = '\0';
+    table->missing_value = 1.e20;
+    table->interval = 0.;
+    table->interval_warning = .1;
+    table->interval_error = .2;
+    table->URL[0] = '\0';
+    strcpy( table->product, "output" );
+    table->path[0] = '\0';
+    table->frequency[0] = '\0';
+    table->nforcings = 0;
+    for( i = 0; i < CMOR_MAX_ELEMENTS; i++ ) {
+	table->expt_ids[i][0] = '\0';
+	table->sht_expt_ids[i][0] = '\0';
+	table->generic_levels[i][0] = '\0';
     }
-  }
-  else if (strcmp(att,"cf_version")==0) {
-    d = atof(value);
-    table->cf_version=d;
-  }
-  else if (strcmp(att,"required_global_attributes")==0) {
-    strncpy(table->required_gbl_att,val,CMOR_MAX_STRING);
-  }
-  else if (strcmp(att,"project_id")==0) {
-    strncpy(table->project_id,value,CMOR_MAX_STRING);
-  }
-  else if (strcmp(att,"modeling_realm")==0) {
-    strncpy(table->realm,value,CMOR_MAX_STRING);
-  }
-  else if (strcmp(att,"table_date")==0) {
-    strncpy(table->date,value,CMOR_MAX_STRING);
-  }
-  else if (strcmp(att,"baseURL")==0) {
-    strncpy(table->URL,value,CMOR_MAX_STRING);
-  }
-  else if (strcmp(att,"tracking_prefix")==0) {
-    strncpy(table->tracking_prefix,value,CMOR_MAX_STRING);
-  }
-  else if (strcmp(att,"forcings")==0) {
-    cmor_convert_string_to_list(value,'c',(void **)&table->forcings,&table->nforcings);
-  }
-  else if (strcmp(att,"product")==0) {
-    strncpy(table->product,value,CMOR_MAX_STRING);
-  }
-  else if (strcmp(att,"frequency")==0) {
-    strncpy(table->frequency,value,CMOR_MAX_STRING);
-  }
-  else if (strcmp(att,"table_id")==0) {
-    for (n=0;n==cmor_ntables;n++) {
-     if (strcmp(cmor_tables[n].table_id,value)==0) {
-        snprintf(value2,CMOR_MAX_STRING,"Table %s is already defined",table->table_id);
-	cmor_handle_error(value2,CMOR_CRITICAL);
-	cmor_ntables--;
-	cmor_pop_traceback();
-	return 1;
-      }
+    table->CV = NULL;
+
+    cmor_pop_traceback(  );
+
+
+
+}
+
+
+/************************************************************************/
+/*                    cmor_set_variable_entry()                         */
+/************************************************************************/
+int cmor_set_variable_entry(cmor_table_t* table,
+                            char *variable_entry,
+                            json_object *json) {
+    extern int cmor_ntables;
+    char szValue[CMOR_MAX_STRING];
+    char msg[CMOR_MAX_STRING];
+    int nVarId;
+    char *szTableId;
+    cmor_var_def_t *variable;
+    cmor_table_t *cmor_table;
+    cmor_table = &cmor_tables[cmor_ntables];
+
+    szTableId = cmor_table->szTable_id;
+
+    cmor_add_traceback("cmor_set_variable_entry");
+    cmor_is_setup();
+
+    /* -------------------------------------------------------------------- */
+    /*      Check number of variables                                       */
+    /* -------------------------------------------------------------------- */
+    cmor_table->nvars++;
+    nVarId = cmor_table->nvars;
+    variable = &cmor_table->vars[nVarId];
+
+    if (nVarId >= CMOR_MAX_ELEMENTS) {
+        snprintf(msg, CMOR_MAX_STRING,
+                "Too many variables defined for table: %s", szTableId);
+        cmor_handle_error(msg, CMOR_CRITICAL);
+        cmor_ntables--;
+        cmor_pop_traceback();
+        return (1);
     }
-    n = strlen(value);
-    for (i=n-1;i>0;i--) {
-      if (value[i]==' ') break;
+
+    cmor_init_var_def(variable, cmor_ntables);
+    cmor_set_var_def_att(variable, "id", variable_entry);
+
+    json_object_object_foreach(json, attr, value) {
+/* -------------------------------------------------------------------- */
+/*  Attribute keys starting with "#" are seen as comments or examples   */
+/*  and they are skipped!                                               */
+/* -------------------------------------------------------------------- */
+
+        if( attr[0] == '#')
+            continue;
+
+        strcpy(szValue, json_object_get_string(value));
+        cmor_set_var_def_att(variable, attr, szValue);
     }
-    if (value[i]==' ') i++;
+    cmor_pop_traceback();
+    return (0);
+}
 
-    for (j=i;j<n;j++) value2[j-i]=value[j];
-    value2[n-i]='\0';
+/************************************************************************/
+/*                        cmor_set_axis_entry()                         */
+/************************************************************************/
+int cmor_set_axis_entry( cmor_table_t* table,
+                         char *axis_entry,
+                         json_object *json ){
+    extern int cmor_ntables;
+    char szValue[CMOR_MAX_STRING*4];
+    char msg[CMOR_MAX_STRING];
+    int nAxisId;
+    char *szTableId;
+    cmor_axis_def_t *axis;
+    cmor_table_t *cmor_table;
+    cmor_table = &cmor_tables[cmor_ntables];
 
-    strcpy(table->table_id,value2);
-  }
-  else if (strcmp(att,"expt_id_ok")==0) {
-    table->nexps++;
-    if (table->nexps>CMOR_MAX_ELEMENTS) {
-      snprintf(value2,CMOR_MAX_STRING,"Table %s: Too many experiments defined",table->table_id);
-      cmor_handle_error(value2,CMOR_CRITICAL);
+    szTableId = cmor_table->szTable_id;
+
+    cmor_add_traceback("cmor_set_axis_entry");
+    cmor_is_setup();
+
+    /* -------------------------------------------------------------------- */
+    /*      Check number of axes                                            */
+    /* -------------------------------------------------------------------- */
+    cmor_table->naxes++;
+    nAxisId = cmor_table->naxes;
+    axis = &cmor_table->axes[nAxisId];
+
+
+    if (nAxisId >= CMOR_MAX_ELEMENTS) {
+      snprintf(msg, CMOR_MAX_STRING, "Too many axes defined for table: %s",
+              szTableId);
+      cmor_handle_error(msg,CMOR_CRITICAL);
       cmor_ntables--;
       cmor_pop_traceback();
-      return 1;
+      return(1);
     }
-    if (value[0]=='\'') for (n=0;n<strlen(value)-1;n++) value[n]=value[n+1] ; /* removes leading "'" */
-    n=strlen(value);
-    if (value[n-2]=='\'') value[n-2]='\0'; /*removes trailing "'" */
-    /* ok here we look for a ' which means there is a short name associated with it */
-    n=-1;
-    for(j=0;j<strlen(value);j++) {
-      if (value[j]=='\'') {
-	n=j;
-	break;
-      }
+    axis = &cmor_table->axes[nAxisId];
+
+    /* -------------------------------------------------------------------- */
+    /*      Define Axis                                                     */
+    /* -------------------------------------------------------------------- */
+    cmor_init_axis_def(axis, cmor_ntables);
+    cmor_set_axis_def_att(axis, "id", axis_entry);
+
+    /* -------------------------------------------------------------------- */
+    /*      Add axis value                                                  */
+    /* -------------------------------------------------------------------- */
+    json_object_object_foreach(json, attr, value) {
+        if( attr[0] == '#') {
+            continue;
+        }
+        strcpy(szValue, json_object_get_string(value));
+        cmor_set_axis_def_att(axis, attr, szValue);
     }
-    if (n==-1) {
-      strncpy(table->expt_ids[table->nexps],value,CMOR_MAX_STRING);
-      strcpy(table->sht_expt_ids[table->nexps],"");
+    cmor_pop_traceback();
+    return (0);
+}
+/************************************************************************/
+/*                        cmor_set_experiments()                        */
+/************************************************************************/
+int cmor_set_experiments(cmor_table_t * table, char att[CMOR_MAX_STRING],
+                char val[CMOR_MAX_STRING]) {
+    extern int cmor_ntables;
+    char szError[CMOR_MAX_STRING];
+
+    cmor_add_traceback("cmor_set_experiments");
+    cmor_is_setup();
+    table->nexps++;
+    /* -------------------------------------------------------------------- */
+    /*      Check number of experiments                                     */
+    /* -------------------------------------------------------------------- */
+    if( table->nexps > CMOR_MAX_ELEMENTS ) {
+        snprintf( szError, CMOR_MAX_STRING,
+                  "Table %s: Too many experiments defined",
+                  table->szTable_id );
+        cmor_handle_error( szError, CMOR_CRITICAL );
+        cmor_ntables--;
+        cmor_pop_traceback(  );
+        return(1);
     }
-    else {
-      /* ok looks like we have a short name let clook for the next ' */
-      i=-1;
-      for (j=n+1;j<strlen(value);j++) {
-	if (value[j]=='\'') i=j;
-      }
-      if (i==-1) {/* ok we must have a ' in our exp_id_ok */
-	strncpy(table->expt_ids[table->nexps],value,CMOR_MAX_STRING);
-	strcpy(table->sht_expt_ids[table->nexps],"");
-      }
-      else {
-	for (j=i+1;j<strlen(value);j++) {
-	  value2[j-i-1]=value[j];
-	  value2[j-i]='\0';
+
+    /* -------------------------------------------------------------------- */
+    /*      Insert experiment to table                                      */
+    /* -------------------------------------------------------------------- */
+
+    strncpy( table->sht_expt_ids[table->nexps], att,
+            CMOR_MAX_STRING );
+    strncpy( table->expt_ids[table->nexps], val,
+            CMOR_MAX_STRING );
+
+    cmor_pop_traceback();
+    return(0);
+}
+
+/************************************************************************/
+/*                        cmor_set_dataset_att()                        */
+/************************************************************************/
+int cmor_set_dataset_att(cmor_table_t * table, char att[CMOR_MAX_STRING],
+		char val[CMOR_MAX_STRING]) {
+	int n, i, j;
+	float d, d2;
+	char value[CMOR_MAX_STRING];
+	char value2[CMOR_MAX_STRING];
+	extern int cmor_ntables;
+
+	cmor_add_traceback("cmor_set_dataset_att");
+	cmor_is_setup();
+
+	strncpy(value, val, CMOR_MAX_STRING);
+
+/* -------------------------------------------------------------------- */
+/*      Read non-block metadata.                                        */
+/* -------------------------------------------------------------------- */
+	if (strcmp(att, TABLE_HEADER_VERSION) == 0) {
+		d2 = CMOR_VERSION_MAJOR;
+		d = CMOR_VERSION_MINOR;
+		while (d > 1.)
+			d /= 10.;
+		d2 += d;
+		sscanf(value, "%f", &d);
+		if (d > d2) {
+			snprintf(value2, CMOR_MAX_STRING,
+					"Table %s is defined for cmor_version %f, "
+					"this library verson is: %i.%i.%i, %f",
+					table->szTable_id, d,
+					CMOR_VERSION_MAJOR, CMOR_VERSION_MINOR,
+					CMOR_VERSION_PATCH, d2);
+			cmor_handle_error(value2, CMOR_CRITICAL);
+			cmor_ntables--;
+			cmor_pop_traceback();
+			return(1);
+		}
+		table->cmor_version = d;
+
+	} else if (strcmp(att, TABLE_HEADER_GENERIC_LEVS) == 0) {
+		n = 0;
+		i = 0;
+		while (i < (strlen(value)) ) {
+			while (value[i] == ' ')
+				i++;
+			j = 0;
+			while (i < (strlen(value)) && value[i] != ' ') {
+				table->generic_levels[n][j] = value[i];
+				j++;
+				i++;
+			}
+			table->generic_levels[n][j] = '\0';
+			n += 1;
+		}
+
+	} else if (strcmp(att, TABLE_HEADER_CONVENTIONS) == 0) {
+                strncpy(table->Conventions, val, CMOR_MAX_STRING);
+
+        } else if (strcmp(att, TABLE_HEADER_DATASPECSVERSION) == 0) {
+                strncpy(table->data_specs_version, val, CMOR_MAX_STRING);
+
+	} else if (strcmp(att, TABLE_HEADER_MIP_ERA) == 0) {
+		strncpy(table->mip_era, value, CMOR_MAX_STRING);
+
+	} else if (strcmp(att, TABLE_HEADER_REALM) == 0) {
+		strncpy(table->realm, value, CMOR_MAX_STRING);
+
+	} else if (strcmp(att, TABLE_HEADER_TABLE_DATE) == 0) {
+		strncpy(table->date, value, CMOR_MAX_STRING);
+
+	} else if (strcmp(att, TABLE_HEADER_BASEURL) == 0) {
+		strncpy(table->URL, value, CMOR_MAX_STRING);
+
+	} else if (strcmp(att, TABLE_HEADER_FORCINGS) == 0) {
+		cmor_convert_string_to_list(value,
+		                            'c',
+		                            (void **) &table->forcings,
+		                            &table->nforcings);
+
+	} else if (strcmp(att, TABLE_HEADER_PRODUCT) == 0) {
+		strncpy(table->product, value, CMOR_MAX_STRING);
+
+	} else if (strcmp(att, TABLE_HEADER_FREQUENCY) == 0) {
+		strncpy(table->frequency, value, CMOR_MAX_STRING);
+
+	} else if (strcmp(att, TABLE_HEADER_TABLE_ID) == 0) {
+		for (n = 0; n == cmor_ntables; n++) {
+			if (strcmp(cmor_tables[n].szTable_id, value) == 0) {
+				snprintf(value2, CMOR_MAX_STRING,
+				        "Table %s is already defined",
+				        table->szTable_id);
+				cmor_handle_error(value2, CMOR_CRITICAL);
+				cmor_ntables--;
+				cmor_pop_traceback();
+				return(1);
+			}
+		}
+	n = strlen( value );
+	for( i = n - 1; i > 0; i-- ) {
+	    if( value[i] == ' ' )
+		break;
 	}
-	strncpy(table->sht_expt_ids[table->nexps],value2,CMOR_MAX_STRING);
-	value[n]='\0';
-	strncpy(table->expt_ids[table->nexps],value,CMOR_MAX_STRING);
-      }
+	if( value[i] == ' ' )
+	    i++;
+
+	for( j = i; j < n; j++ )
+	    value2[j - i] = value[j];
+	value2[n - i] = '\0';
+	strcpy( table->szTable_id, value2 );
+
+/* -------------------------------------------------------------------- */
+/*      Save all experiment id                                          */
+/* -------------------------------------------------------------------- */
+    } else if( strcmp( att, TABLE_EXPIDS ) == 0 ) {
+	table->nexps++;
+	if( table->nexps > CMOR_MAX_ELEMENTS ) {
+	    snprintf( value2, CMOR_MAX_STRING,
+		      "Table %s: Too many experiments defined",
+		      table->szTable_id );
+	    cmor_handle_error( value2, CMOR_CRITICAL );
+	    cmor_ntables--;
+	    cmor_pop_traceback(  );
+	    return(1);
+	}
+
+	if( value[0] == '\'' )
+	    for( n = 0; n < strlen( value ) - 1; n++ )
+            value[n] = value[n + 1];	/* removes leading "'" */
+	n = strlen( value );
+
+	if( value[n - 2] == '\'' )
+	    value[n - 2] = '\0';	/*removes trailing "'" */
+/* -------------------------------------------------------------------- */
+/*      ok here we look for a ' which means there is                    */
+/*      a short name associated with it                                 */
+/* -------------------------------------------------------------------- */
+	n = -1;
+	for( j = 0; j < strlen( value ); j++ ) {
+	    if( value[j] == '\'' ) {
+            n = j;
+            break;
+	    }
+	}
+	if( n == -1 ) {
+	    strncpy( table->expt_ids[table->nexps], value, CMOR_MAX_STRING );
+	    strcpy( table->sht_expt_ids[table->nexps], "" );
+	} else {
+/* -------------------------------------------------------------------- */
+/*      ok looks like we have a short name let clook for the next '     */
+/* -------------------------------------------------------------------- */
+	    i = -1;
+	    for( j = n + 1; j < strlen( value ); j++ ) {
+		if( value[j] == '\'' )
+		    i = j;
+	    }
+/* -------------------------------------------------------------------- */
+/*      ok we must have a ' in our exp_id_ok                            */
+/* -------------------------------------------------------------------- */
+	    if( i == -1 ) {	
+		strncpy( table->expt_ids[table->nexps], value,
+			 CMOR_MAX_STRING );
+		strcpy( table->sht_expt_ids[table->nexps], "" );
+	    } else {
+		for( j = i + 1; j < strlen( value ); j++ ) {
+		    value2[j - i - 1] = value[j];
+		    value2[j - i] = '\0';
+		}
+		strncpy( table->sht_expt_ids[table->nexps], value2,
+			 CMOR_MAX_STRING );
+		value[n] = '\0';
+		strncpy( table->expt_ids[table->nexps], value,
+			 CMOR_MAX_STRING );
+	    }
+	}
+    } else if( strcmp( att, TABLE_HEADER_APRX_INTRVL ) == 0 ) {
+	sscanf( value, "%lf", &table->interval );
+    } else if( strcmp( att, TABLE_HEADER_APRX_INTRVL_ERR ) == 0 ) {
+	sscanf( value, "%f", &table->interval_error );
+    } else if( strcmp( att, TABLE_HEADER_APRX_INTRVL_WRN ) == 0 ) {
+	sscanf( value, "%f", &table->interval_warning );
+    } else if( strcmp( att, TABLE_HEADER_MISSING_VALUE ) == 0 ) {
+	sscanf( value, "%f", &table->missing_value );
+    } else if( strcmp( att, TABLE_HEADER_MAGIC_NUMBER) == 0 ) {
+	    
+    } else {
+	snprintf( value, CMOR_MAX_STRING,
+		  "table: %s, This keyword: %s value (%s) "
+	          "is not a valid table header entry.!\n "
+	          "Use the user input JSON file to add custom attributes.",
+		  table->szTable_id, att, value );
+	cmor_handle_error( value, CMOR_WARNING );
     }
-  }
-  else if (strcmp(att,"approx_interval")==0) {
-    sscanf(value,"%lf",&table->interval);
-  }
-  else if (strcmp(att,"approx_interval_error")==0) {
-    sscanf(value,"%f",&table->interval_error);
-  }
-  else if (strcmp(att,"approx_interval_warning")==0) {
-    sscanf(value,"%f",&table->interval_warning);
-  }
-  else if (strcmp(att,"missing_value")==0) {
-    sscanf(value,"%f",&table->missing_value);
-  }
-  else if (strcmp(att,"magic_number")==0) {
-    /* Never actually implemented supposed to control table has not been altered */
-  }
-  else {
-    snprintf(value,CMOR_MAX_STRING,"table: %s, unknown keyword for dataset: %s (%s)",table->table_id,att,value);
-    cmor_handle_error(value,CMOR_WARNING);
-  }
-  cmor_pop_traceback();
-  return 0;
+    cmor_pop_traceback(  );
+    return(0);
 }
 
-int cmor_set_table(int table) {
-  extern int CMOR_TABLE;
-  char msg[CMOR_MAX_STRING];
-  cmor_add_traceback("cmor_set_table");
-  cmor_is_setup();
-  if (table>cmor_ntables) {
-    snprintf(msg,CMOR_MAX_STRING,"Invalid table number: %i",table);
-    cmor_handle_error(msg,CMOR_CRITICAL);
-  }
-  if (cmor_tables[table].table_id=='\0') {
-    snprintf(msg,CMOR_MAX_STRING,"Invalid table: %i , not loaded yet!",table);
-    cmor_handle_error(msg,CMOR_CRITICAL);
-  }
-  CMOR_TABLE = table;
-  cmor_pop_traceback();
-  return 0;
+/************************************************************************/
+/*                           cmor_set_table()                           */
+/************************************************************************/
+
+int cmor_set_table( int table ) {
+    extern int CMOR_TABLE;
+    char msg[CMOR_MAX_STRING];
+
+    cmor_add_traceback( "cmor_set_table" );
+    cmor_is_setup(  );
+    if( table > cmor_ntables ) {
+	snprintf( msg, CMOR_MAX_STRING, "Invalid table number: %i",
+		  table );
+	cmor_handle_error( msg, CMOR_CRITICAL );
+    }
+    if( cmor_tables[table].szTable_id == '\0' ) {
+	snprintf( msg, CMOR_MAX_STRING,
+		  "Invalid table: %i , not loaded yet!", table );
+	cmor_handle_error( msg, CMOR_CRITICAL );
+    }
+    CMOR_TABLE = table;
+    cmor_pop_traceback(  );
+    return(0);
 }
 
-int cmor_load_table(char table[CMOR_MAX_STRING], int *table_id) {
-  FILE *table_file;
-  char word[CMOR_MAX_STRING],word2[CMOR_MAX_STRING];
-  int i,n;
-  int do_var=0,do_axis=0,do_dataset=1,do_mapping=0;
-  extern int CMOR_TABLE,cmor_ntables;
-  extern char cmor_input_path[CMOR_MAX_STRING] ;
-  char msg[CMOR_MAX_STRING];
-
-  cmor_add_traceback("cmor_load_table");
-  cmor_is_setup();
-  
-/*   printf("loading table: %s\n",table); */
-  for (i=0;i<cmor_ntables+1;i++) {
-    if (strcmp(cmor_tables[i].path,table)==0) {
-      CMOR_TABLE = i;
-      *table_id = i;
-/*       printf("table %s was already loaded, no need to do that again\n",table); */
-      cmor_pop_traceback();
-      return 0;
+/************************************************************************/
+/*                       cmor_load_table()                              */
+/************************************************************************/
+int cmor_load_table( char szTable[CMOR_MAX_STRING], int *table_id ) {
+    int rc;
+    char *szPath;
+    char *szTableName;
+    char szControlFilenameJSON[CMOR_MAX_STRING];
+    char szCV[CMOR_MAX_STRING];
+    char msg[CMOR_MAX_STRING];
+    struct stat st;
+
+    rc = cmor_get_cur_dataset_attribute(GLOBAL_CV_FILENAME, szCV);
+
+/* -------------------------------------------------------------------- */
+/*  build string "path/<CV>.json"                                */
+/* -------------------------------------------------------------------- */
+    szTableName = strdup(szTable);
+    szPath = dirname(szTableName);
+/* -------------------------------------------------------------------- */
+/*  build string "path/CV.json"                                         */
+/* -------------------------------------------------------------------- */
+    strcpy(szControlFilenameJSON, szPath);
+    strcat(szControlFilenameJSON, "/");
+    strcat(szControlFilenameJSON, szCV);
+
+/* -------------------------------------------------------------------- */
+/*  try to load table from directory where table is found or from the   */
+/*  cmor_input_path                                                     */
+/* -------------------------------------------------------------------- */
+    rc = stat(szControlFilenameJSON, &st);
+    if(rc != 0 ) {
+        strcpy(szControlFilenameJSON, cmor_input_path);
+        strcat(szControlFilenameJSON, "/");
+        strcat(szControlFilenameJSON, szCV);
     }
-  }
-  cmor_ntables+=1;
-  cmor_init_table(&cmor_tables[cmor_ntables],cmor_ntables);
-  table_file=fopen(table,"r");
-  if (table_file == NULL) {
-    if (table[0]!='/') {
-      snprintf(word,CMOR_MAX_STRING,"%s/%s",cmor_input_path,table);
-      table_file=fopen(word,"r");
+
+    rc= cmor_load_table_internal( szTable, table_id, TRUE);
+
+    if((rc != TABLE_SUCCESS) && (rc != TABLE_FOUND)){
+        snprintf( msg, CMOR_MAX_STRING, "Can't open table %s", szTable);
+        cmor_handle_error( msg, CMOR_WARNING );
     }
-    if (table_file == NULL) {
-      snprintf(word,CMOR_MAX_STRING,"%s/share/%s",CMOR_PREFIX,table);
-      table_file=fopen(word,"r");
+    if(rc == TABLE_SUCCESS) {
+        cmor_set_cur_dataset_attribute_internal(CV_INPUTFILENAME,
+                                                szControlFilenameJSON, 1);
+        rc= cmor_load_table_internal( szControlFilenameJSON, table_id, FALSE);
+        if(rc != TABLE_SUCCESS){
+            snprintf( msg, CMOR_MAX_STRING, "Can't open table %s",
+                    szControlFilenameJSON);
+            cmor_handle_error( msg, CMOR_CRITICAL );
+        }
+    } else if (rc == TABLE_FOUND) {
+        rc = TABLE_SUCCESS;
     }
-    if (table_file == NULL ) {
-      snprintf(word,CMOR_MAX_STRING,"Could not find table: %s",table);
-      cmor_handle_error(word,CMOR_NORMAL);
-      cmor_ntables-=1;
-      cmor_pop_traceback();
-      return 1;
+
+    free(szTableName);
+    return(rc);
+}
+/************************************************************************/
+/*                   cmor_load_table_internal()                         */
+/************************************************************************/
+int cmor_load_table_internal( char table[CMOR_MAX_STRING], int *table_id,
+                              int bNewTable) {
+    FILE *table_file;
+    char word[CMOR_MAX_STRING];
+    int i, n;
+    int done=0;
+    extern int CMOR_TABLE, cmor_ntables;
+    extern char cmor_input_path[CMOR_MAX_STRING];
+    char msg[CMOR_MAX_STRING];
+    char szVal[1024000];
+    char *buffer= NULL;
+    int nTableSize, read_size;
+    json_object *json_obj;
+
+    cmor_add_traceback( "cmor_load_table_internal" );
+    cmor_is_setup(  );
+
+    if( bNewTable ) {
+
+/* -------------------------------------------------------------------- */
+/*      Is the table already loaded?                                    */
+/* -------------------------------------------------------------------- */
+        for (i = 0; i < cmor_ntables + 1; i++) {
+
+            if (strcmp(cmor_tables[i].path, table) == 0) {
+                CMOR_TABLE = i;
+                *table_id = i;
+                cmor_pop_traceback();
+                return (TABLE_FOUND);
+            }
+        }
+/* -------------------------------------------------------------------- */
+/*      Try to open file                                                */
+/*      $path/table                                                     */
+/*      /usr/local/cmor/share/table                                     */
+/* -------------------------------------------------------------------- */
+        cmor_ntables += 1;
+        cmor_init_table( &cmor_tables[cmor_ntables], cmor_ntables );
     }
-  }
-
-  /* ok now we need to store the md5 */
-  cmor_md5(table_file,cmor_tables[cmor_ntables].md5);
-  i = wfgetc(table_file);
-  while (i != EOF ) {
-    /* skip blanks and returns */
-    while((i=='\n') || i==' ' || i=='\t') i = wfgetc(table_file);
-    /* skip comment lines */
-    /*printf("looking at first line charcter:--%c--\n",i);*/
-    while (i=='!') {
-      i = wfgetc(table_file);
-      if (i==EOF) break;
-      /*printf("ok it is comment line, second char is --%c--\n");*/
-      if (i=='=') { /* we found the head of a definition section */
-	while(i!='\n') i = wfgetc(table_file);
-	i = wfgetc(table_file);
-	if (i==EOF) break;
-	/* now read the word from the definition */
-	n=0;
-	while(i!=':') {
-	  word[n] = i;
-	  i = wfgetc(table_file);
-	  n+=1;
-	}
-	word[n]='\0';
-	/* now figures out the name of the entry */
-	i = wfgetc(table_file);
-	while (i==' ' || i=='\t') i = wfgetc(table_file);
-	n=0;
-	while((i!='\n') && i!=' ' && i!='\t') {
-	  word2[n]=i;
-	  i = wfgetc(table_file);
-	  n+=1;
-	}
-	word2[n]='\0';
-	/* finishes the line */
-	while (i!='\n') i = wfgetc(table_file);
-	i = wfgetc(table_file);
-	/*skip the next line */
-	while (i!='\n') i = wfgetc(table_file);
-	i = wfgetc(table_file);
-	/*printf("entry %s, name: %s\n",word,word2);*/
-	/* Now let's see what we found */
-	if (strcmp(word,"axis_entry")==0) {
-	  do_dataset=0;
-	  do_var=0;
-	  do_axis=1;
-	  do_mapping=0;
-	  cmor_tables[cmor_ntables].naxes++;
-	  if (cmor_tables[cmor_ntables].naxes>=CMOR_MAX_ELEMENTS) {
-	    snprintf(msg,CMOR_MAX_STRING,"Too many axes defined for table: %s",cmor_tables[cmor_ntables].table_id);
-	    cmor_handle_error(msg,CMOR_CRITICAL);
-	    cmor_ntables--;
-	    cmor_pop_traceback();
-	    return 1;
-	  }
-	  /* init the axis def */
-/* 	  printf("initializing axis: %s\n",word2); */
-	  cmor_init_axis_def(&cmor_tables[cmor_ntables].axes[cmor_tables[cmor_ntables].naxes],cmor_ntables);
-	  cmor_set_axis_def_att(&cmor_tables[cmor_ntables].axes[cmor_tables[cmor_ntables].naxes],"id",word2);
-	}
-	else if (strcmp(word,"variable_entry")==0) {
-	  do_dataset=0;
-	  do_var=1;
-	  do_axis=0;
-	  do_mapping=0;
-	  cmor_tables[cmor_ntables].nvars++;
-	  if (cmor_tables[cmor_ntables].nvars>=CMOR_MAX_ELEMENTS) {
-	    snprintf(msg,CMOR_MAX_STRING,"Too many variables defined for table: %s",cmor_tables[cmor_ntables].table_id);
-	    cmor_handle_error(msg,CMOR_CRITICAL);
-	    cmor_ntables--;
-	    cmor_pop_traceback();
-	    return 1;
-	  }
-	  /* init the variable def */
-	  cmor_init_var_def(&cmor_tables[cmor_ntables].vars[cmor_tables[cmor_ntables].nvars],cmor_ntables);
-	  cmor_set_var_def_att(&cmor_tables[cmor_ntables].vars[cmor_tables[cmor_ntables].nvars],"id",word2);
 
+    table_file = fopen( table, "r" );
+    
+    if( table_file == NULL ) {
+	if( table[0] != '/' ) {
+	    snprintf( word, CMOR_MAX_STRING, "%s/%s", cmor_input_path,
+		      table );
+	    table_file = fopen( word, "r" );
 	}
-	else if (strcmp(word,"mapping_entry")==0) {
-	  do_dataset=0;
-	  do_var=0;
-	  do_axis=0;
-	  do_mapping=1;
-	  cmor_tables[cmor_ntables].nmappings++;
-	  if (cmor_tables[cmor_ntables].nmappings>=CMOR_MAX_ELEMENTS) {
-	    snprintf(msg,CMOR_MAX_STRING,"Too many mappings defined for table: %s",cmor_tables[cmor_ntables].table_id);
-	    cmor_handle_error(msg,CMOR_CRITICAL);
-	    cmor_ntables--;
-	    cmor_pop_traceback();
-	    return 1;
-	  }
-	  for(n=0;n<cmor_tables[cmor_ntables].nmappings-1;n++) if (strcmp(cmor_tables[cmor_ntables].mappings[cmor_tables[cmor_ntables].nmappings].id,cmor_tables[cmor_ntables].mappings[n].id)==0) {
-	      snprintf(msg,CMOR_MAX_STRING,"mapping: %s already defined within this table (%s)",cmor_tables[cmor_ntables].mappings[n].id,cmor_tables[cmor_ntables].table_id);
-	      cmor_handle_error(msg,CMOR_CRITICAL);
-	    };
-
-	  /* init the variable def */
-	  cmor_init_grid_mapping(&cmor_tables[cmor_ntables].mappings[cmor_tables[cmor_ntables].nmappings],word2);
+	if( table_file == NULL ) {
+	    snprintf( word, CMOR_MAX_STRING, "%s/share/%s", CMOR_PREFIX,
+		      table );
+	    table_file = fopen( word, "r" );
 	}
-	else { /* nothing knwon we will not be setting any attributes! */
-	  snprintf(msg,CMOR_MAX_STRING,"unknown section: %s, for table: %s",word,cmor_tables[cmor_ntables].table_id);
-	  cmor_handle_error(msg,CMOR_WARNING);
-	  do_dataset=0;
-	  do_var=0;
-	  do_axis=0;
-	  do_mapping=0;
+	if( table_file == NULL ) {
+	    snprintf( word, CMOR_MAX_STRING, "Could not find file: %s",
+		      table );
+	    cmor_handle_error( word, CMOR_NORMAL );
+	    cmor_ntables -= 1;
+	    cmor_pop_traceback(  );
+	    return(TABLE_ERROR);
 	}
-	/*printf("ok now i is: --%c--\n",i);*/
-    }
-      else { /* just a commented out line, let's skip it */
-	/*printf("all right skiping line\n");*/
-	while(i!='\n') i = wfgetc(table_file);
-	i = wfgetc(table_file);
-	while((i==' ') || (i=='\n') || (i=='\t')) i = wfgetc(table_file);
-	/*printf("ok now i is: --%c--\n",i);*/
-      }
-    }
-    if (i==EOF) break;
-    /* ok here we must have a word then, let's read it and it's value */
-    n=0;
-    while(i!=':'){
-      word[n]=i;
-      i = wfgetc(table_file);
-      n+=1;
     }
-    i = wfgetc(table_file);
-    word[n]='\0';
-    while (i==' ' || i=='\t') i = wfgetc(table_file);
-    n=0;
-    while((i!='\n') && (i!='!')) {
-      word2[n]=i;
-      i = wfgetc(table_file);
-      n+=1;
-    }
-    word2[n]='\0';
-    n=strlen(word2);
-    for (n=strlen(word2)-1;n>-1;n--) {
-      if (word2[n]==' ' || word2[n]=='\t' ) word2[n]='\0';
-      else break;
-    }
-    /* finishes the line */
-    while (i!='\n' && i!=EOF) i = wfgetc(table_file);
-    /*printf("got entry: %s with value %s, var: %i, axis: %i, dat: %i\n",word,word2,do_var,do_axis,do_dataset);*/
-    /* First check for table/dataset mode values */
-    if (do_dataset==1) {
-      if (cmor_set_dataset_att(&cmor_tables[cmor_ntables],word,word2)==1) {
-	cmor_pop_traceback();
-	return 1; /* sometihng bad might happen */
-      }
+
+
+/* -------------------------------------------------------------------- */
+/*      ok now we need to store the md5                                 */
+/* -------------------------------------------------------------------- */
+    cmor_md5( table_file, cmor_tables[cmor_ntables].md5 );
+    
+/* -------------------------------------------------------------------- */
+/*      Read the entire table in memory                                 */
+/* -------------------------------------------------------------------- */
+    fseek(table_file,0,SEEK_END);
+    nTableSize = ftell( table_file );
+    rewind( table_file );
+    buffer = (char *) malloc( sizeof(char) * (nTableSize + 1) );
+    read_size = fread( buffer, sizeof(char), nTableSize, table_file ); 
+    buffer[nTableSize] = '\0';
+
+/* -------------------------------------------------------------------- */
+/*      print errror and exist if not a JSON file                       */
+/* -------------------------------------------------------------------- */
+
+    if(buffer[0]!= '{') {
+        free(buffer);
+        buffer=NULL;
+        snprintf( msg, CMOR_MAX_STRING,
+                  "Could not understand file \"%s\" Is this a JSON CMOR table?",
+                   table  );
+            cmor_handle_error( msg, CMOR_CRITICAL );
+            cmor_ntables--;
+            cmor_pop_traceback(  );
+        return(TABLE_ERROR);
     }
-    else if (do_var==1) {
-      cmor_set_var_def_att(&cmor_tables[cmor_ntables].vars[cmor_tables[cmor_ntables].nvars],word,word2);
+/* -------------------------------------------------------------------- */
+/*      print errro and exit if file was not completly read             */
+/* -------------------------------------------------------------------- */
+    if( nTableSize != read_size ) {
+        free(buffer);
+        buffer=NULL;
+        snprintf( msg, CMOR_MAX_STRING,
+                  "Could not read file %s check file permission",
+                   word  );
+            cmor_handle_error( msg, CMOR_CRITICAL );
+            cmor_ntables--;
+            cmor_pop_traceback(  );
+        return(TABLE_ERROR);
     }
-    else if (do_axis ==1){
-      cmor_set_axis_def_att(&cmor_tables[cmor_ntables].axes[cmor_tables[cmor_ntables].naxes],word,word2);
+
+/* -------------------------------------------------------------------- */
+/*     parse buffer into json object                                    */ 
+/* -------------------------------------------------------------------- */
+    json_obj = json_tokener_parse(buffer);
+    if( json_obj == NULL ){
+        snprintf( msg, CMOR_MAX_STRING,
+                "Please validate JSON File!\n"
+                "USE: http://jsonlint.com/\n"
+                "Syntax Error in table: %s\n "
+                "%s",table, buffer );
+        cmor_handle_error( msg, CMOR_CRITICAL );
+        cmor_pop_traceback();
+        return(TABLE_ERROR);
     }
-    else if (do_mapping==1) {
-      cmor_set_mapping_attribute(&cmor_tables[cmor_ntables].mappings[cmor_tables[cmor_ntables].nmappings],word,word2);
+
+    json_object_object_foreach(json_obj, key, value) {
+        if( key[0] == '#') {
+            continue;
+        }
+        strcpy(szVal, json_object_get_string(value));
+/* -------------------------------------------------------------------- */
+/*      Now let's see what we found                                     */
+/* -------------------------------------------------------------------- */
+	if( strcmp( key, JSON_KEY_HEADER ) == 0 ) {
+/* -------------------------------------------------------------------- */
+/*      Fill up all global attributer found in header section           */
+/* -------------------------------------------------------------------- */
+            json_object_object_foreach(value, key, globalAttr) {
+                if( key[0] == '#') {
+                    continue;
+                }
+                strcpy(szVal, json_object_get_string(globalAttr));
+                if( cmor_set_dataset_att( &cmor_tables[cmor_ntables], key, 
+                                           szVal ) == 1 ) {
+                    cmor_pop_traceback();
+                    return(TABLE_ERROR);
+                }
+            }
+            done=1;
+
+        } else  if( strcmp( key, JSON_KEY_EXPERIMENT ) == 0 ){
+            json_object_object_foreach(value, shortname, description) {
+                if( shortname[0] == '#') {
+                    continue;
+                }
+                strcpy(szVal, json_object_get_string(description));
+                if( cmor_set_experiments( &cmor_tables[cmor_ntables],
+                                          shortname,
+                                          szVal ) == 1 ) {
+                    cmor_pop_traceback(  );
+                    return(TABLE_ERROR);
+                }
+            }
+            done=1;
+        } else if (strcmp(key, JSON_KEY_AXIS_ENTRY) == 0) {
+            json_object_object_foreach(value, axisname, attributes) {
+                if( axisname[0] == '#') {
+                    continue;
+                }
+                if( cmor_set_axis_entry(&cmor_tables[cmor_ntables],
+                        axisname,
+                        attributes) == 1) {
+                    cmor_pop_traceback();
+                    return (TABLE_ERROR);
+                }
+            }
+            done=1;
+	} else if( strcmp( key, JSON_KEY_VARIABLE_ENTRY ) == 0 ) {
+            json_object_object_foreach(value, varname, attributes) {
+                if( varname[0] == '#') {
+                    continue;
+                }
+                if( cmor_set_variable_entry(&cmor_tables[cmor_ntables],
+                        varname,
+                        attributes) == 1) {
+                    cmor_pop_traceback();
+                    return (TABLE_ERROR);
+                }
+            }
+            done=1;
+	} else if( strncmp( key, JSON_KEY_CV_ENTRY,2) == 0 ) {
+
+	    if( cmor_CV_set_entry(&cmor_tables[cmor_ntables], value) == 1 ) {
+                cmor_pop_traceback();
+                return (TABLE_ERROR);
+	    }
+	    done=1;
+
+	} else if( strcmp( key, JSON_KEY_MAPPING_ENTRY ) == 0 ) {
+/* -------------------------------------------------------------------- */
+/*      Work on mapping entries                                         */
+/* -------------------------------------------------------------------- */
+	    cmor_tables[cmor_ntables].nmappings++;
+            if (cmor_tables[cmor_ntables].nmappings >= CMOR_MAX_ELEMENTS) {
+                snprintf(msg, CMOR_MAX_STRING,
+                        "Too many mappings defined for table: %s",
+                        cmor_tables[cmor_ntables].szTable_id);
+                cmor_handle_error(msg, CMOR_CRITICAL);
+                cmor_ntables--;
+                cmor_pop_traceback();
+                return (TABLE_ERROR);
+            }
+            json_object_object_foreach(value, mapname, jsonValue) {
+                if( mapname[0] == '#') {
+                    continue;
+                }
+                char szLastMapID[CMOR_MAX_STRING];
+                char szCurrMapID[CMOR_MAX_STRING];
+                cmor_table_t *psCurrCmorTable;
+
+                psCurrCmorTable = &cmor_tables[cmor_ntables];
+
+                int nMap;
+                nMap = psCurrCmorTable->nmappings;
+
+                for (n = 0; n < nMap - 1; n++) {
+
+                    strcpy(szLastMapID, psCurrCmorTable->mappings[nMap].id);
+                    strcpy(szCurrMapID, psCurrCmorTable->mappings[n].id);
+
+                    if (strcmp(szLastMapID, szCurrMapID) == 0) {
+                        snprintf(msg, CMOR_MAX_STRING,
+                                "mapping: %s already defined within this table (%s)",
+                                cmor_tables[cmor_ntables].mappings[n].id,
+                                cmor_tables[cmor_ntables].szTable_id);
+                        cmor_handle_error(msg, CMOR_CRITICAL);
+                    };
+                }
+/* -------------------------------------------------------------------- */
+/*      init the variable def                                           */
+/* -------------------------------------------------------------------- */
+                cmor_init_grid_mapping(&psCurrCmorTable->mappings[nMap], mapname);
+                json_object_object_foreach(jsonValue, key, mappar)
+                {
+                    if( key[0] == '#') {
+                        continue;
+                    }
+                    char param[CMOR_MAX_STRING];
+
+                    strcpy(param, json_object_get_string(mappar));
+
+                    cmor_set_mapping_attribute(
+                            &psCurrCmorTable->mappings[psCurrCmorTable->nmappings],
+                            key, param);
+
+                }
+
+            }
+            done = 1;
+
+	} else {
+/* -------------------------------------------------------------------- */
+/*      nothing knwon we will not be setting any attributes!            */
+/* -------------------------------------------------------------------- */
+		    
+		    snprintf( msg, CMOR_MAX_STRING,
+			      "unknown section: %s, for table: %s", key,
+			      cmor_tables[cmor_ntables].szTable_id );
+		    cmor_handle_error( msg, CMOR_WARNING );
+	}
+
+/* -------------------------------------------------------------------- */
+/*      First check for table/dataset mode values                       */
+/* -------------------------------------------------------------------- */
+
+        if ( done == 1 ){
+            done = 0;
+        } else {
+            snprintf( msg, CMOR_MAX_STRING,
+                  "attribute for unknown section: %s,%s (table: %s)",
+                  key, szVal, cmor_tables[cmor_ntables].szTable_id );
+            cmor_handle_error( msg, CMOR_WARNING );
+            /*printf("attribute for unknown section\n"); */
+        }
     }
-    else {
-      snprintf(msg,CMOR_MAX_STRING,"attribute for unknown section: %s,%s (table: %s)",word,word2,cmor_tables[cmor_ntables].table_id);
-      cmor_handle_error(msg,CMOR_WARNING);
-      /*printf("attribute for unknown section\n");*/
+    *table_id = cmor_ntables;
+    if( bNewTable ) {
+        strcpy( cmor_tables[cmor_ntables].path, table );
     }
-  }
-  fclose(table_file);
-  *table_id = cmor_ntables;
-  strcpy(cmor_tables[cmor_ntables].path,table);
-  CMOR_TABLE = cmor_ntables;
-  cmor_pop_traceback();
-  return 0;
+    CMOR_TABLE = cmor_ntables;
+    cmor_pop_traceback(  );
+    free(buffer);
+    json_object_put(json_obj);
+    return(TABLE_SUCCESS);
 }
diff --git a/Src/cmor_variables.c b/Src/cmor_variables.c
index e54b483..48ad0f3 100644
--- a/Src/cmor_variables.c
+++ b/Src/cmor_variables.c
@@ -7,1842 +7,3161 @@
 #include <stdlib.h>
 #include <math.h>
 
-int cmor_is_required_variable_attribute(cmor_var_def_t var, char *attribute_name) 
-{
-  
-  char astr[CMOR_MAX_STRING];
-  int i,j;
-  if (var.required[0]=='\0') {
-    return 1;
-  }
-
-  i=0;
-  astr[0]='\0';
-  j=0;
-  while(var.required[i]!='\0') {
-    while((var.required[i]!=' ') && (var.required[i]!='\0')) {
-      astr[j]=var.required[i];
-      i+=1;
-      j+=1;
-    }
-    astr[j]='\0';
-    if (strncmp(astr,attribute_name,CMOR_MAX_STRING)==0) return 0;
-    j=0;
-    astr[0]='\0';
-    while(var.required[i]==' ') i+=1;
- }
-  return 1;
+/************************************************************************/
+/*                cmor_is_required_variable_attribute()                 */
+/************************************************************************/
+int cmor_is_required_variable_attribute( cmor_var_def_t var,
+					 char *attribute_name ) {
+
+    char astr[CMOR_MAX_STRING];
+    int i, j;
+
+    if( var.required[0] == '\0' ) {
+	return( 1 );
+    }
+
+    i = 0;
+    astr[0] = '\0';
+    j = 0;
+
+    while( var.required[i] != '\0' ) {
+
+	while( ( var.required[i] != ' ' ) && ( var.required[i] != '\0' ) ) {
+	    astr[j] = var.required[i];
+	    i += 1;
+	    j += 1;
+	}
+
+	astr[j] = '\0';
+
+	if( strncmp( astr, attribute_name, CMOR_MAX_STRING ) == 0 ) {
+	    return( 0 );
+	}
+
+	j = 0;
+	astr[0] = '\0';
+	while( var.required[i] == ' ' ) {
+	    i += 1;
+	}
+    }
+    return( 1 );
 }
+/************************************************************************/
+/*               cmor_has_required_variable_attributes()                */
+/************************************************************************/
+int cmor_has_required_variable_attributes( int var_id ) {
+    extern cmor_var_t cmor_vars[];
+    char astr[CMOR_MAX_STRING];
+    char msg[CMOR_MAX_STRING];
+    int i, j;
+    cmor_var_def_t var;
+    cmor_table_t  *pTable;
+
+    cmor_add_traceback( "cmor_has_required_variable_attributes" );
+
+    pTable = &cmor_tables[cmor_vars[var_id].ref_table_id];
+    var = pTable->vars[cmor_vars[var_id].ref_var_id];
+
+    if( var.required[0] == '\0' ) {
+	cmor_pop_traceback(  );
+	return( 0 );
+    }
+
+    i = 0;
+    astr[0] = '\0';
+    j = 0;
+
+    while( var.required[i] != '\0' ) {
+	while( ( var.required[i] != ' ' ) && ( var.required[i] != '\0' ) ) {
+	    astr[j] = var.required[i];
+	    i += 1;
+	    j += 1;
+	}
+
+	astr[j] = '\0';
+
+	if( cmor_has_variable_attribute( var_id, astr ) != 0 ) {
+
+	    snprintf( msg, CMOR_MAX_STRING,
+		      "variable %s (table %s) does not have required "
+	              "attribute: %s",
+		      cmor_vars[var_id].id,
+		      pTable->szTable_id,
+		      astr );
+
+	    cmor_handle_error( msg, CMOR_CRITICAL );
+	}
+
+	j = 0;
+	astr[0] = '\0';
+
+	while( var.required[i] == ' ' )
+	    i += 1;
+    }
+    cmor_pop_traceback(  );
+    return( 0 );
+
 
-int cmor_has_required_variable_attributes(int var_id) 
-{
-  extern cmor_var_t cmor_vars[];
-  char astr[CMOR_MAX_STRING];
-  char msg[CMOR_MAX_STRING];
-  int i,j;
-  cmor_var_def_t var;
-  cmor_add_traceback("cmor_has_required_variable_attributes");
-  var = cmor_tables[cmor_vars[var_id].ref_table_id].vars[cmor_vars[var_id].ref_var_id];
-  
-  if (var.required[0]=='\0') {
-    cmor_pop_traceback();
-    return 0;
-  }
-  i=0;
-  astr[0]='\0';
-  j=0;
-  while(var.required[i]!='\0') {
-    while((var.required[i]!=' ') && (var.required[i]!='\0')) {
-      astr[j]=var.required[i];
-      i+=1;
-      j+=1;
-    }
-    astr[j]='\0';
-    if (cmor_has_variable_attribute(var_id,astr)!=0) {
-      snprintf(msg,CMOR_MAX_STRING,"variable %s (table %s) does not have required attribute: %s",cmor_vars[var_id].id,cmor_tables[cmor_vars[var_id].ref_table_id].table_id,astr);
-      cmor_handle_error(msg,CMOR_CRITICAL);
-    }
-    j=0;
-    astr[0]='\0';
-    while(var.required[i]==' ') i+=1;
-  }
-  cmor_pop_traceback();
-  return 0;
-
-  
 }
-int cmor_set_variable_attribute_internal(int id, char *attribute_name, char type, void *value)
-{
-  extern cmor_var_t cmor_vars[];
-  int i,index;
-  char msg[CMOR_MAX_STRING];
-  cmor_add_traceback("cmor_set_variable_attribute_internal");
-
-  cmor_is_setup();
-  index=-1;
-  cmor_trim_string(attribute_name,msg);
-  for (i=0;i<cmor_vars[id].nattributes;i++) {
-    if (strcmp(cmor_vars[id].attributes[i],msg)==0) {index=i;break;} /* we found it */
-  }
-  if (index==-1) {index=cmor_vars[id].nattributes; cmor_vars[id].nattributes+=1;}
-  strncpy(cmor_vars[id].attributes[index],msg,CMOR_MAX_STRING); /*stores the name */
-  cmor_vars[id].attributes_type[index]=type;
-  if (type=='c')  {
-    if (strlen(value)>0) {
-      strncpytrim(cmor_vars[id].attributes_values_char[index],value,CMOR_MAX_STRING);
+/************************************************************************/
+/*                cmor_set_variable_attribute_internal()                */
+/************************************************************************/
+
+int cmor_set_variable_attribute_internal( int id, char *attribute_name,
+					  char type, void *value ) {
+    extern cmor_var_t cmor_vars[];
+    int i, index;
+    char msg[CMOR_MAX_STRING];
+
+    cmor_add_traceback( "cmor_set_variable_attribute_internal" );
+
+    cmor_is_setup(  );
+    index = -1;
+    cmor_trim_string( attribute_name, msg );
+
+    for( i = 0; i < cmor_vars[id].nattributes; i++ ) {
+	if( strcmp( cmor_vars[id].attributes[i], msg ) == 0 ) {
+	    index = i;
+	    break;
+	}
+    }
+    if( index == -1 ) {
+	index = cmor_vars[id].nattributes;
+	cmor_vars[id].nattributes += 1;
+    }
+
+    /*stores the name */
+
+    strncpy( cmor_vars[id].attributes[index], msg, CMOR_MAX_STRING );
+
+    cmor_vars[id].attributes_type[index] = type;
+
+    if( type == 'c' ) {
+
+	if( strlen( value ) > 0 ) {
+	    strncpytrim( cmor_vars[id].attributes_values_char[index],
+			 value, CMOR_MAX_STRING );
+	} else {
+	    strcpy( cmor_vars[id].attributes[index], "" );
+	}
+
+    } else if( type == 'f' ) {
+
+	cmor_vars[id].attributes_values_num[index] =
+	        ( double ) *( float * ) value;
+    }
+    else if( type == 'i' ) {
+
+	cmor_vars[id].attributes_values_num[index] =
+	        ( double ) *( int * ) value;
+    }
+    else if( type == 'd' ) {
+
+	cmor_vars[id].attributes_values_num[index] =
+	        ( double ) *( double * ) value;
+    }
+    else if( type == 'l' ) {
+
+	cmor_vars[id].attributes_values_num[index] =
+	        ( double ) *( long * ) value;
     }
     else {
-      strcpy(cmor_vars[id].attributes[index],"");
-    }
-  }
-  else if (type=='f')  cmor_vars[id].attributes_values_num[index] = (double)*(float*)value;
-  else if (type=='i')  cmor_vars[id].attributes_values_num[index] = (double)*(int*)value;
-  else if (type=='d') cmor_vars[id].attributes_values_num[index] = (double)*(double*)value;
-  else if (type=='l') cmor_vars[id].attributes_values_num[index] = (double)*(long*)value;
-  else {
-    snprintf(msg,CMOR_MAX_STRING,"unknown type %c for attribute %s of variable %s (table %s),allowed types are c,i,l,f,d",type,attribute_name,cmor_vars[id].id,cmor_tables[cmor_vars[id].ref_table_id].table_id);
-    cmor_handle_error(msg,CMOR_NORMAL);
-    cmor_pop_traceback();
-    return 1;
-  }
-  cmor_pop_traceback();
-  return 0;
+	snprintf( msg, CMOR_MAX_STRING,
+		  "unknown type %c for attribute %s of variable %s "
+	          "(table %s),allowed types are c,i,l,f,d",
+		  type, attribute_name, cmor_vars[id].id,
+		  cmor_tables[cmor_vars[id].ref_table_id].szTable_id );
+	cmor_handle_error( msg, CMOR_NORMAL );
+	cmor_pop_traceback(  );
+	return( 1 );
+    }
+    cmor_pop_traceback(  );
+    return( 0 );
 }
-int cmor_set_variable_attribute(int id, char *attribute_name, char type, void *value)
-{
-  char msg[CMOR_MAX_STRING];
-  cmor_add_traceback("cmor_set_variable_attribute");
-
-  /* First of all we need to see if it is not one of the args you can set by calling cmor_variable */
-  if (
-      (strcmp(attribute_name,"units")==0) ||
-      (strcmp(attribute_name,"missing_values")==0) ||
-      (strcmp(attribute_name,"_FillValue")==0) ||
-      (strcmp(attribute_name,"standard_name")==0) ||
-      (strcmp(attribute_name,"long_name")==0) ||
-      (strcmp(attribute_name,"flag_values")==0) ||
-      (strcmp(attribute_name,"flag_meaning")==0) ||
-      (strcmp(attribute_name,"comment")==0) ||
-      (strcmp(attribute_name,"history")==0) ||
-      (strcmp(attribute_name,"original_name")==0) ||
-      (strcmp(attribute_name,"original_units")==0) ||
-      (strcmp(attribute_name,"positive")==0) ||
-      (strcmp(attribute_name,"cell_methods")==0)
-      )
-    {
-      snprintf(msg,CMOR_MAX_STRING,"variable attribute %s (vor variable %s, table %s) must be set via a call to cmor_variable or it is automaticaly set via the tables",attribute_name,cmor_vars[id].id,cmor_tables[cmor_vars[id].ref_table_id].table_id);
-      cmor_handle_error(msg,CMOR_NORMAL);
-      cmor_pop_traceback();
-      return 1;
-    }
-  /* Before setting the attribute we need to see if the variable has been initialized */
-  if (cmor_vars[id].initialized!=-1) {
-    snprintf(msg,CMOR_MAX_STRING,"attribute %s on variable %s (table %s) will probably not be set as the variable has already been created into the output NetCDF file, please place this call BEFORE any cal to cmor_write",attribute_name,cmor_vars[id].id,cmor_tables[cmor_vars[id].ref_table_id].table_id);
-    cmor_handle_error(msg,CMOR_NORMAL);
-    cmor_pop_traceback();
-    return 1;
-  }
-  cmor_pop_traceback();
-  return cmor_set_variable_attribute_internal(id,attribute_name,type,value);
+
+/************************************************************************/
+/*                    cmor_set_variable_attribute()                     */
+/************************************************************************/
+int cmor_set_variable_attribute( int id, char *attribute_name, char type,
+				 void *value ) {
+    char msg[CMOR_MAX_STRING];
+
+    cmor_add_traceback( "cmor_set_variable_attribute" );
+
+/* -------------------------------------------------------------------- */
+/*       First of all we need to see if it is not one of the args       */
+/*       you can set by calling cmor_variable                           */
+/* -------------------------------------------------------------------- */
+
+    if( ( strcmp( attribute_name, VARIABLE_ATT_UNITS ) == 0 ) ||
+	( strcmp( attribute_name, VARIABLE_ATT_MISSINGVALUES ) == 0 ) ||
+	( strcmp( attribute_name, VARIABLE_ATT_FILLVAL) == 0 ) ||
+	( strcmp( attribute_name, VARIABLE_ATT_STANDARDNAME) == 0 ) ||
+	( strcmp( attribute_name, VARIABLE_ATT_LONGNAME) == 0 ) ||
+	( strcmp( attribute_name, VARIABLE_ATT_FLAGVALUES ) == 0 ) ||
+	( strcmp( attribute_name, VARIABLE_ATT_FLAGMEANING ) == 0 ) ||
+	( strcmp( attribute_name, VARIABLE_ATT_COMMENT ) == 0 ) ||
+	( strcmp( attribute_name, VARIABLE_ATT_HISTORY  ) == 0 ) ||
+	( strcmp( attribute_name, VARIABLE_ATT_ORIGINALNAME ) == 0 ) ||
+	( strcmp( attribute_name, VARIABLE_ATT_ORIGINALUNITS ) == 0 ) ||
+	( strcmp( attribute_name, VARIABLE_ATT_POSITIVE) == 0 ) ||
+	( strcmp( attribute_name, VARIABLE_ATT_CELLMETHODS ) == 0 ) ) {
+	snprintf( msg, CMOR_MAX_STRING,
+		  "variable attribute %s (vor variable %s, table %s) must be set via a call to cmor_variable or it is automaticaly set via the tables",
+		  attribute_name, cmor_vars[id].id,
+		  cmor_tables[cmor_vars[id].ref_table_id].szTable_id );
+	cmor_handle_error( msg, CMOR_NORMAL );
+	cmor_pop_traceback(  );
+	return( 1 );
+    }
+/* -------------------------------------------------------------------- */
+/*      Before setting the attribute we need to see if the variable     */
+/*      has been initialized                                            */
+/* -------------------------------------------------------------------- */
+    if( cmor_vars[id].initialized != -1 ) {
+	snprintf( msg, CMOR_MAX_STRING,
+		  "attribute %s on variable %s (table %s) will probably not be set as the variable has already been created into the output NetCDF file, please place this call BEFORE any cal to cmor_write",
+		  attribute_name, cmor_vars[id].id,
+		  cmor_tables[cmor_vars[id].ref_table_id].szTable_id );
+	cmor_handle_error( msg, CMOR_NORMAL );
+	cmor_pop_traceback(  );
+	return( 1 );
+    }
+    cmor_pop_traceback(  );
+    return( cmor_set_variable_attribute_internal( id, attribute_name, type,
+						 value ));
+}
+/************************************************************************/
+/*                    cmor_get_variable_attribute()                     */
+/************************************************************************/
+
+int cmor_get_variable_attribute( int id, char *attribute_name,
+				 void *value ) {
+    extern cmor_var_t cmor_vars[];
+    int i, index;
+    char msg[CMOR_MAX_STRING];
+    char type;
+
+    cmor_add_traceback( "cmor_get_variable_attribute" );
+    cmor_is_setup(  );
+    index = -1;
+    for( i = 0; i < cmor_vars[id].nattributes; i++ ) {
+	if( strcmp( cmor_vars[id].attributes[i], attribute_name ) == 0 ) {
+	    index = i;
+	    break;
+	}			/* we found it */
+    }
+    if( index == -1 ) {
+	snprintf( msg, CMOR_MAX_STRING,
+		  "Attribute %s could not be found for variable %i (%s, table: %s)",
+		  attribute_name, id, cmor_vars[id].id,
+		  cmor_tables[cmor_vars[id].ref_table_id].szTable_id );
+	cmor_handle_error( msg, CMOR_NORMAL );
+	cmor_pop_traceback(  );
+	return( 1 );
+    }
+    type = cmor_vars[id].attributes_type[i];
+    if( type == 'c' )
+	strncpy( value, cmor_vars[id].attributes_values_char[index],
+		 CMOR_MAX_STRING );
+    else if( type == 'f' )
+	value = ( float * ) &cmor_vars[id].attributes_values_num[index];
+    else if( type == 'i' )
+	value = ( int * ) &cmor_vars[id].attributes_values_num[index];
+    else if( type == 'l' )
+	value = ( long * ) &cmor_vars[id].attributes_values_num[index];
+    else
+	value = ( double * ) &cmor_vars[id].attributes_values_num[index];
+    cmor_pop_traceback(  );
+    return( 0 );
 }
 
-int cmor_get_variable_attribute(int id, char *attribute_name, void *value)
-{
-  extern cmor_var_t cmor_vars[];
-  int i,index;
-  char msg[CMOR_MAX_STRING];
-  char type;
-  cmor_add_traceback("cmor_get_variable_attribute");
-  cmor_is_setup();
-  index=-1;
-  for (i=0;i<cmor_vars[id].nattributes;i++) {
-    if (strcmp(cmor_vars[id].attributes[i],attribute_name)==0) {index=i;break;} /* we found it */
-  }
-  if (index==-1) {
-    snprintf(msg,CMOR_MAX_STRING,"Attribute %s could not be found for variable %i (%s, table: %s)",attribute_name,id,cmor_vars[id].id,cmor_tables[cmor_vars[id].ref_table_id].table_id);
-    cmor_handle_error(msg,CMOR_NORMAL);
-    cmor_pop_traceback();
-    return 1;
-  }
-  type = cmor_vars[id].attributes_type[i];
-  if (type=='c')  strncpy(value,cmor_vars[id].attributes_values_char[index],CMOR_MAX_STRING);
-  else if (type=='f') value = (float *)&cmor_vars[id].attributes_values_num[index];
-  else if (type=='i')  value = (int *)&cmor_vars[id].attributes_values_num[index];
-  else if (type=='l') value = (long *)&cmor_vars[id].attributes_values_num[index];
-  else  value = (double *)&cmor_vars[id].attributes_values_num[index];
-  cmor_pop_traceback();
-  return 0;
+/************************************************************************/
+/*                    cmor_has_variable_attribute()                     */
+/************************************************************************/
+int cmor_has_variable_attribute( int id, char *attribute_name ) {
+    extern cmor_var_t cmor_vars[];
+    int i, index;
+    char type;
+    char msg[CMOR_MAX_STRING];
+
+    cmor_add_traceback( "cmor_has_variable_attribute" );
+    cmor_is_setup(  );
+    index = -1;
+    for( i = 0; i < cmor_vars[id].nattributes; i++ ) {
+	if( strcmp( cmor_vars[id].attributes[i], attribute_name ) == 0 ) {
+	    index = i;
+	    break;
+	}
+    }
+    if( ( index == -1 ) || strlen( attribute_name ) == 0 ) {
+	cmor_pop_traceback(  );
+	return( 1 );
+    }
+    i = 0;
+    /* if it is empty we assume not defined */
+    cmor_get_variable_attribute_type( id, attribute_name, &type );
+    if( type == 'c' ) {
+	cmor_get_variable_attribute( id, attribute_name, msg );
+	if( strlen( msg ) == 0 ) {
+	    /* empty string attribute has been deleted */
+	    i = 1;
+	}
+    }
+    cmor_pop_traceback(  );
+    return( i );
 }
-int cmor_has_variable_attribute(int id, char *attribute_name)
-{
-  extern cmor_var_t cmor_vars[];
-  int i,index;
-  char type;
-  char msg[CMOR_MAX_STRING];
-  cmor_add_traceback("cmor_has_variable_attribute");
-  cmor_is_setup();
-  index=-1;
-  for (i=0;i<cmor_vars[id].nattributes;i++) {
-    if (strcmp(cmor_vars[id].attributes[i],attribute_name)==0) {index=i;break;} /* we found it */
-  }
-  if ((index==-1) || strlen(attribute_name)==0)  {
-   cmor_pop_traceback();
-    return 1;
-  }
-  i=0;
-  /* if it is empty we assume not defined */
-  cmor_get_variable_attribute_type(id,attribute_name,&type);
-  if (type=='c') {
-    cmor_get_variable_attribute(id,attribute_name,msg);
-    if (strlen(msg)==0) {
-      /* empty string attribute has been deleted */
-      i=1;
-    }
-  }
-  cmor_pop_traceback();
-  return i;
+/************************************************************************/
+/*                 cmor_get_variable_attribute_names()                  */
+/************************************************************************/
+int cmor_get_variable_attribute_names( int id, int *nattributes,
+				       char
+				       attributes_names[]
+				       [CMOR_MAX_STRING] ) {
+    extern cmor_var_t cmor_vars[];
+    int i;
+
+    cmor_add_traceback( "cmor_get_variable_attribute_names" );
+    cmor_is_setup(  );
+    *nattributes = cmor_vars[id].nattributes;
+    for( i = 0; i < cmor_vars[id].nattributes; i++ ) {
+	strncpy( attributes_names[i], cmor_vars[id].attributes[i],
+		 CMOR_MAX_STRING );
+    }
+    cmor_pop_traceback(  );
+    return( 0 );
 }
+/************************************************************************/
+/*                 cmor_get_variable_attribute_type()                   */
+/************************************************************************/
+int cmor_get_variable_attribute_type( int id,
+        char *attribute_name, char *type ) {
+
+    extern cmor_var_t cmor_vars[];
+    int i, index;
+    char msg[CMOR_MAX_STRING];
+
+    cmor_add_traceback( "cmor_get_variable_attribute_type" );
+    cmor_is_setup(  );
+    index = -1;
+
+    for( i = 0; i < cmor_vars[id].nattributes; i++ ) {
+	if( strcmp( cmor_vars[id].attributes[i], attribute_name ) == 0 ) {
+	    index = i;
+	    break;
+	}
+    }
 
-int cmor_get_variable_attribute_names(int id, int *nattributes,char attributes_names[][CMOR_MAX_STRING])
-{
-  extern cmor_var_t cmor_vars[];
-  int i;
-  cmor_add_traceback("cmor_get_variable_attribute_names");
-  cmor_is_setup();
-  *nattributes = cmor_vars[id].nattributes;
-  for (i=0;i<cmor_vars[id].nattributes;i++) {
-    strncpy(attributes_names[i],cmor_vars[id].attributes[i],CMOR_MAX_STRING);
-  }
-  cmor_pop_traceback();
-  return 0;
+    if( index == -1 ) {
+	snprintf( msg, CMOR_MAX_STRING,
+		  "Attribute %s could not be found for variable %i (%s, table: %s)",
+		  attribute_name, id, cmor_vars[id].id,
+		  cmor_tables[cmor_vars[id].ref_table_id].szTable_id );
+	cmor_handle_error( msg, CMOR_NORMAL );
+	cmor_pop_traceback(  );
+	return( 1 );
+    }
+
+    *type = cmor_vars[id].attributes_type[i];
+    cmor_pop_traceback(  );
+    return( 0 );
 }
+/************************************************************************/
+/*                            cmor_zfactor()                            */
+/************************************************************************/
+int cmor_zfactor( int *zvar_id, int axis_id, char *name, char *units,
+		  int ndims, int axes_ids[], char type, void *values,
+		  void *bounds ) {
+
+    extern int cmor_nvars;
+    extern cmor_var_t cmor_vars[];
+
+    int i, j, k;
+    int n, gid;
+    int var_id;
+
+    char msg[CMOR_MAX_STRING];
+    extern ut_system *ut_read;
+    ut_unit *user_units, *cmor_units;
+    cv_converter *ut_cmor_converter;
+    char local_unit[CMOR_MAX_STRING];
+    double tmp;
+
+    cmor_add_traceback( "cmor_zfactor" );
+    cmor_is_setup(  );
+
+/* -------------------------------------------------------------------- */
+/*      first check if we need to convert values                        */
+/* -------------------------------------------------------------------- */
+    if( cmor_axes[axis_id].hybrid_out == cmor_axes[axis_id].hybrid_in ) {	
+
+/* -------------------------------------------------------------------- */
+/*      no it's a normal hybrid, no conv                                */
+/* -------------------------------------------------------------------- */
+	i = cmor_variable( &var_id, name, units, ndims, axes_ids, type,
+			   NULL, NULL, NULL, NULL, NULL, NULL );
+	cmor_vars[var_id].needsinit = 0;
+	cmor_vars[var_id].zaxis = axis_id;
+	if( values != NULL ) {
+	    n = 1;
+	    for( i = 0; i < ndims; i++ ) {
+		if( axes_ids[i] > -1 ) {
+		    n *= cmor_axes[axes_ids[i]].length;
+		} else {
+/* -------------------------------------------------------------------- */
+/*      ok irregular grid                                               */
+/* -------------------------------------------------------------------- */
+		    gid = -axes_ids[i] - CMOR_MAX_GRIDS;
+		    for( j = 0; j < cmor_grids[gid].ndims; j++ ) {
+			n *= cmor_axes[cmor_grids[gid].axes_ids[j]].length;
+		    }
+		}
+	    }
+	    cmor_vars[var_id].values = malloc( n * sizeof ( double ) );
+	    if( cmor_vars[var_id].values == NULL ) {
+		snprintf( msg, CMOR_MAX_STRING,
+			  "cmor_zfactor: zaxis %s, cannot allocate "
+		          "memory for %i double elts %s var '%s' (table: %s)",
+			  cmor_axes[axis_id].id, n, cmor_vars[var_id].id,
+			  cmor_vars[var_id].id,
+			  cmor_tables[cmor_vars[var_id].ref_table_id].
+			  szTable_id );
+		cmor_handle_error( msg, CMOR_CRITICAL );
+	    }
+
+	    for( i = 0; i < n; i++ ) {
+		if( type == 'd' ) {
+		    cmor_vars[var_id].values[i] =
+			( double ) ( ( double * ) values )[i];
+		}
+		else if( type == 'f' ) {
+		    cmor_vars[var_id].values[i] =
+			( double ) ( ( float * ) values )[i];
+		}
+		else if( type == 'l' ) {
+		    cmor_vars[var_id].values[i] =
+			( double ) ( ( long * ) values )[i];
+		}
+		else if( type == 'i' ) {
+		    cmor_vars[var_id].values[i] =
+			( double ) ( ( int * ) values )[i];
+		}
+	    }
+
+/* -------------------------------------------------------------------- */
+/*      ok we may need to convert to some decent untis                  */
+/* -------------------------------------------------------------------- */
+	    strncpy( local_unit, cmor_vars[var_id].ounits,
+		     CMOR_MAX_STRING );
+	    cmor_units = ut_parse( ut_read, local_unit, UT_ASCII );
+	    
+	    if( ut_get_status(  ) != UT_SUCCESS ) {
+		snprintf( msg, CMOR_MAX_STRING,
+			  "Udunits: Error parsing units: %s, zaxis: "
+		          "%s, variable %s (table: %s)",
+			  local_unit, cmor_axes[axis_id].id,
+			  cmor_vars[var_id].id,
+			  cmor_tables[cmor_vars[var_id].ref_table_id].
+			  szTable_id );
+		cmor_handle_error( msg, CMOR_CRITICAL );
+	    }
+	    
+	    strncpy( local_unit, units, CMOR_MAX_STRING );
+	    ut_trim( local_unit, UT_ASCII );
+	    user_units = ut_parse( ut_read, local_unit, UT_ASCII );
+	    if( ut_get_status(  ) != UT_SUCCESS ) {
+
+		snprintf( msg, CMOR_MAX_STRING,
+			  "Udunits: Error parsing units: %s, zaxis %s, "
+		          "variable %s (table: %s)",
+			  local_unit, cmor_axes[axis_id].id,
+			  cmor_vars[var_id].id,
+			  cmor_tables[cmor_vars[var_id].ref_table_id].
+			  szTable_id );
+		cmor_handle_error( msg, CMOR_CRITICAL );
+
+	    }
 
-int cmor_get_variable_attribute_type(int id, char *attribute_name, char *type)
-{
-  extern cmor_var_t cmor_vars[];
-  int i,index;
-  char msg[CMOR_MAX_STRING];
-  cmor_add_traceback("cmor_get_variable_attribute_type");
-  cmor_is_setup();
-  index=-1;
-  for (i=0;i<cmor_vars[id].nattributes;i++) {
-    if (strcmp(cmor_vars[id].attributes[i],attribute_name)==0) {index=i;break;} /* we found it */
-  }
-  if (index==-1) {
-    snprintf(msg,CMOR_MAX_STRING,"Attribute %s could not be found for variable %i (%s, table: %s)",attribute_name,id,cmor_vars[id].id,cmor_tables[cmor_vars[id].ref_table_id].table_id);
-    cmor_handle_error(msg,CMOR_NORMAL);
+	    ut_cmor_converter = ut_get_converter( user_units, cmor_units );
+	    if( ut_get_status(  ) != UT_SUCCESS ) {
+		snprintf( msg, CMOR_MAX_STRING,
+			  "Udunits: Error getting converter from %s to %s, "
+		          "zaxis: %s, variable %s (table: %s)",
+			  units, cmor_vars[var_id].ounits,
+			  cmor_axes[axis_id].id, cmor_vars[var_id].id,
+			  cmor_tables[cmor_vars[var_id].ref_table_id].
+			  szTable_id );
+		cmor_handle_error( msg, CMOR_CRITICAL );
+	    }
+
+	    cv_convert_doubles( ut_cmor_converter,
+				&cmor_vars[var_id].values[0], n,
+				&cmor_vars[var_id].values[0] );
+
+	    if( ut_get_status(  ) != UT_SUCCESS ) {
+		snprintf( msg, CMOR_MAX_STRING,
+			  "Udunits: Error with converter (from %s to %s), zaxis: %s, variable %s (table: %s)",
+			  units, cmor_vars[var_id].ounits,
+			  cmor_axes[axis_id].id, cmor_vars[var_id].id,
+			  cmor_tables[cmor_vars[var_id].ref_table_id].
+			  szTable_id );
+		cmor_handle_error( msg, CMOR_CRITICAL );
+	    }
+
+	    cv_free( ut_cmor_converter );
+	    if( ut_get_status(  ) != UT_SUCCESS ) {
+		snprintf( msg, CMOR_MAX_STRING,
+			  "Udunits: Error freeing converter, zaxis %s, variable %s (table: %s)",
+			  cmor_axes[axis_id].id, cmor_vars[var_id].id,
+			  cmor_tables[cmor_vars[var_id].ref_table_id].
+			  szTable_id );
+		cmor_handle_error( msg, CMOR_CRITICAL );
+	    }
+
+	    ut_free( cmor_units );
+	    if( ut_get_status(  ) != UT_SUCCESS ) {
+		snprintf( msg, CMOR_MAX_STRING,
+			  "Udunits: Error freeing units %s, zaxis %s, variable %s (table: %s)",
+			  cmor_vars[var_id].ounits, cmor_axes[axis_id].id,
+			  cmor_vars[var_id].id,
+			  cmor_tables[cmor_vars[var_id].ref_table_id].
+			  szTable_id );
+		cmor_handle_error( msg, CMOR_CRITICAL );
+	    }
+
+	    ut_free( user_units );
+	    if( ut_get_status(  ) != UT_SUCCESS ) {
+		snprintf( msg, CMOR_MAX_STRING,
+			  "Udunits: Error freeing units %s, zaxis %s,variable %s (table: %s)",
+			  units, cmor_axes[axis_id].id,
+			  cmor_vars[var_id].id,
+			  cmor_tables[cmor_vars[var_id].ref_table_id].
+			  szTable_id );
+		cmor_handle_error( msg, CMOR_CRITICAL );
+	    }
+
+	    cmor_vars[var_id].itype = 'd';
+	    *zvar_id = var_id;
+	} else {
+	    /* Ok let's check to make sure it has a time axis! */
+	    int k = 0;
+	    for( i = 0; i < ndims; i++ ) {
+		if( axes_ids[i] > -1 ) {
+		    if( cmor_axes[axes_ids[i]].axis == 'T' ) {
+			k = 1;
+			break;
+		    }
+		} else {
+		    /* ok irregular grid */
+		    gid = -axes_ids[i] - CMOR_MAX_GRIDS;
+		    for( j = 0; j < cmor_grids[gid].ndims; j++ ) {
+			if( cmor_axes[cmor_grids[gid].axes_ids[j]].axis ==
+			    'T' ) {
+			    k = 1;
+			    break;
+			}
+		    }
+		}
+	    }
+
+	    if( k == 0 ) {
+		snprintf( msg, CMOR_MAX_STRING,
+			  "zfactor: axis %s, variable %s (table %s), is "
+		          "not time dependent and you did not provide "
+		          "any values",
+			  cmor_axes[axis_id].id, name,
+			  cmor_tables[cmor_vars[var_id].ref_table_id].
+			  szTable_id );
+		cmor_handle_error( msg, CMOR_CRITICAL );
+	    }
+	    *zvar_id = var_id;
+	}
+	if( bounds != NULL ) {
+	    if( ndims != 1 ) {
+		snprintf( msg, CMOR_MAX_STRING,
+			  "zfactor axis %s, variable %s (table: %s): you "
+		          "passed bounds values but you also declared %i "
+		          "dimensions, we will ignore you bounds",
+			  cmor_axes[axis_id].id, name,
+			  cmor_tables[cmor_vars[var_id].ref_table_id].
+			  szTable_id, ndims );
+		cmor_handle_error( msg, CMOR_WARNING );
+	    } else {
+		strncpy( msg, name, CMOR_MAX_STRING );
+		strncat( msg, "_bnds", CMOR_MAX_STRING - strlen( msg ) );
+		i = cmor_variable( &var_id, msg, units, ndims, axes_ids,
+				   'd', NULL, NULL, NULL, NULL, NULL,
+				   NULL );
+		cmor_vars[var_id].zaxis = axis_id;
+		cmor_vars[var_id].needsinit = 0;
+		n = cmor_axes[axes_ids[0]].length;
+		cmor_vars[var_id].values = malloc( 2 * n * sizeof ( double ) );
+		if( cmor_vars[var_id].values == NULL ) {
+		    snprintf( msg, CMOR_MAX_STRING,
+			      "cmor_zfactor: zaxis %s, cannot allocate "
+		              "memory for %i double bounds elts %s var '%s' "
+		              "(table: %s)",
+			      cmor_axes[axis_id].id, 2 * n,
+			      cmor_vars[var_id].id, cmor_vars[var_id].id,
+			      cmor_tables[cmor_vars[var_id].ref_table_id].
+			      szTable_id );
+		    cmor_handle_error( msg, CMOR_CRITICAL );
+		}
+
+		cmor_vars[var_id].isbounds = 1;
+		for( i = 0; i < n; i++ ) {
+
+		    if( type == 'd' ) {
+			cmor_vars[var_id].values[2 * i] =
+			    ( double ) ( ( double * ) bounds )[i];
+			cmor_vars[var_id].values[2 * i + 1] =
+			    ( double ) ( ( double * ) bounds )[i + 1];
+
+		    } else if( type == 'f' ) {
+
+			cmor_vars[var_id].values[2 * i] =
+			    ( double ) ( ( float * ) bounds )[i];
+			cmor_vars[var_id].values[2 * i + 1] =
+			    ( double ) ( ( float * ) bounds )[i + 1]
+			                                      ;
+		    } else if( type == 'l' ) {
+
+			cmor_vars[var_id].values[2 * i] =
+			    ( double ) ( ( long * ) bounds )[i];
+			cmor_vars[var_id].values[2 * i + 1] =
+			    ( double ) ( ( long * ) bounds )[i + 1];
+
+		    } else if( type == 'i' ) {
+
+			cmor_vars[var_id].values[2 * i] =
+			    ( double ) ( ( int * ) bounds )[i];
+			cmor_vars[var_id].values[2 * i + 1] =
+			    ( double ) ( ( int * ) bounds )[i + 1];
+
+		    }
+		}
+		/* ok we may need to convert to some decent untis */
+		strncpy( local_unit, cmor_vars[var_id].ounits,
+			 CMOR_MAX_STRING );
+
+		cmor_units = ut_parse( ut_read, local_unit, UT_ASCII );
+
+		if( ut_get_status(  ) != UT_SUCCESS ) {
+		    snprintf( msg, CMOR_MAX_STRING,
+			      "Udunits: Error parsing units: %s, for zaxis %s, variable %s (table: %s)",
+			      local_unit, cmor_axes[axis_id].id,
+			      cmor_vars[var_id].id,
+			      cmor_tables[cmor_vars[var_id].ref_table_id].
+			      szTable_id );
+
+		    cmor_handle_error( msg, CMOR_CRITICAL );
+
+		}
+
+		strncpy( local_unit, units, CMOR_MAX_STRING );
+		ut_trim( local_unit, UT_ASCII );
+
+		user_units = ut_parse( ut_read, local_unit, UT_ASCII );
+		if( ut_get_status(  ) != UT_SUCCESS ) {
+
+		    snprintf( msg, CMOR_MAX_STRING,
+			      "Udunits: Error parsing units: %s, zaxis %s, variable %s (table: %s)",
+			      local_unit, cmor_axes[axis_id].id,
+			      cmor_vars[var_id].id,
+			      cmor_tables[cmor_vars[var_id].ref_table_id].
+			      szTable_id );
+		    cmor_handle_error( msg, CMOR_CRITICAL );
+
+		}
+		ut_cmor_converter = ut_get_converter( user_units, cmor_units );
+
+		if( ut_get_status(  ) != UT_SUCCESS ) {
+
+		    snprintf( msg, CMOR_MAX_STRING,
+			      "Udunits: Error getting converter from %s to %s, zaxis %s, variable %s (table: %s)",
+			      units, cmor_vars[var_id].ounits,
+			      cmor_axes[axis_id].id, cmor_vars[var_id].id,
+			      cmor_tables[cmor_vars[var_id].ref_table_id].
+			      szTable_id );
+		    cmor_handle_error( msg, CMOR_CRITICAL );
+
+		}
+		cv_convert_doubles( ut_cmor_converter,
+				    &cmor_vars[var_id].values[0], 2 * n,
+				    &cmor_vars[var_id].values[0] );
+
+		if( ut_get_status(  ) != UT_SUCCESS ) {
+
+		    snprintf( msg, CMOR_MAX_STRING,
+			      "Udunits: Error converting units from %s to %s, zaxis %s, variable %s (table: %s)",
+			      units, cmor_vars[var_id].ounits,
+			      cmor_axes[axis_id].id, cmor_vars[var_id].id,
+			      cmor_tables[cmor_vars[var_id].ref_table_id].
+			      szTable_id );
+		    cmor_handle_error( msg, CMOR_CRITICAL );
+
+		}
+
+		cv_free( ut_cmor_converter );
+
+		if( ut_get_status(  ) != UT_SUCCESS ) {
+
+		    snprintf( msg, CMOR_MAX_STRING,
+			      "Udunits: Error freeing converter, zaxis %s, "
+		              "variable %s (table: %s)",
+			      cmor_axes[axis_id].id, cmor_vars[var_id].id,
+			      cmor_tables[cmor_vars[var_id].ref_table_id].
+			      szTable_id );
+		    cmor_handle_error( msg, CMOR_CRITICAL );
+
+		}
+
+		ut_free( cmor_units );
+
+		if( ut_get_status(  ) != UT_SUCCESS ) {
+
+		    snprintf( msg, CMOR_MAX_STRING,
+			      "Udunits: Error freeing cmor units %s, zaxis "
+			      "%s, variable %s (table: %s)",
+			      cmor_vars[var_id].ounits,
+			      cmor_axes[axis_id].id, cmor_vars[var_id].id,
+			      cmor_tables[cmor_vars[var_id].ref_table_id].
+			      szTable_id );
+		    cmor_handle_error( msg, CMOR_CRITICAL );
+
+		}
+
+		ut_free( user_units );
+
+		if( ut_get_status(  ) != UT_SUCCESS ) {
+
+		    snprintf( msg, CMOR_MAX_STRING,
+			      "Udunits: Error freeing units %s, zaxis %s, "
+		              "variable %s (table: %s)",
+			      units, cmor_axes[axis_id].id,
+			      cmor_vars[var_id].id,
+			      cmor_tables[cmor_vars[var_id].ref_table_id].
+			      szTable_id );
+		    cmor_handle_error( msg, CMOR_CRITICAL );
+
+		}
+
+	    }
+	}
+    } else {
+	/* first prepare the conversion thing */
+
+	/* stores the original hybrid_in to put back later */
+	i = cmor_axes[axis_id].hybrid_in;
+	cmor_axes[axis_id].hybrid_in = cmor_axes[axis_id].hybrid_out;
+	/* ok we now have 3 possible case */
+	if( i == 1 ) {
+	    n = cmor_zfactor( zvar_id, axis_id, name, units, ndims,
+			      axes_ids, type, values, bounds );
+  /* case alternate hybrid sigma */
+	} else if( i == 2 ) {
+
+	    if( strcmp( name, "ap" ) == 0 ) {
+		/* creates the p0 */
+		tmp = ( double ) 1.e5;
+		j = cmor_zfactor( zvar_id, axis_id, "p0", "Pa", 0, NULL,
+				  'd', &tmp, NULL );
+		/* creates the "a" */
+
+		n = cmor_zfactor( zvar_id, axis_id, "a", "", ndims, axes_ids,
+		        type, values, bounds );	/* ok redefined it as a "a" factor */
+
+		/* ok we need to change the values now */
+		/* first convert p0 to user units */
+		cmor_units = ut_parse( ut_read, "Pa", UT_ASCII );
+		strncpy( local_unit, units, CMOR_MAX_STRING );
+		ut_trim( local_unit, UT_ASCII );
+		user_units = ut_parse( ut_read, local_unit, UT_ASCII );
+
+		if( ut_get_status(  ) != UT_SUCCESS ) {
+		    snprintf( msg, CMOR_MAX_STRING,
+			      "Udunits: Error parsing user units: %s, "
+		              "zaxis %s (table: %s), when creating "
+		              "zfactor: %s",
+			      local_unit, cmor_axes[axis_id].id,
+			      cmor_tables[cmor_axes[axis_id].ref_table_id].
+			      szTable_id, name );
+		    cmor_handle_error( msg, CMOR_CRITICAL );
+		}
+		if( ut_are_convertible( cmor_units, user_units ) == 0 ) {
+		    snprintf( msg, CMOR_MAX_STRING,
+			      "Udunuits: Pa and user units (%s) are "
+		              "incompatible, zaxis %s (table: %s), when "
+		              "creating zfactor: %s",
+			      units, cmor_axes[axis_id].id,
+			      cmor_tables[cmor_axes[axis_id].ref_table_id].
+			      szTable_id, name );
+		    cmor_handle_error( msg, CMOR_CRITICAL );
+		    cmor_pop_traceback(  );
+		    return( 1 );
+		}
+		ut_cmor_converter =
+		    ut_get_converter( cmor_units, user_units );
+		if( ut_get_status(  ) != UT_SUCCESS ) {
+		    snprintf( msg, CMOR_MAX_STRING,
+			      "Udunits: Error getting converter from Pa "
+		              "to %s,variable %s (table %s), when creating "
+		              "zfactor: %s",
+			      units, cmor_axes[axis_id].id,
+			      cmor_tables[cmor_axes[axis_id].ref_table_id].
+			      szTable_id, name );
+		    cmor_handle_error( msg, CMOR_CRITICAL );
+		}
+		tmp = ( double ) 1.e5;
+		tmp = cv_convert_double( ut_cmor_converter, tmp );
+		/* free units thing */
+		if( ut_get_status(  ) != UT_SUCCESS ) {
+
+		    snprintf( msg, CMOR_MAX_STRING,
+			      "Udunits: Error converting units from Pa "
+		              "to %s, zaxis %s (table: %s), when creating "
+		              "zfactor: %s",
+			      local_unit, cmor_axes[axis_id].id,
+			      cmor_tables[cmor_axes[axis_id].ref_table_id].
+			      szTable_id, name );
+		    cmor_handle_error( msg, CMOR_CRITICAL );
+
+		}
+		cv_free( ut_cmor_converter );
+		if( ut_get_status(  ) != UT_SUCCESS ) {
+
+		    snprintf( msg, CMOR_MAX_STRING,
+			      "Udunits: Error freeing converter, zaxis %s "
+		              "(table: %s), when creating zfactor: %s",
+			      cmor_axes[axis_id].id,
+			      cmor_tables[cmor_axes[axis_id].ref_table_id].
+			      szTable_id, name );
+		    cmor_handle_error( msg, CMOR_CRITICAL );
+
+		}
+
+		ut_free( cmor_units );
+		if( ut_get_status(  ) != UT_SUCCESS ) {
+
+		    snprintf( msg, CMOR_MAX_STRING,
+			      "Udunits: Error freeing units Pa, zaxis: %s "
+		              "(table: %s), when creating zfactor: %s",
+			      cmor_axes[axis_id].id,
+			      cmor_tables[cmor_axes[axis_id].ref_table_id].
+			      szTable_id, name );
+		    cmor_handle_error( msg, CMOR_CRITICAL );
+		}
+
+		ut_free( user_units );
+		if( ut_get_status(  ) != UT_SUCCESS ) {
+
+		    snprintf( msg, CMOR_MAX_STRING,
+			      "Udunits: Error freeing units %s, zaxis %s "
+		              "(table: %s), when creating zfactor: %s",
+			      local_unit, cmor_axes[axis_id].id,
+			      cmor_tables[cmor_axes[axis_id].ref_table_id].
+			      szTable_id, name );
+		    cmor_handle_error( msg, CMOR_CRITICAL );
+
+		}
+
+		if( values != NULL ) {
+		    n = cmor_axes[axes_ids[0]].length;
+		    for( j = 0; j < n; j++ )
+			cmor_vars[*zvar_id].values[j] /= tmp;
+		}
+		if( bounds != NULL ) {
+
+		    k = -1;
+		    for( n = 0; n <= cmor_nvars; n++ )
+			if( ( strcmp( cmor_vars[n].id, "a_bnds" ) == 0 )
+			    && ( cmor_vars[n].zaxis == axis_id ) ) {
+			    k = n;
+			    break;
+			}
+
+		    n = cmor_axes[axes_ids[0]].length;
+		    for( j = 0; j < 2 * n; j++ )
+			cmor_vars[k].values[j] /= tmp;
+		}
+	    } else {
+		n = cmor_zfactor( zvar_id, axis_id, name, units, ndims,
+				  axes_ids, type, values, bounds );
+	    }
+/* atmosphere_sigma_coordinates case */
+	} else if( i == 3 ) {
+	    if( strcmp( name, "sigma" ) == 0 ) {
+
+		/*ok first we need to make sure we created the ptop */
+		j = -1;
+		for( n = 0; n <= cmor_nvars; n++ ) {
+		    if( ( strcmp( cmor_vars[n].id, "ptop" ) == 0 )
+			&& ( cmor_vars[n].zaxis == axis_id ) ) {
+			j = n;
+			break;
+		    }
+		}
+
+		if( j == -1 ) {	/* we did not find the ztop! */
+		    snprintf( msg, CMOR_MAX_STRING,
+			      "zfactor variable \"ptop\" for zfactor axis: "
+		              "%i (%s, table: %s), is not defined when "
+		              "creating zfactor %s, please define ptop first",
+			      axis_id, cmor_axes[axis_id].id,
+			      cmor_tables[cmor_axes[axis_id].ref_table_id].
+			      szTable_id, name );
+		    cmor_handle_error( msg, CMOR_CRITICAL );
+		}
+
+		tmp = ( double ) 1.e5;
+
+		/* creates the p0 */
+
+		n = cmor_zfactor( zvar_id, axis_id, "p0", "Pa", 0, NULL,
+				  'd', &tmp, NULL );
+
+		tmp = cmor_vars[j].values[0];	/* stores ptop (in Pa) */
+
+		/* creates the "a" */
+                /* ok redefined it as a "a" factor */
+
+		n = cmor_zfactor( zvar_id, axis_id, "a", "", ndims,
+		        axes_ids, type, values, bounds );
+
+		if( values != NULL ) {
+		    n = cmor_axes[axes_ids[0]].length;
+		    for( j = 0; j < n; j++ )
+			cmor_vars[*zvar_id].values[j] =
+			    ( 1. -
+			      cmor_vars[*zvar_id].values[j] ) * tmp / 1.e5;
+		}
+
+		if( bounds != NULL ) {
+		    k = -1;
+		    for( n = 0; n <= cmor_nvars; n++ )
+			if( ( strcmp( cmor_vars[n].id, "a_bnds" ) == 0 )
+			    && ( cmor_vars[n].zaxis == axis_id ) ) {
+			    k = n;
+			    break;
+			}
+
+		    n = cmor_axes[axes_ids[0]].length;
+		    for( j = 0; j < 2 * n; j++ )
+			cmor_vars[k].values[j] /= tmp;
+		}
+
+		/* creates the "b" */
+		n = cmor_zfactor( zvar_id, axis_id, "b", "", ndims, axes_ids, type, values, bounds );	/* ok redefined it as a "a" factor */
+	    } else
+		n = cmor_zfactor( zvar_id, axis_id, name, units, ndims,
+				  axes_ids, type, values, bounds );
+	}
+
+	/* put back input type */
+	cmor_axes[axis_id].hybrid_in = i;
+
+    }
+    cmor_pop_traceback(  );
+    return( 0 );
+}
+
+/************************************************************************/
+/*                        cmor_update_history()                         */
+/************************************************************************/
+int cmor_update_history(int var_id, char *add) {
+    struct tm *ptr;
+    time_t lt;
+    char date[CMOR_MAX_STRING];
+    char tmp[CMOR_MAX_STRING];
+    char tmp2[CMOR_MAX_STRING];
+
+    /* first figures out time */
+    lt = time(NULL);
+    ptr = gmtime(&lt);
+    snprintf(date, CMOR_MAX_STRING, "%.4i-%.2i-%.2iT%.2i:%.2i:%.2iZ",
+            ptr->tm_year + 1900, ptr->tm_mon + 1, ptr->tm_mday, ptr->tm_hour,
+            ptr->tm_min, ptr->tm_sec);
+
+    if (cmor_has_variable_attribute(var_id, "history") == 0) {
+
+        cmor_get_variable_attribute(var_id, "history", &tmp[0]);
+
+    } else {
+
+        tmp[0] = '\0';
+    }
+
+    snprintf( tmp2, CMOR_MAX_STRING, "%s %s altered by CMOR: %s.",
+              tmp, date, add );
+
+    cmor_set_variable_attribute_internal(var_id, "history", 'c', tmp2);
     cmor_pop_traceback();
-    return 1;
-  }
-  *type = cmor_vars[id].attributes_type[i];
-  cmor_pop_traceback();
-  return 0;
+    return (0);
 }
+/************************************************************************/
+/*                       cmor_history_contains()                        */
+/************************************************************************/
 
-int cmor_zfactor (int *zvar_id,int axis_id, char *name, char *units, int ndims, int axes_ids[], char type, void *values, void *bounds)
-{
-  extern int cmor_nvars;
-  extern cmor_var_t cmor_vars[];
-
-  int i,j,k;
-  int n,gid;
-  int var_id;
-
-  char msg[CMOR_MAX_STRING];
-  extern ut_system *ut_read;
-  ut_unit *user_units, *cmor_units;
-  cv_converter *ut_cmor_converter;
-  char local_unit[CMOR_MAX_STRING];
-  double tmp;
-
-  cmor_add_traceback("cmor_zfactor");
-  cmor_is_setup();
-
-  /* first check if we need to convert values */
-  /* printf("in zf:%s, %s, %i, %i\n",name,cmor_axes[axis_id].id,ndims,axes_ids[0]); */
-  /* printf("in zf:%s, %s, %i, %i\n",name,cmor_axes[axis_id].id,cmor_axes[axis_id].hybrid_out,cmor_axes[axis_id].hybrid_in); */
-  if (cmor_axes[axis_id].hybrid_out==cmor_axes[axis_id].hybrid_in) { /* no it's a normal hybrid, no conv */
-    /*printf("this cmor var: %s, %s, %i, %i, %c\n",name,units,ndims,axes_ids[0],type);*/
-    i = cmor_variable(&var_id,name,units,ndims,axes_ids,type,NULL,NULL,NULL,NULL,NULL,NULL);
-    cmor_vars[var_id].needsinit=0;
-    cmor_vars[var_id].zaxis=axis_id;
-    if (values != NULL) {
-      n=1;
-      for (i=0;i<ndims;i++) {
-	if (axes_ids[i]>-1) {
-	  n*=cmor_axes[axes_ids[i]].length;
-	}
-	else {
-	  /* ok irregular grid */
-	  gid = -axes_ids[i]-CMOR_MAX_GRIDS;
-	  for (j=0;j<cmor_grids[gid].ndims;j++) {
-	    n*=cmor_axes[cmor_grids[gid].axes_ids[j]].length;
-	  }
-	}
-      }
-      cmor_vars[var_id].values = malloc(n*sizeof(double));
-      if (cmor_vars[var_id].values == NULL) {
-	snprintf(msg,CMOR_MAX_STRING,"cmor_zfactor: zaxis %s, cannot allocate memory for %i double elts %s var '%s' (table: %s)",cmor_axes[axis_id].id,n,cmor_vars[var_id].id,cmor_vars[var_id].id,cmor_tables[cmor_vars[var_id].ref_table_id].table_id);
-	cmor_handle_error(msg,CMOR_CRITICAL);
-      }
-      for (i=0;i<n;i++) {
-	if (type=='d')  cmor_vars[var_id].values[i] = (double)((double *)values)[i];
-	else if (type=='f')  cmor_vars[var_id].values[i] = (double)((float *)values)[i];
-	else if (type=='l')  cmor_vars[var_id].values[i] = (double)((long *)values)[i];
-	else if (type=='i')  cmor_vars[var_id].values[i] = (double)((int *)values)[i];
-      }
-
-      /* ok we may need to convert to some decent untis */
-      strncpy(local_unit,cmor_vars[var_id].ounits,CMOR_MAX_STRING);
-      cmor_units = ut_parse(ut_read, local_unit,UT_ASCII);
-      if (ut_get_status() != UT_SUCCESS) {
-	snprintf(msg,CMOR_MAX_STRING,"Udunits: Error parsing units: %s, zaxis: %s, variable %s (table: %s)",local_unit,cmor_axes[axis_id].id,cmor_vars[var_id].id,cmor_tables[cmor_vars[var_id].ref_table_id].table_id);
-	cmor_handle_error(msg,CMOR_CRITICAL);
-      }
-      strncpy(local_unit,units,CMOR_MAX_STRING);
-      ut_trim(local_unit,UT_ASCII);
-      user_units = ut_parse(ut_read, local_unit, UT_ASCII);
-      if (ut_get_status() != UT_SUCCESS) {
-	snprintf(msg,CMOR_MAX_STRING,"Udunits: Error parsing units: %s, zaxis %s, variable %s (table: %s)",local_unit,cmor_axes[axis_id].id,cmor_vars[var_id].id,cmor_tables[cmor_vars[var_id].ref_table_id].table_id);
-	cmor_handle_error(msg,CMOR_CRITICAL);
-      }
-      ut_cmor_converter=ut_get_converter(user_units,cmor_units);
-      if (ut_get_status() != UT_SUCCESS) {
-	snprintf(msg,CMOR_MAX_STRING,"Udunits: Error getting converter from %s to %s, zaxis: %s, variable %s (table: %s)",units,cmor_vars[var_id].ounits,cmor_axes[axis_id].id,cmor_vars[var_id].id,cmor_tables[cmor_vars[var_id].ref_table_id].table_id);
-	cmor_handle_error(msg,CMOR_CRITICAL);
-      }
-      cv_convert_doubles(ut_cmor_converter,&cmor_vars[var_id].values[0],n,&cmor_vars[var_id].values[0]);
-      if (ut_get_status() != UT_SUCCESS) {
-	snprintf(msg,CMOR_MAX_STRING,"Udunits: Error with converter (from %s to %s), zaxis: %s, variable %s (table: %s)",units,cmor_vars[var_id].ounits,cmor_axes[axis_id].id,cmor_vars[var_id].id,cmor_tables[cmor_vars[var_id].ref_table_id].table_id);
-	cmor_handle_error(msg,CMOR_CRITICAL);
-      }
-      cv_free(ut_cmor_converter);
-      if (ut_get_status() != UT_SUCCESS) {
-	snprintf(msg,CMOR_MAX_STRING,"Udunits: Error freeing converter, zaxis %s, variable %s (table: %s)",cmor_axes[axis_id].id,cmor_vars[var_id].id,cmor_tables[cmor_vars[var_id].ref_table_id].table_id);
-	cmor_handle_error(msg,CMOR_CRITICAL);
-      }
-      ut_free(cmor_units);
-      if (ut_get_status() != UT_SUCCESS) {
-	snprintf(msg,CMOR_MAX_STRING,"Udunits: Error freeing units %s, zaxis %s, variable %s (table: %s)",cmor_vars[var_id].ounits,cmor_axes[axis_id].id,cmor_vars[var_id].id,cmor_tables[cmor_vars[var_id].ref_table_id].table_id);
-	cmor_handle_error(msg,CMOR_CRITICAL);
-      }
-      ut_free(user_units);
-      if (ut_get_status() != UT_SUCCESS) {
-	snprintf(msg,CMOR_MAX_STRING,"Udunits: Error freeing units %s, zaxis %s,variable %s (table: %s)",units,cmor_axes[axis_id].id,cmor_vars[var_id].id,cmor_tables[cmor_vars[var_id].ref_table_id].table_id);
-	cmor_handle_error(msg,CMOR_CRITICAL);
-      }
-
-      cmor_vars[var_id].itype='d';
-      *zvar_id= var_id; 
+int cmor_history_contains( int var_id, char *add ) {
+    char tmp[CMOR_MAX_STRING];
+
+    if( cmor_has_variable_attribute( var_id, "history" ) == 0 ) {
+	cmor_get_variable_attribute( var_id, "history", &tmp[0] );
+	if( cmor_stringinstring( tmp, add ) ) {
+	    return( 1 );
+	}
     }
-    else {
-      /* Ok let's check to make sure it has a time axis! */
-      int k=0; 
-      for (i=0;i<ndims;i++) {
-	if (axes_ids[i]>-1) {
-	  if (cmor_axes[axes_ids[i]].axis=='T') {
-	    k=1;
+    return( 0 );
+}
+/************************************************************************/
+/*                           cmor_variable()                            */
+/************************************************************************/
+int cmor_variable( int *var_id, char *name, char *units, int ndims,
+		   int axes_ids[], char type, void *missing,
+		   double *tolerance, char *positive, char *original_name,
+		   char *history, char *comment ) {
+
+    extern int cmor_nvars, cmor_naxes;
+    extern int CMOR_TABLE;
+    extern cmor_var_t cmor_vars[];
+    int i, iref, j, k, l;
+    char msg[CMOR_MAX_STRING];
+    char ctmp[CMOR_MAX_STRING];
+    cmor_var_def_t refvar;
+    int laxes_ids[CMOR_MAX_DIMENSIONS];
+    int grid_id = 1000;
+    int lndims, olndims;
+    float afloat;
+    int aint;
+    long along;
+    int did_grid_reorder = 0;
+    int vrid=-1;
+
+    cmor_add_traceback( "cmor_variable" );
+    cmor_is_setup(  );
+
+    if( CMOR_TABLE == -1 ) {
+	cmor_handle_error( "You did not define a table yet!",
+			   CMOR_CRITICAL );
+    }
+
+    if( cmor_nvars == CMOR_MAX_VARIABLES - 1 ) {
+	cmor_handle_error( "Too many variables defined", CMOR_CRITICAL );
+	cmor_pop_traceback(  );
+	return( 1 );
+    }
+
+/* -------------------------------------------------------------------- */
+/*      ok now look which variable is corresponding in table if not     */
+/*      found then error                                                */
+/* -------------------------------------------------------------------- */
+    iref = -1;
+    cmor_trim_string( name, ctmp );
+    for( i = 0; i < cmor_tables[CMOR_TABLE].nvars + 1; i++ ) {
+	if( strcmp( cmor_tables[CMOR_TABLE].vars[i].id, ctmp ) == 0 ) {
+	    iref = i;
+	    break;
+	}
+    }
+    if( iref == -1 ) {
+	snprintf( msg, CMOR_MAX_STRING,
+		  "Could not find a matching variable for name: '%s'",
+		  ctmp );
+	cmor_handle_error( msg, CMOR_CRITICAL );
+    }
+
+    refvar = cmor_tables[CMOR_TABLE].vars[iref];
+    for( i = 0; i < CMOR_MAX_VARIABLES; i++ ) {
+	if( cmor_vars[i].self == -1 ) {
+	    vrid = i;
 	    break;
-	  }
-	}
-	else {
-	  /* ok irregular grid */
-	  gid = -axes_ids[i]-CMOR_MAX_GRIDS;
-	  for (j=0;j<cmor_grids[gid].ndims;j++) {
-	    if (cmor_axes[cmor_grids[gid].axes_ids[j]].axis=='T') {
-	      k=1;
-	      break;
+	}
+    }
+
+    if( vrid > cmor_nvars )
+	cmor_nvars = vrid;
+
+    cmor_vars[vrid].ref_table_id = CMOR_TABLE;
+    cmor_vars[vrid].ref_var_id = iref;
+
+/* -------------------------------------------------------------------- */
+/*      init some things                                                */
+/* -------------------------------------------------------------------- */
+
+    strcpy( cmor_vars[vrid].suffix, "" );
+    strcpy( cmor_vars[vrid].base_path, "" );
+    strcpy( cmor_vars[vrid].current_path, "" );
+    cmor_vars[vrid].suffix_has_date = 0;
+
+/* -------------------------------------------------------------------- */
+/*      output missing value                                            */
+/* -------------------------------------------------------------------- */
+
+    cmor_vars[vrid].omissing =
+	( double ) cmor_tables[CMOR_TABLE].missing_value;
+
+/* -------------------------------------------------------------------- */
+/*      copying over values from ref var                                */
+/* -------------------------------------------------------------------- */
+
+    cmor_vars[vrid].valid_min = refvar.valid_min;
+    cmor_vars[vrid].valid_max = refvar.valid_max;
+    cmor_vars[vrid].ok_min_mean_abs = refvar.ok_min_mean_abs;
+    cmor_vars[vrid].ok_max_mean_abs = refvar.ok_max_mean_abs;
+    cmor_vars[vrid].shuffle = refvar.shuffle;
+    cmor_vars[vrid].deflate = refvar.deflate;
+    cmor_vars[vrid].deflate_level = refvar.deflate_level;
+
+    if (refvar.out_name[0] == '\0') {
+        strncpy(cmor_vars[vrid].id, name, CMOR_MAX_STRING);
+    } else {
+        strncpy(cmor_vars[vrid].id, refvar.out_name, CMOR_MAX_STRING);
+    }
+
+    cmor_set_variable_attribute_internal(vrid, VARIABLE_ATT_STANDARDNAME, 'c',
+            refvar.standard_name);
+
+    cmor_set_variable_attribute_internal(vrid, VARIABLE_ATT_LONGNAME, 'c',
+            refvar.long_name);
+    if ((refvar.flag_values != NULL) && (refvar.flag_values[0] != '\0')) {
+        cmor_set_variable_attribute_internal(vrid, VARIABLE_ATT_FLAGVALUES, 'c',
+                refvar.flag_values);
+    }
+    if ((refvar.flag_meanings != NULL) && (refvar.flag_meanings[0] != '\0')) {
+
+        cmor_set_variable_attribute_internal(vrid, VARIABLE_ATT_FLAGMEANINGS,
+                'c', refvar.flag_meanings);
+    }
+
+    cmor_set_variable_attribute_internal(vrid, VARIABLE_ATT_COMMENT, 'c',
+            refvar.comment);
+
+    if (strcmp(refvar.units, "?") == 0) {
+        strncpy(cmor_vars[vrid].ounits, units, CMOR_MAX_STRING);
+    } else {
+        strncpy(cmor_vars[vrid].ounits, refvar.units, CMOR_MAX_STRING);
+    }
+
+    if (refvar.type != 'c') {
+        cmor_set_variable_attribute_internal(vrid,
+                VARIABLE_ATT_UNITS,
+                'c',
+                cmor_vars[vrid].ounits);
+    }
+
+    strncpy(cmor_vars[vrid].iunits, units, CMOR_MAX_STRING);
+
+    if ((original_name != NULL) && (original_name[0] != '\0')) {
+        cmor_set_variable_attribute_internal(vrid,
+                VARIABLE_ATT_ORIGINALNAME,
+                'c',
+                original_name);
+    }
+
+    if ((history != NULL) && (history[0] != '\0')) {
+        cmor_set_variable_attribute_internal(vrid,
+                VARIABLE_ATT_HISTORY,
+                'c',
+                history);
+    }
+
+    if ((comment != NULL) && (comment[0] != '\0')) {
+        if (cmor_has_variable_attribute(vrid, VARIABLE_ATT_COMMENT) == 0) {
+            char szActivity[CMOR_MAX_STRING];
+
+            cmor_get_cur_dataset_attribute(GLOBAL_ATT_ACTIVITY_ID, szActivity);
+
+            strncpy(msg, comment, CMOR_MAX_STRING);
+            strncat(msg, ", ", CMOR_MAX_STRING - strlen(msg));
+            strncat(msg, szActivity,
+                    CMOR_MAX_STRING - strlen(msg));
+            strncat(msg, "_table_comment: ", CMOR_MAX_STRING - strlen(msg));
+            strncat(msg, refvar.comment, CMOR_MAX_STRING - strlen(msg));
+
+        } else {
+            strncpy(msg, comment, CMOR_MAX_STRING);
+        }
+        cmor_set_variable_attribute_internal(vrid, VARIABLE_ATT_COMMENT, 'c',
+                msg);
+    }
+
+    if (strcmp(units, refvar.units) != 0) {
+        cmor_set_variable_attribute_internal(vrid,
+                VARIABLE_ATT_ORIGINALUNITS,
+                'c',
+                units);
+        snprintf(msg,
+                CMOR_MAX_STRING,
+                "Converted units from '%s' to '%s'",
+                units,
+                refvar.units);
+        cmor_update_history(vrid, msg);
+    }
+
+    cmor_set_variable_attribute_internal( vrid, VARIABLE_ATT_CELLMETHODS,
+            'c',
+            refvar.cell_methods );
+
+    cmor_set_variable_attribute_internal( vrid,
+            VARIABLE_ATT_CELLMEASURES,
+            'c',
+            refvar.cell_measures );
+
+    if( ( positive != NULL ) && ( positive[0] != '\0' ) ) {
+	if( ( positive[0] != 'd' ) && positive[0] != 'u' ) {
+	    snprintf( msg, CMOR_MAX_STRING,
+		      "variable '%s' (table %s): unknown value for "
+	              "positive : %s (only first character is considered, "
+	              "which was: %c)",
+		      cmor_vars[vrid].id,
+		      cmor_tables[cmor_vars[vrid].ref_table_id].szTable_id,
+		      positive, positive[0] );
+	    cmor_handle_error( msg, CMOR_CRITICAL );
+	}
+
+	if( refvar.positive == 'u' ) {
+	    if( cmor_is_required_variable_attribute( refvar,
+	            VARIABLE_ATT_POSITIVE )== 0 ) {
+
+		cmor_set_variable_attribute_internal( vrid,
+		        VARIABLE_ATT_POSITIVE, 'c', "up" );
+
 	    }
-	  }
-	}
-      }
-      if (k==0) {
-	snprintf(msg,CMOR_MAX_STRING,"zfactor: axis %s, variable %s (table %s), is not time dependent and you did not provide any values",cmor_axes[axis_id].id,name,cmor_tables[cmor_vars[var_id].ref_table_id].table_id);
-	cmor_handle_error(msg,CMOR_CRITICAL);
-      }
-      *zvar_id = var_id;
-    }
-    if (bounds != NULL) {
-      if (ndims!=1) {
-	snprintf(msg,CMOR_MAX_STRING,"zfactor axis %s, variable %s (table: %s): you passed bounds values but you also declared %i dimensions, we will ignore you bounds",cmor_axes[axis_id].id,name,cmor_tables[cmor_vars[var_id].ref_table_id].table_id,ndims);
-	cmor_handle_error(msg,CMOR_WARNING);
-      }
-      else {
-	strncpy(msg,name,CMOR_MAX_STRING);
-	strncat(msg,"_bnds",CMOR_MAX_STRING-strlen(msg));
-	i = cmor_variable(&var_id,msg,units,ndims,axes_ids,'d',NULL,NULL,NULL,NULL,NULL,NULL);
-	cmor_vars[var_id].zaxis=axis_id;
-	cmor_vars[var_id].needsinit=0;
-/* 	printf("setting Zaxis to:%i for var: %i (%s) \n",axis_id,var_id,cmor_vars[var_id].id); */
-	n = cmor_axes[axes_ids[0]].length;
-	cmor_vars[var_id].values = malloc(2*n*sizeof(double));
-	if ( cmor_vars[var_id].values == NULL)  {
-	  snprintf(msg,CMOR_MAX_STRING,"cmor_zfactor: zaxis %s, cannot allocate memory for %i double bounds elts %s var '%s' (table: %s)",cmor_axes[axis_id].id,2*n,cmor_vars[var_id].id,cmor_vars[var_id].id,cmor_tables[cmor_vars[var_id].ref_table_id].table_id);
-	  cmor_handle_error(msg,CMOR_CRITICAL);
-	}
-	cmor_vars[var_id].isbounds=1;
-	for (i=0;i<n;i++) {
-	  if (type=='d')  { cmor_vars[var_id].values[2*i] = (double)((double *)bounds)[i];cmor_vars[var_id].values[2*i+1] = (double)((double *)bounds)[i+1];}
-	  else if (type=='f')  { cmor_vars[var_id].values[2*i] = (double)((float *)bounds)[i];cmor_vars[var_id].values[2*i+1] = (double)((float *)bounds)[i+1];}
-	  else if (type=='l')  { cmor_vars[var_id].values[2*i] = (double)((long *)bounds)[i];cmor_vars[var_id].values[2*i+1] = (double)((long *)bounds)[i+1];}
-	  else if (type=='i')  { cmor_vars[var_id].values[2*i] = (double)((int *)bounds)[i];cmor_vars[var_id].values[2*i+1] = (double)((int *)bounds)[i+1];}
-	}
-	/* ok we may need to convert to some decent untis */
-	strncpy(local_unit,cmor_vars[var_id].ounits,CMOR_MAX_STRING);
-	cmor_units = ut_parse(ut_read, local_unit,UT_ASCII);
-	if (ut_get_status() != UT_SUCCESS) {
-	  snprintf(msg,CMOR_MAX_STRING,"Udunits: Error parsing units: %s, for zaxis %s, variable %s (table: %s)",local_unit,cmor_axes[axis_id].id,cmor_vars[var_id].id,cmor_tables[cmor_vars[var_id].ref_table_id].table_id);
-	  cmor_handle_error(msg,CMOR_CRITICAL);
-	}
-	strncpy(local_unit,units,CMOR_MAX_STRING);
-	ut_trim(local_unit,UT_ASCII);
-	user_units = ut_parse(ut_read, local_unit, UT_ASCII);
-	if (ut_get_status() != UT_SUCCESS) {
-	  snprintf(msg,CMOR_MAX_STRING,"Udunits: Error parsing units: %s, zaxis %s, variable %s (table: %s)",local_unit,cmor_axes[axis_id].id,cmor_vars[var_id].id,cmor_tables[cmor_vars[var_id].ref_table_id].table_id);
-	  cmor_handle_error(msg,CMOR_CRITICAL);
-	}
-	ut_cmor_converter=ut_get_converter(user_units,cmor_units);
-	if (ut_get_status() != UT_SUCCESS) {
-	  snprintf(msg,CMOR_MAX_STRING,"Udunits: Error getting converter from %s to %s, zaxis %s, variable %s (table: %s)",units,cmor_vars[var_id].ounits,cmor_axes[axis_id].id,cmor_vars[var_id].id,cmor_tables[cmor_vars[var_id].ref_table_id].table_id);
-	  cmor_handle_error(msg,CMOR_CRITICAL);
-	}
-	cv_convert_doubles(ut_cmor_converter,&cmor_vars[var_id].values[0],2*n,&cmor_vars[var_id].values[0]);
-	if (ut_get_status() != UT_SUCCESS) {
-	  snprintf(msg,CMOR_MAX_STRING,"Udunits: Error converting units from %s to %s, zaxis %s, variable %s (table: %s)",units,cmor_vars[var_id].ounits,cmor_axes[axis_id].id,cmor_vars[var_id].id,cmor_tables[cmor_vars[var_id].ref_table_id].table_id);
-	  cmor_handle_error(msg,CMOR_CRITICAL);
-	}
-	cv_free(ut_cmor_converter);
-	if (ut_get_status() != UT_SUCCESS) {
-	  snprintf(msg,CMOR_MAX_STRING,"Udunits: Error freeing converter, zaxis %s, variable %s (table: %s)",cmor_axes[axis_id].id,cmor_vars[var_id].id,cmor_tables[cmor_vars[var_id].ref_table_id].table_id);
-	  cmor_handle_error(msg,CMOR_CRITICAL);
-	}
-
-	ut_free(cmor_units);
-	if (ut_get_status() != UT_SUCCESS) {
-	  snprintf(msg,CMOR_MAX_STRING,"Udunits: Error freeing cmor units %s, zaxis %s, variable %s (table: %s)",cmor_vars[var_id].ounits,cmor_axes[axis_id].id,cmor_vars[var_id].id,cmor_tables[cmor_vars[var_id].ref_table_id].table_id);
-	  cmor_handle_error(msg,CMOR_CRITICAL);
-	}
-	ut_free(user_units);
-	if (ut_get_status() != UT_SUCCESS) {
-	  snprintf(msg,CMOR_MAX_STRING,"Udunits: Error freeing units %s, zaxis %s, variable %s (table: %s)",units,cmor_axes[axis_id].id,cmor_vars[var_id].id,cmor_tables[cmor_vars[var_id].ref_table_id].table_id);
-	  cmor_handle_error(msg,CMOR_CRITICAL);
-	}
-
-      }
-    }
-  }
-  else {
-    /* first prepare the conversion thing */
-    
-    /* stores the original hybrid_in to put back later */
-    i = cmor_axes[axis_id].hybrid_in;
-    cmor_axes[axis_id].hybrid_in = cmor_axes[axis_id].hybrid_out;
-/*     printf("input type was: %i\n",i); */
-    /* ok we now have 3 possible case */
-    if (i==1) {
-      n = cmor_zfactor(zvar_id,axis_id,name,units,ndims,axes_ids,type,values,bounds);
-    }
-    else if (i == 2) { /* case alternate hybrid sigma */
-      if (strcmp(name,"ap")==0) {
-	/* creates the p0 */
-	tmp = (double)1.e5;
-	j = cmor_zfactor(zvar_id,axis_id,"p0","Pa",0,NULL,'d',&tmp,NULL);
-	/* creates the "a" */
-	n = cmor_zfactor(zvar_id,axis_id,"a","",ndims,axes_ids,type,values,bounds); /* ok redefined it as a "a" factor */
-	/* ok we need to change the values now */
-	/* first convert p0 to user units */
-	cmor_units = ut_parse(ut_read, "Pa",UT_ASCII);
-	strncpy(local_unit,units,CMOR_MAX_STRING);
-	ut_trim(local_unit,UT_ASCII);
-	user_units = ut_parse(ut_read, local_unit, UT_ASCII);
-	if (ut_get_status() != UT_SUCCESS) {
-	  snprintf(msg,CMOR_MAX_STRING,"Udunits: Error parsing user units: %s, zaxis %s (table: %s), when creating zfactor: %s",local_unit,cmor_axes[axis_id].id,cmor_tables[cmor_axes[axis_id].ref_table_id].table_id,name);
-	  cmor_handle_error(msg,CMOR_CRITICAL);
-	}
-	if (ut_are_convertible(cmor_units,user_units)==0 ) {
-	  snprintf(msg,CMOR_MAX_STRING,"Udunuits: Pa and user units (%s) are incompatible, zaxis %s (table: %s), when creating zfactor: %s",units,cmor_axes[axis_id].id,cmor_tables[cmor_axes[axis_id].ref_table_id].table_id,name);
-	  cmor_handle_error(msg,CMOR_CRITICAL);
-	  cmor_pop_traceback();
-	  return 1;
-	}
-	ut_cmor_converter=ut_get_converter(cmor_units,user_units);
-	if (ut_get_status() != UT_SUCCESS) {
-	  snprintf(msg,CMOR_MAX_STRING,"Udunits: Error getting converter from Pa to %s,variable %s (table %s), when creating zfactor: %s",units,cmor_axes[axis_id].id,cmor_tables[cmor_axes[axis_id].ref_table_id].table_id,name);
-	  cmor_handle_error(msg,CMOR_CRITICAL);
-	}
-	tmp = (double) 1.e5;
-	tmp = cv_convert_double(ut_cmor_converter,tmp);
-	/* free units thing */
-	if (ut_get_status() != UT_SUCCESS) {
-	  snprintf(msg,CMOR_MAX_STRING,"Udunits: Error converting units from Pa to %s, zaxis %s (table: %s), when creating zfactor: %s",local_unit,cmor_axes[axis_id].id,cmor_tables[cmor_axes[axis_id].ref_table_id].table_id,name);
-	  cmor_handle_error(msg,CMOR_CRITICAL);
-	}
-	cv_free(ut_cmor_converter);
-	if (ut_get_status() != UT_SUCCESS) {
-	  snprintf(msg,CMOR_MAX_STRING,"Udunits: Error freeing converter, zaxis %s (table: %s), when creating zfactor: %s",cmor_axes[axis_id].id,cmor_tables[cmor_axes[axis_id].ref_table_id].table_id,name);
-	  cmor_handle_error(msg,CMOR_CRITICAL);
-	}
-
-	ut_free(cmor_units);
-	if (ut_get_status() != UT_SUCCESS) {
-	  snprintf(msg,CMOR_MAX_STRING,"Udunits: Error freeing units Pa, zaxis: %s (table: %s), when creating zfactor: %s",cmor_axes[axis_id].id,cmor_tables[cmor_axes[axis_id].ref_table_id].table_id,name);
-	  cmor_handle_error(msg,CMOR_CRITICAL);
-	}
-	ut_free(user_units);
-	if (ut_get_status() != UT_SUCCESS) {
-	  snprintf(msg,CMOR_MAX_STRING,"Udunits: Error freeing units %s, zaxis %s (table: %s), when creating zfactor: %s",local_unit,cmor_axes[axis_id].id,cmor_tables[cmor_axes[axis_id].ref_table_id].table_id,name);
-	  cmor_handle_error(msg,CMOR_CRITICAL);
-	}
-
-	if (values!=NULL) {
-	  n = cmor_axes[axes_ids[0]].length;
-	  for (j=0;j<n;j++)  cmor_vars[*zvar_id].values[j] /= tmp;
-	}
-	if (bounds!=NULL) {
-	  k=-1;
-	  for (n=0;n<=cmor_nvars;n++) if ((strcmp(cmor_vars[n].id,"a_bnds")==0) && (cmor_vars[n].zaxis==axis_id)) {k=n;break;}
-	  n = cmor_axes[axes_ids[0]].length;
-	  for (j=0;j<2*n;j++) cmor_vars[k].values[j] /= tmp;
-	}
-      }
-      else n = cmor_zfactor(zvar_id,axis_id,name,units,ndims,axes_ids,type,values,bounds); 
-    }
-    else if (i==3) { /* atmosphere_sigma_coordinates case */
-      if (strcmp(name,"sigma")==0) {
-	/*ok first we need to make sure we crated the ptop */
-	j=-1;
-	for (n=0;n<=cmor_nvars;n++) if ((strcmp(cmor_vars[n].id,"ptop")==0) && (cmor_vars[n].zaxis==axis_id)) {j=n;break;}
-	if (j==-1) { /* we did not find the ztop! */
-	  snprintf(msg,CMOR_MAX_STRING,"zfactor variable \"ptop\" for zfactor axis: %i (%s, table: %s), is not defined when creating zfactor %s, please define ptop first",axis_id,cmor_axes[axis_id].id,cmor_tables[cmor_axes[axis_id].ref_table_id].table_id,name);
-	  cmor_handle_error(msg,CMOR_CRITICAL);
-	}
-	tmp = (double) 1.e5;
-	/* creates the p0 */
-	n = cmor_zfactor(zvar_id,axis_id,"p0","Pa",0,NULL,'d',&tmp,NULL);
-	tmp = cmor_vars[j].values[0]; /* stores ptop (in Pa) */
-	/* creates the "a" */
-	n = cmor_zfactor(zvar_id,axis_id,"a","",ndims,axes_ids,type,values,bounds); /* ok redefined it as a "a" factor */
-	if (values!=NULL) {
-	  n = cmor_axes[axes_ids[0]].length;
-	  for (j=0;j<n;j++) cmor_vars[*zvar_id].values[j] = (1.-cmor_vars[*zvar_id].values[j])*tmp/1.e5;
-	}
-	if (bounds!=NULL) {
-	  k=-1;
-	  for (n=0;n<=cmor_nvars;n++) if ((strcmp(cmor_vars[n].id,"a_bnds")==0) && (cmor_vars[n].zaxis==axis_id)) {k=n;break;}
-	  n = cmor_axes[axes_ids[0]].length;
-	  for (j=0;j<2*n;j++) cmor_vars[k].values[j] /= tmp;
-	}
-	/* creates the "b" */
-	n = cmor_zfactor(zvar_id,axis_id,"b","",ndims,axes_ids,type,values,bounds); /* ok redefined it as a "a" factor */
-      }
-      else n = cmor_zfactor(zvar_id,axis_id,name,units,ndims,axes_ids,type,values,bounds); 
-    }
-
-    /* put back input type */
-    cmor_axes[axis_id].hybrid_in = i;
-
-  }
-  cmor_pop_traceback();
-  return 0;
-}
 
-int cmor_update_history(int var_id,char *add){
-  struct tm *ptr;
-  time_t lt;
-  char date[CMOR_MAX_STRING];
-  char tmp[CMOR_MAX_STRING];
-  char tmp2[CMOR_MAX_STRING];
-
-  /* first figures out time */
-  lt = time(NULL);
-  ptr = gmtime(&lt);
-  snprintf(date,CMOR_MAX_STRING,"%.4i-%.2i-%.2iT%.2i:%.2i:%.2iZ",ptr->tm_year+1900,ptr->tm_mon+1,ptr->tm_mday,ptr->tm_hour,ptr->tm_min,ptr->tm_sec);
-  if (cmor_has_variable_attribute(var_id,"history")==0) {
-    cmor_get_variable_attribute(var_id,"history",&tmp[0]);
-  }
-  else {
-    tmp[0]='\0';
-  }
-  snprintf(tmp2,CMOR_MAX_STRING,"%s %s altered by CMOR: %s.",tmp,date,add);
-  cmor_set_variable_attribute_internal(var_id,"history",'c',tmp2);
-  cmor_pop_traceback();
-  return 0;
-}
+	    if( positive[0] != 'u' ) {
+		cmor_vars[vrid].sign = -1;
+		cmor_update_history( vrid, "Changed sign" );
+	    }
+
+	} else if( refvar.positive == 'd' ) {
+	    if( cmor_is_required_variable_attribute( refvar,
+	                VARIABLE_ATT_POSITIVE ) == 0 ) {
+
+		cmor_set_variable_attribute_internal( vrid,
+		        VARIABLE_ATT_POSITIVE, 'c', "down" );
+
+	    }
+	    if( positive[0] != 'd' ) {
+		cmor_vars[vrid].sign = -1;
+		cmor_update_history( vrid, "Changed sign" );
+	    }
+	} else {
+	    snprintf( msg, CMOR_MAX_STRING,
+		      "variable '%s' (table %s) you passed positive "
+	              "value:%s, but table does not mention it, will "
+	              "be ignored, if you really want this in your "
+	              "variable output use "
+	              "cmor_set_variable_attribute_internal function",
+		      cmor_vars[vrid].id,
+		      cmor_tables[cmor_vars[vrid].ref_table_id].szTable_id,
+		      positive );
+	    cmor_handle_error( msg, CMOR_WARNING );
+	}
+    } else {
+	if( cmor_is_required_variable_attribute( refvar, VARIABLE_ATT_POSITIVE ) ==
+	    0 ) {
+	    snprintf( msg, CMOR_MAX_STRING,
+		      "you need to provide the 'positive' argument for "
+	              "variable: %s (table %s)",
+		      cmor_vars[vrid].id,
+		      cmor_tables[cmor_vars[vrid].ref_table_id].szTable_id );
+	    cmor_handle_error( msg, CMOR_CRITICAL );
+	}
+	if( refvar.positive != '\0' ) {
+	    if( refvar.positive == 'u' ) {
+		if( cmor_is_required_variable_attribute( refvar,
+		        VARIABLE_ATT_POSITIVE ) == 0 ) {
+		    cmor_set_variable_attribute_internal( vrid,
+		            VARIABLE_ATT_POSITIVE, 'c', "up" );
+	        }
+
+		snprintf( msg, CMOR_MAX_STRING,
+			  "you did not provide the 'positive' argument "
+		          "for variable: %s (table %s)",
+			  cmor_vars[vrid].id,
+			  cmor_tables[cmor_vars[vrid].ref_table_id].
+			  szTable_id );
+
+	    } else if( refvar.positive == 'd' ) {
+
+		if( cmor_is_required_variable_attribute( refvar,
+		        VARIABLE_ATT_POSITIVE ) == 0 ) {
+		    cmor_set_variable_attribute_internal( vrid,
+		                VARIABLE_ATT_POSITIVE, 'c', "down" );
+		}
+		snprintf( msg, CMOR_MAX_STRING,
+			  "you did not provide the 'positive' argument for variable: %s (table %s)",
+			  cmor_vars[vrid].id,
+			  cmor_tables[cmor_vars[vrid].ref_table_id].
+			  szTable_id );
+	    }
+	    cmor_handle_error( msg, CMOR_CRITICAL );
+	}
+    }
+/* -------------------------------------------------------------------- */
+/*      before anything we copy axes_ids into laxes_ids                 */
+/* -------------------------------------------------------------------- */
+
+    for( i = 0; i < ndims; i++ ) {
+	laxes_ids[i] = axes_ids[i];
+    }
+/* -------------------------------------------------------------------- */
+/*      Now figure out if the variable ask for an axis that is          */
+/*      actually calling for a grid to be defined                       */
+/* -------------------------------------------------------------------- */
 
-int cmor_history_contains(int var_id,char *add){
-  char tmp[CMOR_MAX_STRING];
+    k = 0;
+    for( i = 0; i < refvar.ndims; i++ ) {
 
-  if (cmor_has_variable_attribute(var_id,"history")==0) {
-    cmor_get_variable_attribute(var_id,"history",&tmp[0]);
-    if (cmor_stringinstring(tmp, add)) {
-      return 1;
+	for( j = 0; j < cmor_tables[cmor_vars[vrid].ref_table_id].naxes;
+	     j++ ) {
+
+	    if( strcmp
+		( cmor_tables[cmor_vars[vrid].ref_table_id].
+		  axes[refvar.dimensions[i]].id,
+		  cmor_tables[cmor_vars[vrid].ref_table_id].axes[j].id ) ==
+		0 ) {
+
+		if( cmor_tables[cmor_vars[vrid].ref_table_id].
+		    axes[refvar.dimensions[i]].must_call_cmor_grid == 1 )
+		    k = 1;
+		break;
+	    }
+	}
     }
-  }
-  return 0;
-}
 
-int cmor_variable(int *var_id, char *name, char *units, int ndims, int axes_ids[], char type, void *missing, double *tolerance, char *positive, char*original_name, char *history, char *comment) 
-{
-  extern int cmor_nvars,cmor_naxes;
-  extern int CMOR_TABLE;
-  extern cmor_var_t cmor_vars[];
-  int i,iref,j,k,ierr,l;
-  char msg[CMOR_MAX_STRING];
-  char ctmp[CMOR_MAX_STRING];
-  cmor_var_def_t refvar;
-  int laxes_ids[CMOR_MAX_DIMENSIONS];
-  int grid_id=1000;
-  int lndims,olndims;
-  float afloat;
-  int aint;
-  long along;
-  int did_grid_reorder=0;
-  int vrid;
-
-  cmor_add_traceback("cmor_variable");
-  cmor_is_setup();
-
-  if (CMOR_TABLE==-1) {
-    cmor_handle_error("You did not define a table yet!",CMOR_CRITICAL);
-  }
-
-  if (cmor_nvars==CMOR_MAX_VARIABLES-1) { 
-    cmor_handle_error("Too many variables defined",CMOR_CRITICAL);
-    cmor_pop_traceback();
-    return 1;
-  }
-
-
-
-  /* ok now look which variable is corresponding in table if not found then error */
-  iref=-1;
-  cmor_trim_string(name,ctmp);
-  for (i=0;i<cmor_tables[CMOR_TABLE].nvars+1;i++) {
-    if (strcmp(cmor_tables[CMOR_TABLE].vars[i].id,ctmp)==0) { iref=i;break;}
-  }
-  if (iref==-1) {
-    snprintf(msg,CMOR_MAX_STRING,"Could not find a matching variable for name: '%s'",ctmp);
-    cmor_handle_error(msg,CMOR_CRITICAL);
-  }
-  /*printf("ok your variable is actually variable %i in table %i\n",iref,CMOR_TABLE);*/
-  refvar=cmor_tables[CMOR_TABLE].vars[iref];
-  for (i=0;i<CMOR_MAX_VARIABLES;i++) {
-    if (cmor_vars[i].self==-1) {
-      vrid=i;
-      break;
-    }
-  }
-
-  if (vrid>cmor_nvars) cmor_nvars=vrid;
-  //vrid = cmor_nvars;
-
-  cmor_vars[vrid].ref_table_id=CMOR_TABLE;
-  cmor_vars[vrid].ref_var_id=iref;
-
-  /* init some things */
-  strcpy(cmor_vars[vrid].suffix,"");
-  strcpy(cmor_vars[vrid].base_path,"");
-  strcpy(cmor_vars[vrid].current_path,"");
-  cmor_vars[vrid].suffix_has_date=0;
-
-  /*output missing value */
-  cmor_vars[vrid].omissing = (double) cmor_tables[CMOR_TABLE].missing_value;
-
-  /* copying over values from ref var */
-  cmor_vars[vrid].valid_min = refvar.valid_min;
-  cmor_vars[vrid].valid_max = refvar.valid_max;
-  cmor_vars[vrid].ok_min_mean_abs = refvar.ok_min_mean_abs;
-  cmor_vars[vrid].ok_max_mean_abs = refvar.ok_max_mean_abs;
-  cmor_vars[vrid].shuffle = refvar.shuffle;
-  cmor_vars[vrid].deflate = refvar.deflate;
-  cmor_vars[vrid].deflate_level = refvar.deflate_level;
-  /*printf("going in vrid is: %i\n",vrid);*/
-  if (refvar.out_name[0]=='\0') {
-    strncpy(cmor_vars[vrid].id,name,CMOR_MAX_STRING);
-  }
-  else {
-    strncpy(cmor_vars[vrid].id,refvar.out_name,CMOR_MAX_STRING);
-  }
-
-  cmor_set_variable_attribute_internal(vrid,"standard_name",'c',refvar.standard_name);
-  cmor_set_variable_attribute_internal(vrid,"long_name",'c',refvar.long_name);
-  if ((refvar.flag_values!=NULL) && (refvar.flag_values[0]!='\0')) {
-    cmor_set_variable_attribute_internal(vrid,"flag_values",'c',refvar.flag_values);
-  }
-  if ((refvar.flag_meanings!=NULL) && (refvar.flag_meanings[0]!='\0')) {
-    cmor_set_variable_attribute_internal(vrid,"flag_meanings",'c',refvar.flag_meanings);
-  }
-/*   cmor_set_variable_attribute_internal(vrid,"realm",'c',refvar.realm); */
-  cmor_set_variable_attribute_internal(vrid,"comment",'c',refvar.comment);
-  if (strcmp(refvar.units,"?")==0) {
-    strncpy(cmor_vars[vrid].ounits,units,CMOR_MAX_STRING);
-  }
-  else {
-    strncpy(cmor_vars[vrid].ounits,refvar.units,CMOR_MAX_STRING);
-  }
-  if (refvar.type!='c' ) {
-    cmor_set_variable_attribute_internal(vrid,"units",'c',cmor_vars[vrid].ounits);
-  }
-  strncpy(cmor_vars[vrid].iunits,units,CMOR_MAX_STRING);
-  if ((original_name!=NULL) && (original_name[0]!='\0')) cmor_set_variable_attribute_internal(vrid,"original_name",'c',original_name);
-  if ((history!=NULL) && (history[0]!='\0')) cmor_set_variable_attribute_internal(vrid,"history",'c',history);
-  if ((comment!=NULL) && (comment[0]!='\0')) {
-    if (cmor_has_variable_attribute(vrid,"comment")==0) {
-      
-      strncpy(msg,comment,CMOR_MAX_STRING);
-      strncat(msg,", ",CMOR_MAX_STRING-strlen(msg));
-      strncat(msg,cmor_tables[cmor_vars[vrid].ref_table_id].project_id,CMOR_MAX_STRING-strlen(msg));
-      strncat(msg,"_table_comment: ",CMOR_MAX_STRING-strlen(msg));
-      strncat(msg,refvar.comment,CMOR_MAX_STRING-strlen(msg));
+/* -------------------------------------------------------------------- */
+/*      ok we MUST HAVE called cmor_grid to generate this variable      */
+/*      let's make sure                                                 */
+/* -------------------------------------------------------------------- */
+    if( k == 1 ) {		
+	j = 0;
+	for( i = 0; i < ndims; i++ ) {
+	    if( laxes_ids[i] < -CMOR_MAX_GRIDS + 1 ) {
+		grid_id = -laxes_ids[i] - CMOR_MAX_GRIDS;
+		if( grid_id > cmor_ngrids )
+		    continue;
+		j = 1;
+	    }
+	}
+	if( j == 0 ) {
+	    sprintf( msg,
+		     "Variable %s (table %s) must be defined using a "
+	             "grid (a call to cmor_grid)",
+		     cmor_vars[vrid].id,
+		     cmor_tables[cmor_vars[vrid].ref_table_id].szTable_id );
+	    cmor_handle_error( msg, CMOR_CRITICAL );
+	}
     }
-    else {
-      strncpy(msg,comment,CMOR_MAX_STRING);
-    }
-    cmor_set_variable_attribute_internal(vrid,"comment",'c',msg);
-  }
-  if (strcmp(units,refvar.units)!=0) {
-    cmor_set_variable_attribute_internal(vrid,"original_units",'c',units);
-    snprintf(msg,CMOR_MAX_STRING,"Converted units from '%s' to '%s'",units,refvar.units);
-    cmor_update_history(vrid,msg);
-  }
-  cmor_set_variable_attribute_internal(vrid,"cell_methods",'c',refvar.cell_methods);
-  cmor_set_variable_attribute_internal(vrid,"cell_measures",'c',refvar.cell_measures);
-  /*if ((refvar.positive!='\0') && (positive!=NULL) && (positive[0]!=refvar.positive)) cmor_vars[vrid].sign=-1;*/
-  if ((positive!=NULL) && (positive[0]!='\0')) {
-    if ((positive[0]!='d') && positive[0]!='u') {
-      snprintf(msg,CMOR_MAX_STRING,"variable '%s' (table %s): unknown value for positive : %s (only first character is considered, which was: %c)",cmor_vars[vrid].id,cmor_tables[cmor_vars[vrid].ref_table_id].table_id,positive,positive[0]);
-      cmor_handle_error(msg,CMOR_CRITICAL);
-    }
-    if (refvar.positive=='u') {
-      if (cmor_is_required_variable_attribute(refvar,"positive")==0) cmor_set_variable_attribute_internal(vrid,"positive",'c',"up");
-      if (positive[0]!='u') {
-	cmor_vars[vrid].sign=-1;
-	cmor_update_history(vrid,"Changed sign");
-      }
-    }
-    else if (refvar.positive=='d') {
-      if (cmor_is_required_variable_attribute(refvar,"positive")==0) cmor_set_variable_attribute_internal(vrid,"positive",'c',"down");
-      if (positive[0]!='d') {
-	cmor_vars[vrid].sign=-1;
-	cmor_update_history(vrid,"Changed sign");
-      }
-    }
-    else { 
-      snprintf(msg,CMOR_MAX_STRING,"variable '%s' (table %s) you passed positive value:%s, but table does not mention it, will be ignored, if you really want this in your variable output use cmor_set_variable_attribute_internal function",cmor_vars[vrid].id,cmor_tables[cmor_vars[vrid].ref_table_id].table_id,positive); 
-      cmor_handle_error(msg,CMOR_WARNING);
-    }
-  }
-  else {
-    if (cmor_is_required_variable_attribute(refvar,"positive")==0) {
-      snprintf(msg,CMOR_MAX_STRING,"you need to provide the 'positive' argument for variable: %s (table %s)",cmor_vars[vrid].id,cmor_tables[cmor_vars[vrid].ref_table_id].table_id);
-	cmor_handle_error(msg,CMOR_CRITICAL);
-      }
-    if (refvar.positive!='\0') {
-      if (refvar.positive=='u') {
-	if (cmor_is_required_variable_attribute(refvar,"positive")==0) cmor_set_variable_attribute_internal(vrid,"positive",'c',"up");
-	snprintf(msg,CMOR_MAX_STRING,"you did not provide the 'positive' argument for variable: %s (table %s)",cmor_vars[vrid].id,cmor_tables[cmor_vars[vrid].ref_table_id].table_id);
-      }
-      else if (refvar.positive=='d') {
-	if (cmor_is_required_variable_attribute(refvar,"positive")==0) cmor_set_variable_attribute_internal(vrid,"positive",'c',"down");
-	snprintf(msg,CMOR_MAX_STRING,"you did not provide the 'positive' argument for variable: %s (table %s)",cmor_vars[vrid].id,cmor_tables[cmor_vars[vrid].ref_table_id].table_id);
-      }
-      cmor_handle_error(msg,CMOR_CRITICAL);
-    }
-  }
-  /* before anything we copy axes_ids into laxes_ids */
-  for (i=0;i<ndims;i++) {
-    laxes_ids[i] = axes_ids[i];
-  }
-  /* Now figure out if the variable ask for an axis that is actually calling for a grid to be defined */
-  k=0;
-  for (i=0;i<refvar.ndims;i++) {
-    /* printf("%s, %i\n",refvar.id,i,refvar.dimensions[i]); */
-    for (j=0;j<cmor_tables[cmor_vars[vrid].ref_table_id].naxes;j++) {
-      /* printf("comparing: %s vs %s (%i/%i)\n",cmor_tables[cmor_vars[vrid].ref_table_id].axes[refvar.dimensions[i]].id,cmor_tables[cmor_vars[vrid].ref_table_id].axes[j].id,i,j); */
-      if (strcmp(cmor_tables[cmor_vars[vrid].ref_table_id].axes[refvar.dimensions[i]].id,cmor_tables[cmor_vars[vrid].ref_table_id].axes[j].id)==0){
-	/* printf("must have grid: %i\n",cmor_tables[cmor_vars[vrid].ref_table_id].axes[refvar.dimensions[i]].must_call_cmor_grid); */
-	if (cmor_tables[cmor_vars[vrid].ref_table_id].axes[refvar.dimensions[i]].must_call_cmor_grid==1) k=1;
-	break;
-      }
-    }
-  }
-
-  if (k==1) { /* ok we MUST HAVE called cmor_grid to generate this variable let's make sure */
-    j=0;
-    for (i=0;i<ndims;i++) {
-      if (laxes_ids[i]<-CMOR_MAX_GRIDS+1) { /* grid definition */
-	grid_id = -laxes_ids[i]-CMOR_MAX_GRIDS;
-	if (grid_id>cmor_ngrids) continue;
-	j=1;
-      }
-    }
-    if (j==0) {
-      sprintf(msg,"Variable %s (table %s) must be defined using a grid (a call to cmor_grid)",cmor_vars[vrid].id,cmor_tables[cmor_vars[vrid].ref_table_id].table_id);
-      cmor_handle_error(msg,CMOR_CRITICAL);
-    }
-  }
-
-  lndims=ndims;
-  /* printf("ok ndims is actually: %i\n",ndims); */
-  aint=0; /* just to know if we deal with  a grid */
-  /* ok we need to replace grids definitions with the grid axes */
-  for (i=0;i<ndims;i++) {
-    if (laxes_ids[i]>cmor_naxes) {
-      sprintf(msg,"For variable %s (table %s) you requested axis_id (%i) that has not been defined yet",cmor_vars[vrid].id,cmor_tables[cmor_vars[vrid].ref_table_id].table_id,laxes_ids[i]);
-      cmor_handle_error(msg,CMOR_CRITICAL);
-    }
-    if (laxes_ids[i]<-CMOR_MAX_GRIDS+1) { /* grid definition */
-      grid_id = -laxes_ids[i]-CMOR_MAX_GRIDS;
-      if (grid_id>cmor_ngrids) {
-	sprintf(msg,"For variable %s (table: %s) you requested grid_id (%i) that has not been defined yet",cmor_vars[vrid].id,cmor_tables[cmor_vars[vrid].ref_table_id].table_id,laxes_ids[i]);
-	cmor_handle_error(msg,CMOR_CRITICAL);
-      }
-      /* here we need to know if the refvar has been defined with lat/lon or in the grid space */
-      k=0;
-      for (j=0;j<refvar.ndims;j++) {
-	if (strcmp(cmor_tables[refvar.table_id].axes[refvar.dimensions[j]].id,"longitude")==0) k++;
-	if (strcmp(cmor_tables[refvar.table_id].axes[refvar.dimensions[j]].id,"latitude")==0) k++;
-	if (refvar.dimensions[j]==-CMOR_MAX_GRIDS) k++;
-      }
-      if (k==2) { 
-	aint = cmor_grids[grid_id].ndims-2; /* basically replaces the lat/lon with the number of dims in our grid */
-      }
-      cmor_vars[vrid].grid_id = grid_id;
-      k = cmor_grids[grid_id].ndims-1;
-      /* printf("ok k offsetting is: %i\n",k); */
-      /* first move everything to the right */
-      for (j=lndims-1;j>=i;j--) laxes_ids[j+k] = laxes_ids[j];
-      /* ok now we need to insert the grid dimensions */
-      lndims +=k;
-      for (j=0;j<cmor_grids[grid_id].ndims;j++) {
-	/* printf("adding axis: %i at pos: %i\n",cmor_grids[grid_id].original_axes_ids[j],i+j); */
-	laxes_ids[i+j] = cmor_grids[grid_id].original_axes_ids[j];
-      }
-    }
-  }
-  /* printf("&&&&&&&&&&&&&&&&&&&&&&&&&&&&& refvar (%s), has: %i dimensions! aint: %i, lndims: %i\n",refvar.id,refvar.ndims,aint,lndims); */
-  /* for(i=0;i<lndims;i++) fprintf(stderr,"after the grid id section: %i, id: %i, name: %s\n",i,laxes_ids[i],cmor_axes[laxes_ids[i]].id); */
-  olndims = lndims;
-  if (refvar.ndims+aint!=lndims) {
-    lndims=0;
-    /* ok before we panic we check if there is a "dummy" dim */
-    j=refvar.ndims-olndims+aint;
-    /* printf("at the start: refvar: %i, ndims: %i, aint: %i, lndims: %i, olndims: %i, j:%i\n",refvar.ndims,ndims,aint,lndims,olndims,j); */
-    for (i=0;i<refvar.ndims;i++) {
-      /* printf("ok none matchng # of dims, i: %d, id: %s, value: %lf, lndims is: %d\n",i,cmor_tables[CMOR_TABLE].axes[refvar.dimensions[i]].id,cmor_tables[CMOR_TABLE].axes[refvar.dimensions[i]].value,olndims); */
-      if (cmor_tables[CMOR_TABLE].axes[refvar.dimensions[i]].value!=1.e20) {
-	/* ok it could be a dummy but we need to check if the user already defined this dummy dimension or not */
-	l=-1;
-	for (k=0;k<olndims;k++) {
-	  if (cmor_has_axis_attribute(laxes_ids[k],"standard_name")==0) {
-	      cmor_get_axis_attribute(laxes_ids[k],"standard_name",'c',&msg);
+
+    lndims = ndims;
+
+/* -------------------------------------------------------------------- */
+/*      just to know if we deal with  a grid                            */
+/* -------------------------------------------------------------------- */
+    aint = 0;
+
+/* -------------------------------------------------------------------- */
+/*      ok we need to replace grids definitions with the grid axes      */
+/* -------------------------------------------------------------------- */
+    for( i = 0; i < ndims; i++ ) {
+	if( laxes_ids[i] > cmor_naxes ) {
+	    sprintf( msg,
+		     "For variable %s (table %s) you requested axis_id "
+	             "(%i) that has not been defined yet",
+		     cmor_vars[vrid].id,
+		     cmor_tables[cmor_vars[vrid].ref_table_id].szTable_id,
+		     laxes_ids[i] );
+	    cmor_handle_error( msg, CMOR_CRITICAL );
+	}
+	if( laxes_ids[i] < -CMOR_MAX_GRIDS + 1 ) {	
+	    grid_id = -laxes_ids[i] - CMOR_MAX_GRIDS;
+	    if( grid_id > cmor_ngrids ) {
+		sprintf( msg,
+			 "For variable %s (table: %s) you requested "
+		         "grid_id (%i) that has not been defined yet",
+			 cmor_vars[vrid].id,
+			 cmor_tables[cmor_vars[vrid].ref_table_id].
+			 szTable_id, laxes_ids[i] );
+		cmor_handle_error( msg, CMOR_CRITICAL );
 	    }
-	    else {
-	      strcpy(msg,"nope");
+/* -------------------------------------------------------------------- */
+/*      here we need to know if the refvar has been defined with        */
+/*      lat/lon or in the grid space                                    */
+/* -------------------------------------------------------------------- */
+	    k = 0;
+	    for( j = 0; j < refvar.ndims; j++ ) {
+		if( strcmp
+		    ( cmor_tables[refvar.table_id].
+		      axes[refvar.dimensions[j]].id, DIMENSION_LONGITUDE) == 0 )
+		    k++;
+		if( strcmp
+		    ( cmor_tables[refvar.table_id].
+		      axes[refvar.dimensions[j]].id, DIMENSION_LATITUDE ) == 0 )
+		    k++;
+		if( refvar.dimensions[j] == -CMOR_MAX_GRIDS )
+		    k++;
 	    }
-	  /* printf("k: %d, axes_id: %d, stdnm: %s, ref stdnm: %s\n",k,laxes_ids[k],msg,cmor_tables[CMOR_TABLE].axes[refvar.dimensions[i]].standard_name); */
-	  if (strcmp(msg,cmor_tables[CMOR_TABLE].axes[refvar.dimensions[i]].standard_name)==0) {
-	    /* ok user did define this one on its own */
-	    l=k;
-	    break;
-	  }
-	  /* printf("And now l is: %i\n",l); */
-	}
-	if (l==-1) { /* ok it is a singleton dimension */
-	  j-=1;
-	  /* ok then we create a dummy axis that we will add at the end of the axes */
-	  if (cmor_tables[CMOR_TABLE].axes[refvar.dimensions[i]].bounds_value[0]!=1.e20) {
-	    ierr = cmor_axis(&k,cmor_tables[CMOR_TABLE].axes[refvar.dimensions[i]].id,cmor_tables[CMOR_TABLE].axes[refvar.dimensions[i]].units,1,&cmor_tables[CMOR_TABLE].axes[refvar.dimensions[i]].value,'d',&cmor_tables[CMOR_TABLE].axes[refvar.dimensions[i]].bounds_value[0],2,"");
-	  }
-	  else {
-	    ierr = cmor_axis(&k,cmor_tables[CMOR_TABLE].axes[refvar.dimensions[i]].id,cmor_tables[CMOR_TABLE].axes[refvar.dimensions[i]].units,1,&cmor_tables[CMOR_TABLE].axes[refvar.dimensions[i]].value,'d',NULL,0,"");
-	  }
-	  /* printf("messing up laxes: %i, replacing from %i to %i\n",olndims,laxes_ids[olndims],k); */
-	  laxes_ids[olndims]=k;
-	  lndims+=1;
-	}
-	/* printf("after l is :%i, j is: %i\n",l,j); */
-      }
-    }
-
-    if (j!=0) {
-      snprintf(msg,CMOR_MAX_STRING,"You are defining variable '%s' (table %s)  with %i dimensions, when it should have %i",name,cmor_tables[cmor_vars[vrid].ref_table_id].table_id,ndims,refvar.ndims);
-      cmor_handle_error(msg,CMOR_CRITICAL);
-      cmor_pop_traceback();
-      return 1;
+/* -------------------------------------------------------------------- */
+/*      basically replaces the lat/lon with the number of dims in       */
+/*      our grid                                                        */
+/* -------------------------------------------------------------------- */
+	    
+	    if( k == 2 ) {
+		aint = cmor_grids[grid_id].ndims - 2;
+	    }
+	    cmor_vars[vrid].grid_id = grid_id;
+	    k = cmor_grids[grid_id].ndims - 1;
+
+/* -------------------------------------------------------------------- */
+/*      first move everything to the right                              */
+/* -------------------------------------------------------------------- */
+
+	    for( j = lndims - 1; j >= i; j-- )
+		laxes_ids[j + k] = laxes_ids[j];
+/* -------------------------------------------------------------------- */
+/*      ok now we need to insert the grid dimensions                    */
+/* -------------------------------------------------------------------- */
+
+	    lndims += k;
+	    for( j = 0; j < cmor_grids[grid_id].ndims; j++ ) {
+		laxes_ids[i + j] =
+		    cmor_grids[grid_id].original_axes_ids[j];
+	    }
+	}
     }
-    else {
-      lndims += ndims;
-      for (j=0;j<ndims;j++) {
-	/* printf("ok laxes_ids is: %i\n",axes_ids[j]); */
-	if (axes_ids[j]<-CMOR_MAX_GRIDS+1) { /* grid definition */
-	  lndims+=cmor_grids[grid_id].ndims-1;
-	}
-      }
-    }
-  }
-  /* At that point we need to check that the dims we passed match what's in the refvar */
-  k=-1;
-  for (i=0;i<lndims;i++) {
-    for (j=0;j<refvar.ndims;j++) {
-/*       printf("i,j: %i, %i, laxes_ids[i]: %i\n",i,j,laxes_ids[i]); */
-      if ((strcmp(cmor_tables[cmor_axes[laxes_ids[i]].ref_table_id].axes[cmor_axes[laxes_ids[i]].ref_axis_id].id,cmor_tables[CMOR_TABLE].axes[refvar.dimensions[j]].id)==0) ||((cmor_tables[cmor_axes[laxes_ids[i]].ref_table_id].axes[cmor_axes[laxes_ids[i]].ref_axis_id].axis=='Z') && (refvar.dimensions[j]==-2))){ 
-/* || ((cmor_tables[cmor_axes[laxes_ids[i]].ref_table_id].axes[cmor_axes[laxes_ids[i]].ref_axis_id].axis==cmor_tables[CMOR_TABLE].axes[refvar.dimensions[j]].axis) && cmor_tables[cmor_axes[laxes_ids[i]].ref_table_id].axes[cmor_axes[laxes_ids[i]].ref_axis_id].axis!='\0'))  { */
-	k++;
-      }
-    }
-    if (k!=i) {
-      /* ok we didn't find it, but there is still a slight chance it is a grid axis! */
-      for (j=0;j<cmor_grids[grid_id].ndims;j++) {
-	if (laxes_ids[i]==cmor_grids[grid_id].original_axes_ids[j]) k++;
-      }
-    }
-    if (k!=i) {
-      snprintf(msg,CMOR_MAX_STRING,"You defined variable '%s' (table %s) with axis id '%s' which is not part of this variable according to your table, it says: ( ",refvar.id,cmor_tables[cmor_vars[vrid].ref_table_id].table_id,cmor_tables[cmor_axes[laxes_ids[i]].ref_table_id].axes[cmor_axes[laxes_ids[i]].ref_axis_id].id);
-      for (i=0;i<refvar.ndims;i++) {
-	strcat(msg,cmor_tables[CMOR_TABLE].axes[refvar.dimensions[i]].id);
-	strcat(msg," ");
-      }
-      strcat(msg,")");
-      cmor_handle_error(msg,CMOR_CRITICAL);
-    }
-  }
-  k=0;
-  /* ok now loop thru axes */    
-  /* printf("lndims is: %i\n",lndims); */
-  for (i=0;i<lndims;i++) { 
-    /* printf("i and k: %i, %i, %i \n",i,k,laxes_ids[i]); */
-    if (laxes_ids[i]>cmor_naxes) {
-      snprintf(msg,CMOR_MAX_STRING,"Axis %i not defined",axes_ids[i]);
-      cmor_handle_error(msg,CMOR_CRITICAL);
-      cmor_pop_traceback();
-      return 1;
-    }
-    if (cmor_axes[laxes_ids[i]].ref_table_id!=CMOR_TABLE && cmor_axes[laxes_ids[i]].isgridaxis!=1) {
-      snprintf(msg,CMOR_MAX_STRING,"While creating variable %s, you are passing axis %i (named %s) which has been defined using table %i (%s) but the current table is %i (%s) (and isgridaxis says: %i)",cmor_vars[vrid].id,laxes_ids[i],cmor_axes[laxes_ids[i]].id,cmor_axes[laxes_ids[i]].ref_table_id,cmor_tables[cmor_axes[laxes_ids[i]].ref_table_id].table_id,CMOR_TABLE,cmor_tables[CMOR_TABLE].table_id,cmor_axes[laxes_ids[i]].isgridaxis);
-      cmor_handle_error(msg,CMOR_CRITICAL);
-    }
-    /* printf("ok: %s \n" , cmor_tables[cmor_axes[laxes_ids[i]].ref_table_id].axes[cmor_axes[laxes_ids[i]].ref_axis_id].id); */
-    /* printf("ok: %lf \n" , cmor_tables[cmor_axes[laxes_ids[i]].ref_table_id].axes[cmor_axes[laxes_ids[i]].ref_axis_id].value); */
-    if (cmor_tables[cmor_axes[laxes_ids[i]].ref_table_id].axes[cmor_axes[laxes_ids[i]].ref_axis_id].value != 1.e20) {
-      /*singleton dim */
-      snprintf(msg,CMOR_MAX_STRING,"Treated scalar dimension: '%s'",cmor_axes[laxes_ids[i]].id);
-      cmor_update_history(vrid,msg);
-      cmor_vars[vrid].singleton_ids[i-k]=laxes_ids[i];
-      if (cmor_has_variable_attribute(vrid,"coordinates")==0) {
-	cmor_get_variable_attribute(vrid,"coordinates",&msg[0]);
-      }
-      else {
-	strncpy(msg,"",CMOR_MAX_STRING);
-      }
-      if (cmor_tables[cmor_axes[laxes_ids[i]].ref_table_id].axes[cmor_axes[laxes_ids[i]].ref_axis_id].out_name[0]=='\0') {
-	snprintf(ctmp,CMOR_MAX_STRING,"%s %s",msg,cmor_tables[cmor_axes[laxes_ids[i]].ref_table_id].axes[cmor_axes[laxes_ids[i]].ref_axis_id].id);
-      }
-      else {
-	snprintf(ctmp,CMOR_MAX_STRING,"%s %s",msg,cmor_tables[cmor_axes[laxes_ids[i]].ref_table_id].axes[cmor_axes[laxes_ids[i]].ref_axis_id].out_name);
-      }
-      cmor_set_variable_attribute_internal(vrid,"coordinates",'c',&ctmp[0]);
+    olndims = lndims;
+    if( refvar.ndims + aint != lndims ) {
+	lndims = 0;
+/* -------------------------------------------------------------------- */
+/*      ok before we panic we check if there is a "dummy" dim           */
+/* -------------------------------------------------------------------- */
+
+	j = refvar.ndims - olndims + aint;
+
+	for( i = 0; i < refvar.ndims; i++ ) {
+
+	    if( cmor_tables[CMOR_TABLE].axes[refvar.dimensions[i]].value !=
+		1.e20 ) {
+
+/* -------------------------------------------------------------------- */
+/*      ok it could be a dummy but we need to check if the user         */
+/*      already defined this dummy dimension or notd                    */
+/* -------------------------------------------------------------------- */
+
+		l = -1;
+		for( k = 0; k < olndims; k++ ) {
+		    if( cmor_has_axis_attribute
+			( laxes_ids[k], VARIABLE_ATT_STANDARDNAME ) == 0 ) {
+			cmor_get_axis_attribute( laxes_ids[k],
+						 VARIABLE_ATT_STANDARDNAME,
+						 'c',
+						 &msg );
+		    } else {
+			strcpy( msg, "nope" );
+		    }
+
+		    if( strcmp
+			( msg,
+			  cmor_tables[CMOR_TABLE].axes[refvar.dimensions[i]].
+			  standard_name ) == 0 ) {
+/* -------------------------------------------------------------------- */
+/*       ok user did define this one on its own                         */
+/* -------------------------------------------------------------------- */
+
+			l = k;
+			break;
+		    }
+
+		}
+/* -------------------------------------------------------------------- */
+/*      ok it is a singleton dimension                                  */
+/* -------------------------------------------------------------------- */
+		
+		if( l == -1 ) {	
+		    j -= 1;
+/* -------------------------------------------------------------------- */
+/*      ok then we create a dummy axis that we will add at the end      */
+/*      of the axes                                                     */
+/* -------------------------------------------------------------------- */
+                    cmor_axis_def_t *pAxis;
+                    pAxis = &cmor_tables[CMOR_TABLE].
+                            axes[refvar.dimensions[i]];
+
+		    if( pAxis->bounds_value[0] != 1.e20 ) {
+
+		             cmor_axis( &k,
+		                     pAxis->id,
+		                     pAxis->units,
+		                     1,
+		                     &pAxis->value,
+		                     'd',
+		                     &pAxis->bounds_value[0],
+		                     2,
+		                     "" );
+
+		    } else {
+
+		            cmor_axis(&k,
+		                    pAxis->id,
+		                    pAxis->units,
+		                    1,
+		                    &pAxis->value,
+		                    'd',
+		                    NULL,
+		                    0,
+		                    "");
+		    }
+
+		    laxes_ids[olndims] = k;
+		    lndims += 1;
+		}
+
+	    }
+	}
+
+	if( j != 0 ) {
+	    snprintf( msg, CMOR_MAX_STRING,
+		      "You are defining variable '%s' (table %s)  with %i "
+	              "dimensions, when it should have %i",
+		      name,
+		      cmor_tables[cmor_vars[vrid].ref_table_id].szTable_id,
+		      ndims, refvar.ndims );
+	    cmor_handle_error( msg, CMOR_CRITICAL );
+	    cmor_pop_traceback(  );
+	    return( 1 );
+	} else {
+	    lndims += ndims;
+	    for( j = 0; j < ndims; j++ ) {
+/* -------------------------------------------------------------------- */
+/*      grid definition                                                 */
+/* -------------------------------------------------------------------- */
+
+		if( axes_ids[j] < -CMOR_MAX_GRIDS + 1 ) {	
+		    lndims += cmor_grids[grid_id].ndims - 1;
+		}
+	    }
+	}
+    }
+/* -------------------------------------------------------------------- */
+/*      At that point we need to check that the dims we passed match    */
+/*      what's in the refvar                                            */
+/* -------------------------------------------------------------------- */
+
+    k = -1;
+    for( i = 0; i < lndims; i++ ) {
+	for( j = 0; j < refvar.ndims; j++ ) {
+	    if( ( strcmp
+		  ( cmor_tables[cmor_axes[laxes_ids[i]].ref_table_id].
+		    axes[cmor_axes[laxes_ids[i]].ref_axis_id].id,
+		    cmor_tables[CMOR_TABLE].axes[refvar.dimensions[j]].
+		    id ) == 0 )
+		||
+		( ( cmor_tables[cmor_axes[laxes_ids[i]].ref_table_id].
+		    axes[cmor_axes[laxes_ids[i]].ref_axis_id].axis == 'Z' )
+		  && ( refvar.dimensions[j] == -2 ) ) ) {
+
+		k++;
+	    }
+	}
+	if( k != i ) {
+/* -------------------------------------------------------------------- */
+/*      ok we didn't find it, but there is still a slight chance it     */
+/*      is a grid axis!                                                 */
+/* -------------------------------------------------------------------- */
+
+	    for( j = 0; j < cmor_grids[grid_id].ndims; j++ ) {
+		if( laxes_ids[i] ==
+		    cmor_grids[grid_id].original_axes_ids[j] )
+		    k++;
+	    }
+	}
+	if( k != i ) {
+	    snprintf( msg, CMOR_MAX_STRING,
+		      "You defined variable '%s' (table %s) with axis "
+	              "id '%s' which is not part of this variable "
+	              "according to your table, it says: ( ",
+		      refvar.id,
+		      cmor_tables[cmor_vars[vrid].ref_table_id].szTable_id,
+		      cmor_tables[cmor_axes[laxes_ids[i]].ref_table_id].
+		      axes[cmor_axes[laxes_ids[i]].ref_axis_id].id );
+	    for( i = 0; i < refvar.ndims; i++ ) {
+		strcat( msg,
+			cmor_tables[CMOR_TABLE].axes[refvar.dimensions[i]].
+			id );
+		strcat( msg, " " );
+	    }
+	    strcat( msg, ")" );
+	    cmor_handle_error( msg, CMOR_CRITICAL );
+	}
+    }
+    k = 0;
+/* -------------------------------------------------------------------- */
+/*      ok now loop thru axes                                           */
+/* -------------------------------------------------------------------- */
+
+
+    for( i = 0; i < lndims; i++ ) {
+
+	if( laxes_ids[i] > cmor_naxes ) {
+	    snprintf( msg, CMOR_MAX_STRING, "Axis %i not defined",
+		      axes_ids[i] );
+	    cmor_handle_error( msg, CMOR_CRITICAL );
+	    cmor_pop_traceback(  );
+	    return( 1 );
+	}
+	if( cmor_axes[laxes_ids[i]].ref_table_id != CMOR_TABLE
+	    && cmor_axes[laxes_ids[i]].isgridaxis != 1 ) {
+	    snprintf( msg, CMOR_MAX_STRING,
+		      "While creating variable %s, you are "
+	              "passing axis %i (named %s) which has been "
+	              "defined using table %i (%s) but the current "
+	              "table is %i (%s) (and isgridaxis says: %i)",
+		      cmor_vars[vrid].id, laxes_ids[i],
+		      cmor_axes[laxes_ids[i]].id,
+		      cmor_axes[laxes_ids[i]].ref_table_id,
+		      cmor_tables[cmor_axes[laxes_ids[i]].ref_table_id].
+		      szTable_id, CMOR_TABLE,
+		      cmor_tables[CMOR_TABLE].szTable_id,
+		      cmor_axes[laxes_ids[i]].isgridaxis );
+	    cmor_handle_error( msg, CMOR_CRITICAL );
+	}
+	if( cmor_tables[cmor_axes[laxes_ids[i]].ref_table_id].
+	    axes[cmor_axes[laxes_ids[i]].ref_axis_id].value != 1.e20 ) {
+
+/* -------------------------------------------------------------------- */
+/*      singleton dim                                                   */
+/* -------------------------------------------------------------------- */
+
+	    snprintf( msg, CMOR_MAX_STRING,
+		      "Treated scalar dimension: '%s'",
+		      cmor_axes[laxes_ids[i]].id );
+	    cmor_update_history( vrid, msg );
+	    cmor_vars[vrid].singleton_ids[i - k] = laxes_ids[i];
+	    if( cmor_has_variable_attribute( vrid, "coordinates" ) == 0 ) {
+		cmor_get_variable_attribute( vrid, "coordinates",
+					     &msg[0] );
+	    } else {
+		strncpy( msg, "", CMOR_MAX_STRING );
+	    }
+	    if( cmor_tables[cmor_axes[laxes_ids[i]].ref_table_id].
+		axes[cmor_axes[laxes_ids[i]].ref_axis_id].out_name[0] ==
+		'\0' ) {
+		snprintf( ctmp, CMOR_MAX_STRING, "%s %s", msg,
+			  cmor_tables[cmor_axes[laxes_ids[i]].
+				      ref_table_id].
+			  axes[cmor_axes[laxes_ids[i]].ref_axis_id].id );
+	    } else {
+		snprintf( ctmp, CMOR_MAX_STRING, "%s %s", msg,
+			  cmor_tables[cmor_axes[laxes_ids[i]].
+				      ref_table_id].
+			  axes[cmor_axes[laxes_ids[i]].ref_axis_id].
+			  out_name );
+	    }
+	    cmor_set_variable_attribute_internal( vrid,
+	            VARIABLE_ATT_COORDINATES, 'c', &ctmp[0] );
+
+	} else {
+
+	    cmor_vars[vrid].original_order[k] = laxes_ids[i];
+	    k++;
+	}
+    }
+/* -------------------------------------------------------------------- */
+/*      Now figures out the real order...                               */
+/* -------------------------------------------------------------------- */
+
+    k = 0;
+
+    for( i = 0; i < lndims; i++ ) {
+
+	if( ( ( strcmp
+		( cmor_tables[refvar.table_id].axes[refvar.dimensions[i]].
+		  id, "latitude" ) == 0 )
+	      ||
+	      ( strcmp
+		( cmor_tables[refvar.table_id].axes[refvar.dimensions[i]].
+		  id, "longitude" ) == 0 ) ) && ( grid_id != 1000 ) ) {
+
+/* -------------------------------------------------------------------- */
+/*      ok we are  dealing with a "grid" type of data                   */
+/* -------------------------------------------------------------------- */
+
+	    if( did_grid_reorder != 0 )
+		continue;
+	    for( j = 0; j < cmor_grids[grid_id].ndims; j++ ) {
+		cmor_vars[vrid].axes_ids[k] =
+		    cmor_grids[grid_id].axes_ids[j];
+		k++;
+	    }
+	    did_grid_reorder = 1;
+	} else if( ( refvar.dimensions[i] == -2 ) || ( cmor_tables[CMOR_TABLE].axes[refvar.dimensions[i]].value == 1.e20 ) ) {
+/* -------------------------------------------------------------------- */
+/*      not a singleton dim                                             */
+/* -------------------------------------------------------------------- */
+	    
+	    iref = -1;
+	    for( j = 0; j < lndims; j++ ) {
+		if( ( refvar.table_id ==
+		      cmor_axes[laxes_ids[j]].ref_table_id )
+		    && ( refvar.dimensions[i] ==
+			 cmor_axes[laxes_ids[j]].ref_axis_id ) ) {
+		    cmor_vars[vrid].axes_ids[k] = laxes_ids[j];
+		}
+/* -------------------------------------------------------------------- */
+/*      -2 means it is a zaxis                                          */
+/* -------------------------------------------------------------------- */
+
+		if( refvar.dimensions[i] == -2 ) {
+		    if( cmor_axes[laxes_ids[j]].axis == 'Z' )
+			cmor_vars[vrid].axes_ids[i] = laxes_ids[j];
+		}
+	    }
+	    k++;
+	} else if( refvar.dimensions[i] == -CMOR_MAX_GRIDS ) {
+/* -------------------------------------------------------------------- */
+/*      ok this is either a lat/lon                                     */
+/* -------------------------------------------------------------------- */
+
+	    for( j = 0; j < ndims; j++ )
+		if( axes_ids[j] < -CMOR_MAX_GRIDS + 1 )
+		    break;
+	    l = j;
+	    for( j = 0; j < cmor_grids[grid_id].ndims; j++ ) {
+		cmor_vars[vrid].axes_ids[k] =
+		    cmor_grids[grid_id].axes_ids[j];
+		k++;
+		i++;
+	    }
+	    i--;		/* one too many i adds */
+	}
+    }
+
+/* -------------------------------------------------------------------- */
+/*      OK WE ARE SAYING THAT THIS VARIABLE HAS %i DIMENSIONS           */
+/* -------------------------------------------------------------------- */
+
+    cmor_vars[vrid].ndims = k;
+    cmor_vars[vrid].itype = type;
+    k = 0;
+
+    for( i = 0; i < cmor_vars[vrid].ndims; i++ )
+	if( cmor_vars[vrid].original_order[i] !=
+	    cmor_vars[vrid].axes_ids[i] )
+	    k = -1;
+    if( k == -1 ) {
+
+	strncpy( msg, "Reordered dimensions, original order:",
+		 CMOR_MAX_STRING );
+	for( i = 0; i < cmor_vars[vrid].ndims; i++ ) {
+	    snprintf( ctmp, CMOR_MAX_STRING, " %s",
+		      cmor_axes[cmor_vars[vrid].original_order[i]].id );
+
+	    strncat( msg, ctmp, CMOR_MAX_STRING - strlen( ctmp ) );
+	}
+
+	cmor_update_history( vrid, msg );
+    }
+
+    if( refvar.type == '\0' ) {
+	cmor_vars[vrid].type = 'f';
     }
     else {
-/*       printf("in else\n"); */
-      cmor_vars[vrid].original_order[k]=laxes_ids[i];
-      k++;
-    }
-  }
-  /* Now figures out the real order... */
-  k=0;
-
-  /* for (i=0;i<lndims;i++) { */
-  /*   printf("OK IN CMOR VAR (%s),ORIGINAL ORDER FOR %i is: %i\n",cmor_vars[vrid].id,i,cmor_vars[vrid].original_order[i]); */
-  /* } */
-  /* printf("at this point we say var has %i dims\n",cmor_vars[vrid].ndims); */
-  /* for (i=0;i<lndims;i++) { */
-  /*   printf("axis id/name: %i/%s\n",laxes_ids[i],cmor_axes[laxes_ids[i]].id); */
-  /* } */
-
-  for (i=0;i<lndims;i++) { 
-    /* printf("dim %i\n",i); */
-    if (((strcmp(cmor_tables[refvar.table_id].axes[refvar.dimensions[i]].id,"latitude")==0) ||
-	 (strcmp(cmor_tables[refvar.table_id].axes[refvar.dimensions[i]].id,"longitude")==0) ) &&
-	(grid_id!=1000) ) {
-      /* printf("case 1\n"); */
-      /* ok we are  dealing with a "grid" type of data */
-      if (did_grid_reorder !=0 ) continue;
-      for (j=0;j<cmor_grids[grid_id].ndims;j++) {
-	cmor_vars[vrid].axes_ids[k]=cmor_grids[grid_id].axes_ids[j];
-	k++;
-      }
-      did_grid_reorder = 1;
-    }
-    else if ((refvar.dimensions[i]==-2) || (cmor_tables[CMOR_TABLE].axes[refvar.dimensions[i]].value == 1.e20)) { /* not a singleton dim */
-      /* printf("case 2\n"); */
-      iref=-1;
-      for (j=0;j<lndims;j++) {
-	/* printf("\tj:%i, refvar table: %i, axis table: %i, refvardim: %i, axisrefax: %i\n",j,refvar.table_id,cmor_axes[laxes_ids[j]].ref_table_id,refvar.dimensions[i],cmor_axes[laxes_ids[j]].ref_axis_id); */
-	if ((refvar.table_id==cmor_axes[laxes_ids[j]].ref_table_id) && (refvar.dimensions[i]==cmor_axes[laxes_ids[j]].ref_axis_id)) {
-	  cmor_vars[vrid].axes_ids[k]=laxes_ids[j];
-	}
-	/* -2 means it is a zaxis */
-	if (refvar.dimensions[i]==-2) {
-	  /* printf("i: %i, j: %i, axid: %i, laxesid: %i, axes_ids: %i\n",i,j,cmor_vars[vrid].axes_ids[i],laxes_ids[j],axes_ids[j]); */
-	  if (cmor_axes[laxes_ids[j]].axis=='Z') cmor_vars[vrid].axes_ids[i]=laxes_ids[j];
-	}
-      }
-      k++;
-    }
-    else if (refvar.dimensions[i]==-CMOR_MAX_GRIDS) {
-      /* printf("case 3\n"); */
-      /* ok this is either a lat/lon */
-      for(j=0;j<ndims;j++) if (axes_ids[j]<-CMOR_MAX_GRIDS+1) break;
-      l=j;
-      for (j=0;j<cmor_grids[grid_id].ndims;j++) {
-	cmor_vars[vrid].axes_ids[k]=cmor_grids[grid_id].axes_ids[j];
-	k++;
-	i++;
-      }
-      i--; /* one too many i adds */
-    }
-  }
-
-  /* printf("OK WE ARE SAYING THAT THIS VARIABLE HAS %i DIMENSIONS\n",k); */
-  cmor_vars[vrid].ndims=k;
-  cmor_vars[vrid].itype=type;
-  k=0;
-
-  for (i=0;i<cmor_vars[vrid].ndims;i++) if (cmor_vars[vrid].original_order[i]!=cmor_vars[vrid].axes_ids[i]) k=-1;
-  if (k==-1) {
-    /* printf("reordered: "); */
-    strncpy(msg,"Reordered dimensions, original order:",CMOR_MAX_STRING);
-    for (i=0;i<cmor_vars[vrid].ndims;i++) {
-      snprintf(ctmp,CMOR_MAX_STRING," %s",cmor_axes[cmor_vars[vrid].original_order[i]].id);
-      /* printf(" %s",cmor_axes[cmor_vars[vrid].original_order[i]].id); */
-      strncat(msg,ctmp,CMOR_MAX_STRING-strlen(ctmp));
-    }
-    /* printf("\n"); */
-    cmor_update_history(vrid,msg);
-  }
-  /* printf("Original/Final order: "); */
-  /* for (i=0;i<cmor_vars[vrid].ndims;i++) { */
-  /*   printf(" %s/%s",cmor_axes[cmor_vars[vrid].original_order[i]].id,cmor_axes[cmor_vars[vrid].axes_ids[i]].id); */
-  /* } */
-  /* printf("\n"); */
-  if (refvar.type=='\0') cmor_vars[vrid].type='f';
-  else cmor_vars[vrid].type=refvar.type;
-  if (missing != NULL) {
-    cmor_vars[vrid].nomissing = 0;/*printf("ok missing was not NULL pointer\n");}*/
-    if (type=='i') cmor_vars[vrid].missing = (double)*(int *)missing;
-    if (type=='l') cmor_vars[vrid].missing = (double)*(long *)missing;
-    if (type=='f') cmor_vars[vrid].missing = (double)*(float *)missing;
-    if (type=='d') cmor_vars[vrid].missing = (double)*(double *)missing;
-    if (cmor_vars[vrid].missing!=cmor_vars[vrid].omissing) {
-      snprintf(msg,CMOR_MAX_STRING,"replaced missing value flag (%g) with standard missing value (%g)",cmor_vars[vrid].missing,cmor_vars[vrid].omissing);
-      cmor_update_history(vrid,msg);
-    }
-    if (refvar.type=='d') {
-      cmor_set_variable_attribute_internal(vrid,"missing_value",'d',&cmor_vars[vrid].omissing);
-      cmor_set_variable_attribute_internal(vrid,"_FillValue",'d',&cmor_vars[vrid].omissing);
-    }
-    else if (refvar.type=='f') {
-      afloat = (float)cmor_vars[vrid].omissing;
-      cmor_set_variable_attribute_internal(vrid,"missing_value",'f',&afloat);
-      cmor_set_variable_attribute_internal(vrid,"_FillValue",'f',&afloat);
-    }
-    else if (refvar.type=='l') {
-      along = (long)cmor_vars[vrid].omissing;
-      cmor_set_variable_attribute_internal(vrid,"missing_value",'l',&along);
-      cmor_set_variable_attribute_internal(vrid,"_FillValue",'l',&along);
-    }
-    else if (refvar.type=='i') {
-      aint = (int)cmor_vars[vrid].omissing;
-      cmor_set_variable_attribute_internal(vrid,"missing_value",'i',&aint);
-      cmor_set_variable_attribute_internal(vrid,"_FillValue",'i',&aint);
-    }
-  }
-
-  /*printf("assiging %i to na\n",vrid);*/
-  cmor_vars[vrid].tolerance = 1.e-4;
-  cmor_vars[vrid].self=vrid;
-  if (tolerance!=NULL) cmor_vars[vrid].tolerance = (double)*(double *)tolerance;
-  *var_id=vrid;
-  cmor_pop_traceback();
-  return 0;
+	cmor_vars[vrid].type = refvar.type;
+    }
+
+    if( missing != NULL ) {
+	cmor_vars[vrid].nomissing = 0;
+	if( type == 'i' )
+	    cmor_vars[vrid].missing = ( double ) *( int * ) missing;
+	if( type == 'l' )
+	    cmor_vars[vrid].missing = ( double ) *( long * ) missing;
+	if( type == 'f' )
+	    cmor_vars[vrid].missing = ( double ) *( float * ) missing;
+	if( type == 'd' )
+	    cmor_vars[vrid].missing = ( double ) *( double * ) missing;
+	if( cmor_vars[vrid].missing != cmor_vars[vrid].omissing ) {
+	    snprintf( msg, CMOR_MAX_STRING,
+		      "replaced missing value flag (%g) with standard missing value (%g)",
+		      cmor_vars[vrid].missing, cmor_vars[vrid].omissing );
+	    cmor_update_history( vrid, msg );
+	}
+
+	if( refvar.type == 'd' ) {
+
+	    cmor_set_variable_attribute_internal( vrid,
+	            VARIABLE_ATT_MISSINGVALUES,
+	            'd',
+	            &cmor_vars[vrid].
+	            omissing );
+	    cmor_set_variable_attribute_internal( vrid,
+	            VARIABLE_ATT_FILLVAL,
+	            'd',
+	            &cmor_vars[vrid].
+	            omissing );
+
+	} else if( refvar.type == 'f' ) {
+
+	    afloat = ( float ) cmor_vars[vrid].omissing;
+	    cmor_set_variable_attribute_internal( vrid,
+	            VARIABLE_ATT_MISSINGVALUES,
+	            'f',
+	            &afloat );
+	    cmor_set_variable_attribute_internal( vrid,
+	            VARIABLE_ATT_FILLVAL,
+	            'f',
+	            &afloat );
+	} else if( refvar.type == 'l' ) {
+
+	    along = ( long ) cmor_vars[vrid].omissing;
+	    cmor_set_variable_attribute_internal( vrid,
+	            VARIABLE_ATT_MISSINGVALUES,
+	            'l',
+	            &along );
+	    cmor_set_variable_attribute_internal( vrid,
+	            VARIABLE_ATT_FILLVAL,
+	            'l',
+	            &along );
+
+	} else if( refvar.type == 'i' ) {
+
+	    aint = ( int ) cmor_vars[vrid].omissing;
+	    cmor_set_variable_attribute_internal( vrid,
+	            VARIABLE_ATT_MISSINGVALUES,
+	            'i',
+	            &aint );
+	    cmor_set_variable_attribute_internal( vrid,
+	            VARIABLE_ATT_FILLVAL,
+	            'i',
+	            &aint );
+	}
+    }
+
+
+    cmor_vars[vrid].tolerance = 1.e-4;
+    cmor_vars[vrid].self = vrid;
+    if( tolerance != NULL )
+	cmor_vars[vrid].tolerance = ( double ) *( double * ) tolerance;
+    *var_id = vrid;
+    cmor_pop_traceback(  );
+    return( 0 );
 };
+/************************************************************************/
+/*                         cmor_init_var_def()                          */
+/************************************************************************/
+
+void cmor_init_var_def( cmor_var_def_t * var, int table_id ) {
+    int n;
+
+    cmor_is_setup(  );
+    var->table_id = table_id;
+    var->standard_name[0] = '\0';
+    var->units[0] = '\0';
+    var->cell_methods[0] = '\0';
+    var->cell_measures[0] = '\0';
+    var->positive = '\0';
+    var->long_name[0] = '\0';
+    var->comment[0] = '\0';
+    var->realm[0] = '\0';
+    var->frequency[0] = '\0';
+    var->out_name[0] = '\0';
+    var->ndims = 0;
+    var->flag_values[0] = '\0';
+    var->flag_meanings[0] = '\0';
+    for( n = 0; n < CMOR_MAX_DIMENSIONS; n++ )
+	var->dimensions[n] = -1;
+    var->type = 'f';
+    var->valid_min = 1.e20;	/* means no check */
+    var->valid_max = 1.e20;
+    var->ok_min_mean_abs = 1.e20;
+    var->ok_max_mean_abs = 1.e20;
+    var->shuffle = 0;
+    var->deflate = 1;
+    var->deflate_level = 1;
+}
+/************************************************************************/
+/*                        cmor_set_var_def_att()                        */
+/************************************************************************/
+
+int cmor_set_var_def_att( cmor_var_def_t * var, char att[CMOR_MAX_STRING],
+			  char val[CMOR_MAX_STRING] ) {
+    int i, n, j, n0, k;
+    char dim[CMOR_MAX_STRING];
+    char msg[CMOR_MAX_STRING];
+
+    cmor_add_traceback( "cmor_set_var_def_att" );
+    cmor_is_setup(  );
+    if(strcmp(val, "") == 0 ) {
+        cmor_pop_traceback();
+        return(0);
+    }
+    if( strcmp( att, VARIABLE_ATT_REQUIRED ) == 0 ) {
+
+	strncpy( var->required, val, CMOR_MAX_STRING );
+
+    } else if( strcmp( att, VARIABLE_ATT_ID) == 0 ) {
+
+	strncpy( var->id, val, CMOR_MAX_STRING );
+
+    } else if( strcmp( att, VARIABLE_ATT_STANDARDNAME ) == 0 ) {
+
+	strncpy( var->standard_name, val, CMOR_MAX_STRING );
+
+    } else if( strcmp( att, VARIABLE_ATT_LONGNAME ) == 0 ) {
+
+	strncpy( var->long_name, val, CMOR_MAX_STRING );
+
+    } else if( strcmp( att, VARIABLE_ATT_COMMENT) == 0 ) {
+
+	strncpy( var->comment, val, CMOR_MAX_STRING );
+
+    } else if( strcmp( att, VARIABLE_ATT_DIMENSIONS ) == 0 ) {
+
+	n0 = strlen( val );
+	for( i = 0; i < n0; i++ ) {
+
+	    j = 0;
+	    while( ( i < n0 ) && ( ( val[i] != ' ' ) && val[i] != '\0' ) ) {
+		dim[j] = val[i];
+		j++;
+		i++;
+	    }
+
+	    dim[j] = '\0';
+
+	    if( var->ndims > CMOR_MAX_DIMENSIONS ) {
+		snprintf( msg, CMOR_MAX_STRING,
+			  "Too many dimensions (%i) defined for variable "
+		          "(%s), max is: %i",
+			  var->ndims, var->id, CMOR_MAX_DIMENSIONS );
+		cmor_handle_error( msg, CMOR_CRITICAL );
+	    }
+
+/* -------------------------------------------------------------------- */
+/*      check that the dimension as been defined in the table           */
+/* -------------------------------------------------------------------- */
+	    n = -1;		/* not found yet */
+	    for( j = 0; j <= cmor_tables[var->table_id].naxes; j++ ) {
+		if( strcmp( dim, cmor_tables[var->table_id].axes[j].id ) ==
+		    0 ) {
+		    n = j;
+		    break;
+		}
+	    }
+	    
+	    if( n == -1 ) {
+		j = strcmp( DIMENSION_ZLEVEL, dim );
+		j *= strcmp( DIMENSION_ALEVEL, dim );
+		j *= strcmp( DIMENSION_OLEVEL, dim );
+		for( k = 0; k < CMOR_MAX_ELEMENTS; k++ ) {
+		    if( cmor_tables[var->table_id].generic_levels[k][0] ==
+			'\0' )
+			break;
+		    j *= strcmp( dim,
+				 cmor_tables[var->table_id].
+				 generic_levels[k] );
+		}
+
+		if( j == 0 ) {
+
+		    var->dimensions[var->ndims] = -2;
+		} else {
+		    if( ( strcmp( dim, DIMENSION_LONGITUDE ) != 0 ) &&
+			strcmp( dim, DIMENSION_LATITUDE ) != 0 ) {
+/* -------------------------------------------------------------------- */
+/*      do not raise a warning if the axis is "longitude" /             */
+/*      "latitude" it is probably a grid variable                       */
+/* -------------------------------------------------------------------- */
+
+			snprintf( msg, CMOR_MAX_STRING,
+				  "Reading table %s: axis name: '%s' for "
+			          "variable: '%s' is not defined in table. "
+			          "Table defines dimensions: '%s' for this "
+			          "variable",
+				  cmor_tables[var->table_id].szTable_id, dim,
+				  var->id, val );
+			cmor_handle_error( msg, CMOR_CRITICAL );
+		    } else {
+			var->dimensions[var->ndims] = -CMOR_MAX_GRIDS;
+		    }
+		}
+	    } else {
+		var->dimensions[var->ndims] = n;
+	    }
+	    var->ndims++;
+	}
+/* -------------------------------------------------------------------- */
+/*      revert to put in C order                                        */
+/* -------------------------------------------------------------------- */
+
+	for( i = 0; i < var->ndims / 2; i++ ) {
+	    n = var->dimensions[i];
+	    var->dimensions[i] = var->dimensions[var->ndims - 1 - i];
+	    var->dimensions[var->ndims - 1 - i] = n;
+	}
+
+    } else if( strcmp( att, VARIABLE_ATT_UNITS ) == 0 ) {
+
+	strncpy( var->units, val, CMOR_MAX_STRING );
+
+    } else if( strcmp( att, VARIABLE_ATT_CELLMETHODS ) == 0 ) {
+
+	strncpy( var->cell_methods, val, CMOR_MAX_STRING );
+
+    } else if( strcmp( att, VARIABLE_ATT_EXTCELLMEASURES ) == 0 ) {
+
+	strncpy( var->cell_measures, val, CMOR_MAX_STRING );
+
+    } else if( strcmp( att, VARIABLE_ATT_CELLMEASURES ) == 0 ) {
+
+	strncpy( var->cell_measures, val, CMOR_MAX_STRING );
+
+    } else if( strcmp( att, VARIABLE_ATT_POSITIVE ) == 0 ) {
+
+	var->positive = val[0];
+
+    } else if( strcmp( att, VARIABLE_ATT_TYPE ) == 0 ) {
+
+	if( strcmp( val, "real" ) == 0 )
+	    var->type = 'f';
 
-void cmor_init_var_def(cmor_var_def_t *var, int table_id)
-{
-  int n;
-  cmor_is_setup();
-  var->table_id=table_id;
-  var->standard_name[0]='\0';
-  var->units[0]='\0';
-  var->cell_methods[0]='\0';
-  var->cell_measures[0]='\0';
-  var->positive='\0';
-  var->long_name[0]='\0';
-  var->comment[0]='\0';
-  var->realm[0]='\0';
-  var->frequency[0]='\0';
-  var->out_name[0]='\0';
-  var->ndims=0;
-  var->flag_values[0]='\0';
-  var->flag_meanings[0]='\0';
-  for(n=0;n<CMOR_MAX_DIMENSIONS;n++) var->dimensions[n]=-1;
-  var->type='f';
-  var->valid_min=1.e20; /* means no check */
-  var->valid_max=1.e20;
-  var->ok_min_mean_abs=1.e20;
-  var->ok_max_mean_abs=1.e20;
-  var->shuffle=0;
-  var->deflate=1;
-  var->deflate_level=1;
+	else if( strcmp( val, "double" ) == 0 )
+	    var->type = 'd';
+
+	else if( strcmp( val, "integer" ) == 0 )
+	    var->type = 'i';
+
+	else if( strcmp( val, "long" ) == 0 )
+	    var->type = 'l';
+
+    } else if( strcmp( att, VARIABLE_ATT_VALIDMIN  ) == 0 ) {
+
+	var->valid_min = atof( val );
+
+    } else if( strcmp( att, VARIABLE_ATT_VALIDMAX ) == 0 ) {
+
+	var->valid_max = atof( val );
+
+    } else if( strcmp( att, VARIABLE_ATT_MINMEANABS ) == 0 ) {
+
+	var->ok_min_mean_abs = atof( val );
+
+
+    } else if( strcmp( att, VARIABLE_ATT_MAXMEANABS ) == 0 ) {
+
+	var->ok_max_mean_abs = atof( val );
+
+    } else if( strcmp( att, VARIABLE_ATT_SHUFFLE ) == 0 ) {
+
+	var->shuffle = atoi( val );
+
+	if( atoi( val ) != 0 ) {
+
+	    if( USE_NETCDF_4 == 0 ) {
+		sprintf( msg,
+			 "Reading a table (%s) that calls for NetCDF4 "
+		         "features, you are using NetCDF3 library",
+			 cmor_tables[var->table_id].szTable_id );
+		cmor_handle_error( msg, CMOR_WARNING );
+
+	    } else if( ( CMOR_NETCDF_MODE == CMOR_APPEND_3 ) ||
+		       ( CMOR_NETCDF_MODE == CMOR_REPLACE_3 ) ||
+		       ( CMOR_NETCDF_MODE == CMOR_PRESERVE_3 ) ) {
+
+		sprintf( msg,
+			 "Reading a table (%s) that calls for NetCDF4 "
+		         "features, you asked for NetCDF3 features",
+			 cmor_tables[var->table_id].szTable_id );
+
+		cmor_handle_error( msg, CMOR_WARNING );
+	    }
+	}
+    } else if( strcmp( att, VARIABLE_ATT_DEFLATE ) == 0 ) {
+
+	var->deflate = atoi( val );
+
+	if( atoi( val ) != 0 ) {
+	    if( USE_NETCDF_4 == 0 ) {
+		sprintf( msg,
+			 "Reading a table (%s) that calls for NetCDF4 features, you are using NetCDF3 library",
+			 cmor_tables[var->table_id].szTable_id );
+		cmor_handle_error( msg, CMOR_WARNING );
+	    } else if( ( CMOR_NETCDF_MODE == CMOR_APPEND_3 ) ||
+		       ( CMOR_NETCDF_MODE == CMOR_REPLACE_3 ) ||
+		       ( CMOR_NETCDF_MODE == CMOR_PRESERVE_3 ) ) {
+		sprintf( msg,
+			 "Reading a table (%s) that calls for NetCDF4 features, you asked for NetCDF3 features",
+			 cmor_tables[var->table_id].szTable_id );
+		cmor_handle_error( msg, CMOR_WARNING );
+	    }
+	}
+    } else if( strcmp( att, VARIABLE_ATT_DEFLATELEVEL  ) == 0 ) {
+
+	var->deflate_level = atoi( val );
+
+    } else if( strcmp( att, VARIABLE_ATT_MODELINGREALM  ) == 0 ) {
+
+	strncpy( var->realm, val, CMOR_MAX_STRING );
+
+    } else if( strcmp( att, VARIALBE_ATT_FREQUENCY  ) == 0 ) {
+
+	strncpy( var->frequency, val, CMOR_MAX_STRING );
+
+    } else if( strcmp( att, VARIABLE_ATT_FLAGVALUES  ) == 0 ) {
+
+	strncpy( var->flag_values, val, CMOR_MAX_STRING );
+
+    } else if( strcmp( att, VARIABLE_ATT_FLAGMEANINGS  ) == 0 ) {
+
+	strncpy( var->flag_meanings, val, CMOR_MAX_STRING );
+
+    } else if( strcmp( att, VARIABLE_ATT_OUTNAME ) == 0 ) {
+
+	strncpy( var->out_name, val, CMOR_MAX_STRING );
+
+    } else {
+	snprintf( msg, CMOR_MAX_STRING,
+		  "Table %s, unknown variable attribute: >>>>%s<<<< value: (%s)",
+		  cmor_tables[var->table_id].szTable_id, att, val );
+	cmor_handle_error( msg, CMOR_WARNING );
+    }
+    cmor_pop_traceback(  );
+    return( 0 );
 }
 
-int cmor_set_var_def_att(cmor_var_def_t *var,char att[CMOR_MAX_STRING],char val[CMOR_MAX_STRING] ){
-  int i,n,j,n0,k;
-  char dim[CMOR_MAX_STRING];
-  char msg[CMOR_MAX_STRING];
-
-  cmor_add_traceback("cmor_set_var_def_att");
-  cmor_is_setup();
-  if (strcmp(att,"required")==0) {
-    strncpy(var->required,val,CMOR_MAX_STRING);
-  }
-  else if (strcmp(att,"id")==0) {
-    strncpy(var->id,val,CMOR_MAX_STRING);
-  }
-  else if (strcmp(att,"standard_name")==0) {
-    strncpy(var->standard_name,val,CMOR_MAX_STRING);
-  }
-  else if (strcmp(att,"long_name")==0) {
-    strncpy(var->long_name,val,CMOR_MAX_STRING);
-  }
-  else if (strcmp(att,"comment")==0) {
-    strncpy(var->comment,val,CMOR_MAX_STRING);
-  }
-  else if (strcmp(att,"dimensions")==0) {
-    n0=strlen(val);
-    for (i=0;i<n0;i++) {
-      j=0;
-      while((i<n0)&&((val[i]!=' ')&&val[i]!='\0')) { dim[j]=val[i] ; j++ ; i++ ;}
-      dim[j]='\0';
-      if (var->ndims > CMOR_MAX_DIMENSIONS) {
-	snprintf(msg,CMOR_MAX_STRING,"Too many dimensions (%i) defined for variable (%s), max is: %i",var->ndims,var->id,CMOR_MAX_DIMENSIONS);
-	cmor_handle_error(msg,CMOR_CRITICAL);
-      }
-      /* check that the dimension as been defined in the table */
-      n=-1; /* not found yet */
-      for (j=0;j<=cmor_tables[var->table_id].naxes;j++) {
-	if (strcmp(dim,cmor_tables[var->table_id].axes[j].id)==0) {n=j;break;}
-      }
-      if (n==-1) {
-	j = strcmp("zlevel",dim);
-        j *= strcmp("alevel",dim);
-        j *= strcmp("olevel",dim);
-	for (k=0;k<CMOR_MAX_ELEMENTS;k++) {
-	  if (cmor_tables[var->table_id].generic_levels[k][0]=='\0') break;
-	  j*=strcmp(dim,cmor_tables[var->table_id].generic_levels[k]);
-	}
-
-	if (j==0) {
-	  /* printf("ignoring zlevel for now\n");*/
-	  var->dimensions[var->ndims]=-2;
-	}
-	else {
-	  if ((strcmp(dim,"longitude")!=0) && strcmp(dim,"latitude")!=0) { /* do not raise a warning if the axis is "longitude" / "latitude" it is probably a grid variable */
-	    snprintf(msg,CMOR_MAX_STRING,"Reading table %s: axis name: '%s' for variable: '%s' is not defined in table. Table defines dimensions: '%s' for this variable",cmor_tables[var->table_id].table_id,dim,var->id,val);cmor_handle_error(msg,CMOR_CRITICAL);
-	  }
-	  else {
-	    var->dimensions[var->ndims]=-CMOR_MAX_GRIDS;
-	  }
-	}
-      }
-      else {
-	var->dimensions[var->ndims]=n;
-      }
-      var->ndims++;
-    }
-    /* revert to put in C order */
-    for (i=0;i<var->ndims/2;i++) {
-      n=var->dimensions[i];
-      var->dimensions[i]=var->dimensions[var->ndims-1-i];
-      var->dimensions[var->ndims-1-i]=n;
-    }
-    /*for (i=0;i<var->ndims;i++) printf("%s dimension %i: %s\n",var->id,i,cmor_tables[var->table_id].axes[var->dimensions[i]].id);*/
-  }
-  else if (strcmp(att,"units")==0) {
-    strncpy(var->units,val,CMOR_MAX_STRING);
-  }
-  else if (strcmp(att,"cell_methods")==0) {
-    strncpy(var->cell_methods,val,CMOR_MAX_STRING);
-  }
-  else if (strcmp(att,"ext_cell_measures")==0) {
-    strncpy(var->cell_measures,val,CMOR_MAX_STRING);
-  }
-  else if (strcmp(att,"cell_measures")==0) {
-    strncpy(var->cell_measures,val,CMOR_MAX_STRING);
-  }
-  else if (strcmp(att,"positive")==0) {
-    var->positive=val[0];
-  }
-  else if (strcmp(att,"type")==0) {
-    if (strcmp(val,"real")==0) var->type='f';
-    else if (strcmp(val,"double")==0) var->type='d';
-    else if (strcmp(val,"integer")==0) var->type='i';
-    else if (strcmp(val,"long")==0) var->type='l';
-  }
-  else if (strcmp(att,"valid_min")==0) {
-    var->valid_min = atof(val);
-  }
-  else if (strcmp(att,"valid_max")==0) {
-    var->valid_max = atof(val);
-  }
-  else if (strcmp(att,"ok_min_mean_abs")==0) {
-    var->ok_min_mean_abs=atof(val);
-  }
-  else if (strcmp(att,"ok_max_mean_abs")==0) {
-    var->ok_max_mean_abs = atof(val);
-  }
-  else if (strcmp(att,"shuffle")==0) {
-    var->shuffle = atoi(val);
-    if (atoi(val)!=0) {
-      if (USE_NETCDF_4 == 0) {
-	sprintf(msg,"Reading a table (%s) that calls for NetCDF4 features, you are using NetCDF3 library",cmor_tables[var->table_id].table_id);
-	cmor_handle_error(msg,CMOR_WARNING);
-      }
-      else if ( (CMOR_NETCDF_MODE == CMOR_APPEND_3) ||
-		(CMOR_NETCDF_MODE == CMOR_REPLACE_3) ||
-		(CMOR_NETCDF_MODE == CMOR_PRESERVE_3)) {
-	sprintf(msg,"Reading a table (%s) that calls for NetCDF4 features, you asked for NetCDF3 features",cmor_tables[var->table_id].table_id);
-	cmor_handle_error(msg,CMOR_WARNING);
-      }
-    }
-  }
-  else if (strcmp(att,"deflate")==0) {
-    var->deflate = atoi(val);
-    if (atoi(val)!=0) {
-      if (USE_NETCDF_4 == 0) {
-	sprintf(msg,"Reading a table (%s) that calls for NetCDF4 features, you are using NetCDF3 library",cmor_tables[var->table_id].table_id);
-	cmor_handle_error(msg,CMOR_WARNING);
-      }
-      else if ( (CMOR_NETCDF_MODE == CMOR_APPEND_3) ||
-		(CMOR_NETCDF_MODE == CMOR_REPLACE_3) ||
-		(CMOR_NETCDF_MODE == CMOR_PRESERVE_3)) {
-	sprintf(msg,"Reading a table (%s) that calls for NetCDF4 features, you asked for NetCDF3 features",cmor_tables[var->table_id].table_id);
-	cmor_handle_error(msg,CMOR_WARNING);
-      }
-    }
-  }
-  else if (strcmp(att,"deflate_level")==0) {
-    var->deflate_level = atoi(val);
-  }
-  else if (strcmp(att,"modeling_realm")==0) {
-    strncpy(var->realm,val,CMOR_MAX_STRING);
-  }
-  else if (strcmp(att,"frequency")==0) {
-    strncpy(var->frequency,val,CMOR_MAX_STRING);
-  }
-  else if (strcmp(att,"flag_values")==0) {
-    strncpy(var->flag_values,val,CMOR_MAX_STRING);
-  }
-  else if (strcmp(att,"flag_meanings")==0) {
-    strncpy(var->flag_meanings,val,CMOR_MAX_STRING);
-  }
-  else if (strcmp(att,"out_name")==0) {
-    strncpy(var->out_name,val,CMOR_MAX_STRING);
-  }
-  else {
-    snprintf(msg,CMOR_MAX_STRING,"Table %s, unknown variable attribute: >>>>%s<<<< value: (%s)",cmor_tables[var->table_id].table_id,att,val);
-    cmor_handle_error(msg,CMOR_WARNING);
-  }
-  cmor_pop_traceback();
-  return 0;
+/************************************************************************/
+/*                       cmor_set_var_deflate()                         */
+/************************************************************************/
+int cmor_set_deflate( int var_id, int shuffle,
+                      int deflate, int deflate_level ) {
+    char msg[CMOR_MAX_STRING];
+
+    cmor_add_traceback( "cmor_get_original_shape" );
+    cmor_is_setup();
+
+    if(cmor_vars[var_id].self != var_id) {
+        snprintf( msg, CMOR_MAX_STRING,
+                  "You attempt to deflate variable id(%d) which was "
+                   "not initialized",
+                   var_id);
+        cmor_handle_error( msg, CMOR_CRITICAL );
+        cmor_pop_traceback();
+
+        return(-1);
+    }
+
+    cmor_vars[var_id].shuffle = shuffle;
+    cmor_vars[var_id].deflate = deflate;
+    cmor_vars[var_id].deflate_level = deflate_level;
+    printf("id = %s\n", cmor_vars[var_id].id);
+    cmor_pop_traceback();
+    return( 0 );
 }
 
-int cmor_get_variable_time_length(int *var_id, int *length) {
-  cmor_var_t avar;
-  int i;
-
-  *length=0;
-  avar = cmor_vars[*var_id];
-  for (i=0;i<avar.ndims;i++) {
-    if (cmor_axes[avar.original_order[i]].axis=='T') *length=cmor_axes[avar.original_order[i]].length;
-  }
-
-/*   if (*length == -1) { */
-/*     snprintf(msg,CMOR_MAX_STRING,"trying to retrieve length of time axis for variable %s but this variable does not have a time axis",avar.id); */
-/*     cmor_handle_error(msg,CMOR_CRITICAL); */
-/*   } */
-  return 0;
+/************************************************************************/
+/*                   cmor_get_variable_time_length()                    */
+/************************************************************************/
+int cmor_get_variable_time_length( int *var_id, int *length ) {
+    cmor_var_t avar;
+    int i;
+
+    *length = 0;
+    avar = cmor_vars[*var_id];
+    for( i = 0; i < avar.ndims; i++ ) {
+	if( cmor_axes[avar.original_order[i]].axis == 'T' )
+	    *length = cmor_axes[avar.original_order[i]].length;
+    }
+
+    return( 0 );
 }
-    
-
-int cmor_get_original_shape(int *var_id, int *shape_array, int *rank, int blank_time) {
-  int i;
-  cmor_var_t avar;
-  char msg[CMOR_MAX_STRING];
-  cmor_add_traceback("cmor_get_original_shape");
-  avar = cmor_vars[*var_id];
-  for(i=0;i<*rank;i++) shape_array[i]=-1; /* init array */
-
-  if (*rank<avar.ndims) {
-    snprintf(msg,CMOR_MAX_STRING,"trying to retrieve shape of variable %s (table: %s) into a %id array but this variable is %id",avar.id,cmor_tables[avar.ref_table_id].table_id,*rank,avar.ndims);
-	  cmor_handle_error(msg,CMOR_CRITICAL);
-  }
-  for (i=0;i<avar.ndims;i++) {
-    if ((blank_time==1) && (cmor_axes[avar.original_order[i]].axis=='T')) {
-      shape_array[i]=0;
+
+/************************************************************************/
+/*                      cmor_get_original_shape()                       */
+/************************************************************************/
+
+int cmor_get_original_shape( int *var_id, int *shape_array, int *rank,
+			     int blank_time ) {
+    int i;
+    cmor_var_t avar;
+    char msg[CMOR_MAX_STRING];
+
+    cmor_add_traceback( "cmor_get_original_shape" );
+    avar = cmor_vars[*var_id];
+    for( i = 0; i < *rank; i++ )
+	shape_array[i] = -1;	/* init array */
+
+    if( *rank < avar.ndims ) {
+	snprintf( msg, CMOR_MAX_STRING,
+		  "trying to retrieve shape of variable %s (table: %s) into a %id array but this variable is %id",
+		  avar.id, cmor_tables[avar.ref_table_id].szTable_id, *rank,
+		  avar.ndims );
+	cmor_handle_error( msg, CMOR_CRITICAL );
+    }
+    for( i = 0; i < avar.ndims; i++ ) {
+	if( ( blank_time == 1 )
+	    && ( cmor_axes[avar.original_order[i]].axis == 'T' ) ) {
+	    shape_array[i] = 0;
+	} else {
+	    shape_array[i] = cmor_axes[avar.original_order[i]].length;
+	}
     }
-    else {
-      shape_array[i]=cmor_axes[avar.original_order[i]].length;
-    }
-  }
-  
-  /*   for(i=0;i<avar.ndims;i++) printf("var order: %i, %i\n",i,cmor_axes[avar.original_order[i]].length); */
-  /*   for(i=0;i<*rank;i++) printf("returning: %i, %i\n",i,shape_array[i]); */
-  cmor_pop_traceback();
-  return 0;
+
+    cmor_pop_traceback(  );
+    return( 0 );
 }
+/************************************************************************/
+/*                       cmor_write_var_to_file()                       */
+/************************************************************************/
+int cmor_write_var_to_file( int ncid, cmor_var_t * avar, void *data,
+			    char itype, int ntimes_passed,
+			    double *time_vals, double *time_bounds ) {
+
+    size_t counts[CMOR_MAX_DIMENSIONS];
+    size_t counts2[CMOR_MAX_DIMENSIONS];
+    int counter[CMOR_MAX_DIMENSIONS];
+    int counter_orig[CMOR_MAX_DIMENSIONS];
+    int counter_orig2[CMOR_MAX_DIMENSIONS];
+    int counter2[CMOR_MAX_DIMENSIONS];
+    size_t starts[CMOR_MAX_DIMENSIONS];
+    int nelements, loc, add, nelts;
+    double *data_tmp = NULL, tmp = 0., tmp2, amean;
+    int *idata_tmp = NULL;
+    long *ldata_tmp = NULL;
+    float *fdata_tmp = NULL;
+    char mtype;
+    int i, j, ierr = 0, dounits = 1;
+    char msg[CMOR_MAX_STRING];
+    char msg2[CMOR_MAX_STRING];
+    double *tmp_vals;
+    ut_unit *user_units = NULL, *cmor_units = NULL;
+    cv_converter *ut_cmor_converter = NULL;
+    char local_unit[CMOR_MAX_STRING];
+    int n_lower_min = 0, n_greater_max = 0;
+    double emax, emin, first_time;
+    char msg_min[CMOR_MAX_STRING];
+    char msg_max[CMOR_MAX_STRING];
+    extern ut_system *ut_read;
+    int tmpindex = 0;
+
+    cmor_add_traceback( "cmor_write_var_to_file" );
+    cmor_is_setup(  );
+
+    emax = 0.;
+    emin = 0.;
+
+    if( strcmp( avar->ounits, avar->iunits ) == 0 )
+	dounits = 0;
+    mtype = avar->type;
+/* -------------------------------------------------------------------- */
+/*       This counts how many elements there is in each dimension and   */
+/*      the total number of elements written at this time This needs    */
+/*      to be passed to NetCDF.                                         */
+/*                                                                      */
+/*      do we have times ?                                              */
+/* -------------------------------------------------------------------- */
+    if( ntimes_passed != 0 ) {
+	counts[0] = ntimes_passed;
+	if( cmor_axes[avar->axes_ids[0]].axis != 'T' ) {
+	    snprintf( msg, CMOR_MAX_STRING,
+		      "you are passing %i time steps for a static "
+	              "(no time dimension) variable (%s, table: %s), "
+	              "please pass 0 (zero) as the number of times",
+		      ntimes_passed, avar->id,
+		      cmor_tables[avar->ref_table_id].szTable_id );
+	    cmor_handle_error( msg, CMOR_CRITICAL );
+	}
+    } else {
+/* -------------------------------------------------------------------- */
+/*      need to determine if it is a static variable                    */
+/* -------------------------------------------------------------------- */
+
+	if( avar->ndims > 0 )
+	    counts[0] = cmor_axes[avar->axes_ids[0]].length;
+	else
+	    counts[0] = 1;
+    }
+    nelements = counts[0];
+    for( i = 1; i < avar->ndims; i++ ) {
+	counts[i] = cmor_axes[avar->axes_ids[i]].length;
+	nelements = nelements * counts[i];
+    }
+    if( avar->isbounds == 1 )
+	nelements *= 2;
+/* -------------------------------------------------------------------- */
+/*      This section counts how many elements are needed before you     */
+/*      increase the index in each dimension                            */
+/* -------------------------------------------------------------------- */
+
+    counter[avar->ndims] = 1;	/* dummy */
+    counter_orig[avar->ndims] = 1;	/*dummy */
+
+    for( i = avar->ndims - 1; i >= 0; i-- ) {
+/* -------------------------------------------------------------------- */
+/*      we need to do this for the order in which we will write and     */
+/*      the order the user defined its variable                         */
+/* -------------------------------------------------------------------- */
+
+	if( cmor_axes[avar->axes_ids[i]].axis != 'T' )
+	    counter[i] =
+		cmor_axes[avar->axes_ids[i]].length * counter[i + 1];
+	else
+	    counter[i] = counts[0] * counter[i + 1];
+	if( cmor_axes[avar->original_order[i]].axis != 'T' )
+	    counter_orig[i] =
+		cmor_axes[avar->original_order[i]].length *
+		counter_orig[i + 1];
+	else
+	    counter_orig[i] = counts[0] * counter_orig[i + 1];
+    }
+/* -------------------------------------------------------------------- */
+/*       Now we need to map, i.e going ahead by 2 elements of final     */
+/*       array eq going ahead of n elements originally                 */
+/* -------------------------------------------------------------------- */
+
+    for( i = 0; i < avar->ndims; i++ ) {
+        for( j = 0; j < avar->ndims; j++ ) {
+            if( avar->axes_ids[i] == avar->original_order[j] ) {
+                counter_orig2[i] = counter_orig[j + 1];
+            }
+        }
+    }
+
+/* -------------------------------------------------------------------- */
+/*      Allocates the memory to store data to be written after          */
+/*      reordering and scaling/off-setting needs to figure out if we    */
+/*      need to touch the variable...                                   */
+/* -------------------------------------------------------------------- */
+    if( mtype == 'i' ) {
+	idata_tmp = malloc( sizeof ( int ) * nelements );
+	if( idata_tmp == NULL ) {
+	    snprintf( msg, CMOR_MAX_STRING,
+		      "cannot allocate memory for %i int tmp elts var '%s' (table: %s)",
+		      nelements, avar->id,
+		      cmor_tables[avar->ref_table_id].szTable_id );
+	    cmor_handle_error( msg, CMOR_CRITICAL );
+	}
+
+    } else if( mtype == 'l' ) {
 
-int cmor_write_var_to_file(int ncid,cmor_var_t *avar,void *data,char itype, int ntimes_passed, double *time_vals, double *time_bounds){
-  size_t counts[CMOR_MAX_DIMENSIONS];
-  size_t counts2[CMOR_MAX_DIMENSIONS];
-  int counter[CMOR_MAX_DIMENSIONS];
-  int counter_orig[CMOR_MAX_DIMENSIONS];
-  int counter_orig2[CMOR_MAX_DIMENSIONS];
-  int counter2[CMOR_MAX_DIMENSIONS];
-  size_t starts[CMOR_MAX_DIMENSIONS];
-  int nelements,loc,add,nelts;
-  double *data_tmp=NULL, tmp=0., tmp2,amean;
-  int *idata_tmp=NULL;
-  long *ldata_tmp=NULL;
-  float *fdata_tmp=NULL;
-  char mtype;
-  int i,j,ierr=0,dounits=1;
-  char msg[CMOR_MAX_STRING];
-  char msg2[CMOR_MAX_STRING];
-  double *tmp_vals;
-  ut_unit *user_units=NULL, *cmor_units=NULL;
-  cv_converter *ut_cmor_converter=NULL;
-  char local_unit[CMOR_MAX_STRING];
-  int n_lower_min=0,n_greater_max=0;
-  double emax,emin,first_time;
-  char msg_min[CMOR_MAX_STRING];
-  char msg_max[CMOR_MAX_STRING];
-  extern ut_system *ut_read;   
-  int tmpindex=0;
-
-  cmor_add_traceback("cmor_write_var_to_file");
-  cmor_is_setup();
-
-  emax = 0.;
-  emin = 0.;
-/*   type = avar->itype; /\* stores input type for variable *\/ */
-
-  if (strcmp(avar->ounits,avar->iunits)==0) dounits=0;
-  mtype = avar->type;
-  /* This counts how many elements there is in each dimension and the total number of elements written at this time */
-  /* This needs to be passed to NetCDF */
-  /* do we have times ? */
-  if (ntimes_passed!=0) {
-    counts[0]=ntimes_passed;
-    if (cmor_axes[avar->axes_ids[0]].axis!='T') {     
-      snprintf(msg,CMOR_MAX_STRING,"you are passing %i time steps for a static (no time dimension) variable (%s, table: %s), please pass 0 (zero) as the number of times", ntimes_passed, avar->id, cmor_tables[avar->ref_table_id].table_id);
-      cmor_handle_error(msg,CMOR_CRITICAL);
-    }
-  }
-  else {
-    /* need to determine if it is a static variable */
-    if (avar->ndims>0) counts[0] = cmor_axes[avar->axes_ids[0]].length;
-    else counts[0]=1;
-  }
-  nelements = counts[0];
-  for (i=1;i<avar->ndims;i++) {
-    counts[i]=cmor_axes[avar->axes_ids[i]].length;
-    nelements = nelements*counts[i];
-  }
-  if (avar->isbounds==1) nelements*=2;
-/*   printf("we detected: %i elts over %i dims, var: %s\n",nelements,avar->ndims,avar->id); */
-  /* This section counts how many elements are needed before you increase the index in each dimension */
-  counter[avar->ndims]=1; /* dummy */
-  counter_orig[avar->ndims]=1; /*dummy */
-
-/*   for (i=0;i<avar->ndims;i++) { */
-/*     printf("dimension: %i, alength: %i, id: %s, counts:%i\n",i,cmor_axes[avar->axes_ids[i]].length,cmor_axes[avar->axes_ids[i]].id,counts[i]); */
-/*     printf("dimension: %i, olength: %i, id: %s, counts:%i\n",i,cmor_axes[avar->original_order[i]].length,cmor_axes[avar->original_order[i]].id,counts[i]); */
-/*   } */
-  for (i=avar->ndims-1;i>=0;i--) {
-    /* we need to do this for the order in which we will write and the order the user defined its variable */
-    if (cmor_axes[avar->axes_ids[i]].axis!='T') counter[i]=cmor_axes[avar->axes_ids[i]].length*counter[i+1];
-    else counter[i]=counts[0]*counter[i+1];
-    if (cmor_axes[avar->original_order[i]].axis!='T') counter_orig[i]=cmor_axes[avar->original_order[i]].length*counter_orig[i+1];
-    else counter_orig[i]=counts[0]*counter_orig[i+1];
-  }
-/*   for (i=0;i<avar->ndims;i++) { */
-/*     printf("dimension: %i, counter_orig:%i\n",i,counter_orig[i]); */
-/*   } */
-  /* Now we need to map, i.e going ahead by 2 eleemnts of final array eq going ahaead of n elements originally */
-  for (i=0;i<avar->ndims;i++) {
-    for (j=0;j<avar->ndims;j++) {
-      if (avar->axes_ids[i]==avar->original_order[j]) counter_orig2[i]=counter_orig[j+1];
-    }
-  }
-/*   for (i=0;i<avar->ndims;i++) {printf("i: %d, id: %s, length: %d, counter: %d, counter_orig: %d, counter_orig2: %d\n",i,cmor_axes[avar->axes_ids[i]].id,cmor_axes[avar->axes_ids[i]].length,counter[i],counter_orig[i],counter_orig2[i]);} */
-
-
-  /* Allocates the memory to store data to be written after reordering and scaling/offsetting */
-  /* needs to figure out if we need to touch the variable... */
-  if (mtype=='i') {
-    idata_tmp = malloc(sizeof(int)*nelements);
-    if (idata_tmp == NULL )  {
-      snprintf(msg,CMOR_MAX_STRING,"cannot allocate memory for %i int tmp elts var '%s' (table: %s)",nelements,avar->id,cmor_tables[avar->ref_table_id].table_id);
-      cmor_handle_error(msg,CMOR_CRITICAL);
-    }
-  }
-  else if (mtype=='l') {
-    ldata_tmp = malloc(sizeof(long)*nelements);
-    if (ldata_tmp == NULL)   {
-      snprintf(msg,CMOR_MAX_STRING,"cannot allocate memory for %i long tmp elts var '%s' (table: %s)",nelements,avar->id,cmor_tables[avar->ref_table_id].table_id);
-      cmor_handle_error(msg,CMOR_CRITICAL);
-    }
-  }
-  else if (mtype=='d') {
-    data_tmp = malloc(sizeof(double)*nelements);
-    if (data_tmp == NULL)   {
-      snprintf(msg,CMOR_MAX_STRING,"cannot allocate memory for %i double tmp elts var '%s' (table: %s)",nelements,avar->id,cmor_tables[avar->ref_table_id].table_id);
-      cmor_handle_error(msg,CMOR_CRITICAL);
-    }
-  }
-  else {
-    fdata_tmp = malloc(sizeof(float)*nelements);
-    if (fdata_tmp == NULL)   {
-      snprintf(msg,CMOR_MAX_STRING,"cannot allocate memory for %i float tmp elts var '%s' (table: %s)",nelements,avar->id,cmor_tables[avar->ref_table_id].table_id);
-      cmor_handle_error(msg,CMOR_CRITICAL);
-    }
-  }
-  
-  /* Reorder data, applies scaling, etc... */
-  if (dounits==1) {
-    strncpy(local_unit,avar->ounits,CMOR_MAX_STRING);
-    ut_trim(local_unit,UT_ASCII);
-    cmor_units = ut_parse(ut_read, local_unit,UT_ASCII);
-    if (ut_get_status() != UT_SUCCESS ) {
-      snprintf(msg,CMOR_MAX_STRING,"in udunits analyzing units from cmor table (%s) for variable %s (table: %s)",local_unit,avar->id,cmor_tables[avar->ref_table_id].table_id );
-      cmor_handle_error(msg,CMOR_CRITICAL);
-      cmor_pop_traceback();
-      return 1;
-    }
-    strncpy(local_unit,avar->iunits,CMOR_MAX_STRING);
-    ut_trim(local_unit,UT_ASCII);
-    user_units = ut_parse(ut_read, local_unit, UT_ASCII);
-    if (ut_get_status() != UT_SUCCESS ) {
-      snprintf(msg,CMOR_MAX_STRING,"in udunits analyzing units from user (%s) for variable %s (table: %s)",local_unit,avar->id,cmor_tables[avar->ref_table_id].table_id);
-      cmor_handle_error(msg,CMOR_CRITICAL);
-      cmor_pop_traceback();
-      return 1;
-    }
-    if (ut_are_convertible(cmor_units,user_units)==0 ) {
-      snprintf(msg,CMOR_MAX_STRING,"variable: %s, cmor and user units are incompatible: %s and %s for variable %s (table: %s)",avar->id,avar->ounits,avar->iunits,avar->id,cmor_tables[avar->ref_table_id].table_id);
-      cmor_handle_error(msg,CMOR_CRITICAL);
-      cmor_pop_traceback();
-      return 1;
-    }
-    ut_cmor_converter=ut_get_converter(user_units,cmor_units);
-    if (ut_get_status() != UT_SUCCESS ) {
-      snprintf(msg,CMOR_MAX_STRING," in udunits, getting converter for variable %s (table: %s)",avar->id,cmor_tables[avar->ref_table_id].table_id);
-      cmor_handle_error(msg,CMOR_CRITICAL);
-      cmor_pop_traceback();
-      return 1;
-    }
-  }
-  amean = 0.;
-  nelts = 0;
-  for (i=0;i<nelements;i++) {
-    loc = i;
-/*     printf("i: %i (",i); */
-    /* first figures out the coeff in final order */
-    /* puts the result in counter2 */
-    for (j=0;j<avar->ndims;j++) {
-      counter2[j] = (int)loc/(int)counter[j+1];
-      /* this is the reverse part */
-      /* doing it this way to avoid if test */
-      loc = loc - counter2[j]*counter[j+1];
-/*       printf(" %i: %i,",j,counter2[j]); */
-    }
-/*     printf(")\n"); */
-    /* now figures out what these indices meant in the original order */
-    loc = 0;
-    for (j=0;j<avar->ndims;j++) {
-      /* revert and offsetting done automatically */
-      /* next 2 commented out lines are for no reverse no modulo */
-/*       add = counter2[j]; */
-/*       loc = loc + add*counter_orig2[j]; */
-      if (cmor_axes[avar->axes_ids[j]].axis!='T') {
-/* 	printf("J: %i, counter2[j]: %i, counter_orig2[j]: %i , avar->axes_ids[j]: %i, id: %s, revert: %i, len: %i\n",j,counter2[j],counter_orig2[j],avar->axes_ids[j],cmor_axes[avar->axes_ids[j]].id,cmor_axes[avar->axes_ids[j]].revert,cmor_axes[avar->axes_ids[j]].length); */
-	add = counter2[j]*cmor_axes[avar->axes_ids[j]].revert + (cmor_axes[avar->axes_ids[j]].length-1)*(1-cmor_axes[avar->axes_ids[j]].revert)/2;
-	loc = loc + (int)fmod(add+cmor_axes[avar->axes_ids[j]].offset,cmor_axes[avar->axes_ids[j]].length)*counter_orig2[j];
-      }
-      else {
-/* 	printf("time one\n"); */
-/* 	printf("J: %i, counter2[j]: %i, counter_orig2[j]: %i , avar->axes_ids[j]: %i, id: %s, revert: %i, len: %i\n",j,counter2[j],counter_orig2[j],avar->axes_ids[j],cmor_axes[avar->axes_ids[j]].id,cmor_axes[avar->axes_ids[j]].revert,counts[0]); */
-	add = counter2[j]*cmor_axes[avar->axes_ids[j]].revert + (counts[0]-1)*(1-cmor_axes[avar->axes_ids[j]].revert)/2;
-	loc = loc + (int)fmod(add+cmor_axes[avar->axes_ids[j]].offset,counts[0])*counter_orig2[j];
-      }
-/*       printf("add,loc are: %i, %i\n",add,loc); */
-    }
-
-    /* Copy from user's data into our data */
-/*     printf("i,loc: %d, %d\n",i,loc); */
-
-    if (itype=='d') tmp = (double)((double *)data)[loc];
-    else if (itype=='f') tmp = (double)((float *)data)[loc];
-    else if (itype=='i') tmp = (double)((int *)data)[loc];
-    else if (itype=='l') tmp = (double)((long *)data)[loc];
-    if (avar->isbounds) {
-      /* ok here's the code for filipping the code if necessary */
-      if (cmor_axes[avar->axes_ids[0]].revert==-1) {
-	loc = nelements - i -1;
-      }
-      else {
-	loc=i;
-      }
-      tmp = (double)((double *)data)[loc];
-    }
-/*     printf("data read as: i: %lf\n",(double)((int *)data)[loc]); */
-/*     printf("data read as: l: %lf\n",(double)((long *)data)[loc]); */
-/*     printf("data read as: f: %lf\n",(double)((float *)data)[loc]); */
-/*     printf("data read as: d: %lf\n",(double)((double *)data)[loc]); */
-/*     printf("type is: %c, tmp is: %lf\n",itype,tmp); */
-/*     printf("missing is: %lf\n",avar->missing); */
-    tmp2 = (double)fabs(tmp-avar->missing);
-    if ((avar->nomissing==0) && (tmp2<=avar->tolerance*(double)fabs(tmp))) {
-      tmp = avar->omissing;
+	ldata_tmp = malloc( sizeof ( long ) * nelements );
+	if( ldata_tmp == NULL ) {
+	    snprintf( msg, CMOR_MAX_STRING,
+		      "cannot allocate memory for %i long tmp elts var '%s' (table: %s)",
+		      nelements, avar->id,
+		      cmor_tables[avar->ref_table_id].szTable_id );
+	    cmor_handle_error( msg, CMOR_CRITICAL );
+	}
+
+    } else if( mtype == 'd' ) {
+
+	data_tmp = malloc( sizeof ( double ) * nelements );
+	if( data_tmp == NULL ) {
+	    snprintf( msg, CMOR_MAX_STRING,
+		      "cannot allocate memory for %i double tmp elts var '%s' (table: %s)",
+		      nelements, avar->id,
+		      cmor_tables[avar->ref_table_id].szTable_id );
+	    cmor_handle_error( msg, CMOR_CRITICAL );
+	}
+
+    } else {
+
+	fdata_tmp = malloc( sizeof ( float ) * nelements );
+	if( fdata_tmp == NULL ) {
+	    snprintf( msg, CMOR_MAX_STRING,
+		      "cannot allocate memory for %i float tmp elts var '%s' (table: %s)",
+		      nelements, avar->id,
+		      cmor_tables[avar->ref_table_id].szTable_id );
+	    cmor_handle_error( msg, CMOR_CRITICAL );
+	}
     }
-    else {
-      if (dounits==1) {
-	tmp = cv_convert_double(ut_cmor_converter,tmp);
-	if (ut_get_status() != UT_SUCCESS ) {
-	  snprintf(msg,CMOR_MAX_STRING,"in udunits, converting values from %s to %s for variable %s (table: %s)",avar->iunits, avar->ounits, avar->id,cmor_tables[avar->ref_table_id].table_id);
-	  cmor_handle_error(msg,CMOR_CRITICAL);
-	  cmor_pop_traceback();
-	  return 1;
-	}
-      }
-      tmp = tmp*avar->sign; /* do we need to change the sign ? */
-      amean += fabs(tmp);
-      nelts+=1;
-      if ((avar->valid_min!=(float)1.e20) && (tmp<avar->valid_min)) {
-	n_lower_min+=1;
-	if ((n_lower_min==1)|| (tmp<emin)) { /*minimum val */
-	  emin = tmp;
-	  snprintf(msg_min,CMOR_MAX_STRING, "Invalid value(s) detected for variable '%s' (table: %s): %%i values were lower than minimum valid value (%.4g). Minimum encountered bad value (%.5g) was at (axis: index/value):" , avar->id, cmor_tables[avar->ref_table_id].table_id, avar->valid_min,tmp);
-	  for (j=0;j<avar->ndims;j++) {
-	    if (cmor_axes[avar->axes_ids[j]].values!=NULL) {
-	      snprintf(msg2, CMOR_MAX_STRING, " %s: %i/%.5g" , cmor_axes[avar->axes_ids[j]].id,counter2[j],cmor_axes[avar->axes_ids[j]].values[counter2[j]]);
+
+/* -------------------------------------------------------------------- */
+/*      Reorder data, applies scaling, etc...                           */
+/* -------------------------------------------------------------------- */
+    if( dounits == 1 ) {
+
+	strncpy( local_unit, avar->ounits, CMOR_MAX_STRING );
+	ut_trim( local_unit, UT_ASCII );
+	cmor_units = ut_parse( ut_read, local_unit, UT_ASCII );
+
+	if( ut_get_status(  ) != UT_SUCCESS ) {
+	    snprintf( msg, CMOR_MAX_STRING,
+		      "in udunits analyzing units from cmor table "
+	              "(%s) for variable %s (table: %s)",
+		      local_unit, avar->id,
+		      cmor_tables[avar->ref_table_id].szTable_id );
+	    cmor_handle_error( msg, CMOR_CRITICAL );
+	    cmor_pop_traceback(  );
+	    return( 1 );
+	}
+
+	strncpy( local_unit, avar->iunits, CMOR_MAX_STRING );
+	ut_trim( local_unit, UT_ASCII );
+	user_units = ut_parse( ut_read, local_unit, UT_ASCII );
+
+	if( ut_get_status(  ) != UT_SUCCESS ) {
+	    snprintf( msg, CMOR_MAX_STRING,
+		      "in udunits analyzing units from user (%s) "
+	              "for variable %s (table: %s)",
+		      local_unit, avar->id,
+		      cmor_tables[avar->ref_table_id].szTable_id );
+	    cmor_handle_error( msg, CMOR_CRITICAL );
+	    cmor_pop_traceback(  );
+	    return( 1 );
+	}
+
+	if( ut_are_convertible( cmor_units, user_units ) == 0 ) {
+	    snprintf( msg, CMOR_MAX_STRING,
+		      "variable: %s, cmor and user units are incompatible: "
+	              "%s and %s for variable %s (table: %s)",
+		      avar->id, avar->ounits, avar->iunits, avar->id,
+		      cmor_tables[avar->ref_table_id].szTable_id );
+	    cmor_handle_error( msg, CMOR_CRITICAL );
+	    cmor_pop_traceback(  );
+	    return( 1 );
+	}
+
+	ut_cmor_converter = ut_get_converter( user_units, cmor_units );
+
+	if( ut_get_status(  ) != UT_SUCCESS ) {
+	    snprintf( msg, CMOR_MAX_STRING,
+		      " in udunits, getting converter for variable %s "
+	              "(table: %s)",
+		      avar->id, cmor_tables[avar->ref_table_id].szTable_id );
+	    cmor_handle_error( msg, CMOR_CRITICAL );
+	    cmor_pop_traceback(  );
+	    return( 1 );
+	}
+    }
+
+    amean = 0.;
+    nelts = 0;
+
+    for( i = 0; i < nelements; i++ ) {
+	loc = i;
+/* -------------------------------------------------------------------- */
+/*      first figures out the coeff in final order                      */
+/*      puts the result in counter2                                     */
+/* -------------------------------------------------------------------- */
+	for( j = 0; j < avar->ndims; j++ ) {
+	    counter2[j] = ( int ) loc / ( int ) counter[j + 1];
+
+/* -------------------------------------------------------------------- */
+/*      this is the reverse part doing it this way to avoid if test     */
+/* -------------------------------------------------------------------- */
+	    loc = loc - counter2[j] * counter[j + 1];
+	}
+
+/* -------------------------------------------------------------------- */
+/*      now figures out what these indices meant in the original order  */
+/* -------------------------------------------------------------------- */
+	loc = 0;
+	for( j = 0; j < avar->ndims; j++ ) {
+	    cmor_axis_t *pAxis;
+            pAxis = &cmor_axes[avar->axes_ids[j]];
+            if (pAxis->axis != 'T') {
+
+                add = counter2[j] * pAxis->revert + (pAxis->length - 1) *
+                     (1 - pAxis->revert) / 2;
+
+                loc = loc + (int) fmod(add + pAxis->offset, pAxis->length)
+                          * counter_orig2[j];
+
+	    } else {
+
+                add = counter2[j] * pAxis->revert + (counts[0] - 1) *
+                        (1 - pAxis->revert) / 2;
+                loc = loc + (int) fmod(add + pAxis->offset, counts[0])
+                        * counter_orig2[j];
 	    }
-	    else {
-	      snprintf(msg2, CMOR_MAX_STRING, " %s: %i/%.5g" , cmor_axes[avar->axes_ids[j]].id,counter2[j],time_vals[counter2[j]]);
+
+	}
+
+/* -------------------------------------------------------------------- */
+/*      Copy from user's data into our data                             */
+/* -------------------------------------------------------------------- */
+	if( itype == 'd' )
+	    tmp = ( double ) ( ( double * ) data )[loc];
+	else if( itype == 'f' )
+	    tmp = ( double ) ( ( float * ) data )[loc];
+	else if( itype == 'i' )
+	    tmp = ( double ) ( ( int * ) data )[loc];
+	else if( itype == 'l' )
+	    tmp = ( double ) ( ( long * ) data )[loc];
+	if( avar->isbounds ) {
+
+/* -------------------------------------------------------------------- */
+/*      ok here's the code for filipping the code if necessary          */
+/* -------------------------------------------------------------------- */
+	    if( cmor_axes[avar->axes_ids[0]].revert == -1 ) {
+		loc = nelements - i - 1;
+	    } else {
+		loc = i;
 	    }
-	    strncat(msg_min,msg2,CMOR_MAX_STRING-strlen(msg));
-	  }
-	}
-      }
-      if ((avar->valid_max!=(float)1.e20) && (tmp>avar->valid_max)) {
-	n_greater_max+=1;
-	if ((n_greater_max==1)|| (tmp>emax)) {
-	  emax=tmp;
-	  snprintf(msg_max,CMOR_MAX_STRING, "Invalid value(s) detected for variable '%s' (table: %s): %%i values were greater than maximum valid value (%.4g).Maximum encountered bad value (%.5g) was at (axis: index/value):" , avar->id, cmor_tables[avar->ref_table_id].table_id, avar->valid_max,tmp);
-	  for (j=0;j<avar->ndims;j++) {
-	    if (cmor_axes[avar->axes_ids[j]].values!=NULL) {
-	      snprintf(msg2, CMOR_MAX_STRING, " %s: %i/%.5g" , cmor_axes[avar->axes_ids[j]].id,counter2[j],cmor_axes[avar->axes_ids[j]].values[counter2[j]]);
+	    tmp = ( double ) ( ( double * ) data )[loc];
+	}
+
+	tmp2 = ( double ) fabs( tmp - avar->missing );
+
+	if( ( avar->nomissing == 0 )
+	    && ( tmp2 <= avar->tolerance * ( double ) fabs( tmp ) ) ) {
+	    tmp = avar->omissing;
+
+	} else {
+	    if( dounits == 1 ) {
+
+		tmp = cv_convert_double( ut_cmor_converter, tmp );
+
+		if( ut_get_status(  ) != UT_SUCCESS ) {
+		    snprintf( msg, CMOR_MAX_STRING,
+			      "in udunits, converting values from %s to %s for variable %s (table: %s)",
+			      avar->iunits, avar->ounits, avar->id,
+			      cmor_tables[avar->ref_table_id].szTable_id );
+		    cmor_handle_error( msg, CMOR_CRITICAL );
+		    cmor_pop_traceback(  );
+		    return( 1 );
+		}
 	    }
-	    else {
-	      snprintf(msg2, CMOR_MAX_STRING, " %s: %i/%.5g" , cmor_axes[avar->axes_ids[j]].id,counter2[j],time_vals[counter2[j]]);
+
+	    tmp = tmp * avar->sign;	/* do we need to change the sign ? */
+	    amean += fabs( tmp );
+	    nelts += 1;
+
+	    if( ( avar->valid_min != ( float ) 1.e20 ) &&
+	            ( tmp < avar->valid_min ) ) {
+
+		n_lower_min += 1;
+		if( ( n_lower_min == 1 ) || ( tmp < emin ) ) {	/*minimum val */
+		    emin = tmp;
+		    snprintf( msg_min, CMOR_MAX_STRING,
+			      "Invalid value(s) detected for variable '%s' "
+		              "(table: %s): %%i values were lower than minimum "
+		              "valid value (%.4g). Minimum encountered bad "
+		              "value (%.5g) was at (axis: index/value):",
+			      avar->id,
+			      cmor_tables[avar->ref_table_id].szTable_id,
+			      avar->valid_min, tmp );
+
+		    for( j = 0; j < avar->ndims; j++ ) {
+		        cmor_axis_t *pAxis;
+                        pAxis = &cmor_axes[avar->axes_ids[j]];
+                        if (pAxis->values != NULL) {
+                            snprintf(msg2, CMOR_MAX_STRING, " %s: %i/%.5g",
+                                    pAxis->id, counter2[j],
+                                    pAxis->values[counter2[j]]);
+
+                        } else {
+                            snprintf(msg2, CMOR_MAX_STRING, " %s: %i/%.5g",
+                                    pAxis->id, counter2[j],
+                                    time_vals[counter2[j]]);
+                        }
+                        strncat(msg_min, msg2, CMOR_MAX_STRING - strlen(msg));
+		    }
+		}
 	    }
-	    strncat(msg_max,msg2,CMOR_MAX_STRING-strlen(msg));
-	  }
-	}
-      }
-    }
-
-    /*printf("mtype: %c\n",mtype);*/
-    if (mtype=='i') idata_tmp[i]=(int)tmp;
-    else if (mtype=='l') ldata_tmp[i]=(long)tmp;
-    else if (mtype=='f') fdata_tmp[i]=(float)tmp;
-    else if (mtype=='d') data_tmp[i]=(double)tmp;
-  }
-  if (n_lower_min!=0) {
-    snprintf(msg,CMOR_MAX_STRING,msg_min,n_lower_min);
-    cmor_handle_error(msg,CMOR_WARNING);
-  }
-  if (n_greater_max!=0) {
-    snprintf(msg,CMOR_MAX_STRING,msg_max,n_greater_max);
-    cmor_handle_error(msg,CMOR_WARNING);
-  }
-  if (avar->ok_min_mean_abs!=(float)1.e20) {
-    if (amean/nelts<.1*avar->ok_min_mean_abs) {
-      snprintf(msg,CMOR_MAX_STRING, "Invalid Absolute Mean for variable '%s' (table: %s) (%.5g) is lower by more than an order of magnitude than minimum allowed: %.4g" , avar->id, cmor_tables[avar->ref_table_id].table_id, amean/nelts, avar->ok_min_mean_abs);
-      cmor_handle_error(msg,CMOR_CRITICAL);
-    }
-    if (amean/nelts<avar->ok_min_mean_abs) {
-      snprintf(msg,CMOR_MAX_STRING, "Invalid Absolute Mean for variable '%s' (table: %s) (%.5g) is lower than minimum allowed: %.4g" , avar->id, cmor_tables[avar->ref_table_id].table_id, amean/nelts, avar->ok_min_mean_abs);
-      cmor_handle_error(msg,CMOR_WARNING);
-    }
-  }
-  if (avar->ok_max_mean_abs!=(float)1.e20) {
-    if  (amean/nelts>10.*avar->ok_max_mean_abs) {
-      snprintf(msg,CMOR_MAX_STRING, "Invalid Absolute Mean for variable '%s' (table: %s) (%.5g) is greater by more than an order of magnitude than maximum allowed: %.4g" , avar->id, cmor_tables[avar->ref_table_id].table_id, amean/nelts, avar->ok_max_mean_abs);
-    cmor_handle_error(msg,CMOR_CRITICAL);
-    }
-    if  (amean/nelts>avar->ok_max_mean_abs) {
-      snprintf(msg,CMOR_MAX_STRING, "Invalid Absolute Mean for variable '%s' (table: %s) (%.5g) is greater than maximum allowed: %.4g" , avar->id, cmor_tables[avar->ref_table_id].table_id, amean/nelts, avar->ok_max_mean_abs);
-    cmor_handle_error(msg,CMOR_WARNING);
-    }
-  }
-  if (dounits==1) {
-    cv_free(ut_cmor_converter);
-    if (ut_get_status() != UT_SUCCESS) {
-      snprintf(msg,CMOR_MAX_STRING,"Udunits: Error freeing converter, variable %s (table: %s)", avar->id, cmor_tables[avar->ref_table_id].table_id);
-      cmor_handle_error(msg,CMOR_CRITICAL);
-    }
-    
-    ut_free(cmor_units);
-    if (ut_get_status() != UT_SUCCESS) {
-      snprintf(msg,CMOR_MAX_STRING,"Udunits: Error freeing units, variable %s (table: %s)", avar->id, cmor_tables[avar->ref_table_id].table_id);
-      cmor_handle_error(msg,CMOR_CRITICAL);
-    }
-    ut_free(user_units);
-    if (ut_get_status() != UT_SUCCESS) {
-      snprintf(msg,CMOR_MAX_STRING,"Udunits: Error freeing units, variable %s (table: %s)", avar->id, cmor_tables[avar->ref_table_id].table_id);
-      cmor_handle_error(msg,CMOR_CRITICAL);
-    }
-  }
-  /* Initialize the start index in each dimensions */
-  for (i=0;i<avar->ndims;i++) starts[i]=0;
-  starts[0]=avar->ntimes_written;
-
-  /* Write the times passed by user */
-  if (ntimes_passed!=0){
-    if (time_vals!=NULL) {
-      if (cmor_axes[avar->axes_ids[0]].values!=NULL) {
-	snprintf(msg,CMOR_MAX_STRING,"variable '%s' (table %s) you are passing time values but you already defined them via cmor_axis, this is not allowed",avar->id, cmor_tables[avar->ref_table_id].table_id);
-	cmor_handle_error(msg,CMOR_CRITICAL);
-      }
-      
-      if (time_bounds!=NULL) {
-	counts2[0]=counts[0];
-	counts2[1]=2;
-	starts[1]=0;
-	cmor_get_axis_attribute(avar->axes_ids[0],"units",'c',&msg);
-	cmor_get_cur_dataset_attribute("calendar",msg2);
-	
-	
-	
-	/* 	else { */
-	/* 	  /\* checking manually that time is within bounds *\/ */
-	/* 	  if ((time_vals[0]<time_bounds[0]) || (time_vals[0]>time_bounds[1])) { */
-	/* 	    snprintf(msg,CMOR_MAX_STRING, "Time point: %lf is not within the bounds you passed: [%lf, %lf]\n",time_vals[0],time_bounds[0],time_bounds[1]); */
-	/* 	    cmor_handle_error(msg,CMOR_CRITICAL); */
-	/* 	  } */
-	/* 	} */
-	tmp_vals = malloc((ntimes_passed+1)*2*sizeof(double));
-	if (tmp_vals == NULL) {
-	  snprintf(msg,CMOR_MAX_STRING,"cannot malloc %i tmp bounds time vals for variable '%s' (table: %s)",ntimes_passed*2,avar->id,cmor_tables[avar->ref_table_id].table_id);
-	  cmor_handle_error(msg,CMOR_CRITICAL);
-	}
-        if (avar->ntimes_written>0) {
-            if ((avar->last_time!=-999.)&&(avar->last_bound!=1.e20)) {
-                tmpindex = 1;
-                tmp_vals[0]=avar->last_time;
-            }
-            else {
-                tmpindex=0;
-            }
-        }
-        else {
-            tmpindex = 0;
-        }
-	ierr = cmor_convert_time_values(time_vals,'d',ntimes_passed,&tmp_vals[tmpindex],cmor_axes[avar->axes_ids[0]].iunits,msg,msg2,msg2);
-	ierr = cmor_check_monotonic(&tmp_vals[0],ntimes_passed+tmpindex,"time",0,avar->axes_ids[0]);
-        if (avar->ntimes_written>0) {
-            if ((avar->last_time!=-999.)&&(avar->last_bound!=1.e20)) {
-                tmp_vals[0] = 2*avar->last_time-avar->last_bound;
-                tmp_vals[1] = avar->last_bound;
-            }
-        }
-	ierr = cmor_convert_time_values(time_bounds,'d',ntimes_passed*2,&tmp_vals[2*tmpindex],cmor_axes[avar->axes_ids[0]].iunits,msg,msg2,msg2);
-	ierr = cmor_check_monotonic(&tmp_vals[0],(ntimes_passed+tmpindex)*2,"time",1,avar->axes_ids[0]);
-	ierr = cmor_check_values_inside_bounds(&time_vals[0],&time_bounds[0], ntimes_passed, "time");
-	ierr = nc_put_vara_double(ncid,avar->time_bnds_nc_id,starts,counts2,&tmp_vals[2*tmpindex]);
-	if (ierr != NC_NOERR) {snprintf(msg,CMOR_MAX_STRING,"NetCDF error (%i) writing time bounds for variable '%s', already written in file: %i",ierr,avar->id,avar->ntimes_written);cmor_handle_error(msg,CMOR_CRITICAL);}
-	/* /\* ok first time around the we need to store bounds *\/ */
-	if (avar->ntimes_written == 0) {
-	  /* ok first time we're putting data  in */
-	  avar->first_bound = tmp_vals[0];
-	}
-        else {
-            /* ok let's put the bounds back on "normal" (start at 0) indices */
-            for (i=0;i<2*ntimes_passed;i++) {
-                tmp_vals[i]=tmp_vals[i+2];
-            }
-        }
-        avar->last_bound = tmp_vals[ntimes_passed*2-1];
-	
-	/* ok since we have bounds we need to set time in the middle */
-	/* but only do this in case of none climato */
-	if (cmor_tables[cmor_axes[avar->axes_ids[0]].ref_table_id].axes[cmor_axes[avar->axes_ids[0]].ref_axis_id].climatology==0) {
-	  for (i=0;i<ntimes_passed;i++) {
-	    tmp_vals[i]=(tmp_vals[2*i]+tmp_vals[2*i+1])/2.;
-	  }
-	  first_time = tmp_vals[0]; /*store for later */
-	}
-	else { /* we need to put into tmp_vals the right things */
-	  ierr = cmor_convert_time_values(time_vals,'d',ntimes_passed,&tmp_vals[0],cmor_axes[avar->axes_ids[0]].iunits,msg,msg2,msg2);
-	  first_time = tmp_vals[0] ; /*store for later */
-	}
-	
-	
-	ierr = nc_put_vara_double(ncid,avar->time_nc_id,starts,counts,&tmp_vals[0]);
-	if (ierr != NC_NOERR) {snprintf(msg,CMOR_MAX_STRING,"NetCDF error (%i: %s) writing time values for variable '%s' (%s)",ierr,nc_strerror(ierr),avar->id,cmor_tables[avar->ref_table_id].table_id);cmor_handle_error(msg,CMOR_CRITICAL);}
-	
-	if (cmor_tables[cmor_axes[avar->axes_ids[0]].ref_table_id].axes[cmor_axes[avar->axes_ids[0]].ref_axis_id].climatology==0) {
-	  /* all good in that case */
-	}
-	else {
-	  //tmp_vals[0] = tmp_vals[ntimes_passed*2-2];
-	  tmp_vals[ntimes_passed-1]=tmp_vals[ntimes_passed*2-1];
-	}	/* ok now we need to store first and last stuff */
-	if (avar->ntimes_written == 0) {
-	  /* ok first time we're putting data  in */
-	  avar->first_time = first_time;
-	}
-	else {
-	  if (tmp_vals[0]<avar->last_time) {
-	    snprintf(msg,CMOR_MAX_STRING, "Time point: %lf ( %lf in output units) is not monotonic last time was: %lf (in output units), variable %s (table: %s)",time_vals[0],tmp_vals[0],avar->last_time,avar->id,cmor_tables[avar->ref_table_id].table_id);
-	    cmor_handle_error(msg,CMOR_CRITICAL);
-	  }
-	}
-	/* 	printf("setting last time to: %lf\n",tmp_vals[ntimes_passed-1]); */
-	avar->last_time = tmp_vals[ntimes_passed-1];
-	
-	free(tmp_vals);
-      }
-      else {
-	/* checks wether you need bounds or not */
-	if (cmor_tables[cmor_axes[avar->axes_ids[0]].ref_table_id].axes[cmor_axes[avar->axes_ids[0]].ref_axis_id].must_have_bounds==1) {
-	  snprintf(msg,CMOR_MAX_STRING,"time axis must have bounds, please pass them to cmor_write along with time values, variable %s, table %s",avar->id,cmor_tables[avar->ref_table_id].table_id);
-	  cmor_handle_error(msg,CMOR_CRITICAL);
-	}
-	avar->first_bound=1.e20;
-	avar->last_bound=1.e20;
-	cmor_get_axis_attribute(avar->axes_ids[0],"units",'c',&msg);
-	cmor_get_cur_dataset_attribute("calendar",msg2);
-	tmp_vals = malloc(ntimes_passed*sizeof(double));
-	if (tmp_vals == NULL)  {
-	  snprintf(msg,CMOR_MAX_STRING,"cannot malloc %i time vals for variable '%s' (table: %s)",ntimes_passed,avar->id,cmor_tables[avar->ref_table_id].table_id);
-	  cmor_handle_error(msg,CMOR_CRITICAL);
-	}
-	ierr = cmor_convert_time_values(time_vals,'d',ntimes_passed,&tmp_vals[0],cmor_axes[avar->axes_ids[0]].iunits,msg,msg2,msg2);
-	ierr = nc_put_vara_double(ncid,avar->time_nc_id,starts,counts,tmp_vals);
-	/* 	printf("setting last time to (4): %lf\n",tmp_vals[ntimes_passed-1]); */
-	if (avar->ntimes_written == 0) {
-	  /* ok first time we're putting data  in */
-	  avar->first_time = tmp_vals[0];
-	}
-	avar->last_time = tmp_vals[ntimes_passed-1];
-	/* 	printf("setting last time to: %f\n",avar->last_time); */
-	free(tmp_vals);
-	if (ierr != NC_NOERR) {snprintf(msg,CMOR_MAX_STRING,"NetCDF error (%i: %s) writing times for variable '%s' (table: %s), already written in file: %i",ierr,nc_strerror(ierr),avar->id,cmor_tables[avar->ref_table_id].table_id,avar->ntimes_written);cmor_handle_error(msg,CMOR_CRITICAL);}
-      }
-    }
-    else { /* ok we did not pass time values therefore it means they were defined via the axis */
-      if (cmor_axes[avar->axes_ids[0]].values==NULL) {
-	snprintf(msg,CMOR_MAX_STRING,"variable '%s' (table: %s) you are passing %i times but no values and you did not define them via cmor_axis",avar->id,cmor_tables[avar->ref_table_id].table_id,ntimes_passed);
-	cmor_handle_error(msg,CMOR_CRITICAL);
-      }
-      if (cmor_axes[avar->axes_ids[0]].bounds!=NULL) {
-	/* ok at that stage the recentering must already be done so we just need to write the bounds */
-	counts2[0]=counts[0];
-	counts2[1]=2;
-	starts[1]=0;
-	ierr = nc_put_vara_double(ncid,avar->time_bnds_nc_id,starts,counts2,&cmor_axes[avar->axes_ids[0]].bounds[starts[0]*2]);
-	if (ierr != NC_NOERR) {snprintf(msg,CMOR_MAX_STRING,"NCError (%i: %s) writting time bounds values for variable '%s' (table: %s)",ierr,nc_strerror(ierr),avar->id,cmor_tables[avar->ref_table_id].table_id);cmor_handle_error(msg,CMOR_CRITICAL);}
-	/* ok we need to store first and last bounds */
-	if (avar->ntimes_written==0) {
-	  avar->first_bound=cmor_axes[avar->axes_ids[0]].bounds[starts[0]*2];
-	}
-	avar->last_bound=cmor_axes[avar->axes_ids[0]].bounds[(starts[0]+counts[0])*2-1];
-      }
-      else {
-	/* checks wether you need bounds or not */
-	if (cmor_tables[cmor_axes[avar->axes_ids[0]].ref_table_id].axes[cmor_axes[avar->axes_ids[0]].ref_axis_id].must_have_bounds==1) {
-	  snprintf(msg,CMOR_MAX_STRING,"time axis must have bounds, you defined it w/o any for variable %s (table: %s)",avar->id,cmor_tables[avar->ref_table_id].table_id);
-	  cmor_handle_error(msg,CMOR_CRITICAL);
-	}
-	avar->first_bound=1.e20;
-	avar->last_bound=1.e20;
-      }
-      ierr = nc_put_vara_double(ncid,avar->time_nc_id,starts,counts,&cmor_axes[avar->axes_ids[0]].values[starts[0]]);
-      if (ierr != NC_NOERR) {snprintf(msg,CMOR_MAX_STRING,"NCError (%i: %s) writting time values for variable '%s' (table: %s)",ierr,nc_strerror(ierr),avar->id,cmor_tables[avar->ref_table_id].table_id);cmor_handle_error(msg,CMOR_CRITICAL);}
-      /* ok now we need to store first and last stuff */
-      if (avar->ntimes_written==0) {
-	avar->first_time = cmor_axes[avar->axes_ids[0]].values[starts[0]];
-      }
-      /*       printf("setting last time (2) to: %lf\n",cmor_axes[avar->axes_ids[0]].values[starts[0]+counts[0]-1]); */
-      avar->last_time = cmor_axes[avar->axes_ids[0]].values[starts[0]+counts[0]-1];
-    }
-  }
-  else { /* ok we did not pass time values therefore it means they were defined via the axis */
-    ierr = -1;
-    /* look for time dimension */
-    for (i = 0;i<avar->ndims;i++) {
-      if (cmor_axes[avar->axes_ids[0]].axis=='T') {
-	ierr = i;
-	break;
-      }
-    }
-    if (ierr!=-1) {
-      if (cmor_axes[avar->axes_ids[ierr]].values==NULL) {
-	snprintf(msg,CMOR_MAX_STRING,"variable '%s' (table: %s) you are passing %i times but no values and you did not define them via cmor_axis",avar->id,cmor_tables[avar->ref_table_id].table_id,ntimes_passed);
-	cmor_handle_error(msg,CMOR_CRITICAL);
-      }
-      avar->first_bound=1.e20;
-      avar->last_bound=1.e20;
-      if (cmor_axes[avar->axes_ids[ierr]].bounds!=NULL) {
-	/* ok at that stage the recentering must already be done so we just need to write the bounds */
-	counts2[0]=counts[0];
-	counts2[1]=2;
-	starts[0]=0;
-	starts[1]=0;
-	ierr = nc_put_vara_double(ncid,avar->time_bnds_nc_id,starts,counts2,&cmor_axes[avar->axes_ids[0]].bounds[starts[0]*2]);
-	if (ierr != NC_NOERR) {snprintf(msg,CMOR_MAX_STRING,"NCError (%i: %s) writting time bounds values for variable '%s' (table: %s)",ierr,nc_strerror(ierr),avar->id,cmor_tables[avar->ref_table_id].table_id);cmor_handle_error(msg,CMOR_CRITICAL);}
-	avar->first_bound=cmor_axes[avar->axes_ids[0]].bounds[0];
-	avar->last_bound=cmor_axes[avar->axes_ids[0]].bounds[counts[0]*2-1];
-      }
-      ierr = nc_put_vara_double(ncid,avar->time_nc_id,starts,counts,&cmor_axes[avar->axes_ids[0]].values[starts[0]]);
-      if (ierr != NC_NOERR) {snprintf(msg,CMOR_MAX_STRING,"NCError (%i: %s) writting time values for variable '%s' (table: %s)",ierr,nc_strerror(ierr),avar->id,cmor_tables[avar->ref_table_id].table_id);cmor_handle_error(msg,CMOR_CRITICAL);}
-      /* ok now we need to store first and last stuff */
-      avar->first_time = cmor_axes[avar->axes_ids[0]].values[0];
-/*       printf("setting last time (3) to: %lf\n",cmor_axes[avar->axes_ids[0]].values[starts[0]+counts[0]-1]); */
-      avar->last_time = cmor_axes[avar->axes_ids[0]].values[starts[0]+counts[0]-1];
-    }
-  }
-  
-  if (avar->isbounds) {counts[avar->ndims]=2;starts[avar->ndims]=0;}
-  /* printf("writing: %s with: \n",avar->id); */
-  /* for (i=0;i<avar->ndims;i++) { */
-  /*   printf("dim: %i, starts: %i, counts: %i\n",i,starts[i],counts[i]); */
-  /* } */
-  if (mtype=='d') ierr = nc_put_vara_double(ncid,avar->nc_var_id,starts,counts,data_tmp);
-  else if (mtype=='f') ierr = nc_put_vara_float(ncid,avar->nc_var_id,starts,counts,fdata_tmp);
-  else if (mtype=='l') ierr = nc_put_vara_long(ncid,avar->nc_var_id,starts,counts,ldata_tmp);
-  else if (mtype=='i') ierr = nc_put_vara_int(ncid,avar->nc_var_id,starts,counts,idata_tmp);
-
-  if (ierr != NC_NOERR) {snprintf(msg,CMOR_MAX_STRING,"NetCDF Error (%i: %s), writing variable '%s' (table %s) to file",ierr,nc_strerror(ierr),avar->id,cmor_tables[avar->ref_table_id].table_id);cmor_handle_error(msg,CMOR_CRITICAL);}
-  avar->ntimes_written+=ntimes_passed;
-  if (mtype=='d') free(data_tmp);
-  else if (mtype=='f') free(fdata_tmp);
-  else if (mtype=='l') free(ldata_tmp);
-  else if (mtype=='i') free(idata_tmp);
-  cmor_pop_traceback();
-  return 0;
+	    if( ( avar->valid_max != ( float ) 1.e20 ) &&
+	            ( tmp > avar->valid_max ) ) {
+
+		n_greater_max += 1;
+
+		if( ( n_greater_max == 1 ) || ( tmp > emax ) ) {
+
+		    emax = tmp;
+		    snprintf( msg_max, CMOR_MAX_STRING,
+			      "Invalid value(s) detected for variable '%s' "
+		              "(table: %s): %%i values were greater than "
+		              "maximum valid value (%.4g).Maximum encountered "
+		              "bad value (%.5g) was at (axis: index/value):",
+                        	      avar->id,
+			      cmor_tables[avar->ref_table_id].szTable_id,
+			      avar->valid_max, tmp );
+
+		    for( j = 0; j < avar->ndims; j++ ) {
+                        cmor_axis_t *pAxis;
+                        pAxis = &cmor_axes[avar->axes_ids[j]];
+
+                        if (pAxis->values != NULL) {
+                            snprintf(msg2, CMOR_MAX_STRING, " %s: %i/%.5g",
+                                    pAxis->id, counter2[j],
+                                    pAxis->values[counter2[j]]);
+                        } else {
+                            snprintf(msg2, CMOR_MAX_STRING, " %s: %i/%.5g",
+                                    pAxis->id, counter2[j],
+                                    time_vals[counter2[j]]);
+                        }
+
+			strncat( msg_max, msg2,
+				 CMOR_MAX_STRING - strlen( msg ) );
+		    }
+		}
+	    }
+	}
+
+	if( mtype == 'i' )
+	    idata_tmp[i] = ( int ) tmp;
+	else if( mtype == 'l' )
+	    ldata_tmp[i] = ( long ) tmp;
+	else if( mtype == 'f' )
+	    fdata_tmp[i] = ( float ) tmp;
+	else if( mtype == 'd' )
+	    data_tmp[i] = ( double ) tmp;
+
+    }
+    if( n_lower_min != 0 ) {
+
+	snprintf( msg, CMOR_MAX_STRING, msg_min, n_lower_min );
+	cmor_handle_error( msg, CMOR_WARNING );
+
+    }
+    if( n_greater_max != 0 ) {
+
+	snprintf( msg, CMOR_MAX_STRING, msg_max, n_greater_max );
+	cmor_handle_error( msg, CMOR_WARNING );
+
+    }
+    if( avar->ok_min_mean_abs != ( float ) 1.e20 ) {
+
+	if( amean / nelts < .1 * avar->ok_min_mean_abs ) {
+
+	    snprintf( msg, CMOR_MAX_STRING,
+		      "Invalid Absolute Mean for variable '%s' (table: %s) "
+	              "(%.5g) is lower by more than an order of magnitude "
+	              "than minimum allowed: %.4g",
+		      avar->id, cmor_tables[avar->ref_table_id].szTable_id,
+		      amean / nelts, avar->ok_min_mean_abs );
+
+	    cmor_handle_error( msg, CMOR_CRITICAL );
+
+	}
+	if( amean / nelts < avar->ok_min_mean_abs ) {
+
+	    snprintf( msg, CMOR_MAX_STRING,
+		      "Invalid Absolute Mean for variable '%s' "
+	              "(table: %s) (%.5g) is lower than minimum allowed: %.4g",
+		      avar->id, cmor_tables[avar->ref_table_id].szTable_id,
+		      amean / nelts, avar->ok_min_mean_abs );
+	    cmor_handle_error( msg, CMOR_WARNING );
+	}
+    }
+
+    if( avar->ok_max_mean_abs != ( float ) 1.e20 ) {
+	if( amean / nelts > 10. * avar->ok_max_mean_abs ) {
+	    snprintf( msg, CMOR_MAX_STRING,
+		      "Invalid Absolute Mean for variable '%s' "
+	              "(table: %s) (%.5g) is greater by more than "
+	              "an order of magnitude than maximum allowed: %.4g",
+		      avar->id, cmor_tables[avar->ref_table_id].szTable_id,
+		      amean / nelts, avar->ok_max_mean_abs );
+	    cmor_handle_error( msg, CMOR_CRITICAL );
+	}
+	if( amean / nelts > avar->ok_max_mean_abs ) {
+
+	    snprintf( msg, CMOR_MAX_STRING,
+		      "Invalid Absolute Mean for variable '%s' "
+	              "(table: %s) (%.5g) is greater than maximum "
+	              "allowed: %.4g",
+		      avar->id, cmor_tables[avar->ref_table_id].szTable_id,
+		      amean / nelts, avar->ok_max_mean_abs );
+	    cmor_handle_error( msg, CMOR_WARNING );
+
+	}
+    }
+    if( dounits == 1 ) {
+
+	cv_free( ut_cmor_converter );
+
+	if( ut_get_status(  ) != UT_SUCCESS ) {
+
+	    snprintf( msg, CMOR_MAX_STRING,
+		      "Udunits: Error freeing converter, variable %s "
+	              "(table: %s)",
+		      avar->id, cmor_tables[avar->ref_table_id].szTable_id );
+	    cmor_handle_error( msg, CMOR_CRITICAL );
+
+	}
+
+	ut_free( cmor_units );
+	if( ut_get_status(  ) != UT_SUCCESS ) {
+
+	    snprintf( msg, CMOR_MAX_STRING,
+		      "Udunits: Error freeing units, variable %s (table: %s)",
+		      avar->id, cmor_tables[avar->ref_table_id].szTable_id );
+	    cmor_handle_error( msg, CMOR_CRITICAL );
+
+	}
+
+	ut_free( user_units );
+	if( ut_get_status(  ) != UT_SUCCESS ) {
+
+	    snprintf( msg, CMOR_MAX_STRING,
+		      "Udunits: Error freeing units, variable %s (table: %s)",
+		      avar->id, cmor_tables[avar->ref_table_id].szTable_id );
+	    cmor_handle_error( msg, CMOR_CRITICAL );
+
+	}
+    }
+/* -------------------------------------------------------------------- */
+/*      Initialize the start index in each dimensions                   */
+/* -------------------------------------------------------------------- */
+
+    for( i = 0; i < avar->ndims; i++ )
+	starts[i] = 0;
+    starts[0] = avar->ntimes_written;
+
+/* -------------------------------------------------------------------- */
+/*      Write the times passed by user                                  */
+/* -------------------------------------------------------------------- */
+
+    if( ntimes_passed != 0 ) {
+	if( time_vals != NULL ) {
+	    if( cmor_axes[avar->axes_ids[0]].values != NULL ) {
+		snprintf( msg, CMOR_MAX_STRING,
+			  "variable '%s' (table %s) you are passing "
+		          "time values but you already defined them "
+		          "via cmor_axis, this is not allowed",
+			  avar->id,
+			  cmor_tables[avar->ref_table_id].szTable_id );
+		cmor_handle_error( msg, CMOR_CRITICAL );
+	    }
+
+	    if( time_bounds != NULL ) {
+		counts2[0] = counts[0];
+		counts2[1] = 2;
+		starts[1] = 0;
+		cmor_get_axis_attribute( avar->axes_ids[0], "units", 'c',
+					 &msg );
+		cmor_get_cur_dataset_attribute( "calendar", msg2 );
+
+		tmp_vals =
+		    malloc( ( ntimes_passed +
+			      1 ) * 2 * sizeof ( double ) );
+		if( tmp_vals == NULL ) {
+		    snprintf( msg, CMOR_MAX_STRING,
+			      "cannot malloc %i tmp bounds time vals "
+		              "for variable '%s' (table: %s)",
+			      ntimes_passed * 2, avar->id,
+			      cmor_tables[avar->ref_table_id].szTable_id );
+		    cmor_handle_error( msg, CMOR_CRITICAL );
+		}
+		if( avar->ntimes_written > 0 ) {
+		    if( ( avar->last_time != -999. )
+			&& ( avar->last_bound != 1.e20 ) ) {
+			tmpindex = 1;
+			tmp_vals[0] = avar->last_time;
+		    } else {
+			tmpindex = 0;
+		    }
+		} else {
+		    tmpindex = 0;
+		}
+                ierr = cmor_convert_time_values(time_vals, 'd', ntimes_passed,
+                        &tmp_vals[tmpindex],
+                        cmor_axes[avar->axes_ids[0]].iunits,
+                        msg, msg2, msg2);
+
+                ierr = cmor_check_monotonic(&tmp_vals[0],
+                        ntimes_passed + tmpindex,
+                        "time", 0, avar->axes_ids[0]);
+
+		if( avar->ntimes_written > 0 ) {
+
+		    if( ( avar->last_time != -999. ) &&
+			( avar->last_bound != 1.e20 ) ) {
+
+			tmp_vals[0] =  2 * avar->last_time - avar->last_bound;
+			tmp_vals[1] = avar->last_bound;
+		    }
+		}
+
+                ierr = cmor_convert_time_values(time_bounds, 'd',
+                        ntimes_passed * 2, &tmp_vals[2 * tmpindex],
+                        cmor_axes[avar->axes_ids[0]].iunits, msg, msg2, msg2);
+
+                ierr = cmor_check_monotonic(&tmp_vals[0],
+                        (ntimes_passed + tmpindex) * 2, "time", 1,
+                        avar->axes_ids[0]);
+
+                ierr = cmor_check_values_inside_bounds(&time_vals[0],
+                        &time_bounds[0], ntimes_passed, "time");
+
+                ierr = nc_put_vara_double(ncid, avar->time_bnds_nc_id, starts,
+                        counts2, &tmp_vals[2 * tmpindex]);
+
+		if( ierr != NC_NOERR ) {
+		    snprintf( msg, CMOR_MAX_STRING,
+			      "NetCDF error (%i) writing time bounds for variable '%s', already written in file: %i",
+			      ierr, avar->id, avar->ntimes_written );
+		    cmor_handle_error( msg, CMOR_CRITICAL );
+		}
+/* -------------------------------------------------------------------- */
+/*      ok first time around the we need to store bounds                */
+/* -------------------------------------------------------------------- */
+
+		if( avar->ntimes_written == 0 ) {
+/* -------------------------------------------------------------------- */
+/*      Ok first time we're putting data  in                            */
+/* -------------------------------------------------------------------- */
+
+		    avar->first_bound = tmp_vals[0];
+		} else {
+/* -------------------------------------------------------------------- */
+/*      ok let's put the bounds back on "normal" (start at 0) indices   */
+/* -------------------------------------------------------------------- */
+
+		    for( i = 0; i < 2 * ntimes_passed; i++ ) {
+			tmp_vals[i] = tmp_vals[i + 2];
+		    }
+		}
+		avar->last_bound = tmp_vals[ntimes_passed * 2 - 1];
+
+/* -------------------------------------------------------------------- */
+/*      ok since we have bounds we need to set time in the middle       */
+/*      but only do this in case of none climato                        */
+/* -------------------------------------------------------------------- */
+		if( cmor_tables[cmor_axes[avar->axes_ids[0]].ref_table_id].
+		    axes[cmor_axes[avar->axes_ids[0]].ref_axis_id].
+		    climatology == 0 ) {
+		    for( i = 0; i < ntimes_passed; i++ ) {
+			tmp_vals[i] =
+			    ( tmp_vals[2 * i] + tmp_vals[2 * i + 1] ) / 2.;
+		    }
+/* -------------------------------------------------------------------- */
+/*      store for later                                                 */
+/* -------------------------------------------------------------------- */
+
+		    first_time = tmp_vals[0];	
+		} else {
+/* -------------------------------------------------------------------- */
+/*      we need to put into tmp_vals the right things                   */
+/* -------------------------------------------------------------------- */
+                    ierr = cmor_convert_time_values(time_vals, 'd',
+                            ntimes_passed, &tmp_vals[0],
+                            cmor_axes[avar->axes_ids[0]].iunits, msg, msg2,
+                            msg2);
+
+		    first_time = tmp_vals[0];	/*store for later */
+		}
+
+
+		ierr =
+		    nc_put_vara_double( ncid, avar->time_nc_id, starts,
+					counts, &tmp_vals[0] );
+		if( ierr != NC_NOERR ) {
+		    snprintf( msg, CMOR_MAX_STRING,
+			      "NetCDF error (%i: %s) writing time values for variable '%s' (%s)",
+			      ierr, nc_strerror( ierr ), avar->id,
+			      cmor_tables[avar->ref_table_id].szTable_id );
+		    cmor_handle_error( msg, CMOR_CRITICAL );
+		}
+
+		if( cmor_tables[cmor_axes[avar->axes_ids[0]].ref_table_id].
+		    axes[cmor_axes[avar->axes_ids[0]].ref_axis_id].
+		    climatology == 0 ) {
+/* -------------------------------------------------------------------- */
+/*      all good in that case                                           */
+/* -------------------------------------------------------------------- */
+
+		} else {
+
+		    tmp_vals[ntimes_passed - 1] =
+			tmp_vals[ntimes_passed * 2 - 1];
+
+		}
+/* -------------------------------------------------------------------- */
+/*      ok now we need to store first and last stuff                    */
+/* -------------------------------------------------------------------- */
+		
+		if( avar->ntimes_written == 0 ) {
+/* -------------------------------------------------------------------- */
+/*      ok first time we're putting data  in                            */
+/* -------------------------------------------------------------------- */
+		    
+		    avar->first_time = first_time;
+
+		} else {
+
+		    if( tmp_vals[0] < avar->last_time ) {
+                        snprintf(msg, CMOR_MAX_STRING,
+                                "Time point: %lf ( %lf in output units) "
+                                "is not monotonic last time was: %lf "
+                                "(in output units), variable %s (table: %s)",
+                                time_vals[0], tmp_vals[0], avar->last_time,
+                                avar->id,
+                                cmor_tables[avar->ref_table_id].szTable_id);
+                        cmor_handle_error(msg, CMOR_CRITICAL);
+		    }
+		}
+
+		avar->last_time = tmp_vals[ntimes_passed - 1];
+
+		free( tmp_vals );
+	    } else {
+/* -------------------------------------------------------------------- */
+/*      checks wether you need bounds or not                            */
+/* -------------------------------------------------------------------- */
+		
+		if( cmor_tables[cmor_axes[avar->axes_ids[0]].ref_table_id].
+		    axes[cmor_axes[avar->axes_ids[0]].ref_axis_id].
+		    must_have_bounds == 1 ) {
+		    snprintf( msg, CMOR_MAX_STRING,
+			      "time axis must have bounds, please pass them to cmor_write along with time values, variable %s, table %s",
+			      avar->id,
+			      cmor_tables[avar->ref_table_id].szTable_id );
+		    cmor_handle_error( msg, CMOR_CRITICAL );
+
+		}
+
+		avar->first_bound = 1.e20;
+		avar->last_bound = 1.e20;
+
+		cmor_get_axis_attribute( avar->axes_ids[0], "units", 'c', &msg );
+		cmor_get_cur_dataset_attribute( "calendar", msg2 );
+
+		tmp_vals = malloc( ntimes_passed * sizeof ( double ) );
+
+		if( tmp_vals == NULL ) {
+		    snprintf( msg, CMOR_MAX_STRING,
+			      "cannot malloc %i time vals for variable "
+		              "'%s' (table: %s)",
+			      ntimes_passed, avar->id,
+			      cmor_tables[avar->ref_table_id].szTable_id );
+		    cmor_handle_error( msg, CMOR_CRITICAL );
+		}
+		ierr =
+		    cmor_convert_time_values( time_vals, 'd',
+					      ntimes_passed, &tmp_vals[0],
+					      cmor_axes[avar->axes_ids[0]].
+					      iunits, msg, msg2, msg2 );
+		ierr =
+		    nc_put_vara_double( ncid, avar->time_nc_id, starts,
+					counts, tmp_vals );
+
+		if( avar->ntimes_written == 0 ) {
+/* -------------------------------------------------------------------- */
+/*       ok first time we're putting data  in                           */
+/* -------------------------------------------------------------------- */
+		    
+		    avar->first_time = tmp_vals[0];
+		}
+		avar->last_time = tmp_vals[ntimes_passed - 1];
+
+		free( tmp_vals );
+		if( ierr != NC_NOERR ) {
+		    snprintf( msg, CMOR_MAX_STRING,
+			      "NetCDF error (%i: %s) writing times for variable '%s' (table: %s), already written in file: %i",
+			      ierr, nc_strerror( ierr ), avar->id,
+			      cmor_tables[avar->ref_table_id].szTable_id,
+			      avar->ntimes_written );
+		    cmor_handle_error( msg, CMOR_CRITICAL );
+		}
+	    }
+	} else {
+/* -------------------------------------------------------------------- */
+/*      Ok we did not pass time values therefore it means they were     */
+/*      defined via the axis                                            */
+/* -------------------------------------------------------------------- */
+	    
+	    if( cmor_axes[avar->axes_ids[0]].values == NULL ) {
+		snprintf( msg, CMOR_MAX_STRING,
+			  "variable '%s' (table: %s) you are passing %i "
+		          "times but no values and you did not define "
+		          "them via cmor_axis",
+			  avar->id,
+			  cmor_tables[avar->ref_table_id].szTable_id,
+			  ntimes_passed );
+		cmor_handle_error( msg, CMOR_CRITICAL );
+	    }
+	    if( cmor_axes[avar->axes_ids[0]].bounds != NULL ) {
+/* -------------------------------------------------------------------- */
+/*      ok at that stage the recentering must already be done so we     */
+/*      just need to write the bounds                                   */
+/* -------------------------------------------------------------------- */
+		counts2[0] = counts[0];
+		counts2[1] = 2;
+		starts[1] = 0;
+		ierr =
+		    nc_put_vara_double( ncid, avar->time_bnds_nc_id,
+					starts, counts2,
+					&cmor_axes[avar->axes_ids[0]].
+					bounds[starts[0] * 2] );
+		if( ierr != NC_NOERR ) {
+		    snprintf( msg, CMOR_MAX_STRING,
+			      "NCError (%i: %s) writting time bounds values for variable '%s' (table: %s)",
+			      ierr, nc_strerror( ierr ), avar->id,
+			      cmor_tables[avar->ref_table_id].szTable_id );
+		    cmor_handle_error( msg, CMOR_CRITICAL );
+		}
+/* -------------------------------------------------------------------- */
+/*      ok we need to store first and last bounds                       */
+/* -------------------------------------------------------------------- */
+		if( avar->ntimes_written == 0 ) {
+		    avar->first_bound =
+			cmor_axes[avar->axes_ids[0]].bounds[starts[0] * 2];
+		}
+		avar->last_bound =
+		    cmor_axes[avar->axes_ids[0]].
+		    bounds[( starts[0] + counts[0] ) * 2 - 1];
+	    } else {
+/* -------------------------------------------------------------------- */
+/*      Checks wether you need bounds or not                            */
+/* -------------------------------------------------------------------- */
+		if( cmor_tables[cmor_axes[avar->axes_ids[0]].ref_table_id].
+		    axes[cmor_axes[avar->axes_ids[0]].ref_axis_id].
+		    must_have_bounds == 1 ) {
+		    snprintf( msg, CMOR_MAX_STRING,
+			      "time axis must have bounds, you defined it w/o any for variable %s (table: %s)",
+			      avar->id,
+			      cmor_tables[avar->ref_table_id].szTable_id );
+		    cmor_handle_error( msg, CMOR_CRITICAL );
+		}
+		avar->first_bound = 1.e20;
+		avar->last_bound = 1.e20;
+	    }
+	    ierr =
+		nc_put_vara_double( ncid, avar->time_nc_id, starts, counts,
+				    &cmor_axes[avar->axes_ids[0]].
+				    values[starts[0]] );
+	    if( ierr != NC_NOERR ) {
+		snprintf( msg, CMOR_MAX_STRING,
+			  "NCError (%i: %s) writting time values for variable '%s' (table: %s)",
+			  ierr, nc_strerror( ierr ), avar->id,
+			  cmor_tables[avar->ref_table_id].szTable_id );
+		cmor_handle_error( msg, CMOR_CRITICAL );
+	    }
+/* -------------------------------------------------------------------- */
+/*      ok now we need to store first and last stuff                    */
+/* -------------------------------------------------------------------- */
+
+	    if( avar->ntimes_written == 0 ) {
+		avar->first_time =
+		    cmor_axes[avar->axes_ids[0]].values[starts[0]];
+	    }
+
+	    avar->last_time =
+		cmor_axes[avar->axes_ids[0]].values[starts[0] + counts[0] -
+						    1];
+	}
+    } else {
+/* -------------------------------------------------------------------- */
+/*      ok we did not pass time values therefore it means they were     */
+/*      defined via the axis                                            */
+/* -------------------------------------------------------------------- */
+	ierr = -1;
+/* -------------------------------------------------------------------- */
+/*      look for time dimension                                         */
+/* -------------------------------------------------------------------- */
+	for( i = 0; i < avar->ndims; i++ ) {
+	    if( cmor_axes[avar->axes_ids[0]].axis == 'T' ) {
+		ierr = i;
+		break;
+	    }
+	}
+
+	if( ierr != -1 ) {
+
+	    if( cmor_axes[avar->axes_ids[ierr]].values == NULL ) {
+		snprintf( msg, CMOR_MAX_STRING,
+			  "variable '%s' (table: %s) you are passing %i "
+		          "times but no values and you did not define "
+		          "them via cmor_axis",
+			  avar->id,
+			  cmor_tables[avar->ref_table_id].szTable_id,
+			  ntimes_passed );
+		cmor_handle_error( msg, CMOR_CRITICAL );
+
+	    }
+
+	    avar->first_bound = 1.e20;
+	    avar->last_bound = 1.e20;
+
+	    if( cmor_axes[avar->axes_ids[ierr]].bounds != NULL ) {
+/* -------------------------------------------------------------------- */
+/*      ok at that stage the recentering must already be done so we     */
+/*      just need to write the bounds                                   */
+/* -------------------------------------------------------------------- */
+
+		counts2[0] = counts[0];
+		counts2[1] = 2;
+		starts[0] = 0;
+		starts[1] = 0;
+                ierr = nc_put_vara_double( ncid, avar->time_bnds_nc_id,
+                        starts,
+                        counts2,
+                        &cmor_axes[avar->axes_ids[0]].bounds[starts[0] * 2] );
+
+		if( ierr != NC_NOERR ) {
+		    snprintf( msg, CMOR_MAX_STRING,
+			      "NCError (%i: %s) writting time bounds values for variable '%s' (table: %s)",
+			      ierr, nc_strerror( ierr ), avar->id,
+			      cmor_tables[avar->ref_table_id].szTable_id );
+		    cmor_handle_error( msg, CMOR_CRITICAL );
+		}
+		avar->first_bound = cmor_axes[avar->axes_ids[0]].bounds[0];
+		avar->last_bound =
+		    cmor_axes[avar->axes_ids[0]].bounds[counts[0] * 2 - 1];
+	    }
+
+	    ierr = nc_put_vara_double( ncid, avar->time_nc_id,
+	            starts,
+	            counts,
+	            &cmor_axes[avar->axes_ids[0]].values[starts[0]] );
+
+	    if( ierr != NC_NOERR ) {
+
+		snprintf( msg, CMOR_MAX_STRING,
+			  "NCError (%i: %s) writting time values for variable '%s' (table: %s)",
+			  ierr, nc_strerror( ierr ), avar->id,
+			  cmor_tables[avar->ref_table_id].szTable_id );
+		cmor_handle_error( msg, CMOR_CRITICAL );
+
+	    }
+/* -------------------------------------------------------------------- */
+/*      ok now we need to store first and last stuff                    */
+/* -------------------------------------------------------------------- */
+
+	    avar->first_time = cmor_axes[avar->axes_ids[0]].values[0];
+	    avar->last_time = cmor_axes[avar->axes_ids[0]].
+	            values[starts[0] +  counts[0] - 1];
+	}
+    }
+
+    if( avar->isbounds ) {
+	counts[avar->ndims] = 2;
+	starts[avar->ndims] = 0;
+    }
+
+    if( mtype == 'd' )
+	ierr =  nc_put_vara_double( ncid, avar->nc_var_id, starts, counts,
+	        data_tmp );
+    else if( mtype == 'f' )
+	ierr =  nc_put_vara_float( ncid, avar->nc_var_id, starts, counts,
+	        fdata_tmp );
+    else if( mtype == 'l' )
+	ierr = nc_put_vara_long( ncid, avar->nc_var_id, starts, counts,
+	        ldata_tmp );
+    else if( mtype == 'i' )
+	ierr = nc_put_vara_int( ncid, avar->nc_var_id, starts, counts,
+	        idata_tmp );
+
+    if( ierr != NC_NOERR ) {
+	snprintf( msg, CMOR_MAX_STRING,
+		  "NetCDF Error (%i: %s), writing variable '%s' (table %s) to file",
+		  ierr, nc_strerror( ierr ), avar->id,
+		  cmor_tables[avar->ref_table_id].szTable_id );
+	cmor_handle_error( msg, CMOR_CRITICAL );
+    }
+
+    avar->ntimes_written += ntimes_passed;
+
+    if( mtype == 'd' )
+	free( data_tmp );
+    else if( mtype == 'f' )
+	free( fdata_tmp );
+    else if( mtype == 'l' )
+	free( ldata_tmp );
+    else if( mtype == 'i' )
+	free( idata_tmp );
+
+    cmor_pop_traceback(  );
+    return( 0 );
 }
diff --git a/Src/json-c/arraylist.c b/Src/json-c/arraylist.c
new file mode 100644
index 0000000..8efe006
--- /dev/null
+++ b/Src/json-c/arraylist.c
@@ -0,0 +1,108 @@
+/*
+ * $Id: arraylist.c,v 1.4 2006/01/26 02:16:28 mclark Exp $
+ *
+ * Copyright (c) 2004, 2005 Metaparadigm Pte. Ltd.
+ * Michael Clark <michael at metaparadigm.com>
+ *
+ * This library is free software; you can redistribute it and/or modify
+ * it under the terms of the MIT license. See COPYING for details.
+ *
+ */
+
+#include "config.h"
+
+#ifdef STDC_HEADERS
+# include <stdlib.h>
+# include <string.h>
+#endif /* STDC_HEADERS */
+
+#if defined(HAVE_STRINGS_H) && !defined(_STRING_H) && !defined(__USE_BSD)
+# include <strings.h>
+#endif /* HAVE_STRINGS_H */
+
+#include "arraylist.h"
+
+struct array_list*
+array_list_new(array_list_free_fn *free_fn)
+{
+  struct array_list *arr;
+
+  arr = (struct array_list*)calloc(1, sizeof(struct array_list));
+  if(!arr) return NULL;
+  arr->size = ARRAY_LIST_DEFAULT_SIZE;
+  arr->length = 0;
+  arr->free_fn = free_fn;
+  if(!(arr->array = (void**)calloc(sizeof(void*), arr->size))) {
+    free(arr);
+    return NULL;
+  }
+  return arr;
+}
+
+extern void
+array_list_free(struct array_list *arr)
+{
+  int i;
+  for(i = 0; i < arr->length; i++)
+    if(arr->array[i]) arr->free_fn(arr->array[i]);
+  free(arr->array);
+  free(arr);
+}
+
+void*
+array_list_get_idx(struct array_list *arr, int i)
+{
+  if(i >= arr->length) return NULL;
+  return arr->array[i];
+}
+
+static int array_list_expand_internal(struct array_list *arr, int max)
+{
+  void *t;
+  int new_size;
+
+  if(max < arr->size) return 0;
+  new_size = arr->size << 1;
+  if (new_size < max)
+    new_size = max;
+  if(!(t = realloc(arr->array, new_size*sizeof(void*)))) return -1;
+  arr->array = (void**)t;
+  (void)memset(arr->array + arr->size, 0, (new_size-arr->size)*sizeof(void*));
+  arr->size = new_size;
+  return 0;
+}
+
+int
+array_list_put_idx(struct array_list *arr, int idx, void *data)
+{
+  if(array_list_expand_internal(arr, idx+1)) return -1;
+  if(arr->array[idx]) arr->free_fn(arr->array[idx]);
+  arr->array[idx] = data;
+  if(arr->length <= idx) arr->length = idx + 1;
+  return 0;
+}
+
+int
+array_list_add(struct array_list *arr, void *data)
+{
+  return array_list_put_idx(arr, arr->length, data);
+}
+
+void
+array_list_sort(struct array_list *arr, int(*sort_fn)(const void *, const void *))
+{
+  qsort(arr->array, arr->length, sizeof(arr->array[0]), sort_fn);
+}
+
+void* array_list_bsearch(const void **key, struct array_list *arr,
+		int (*sort_fn)(const void *, const void *))
+{
+	return bsearch(key, arr->array, arr->length, sizeof(arr->array[0]),
+			sort_fn);
+}
+
+int
+array_list_length(struct array_list *arr)
+{
+  return arr->length;
+}
diff --git a/Src/json-c/debug.c b/Src/json-c/debug.c
new file mode 100644
index 0000000..4b5140a
--- /dev/null
+++ b/Src/json-c/debug.c
@@ -0,0 +1,83 @@
+/*
+ * $Id: debug.c,v 1.5 2006/01/26 02:16:28 mclark Exp $
+ *
+ * Copyright (c) 2004, 2005 Metaparadigm Pte. Ltd.
+ * Michael Clark <michael at metaparadigm.com>
+ *
+ * This library is free software; you can redistribute it and/or modify
+ * it under the terms of the MIT license. See COPYING for details.
+ *
+ */
+
+#include "config.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <stdarg.h>
+
+#if HAVE_SYSLOG_H
+# include <syslog.h>
+#endif /* HAVE_SYSLOG_H */
+
+#if HAVE_UNISTD_H
+# include <unistd.h>
+#endif /* HAVE_UNISTD_H */
+
+#if HAVE_SYS_PARAM_H
+#include <sys/param.h>
+#endif /* HAVE_SYS_PARAM_H */
+
+#include "debug.h"
+
+static int _syslog = 0;
+static int _debug = 0;
+
+void mc_set_debug(int debug) { _debug = debug; }
+int mc_get_debug(void) { return _debug; }
+
+extern void mc_set_syslog(int syslog)
+{
+  _syslog = syslog;
+}
+
+void mc_debug(const char *msg, ...)
+{
+  va_list ap;
+  if(_debug) {
+    va_start(ap, msg);
+#if HAVE_VSYSLOG
+    if(_syslog) {
+		vsyslog(LOG_DEBUG, msg, ap);
+	} else
+#endif
+		vprintf(msg, ap);
+    va_end(ap);
+  }
+}
+
+void mc_error(const char *msg, ...)
+{
+  va_list ap;
+  va_start(ap, msg);
+#if HAVE_VSYSLOG
+    if(_syslog) {
+		vsyslog(LOG_ERR, msg, ap);
+	} else
+#endif
+		vfprintf(stderr, msg, ap);
+  va_end(ap);
+}
+
+void mc_info(const char *msg, ...)
+{
+  va_list ap;
+  va_start(ap, msg);
+#if HAVE_VSYSLOG
+    if(_syslog) {
+		vsyslog(LOG_INFO, msg, ap);
+	} else
+#endif
+		vfprintf(stderr, msg, ap);
+  va_end(ap);
+}
diff --git a/Src/json-c/json_c_version.c b/Src/json-c/json_c_version.c
new file mode 100644
index 0000000..13eb188
--- /dev/null
+++ b/Src/json-c/json_c_version.c
@@ -0,0 +1,20 @@
+/*
+ * Copyright (c) 2012 Eric Haszlakiewicz
+ *
+ * This library is free software; you can redistribute it and/or modify
+ * it under the terms of the MIT license. See COPYING for details.
+ */
+#include "config.h"
+
+#include "json_c_version.h"
+
+const char *json_c_version(void)
+{
+	return JSON_C_VERSION;
+}
+
+int json_c_version_num(void)
+{
+	return JSON_C_VERSION_NUM;
+}
+
diff --git a/Src/json-c/json_object.c b/Src/json-c/json_object.c
new file mode 100644
index 0000000..e611103
--- /dev/null
+++ b/Src/json-c/json_object.c
@@ -0,0 +1,994 @@
+/*
+ * $Id: json_object.c,v 1.17 2006/07/25 03:24:50 mclark Exp $
+ *
+ * Copyright (c) 2004, 2005 Metaparadigm Pte. Ltd.
+ * Michael Clark <michael at metaparadigm.com>
+ * Copyright (c) 2009 Hewlett-Packard Development Company, L.P.
+ *
+ * This library is free software; you can redistribute it and/or modify
+ * it under the terms of the MIT license. See COPYING for details.
+ *
+ */
+
+#include "config.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <stddef.h>
+#include <string.h>
+#include <math.h>
+#include <errno.h>
+
+#include "debug.h"
+#include "printbuf.h"
+#include "linkhash.h"
+#include "arraylist.h"
+#include "json_inttypes.h"
+#include "json_object.h"
+#include "json_object_private.h"
+#include "json_util.h"
+#include "math_compat.h"
+
+#if !defined(HAVE_STRDUP) && defined(_MSC_VER)
+  /* MSC has the version as _strdup */
+# define strdup _strdup
+#elif !defined(HAVE_STRDUP)
+# error You do not have strdup on your system.
+#endif /* HAVE_STRDUP */
+
+#if !defined(HAVE_SNPRINTF) && defined(_MSC_VER)
+  /* MSC has the version as _snprintf */
+# define snprintf _snprintf
+#elif !defined(HAVE_SNPRINTF)
+# error You do not have snprintf on your system.
+#endif /* HAVE_SNPRINTF */
+
+// Don't define this.  It's not thread-safe.
+/* #define REFCOUNT_DEBUG 1 */
+
+const char *json_number_chars = "0123456789.+-eE";
+const char *json_hex_chars = "0123456789abcdefABCDEF";
+
+static void json_object_generic_delete(struct json_object* jso);
+static struct json_object* json_object_new(enum json_type o_type);
+
+static json_object_to_json_string_fn json_object_object_to_json_string;
+static json_object_to_json_string_fn json_object_boolean_to_json_string;
+static json_object_to_json_string_fn json_object_int_to_json_string;
+static json_object_to_json_string_fn json_object_double_to_json_string;
+static json_object_to_json_string_fn json_object_string_to_json_string;
+static json_object_to_json_string_fn json_object_array_to_json_string;
+
+
+/* ref count debugging */
+
+#ifdef REFCOUNT_DEBUG
+
+static struct lh_table *json_object_table;
+
+static void json_object_init(void) __attribute__ ((constructor));
+static void json_object_init(void) {
+	MC_DEBUG("json_object_init: creating object table\n");
+	json_object_table = lh_kptr_table_new(128, NULL);
+}
+
+static void json_object_fini(void) __attribute__ ((destructor));
+static void json_object_fini(void)
+{
+	struct lh_entry *ent;
+	if (MC_GET_DEBUG())
+	{
+		if (json_object_table->count)
+		{
+			MC_DEBUG("json_object_fini: %d referenced objects at exit\n",
+			   json_object_table->count);
+			lh_foreach(json_object_table, ent)
+			{
+				struct json_object* obj = (struct json_object*)ent->v;
+				MC_DEBUG("\t%s:%p\n", json_type_to_name(obj->o_type), obj);
+			}
+		}
+	}
+	MC_DEBUG("json_object_fini: freeing object table\n");
+	lh_table_free(json_object_table);
+}
+#endif /* REFCOUNT_DEBUG */
+
+
+/* helper for accessing the optimized string data component in json_object
+ */
+static const char *
+get_string_component(const struct json_object *jso)
+{
+	return (jso->o.c_string.len < LEN_DIRECT_STRING_DATA) ?
+		   jso->o.c_string.str.data : jso->o.c_string.str.ptr;
+}
+
+/* string escaping */
+
+static int json_escape_str(struct printbuf *pb, const char *str, int len, int flags)
+{
+	int pos = 0, start_offset = 0;
+	unsigned char c;
+	while (len--)
+	{
+		c = str[pos];
+		switch(c)
+		{
+		case '\b':
+		case '\n':
+		case '\r':
+		case '\t':
+		case '\f':
+		case '"':
+		case '\\':
+		case '/':
+			if(pos - start_offset > 0)
+				printbuf_memappend(pb, str + start_offset, pos - start_offset);
+
+			if(c == '\b') printbuf_memappend(pb, "\\b", 2);
+			else if(c == '\n') printbuf_memappend(pb, "\\n", 2);
+			else if(c == '\r') printbuf_memappend(pb, "\\r", 2);
+			else if(c == '\t') printbuf_memappend(pb, "\\t", 2);
+			else if(c == '\f') printbuf_memappend(pb, "\\f", 2);
+			else if(c == '"') printbuf_memappend(pb, "\\\"", 2);
+			else if(c == '\\') printbuf_memappend(pb, "\\\\", 2);
+			else if(c == '/' &&
+			        (flags & JSON_C_TO_STRING_NOSLASHESCAPE))
+			{
+				pos++;
+				break;
+			}
+			else if(c == '/') printbuf_memappend(pb, "\\/", 2);
+
+			start_offset = ++pos;
+			break;
+		default:
+			if(c < ' ')
+			{
+				if(pos - start_offset > 0)
+				printbuf_memappend(pb, str + start_offset, pos - start_offset);
+				sprintbuf(pb, "\\u00%c%c",
+				json_hex_chars[c >> 4],
+				json_hex_chars[c & 0xf]);
+				start_offset = ++pos;
+			} else
+				pos++;
+		}
+	}
+	if (pos - start_offset > 0)
+		printbuf_memappend(pb, str + start_offset, pos - start_offset);
+	return 0;
+}
+
+
+/* reference counting */
+
+extern struct json_object* json_object_get(struct json_object *jso)
+{
+	if (jso)
+		jso->_ref_count++;
+	return jso;
+}
+
+int json_object_put(struct json_object *jso)
+{
+	if(jso)
+	{
+		jso->_ref_count--;
+		if(!jso->_ref_count)
+		{
+			if (jso->_user_delete)
+				jso->_user_delete(jso, jso->_userdata);
+			jso->_delete(jso);
+			return 1;
+		}
+	}
+	return 0;
+}
+
+
+/* generic object construction and destruction parts */
+
+static void json_object_generic_delete(struct json_object* jso)
+{
+#ifdef REFCOUNT_DEBUG
+	MC_DEBUG("json_object_delete_%s: %p\n",
+	   json_type_to_name(jso->o_type), jso);
+	lh_table_delete(json_object_table, jso);
+#endif /* REFCOUNT_DEBUG */
+	printbuf_free(jso->_pb);
+	free(jso);
+}
+
+static struct json_object* json_object_new(enum json_type o_type)
+{
+	struct json_object *jso;
+
+	jso = (struct json_object*)calloc(sizeof(struct json_object), 1);
+	if (!jso)
+		return NULL;
+	jso->o_type = o_type;
+	jso->_ref_count = 1;
+	jso->_delete = &json_object_generic_delete;
+#ifdef REFCOUNT_DEBUG
+	lh_table_insert(json_object_table, jso, jso);
+	MC_DEBUG("json_object_new_%s: %p\n", json_type_to_name(jso->o_type), jso);
+#endif /* REFCOUNT_DEBUG */
+	return jso;
+}
+
+
+/* type checking functions */
+
+int json_object_is_type(const struct json_object *jso, enum json_type type)
+{
+	if (!jso)
+		return (type == json_type_null);
+	return (jso->o_type == type);
+}
+
+enum json_type json_object_get_type(const struct json_object *jso)
+{
+	if (!jso)
+		return json_type_null;
+	return jso->o_type;
+}
+
+/* set a custom conversion to string */
+
+void json_object_set_serializer(json_object *jso,
+	json_object_to_json_string_fn to_string_func,
+	void *userdata,
+	json_object_delete_fn *user_delete)
+{
+	// First, clean up any previously existing user info
+	if (jso->_user_delete)
+	{
+		jso->_user_delete(jso, jso->_userdata);
+	}
+	jso->_userdata = NULL;
+	jso->_user_delete = NULL;
+
+	if (to_string_func == NULL)
+	{
+		// Reset to the standard serialization function
+		switch(jso->o_type)
+		{
+		case json_type_null:
+			jso->_to_json_string = NULL;
+			break;
+		case json_type_boolean:
+			jso->_to_json_string = &json_object_boolean_to_json_string;
+			break;
+		case json_type_double:
+			jso->_to_json_string = &json_object_double_to_json_string;
+			break;
+		case json_type_int:
+			jso->_to_json_string = &json_object_int_to_json_string;
+			break;
+		case json_type_object:
+			jso->_to_json_string = &json_object_object_to_json_string;
+			break;
+		case json_type_array:
+			jso->_to_json_string = &json_object_array_to_json_string;
+			break;
+		case json_type_string:
+			jso->_to_json_string = &json_object_string_to_json_string;
+			break;
+		}
+		return;
+	}
+
+	jso->_to_json_string = to_string_func;
+	jso->_userdata = userdata;
+	jso->_user_delete = user_delete;
+}
+
+
+/* extended conversion to string */
+
+const char* json_object_to_json_string_ext(struct json_object *jso, int flags)
+{
+	if (!jso)
+		return "null";
+
+	if ((!jso->_pb) && !(jso->_pb = printbuf_new()))
+		return NULL;
+
+	printbuf_reset(jso->_pb);
+
+	if(jso->_to_json_string(jso, jso->_pb, 0, flags) < 0)
+		return NULL;
+
+	return jso->_pb->buf;
+}
+
+/* backwards-compatible conversion to string */
+
+const char* json_object_to_json_string(struct json_object *jso)
+{
+	return json_object_to_json_string_ext(jso, JSON_C_TO_STRING_SPACED);
+}
+
+static void indent(struct printbuf *pb, int level, int flags)
+{
+	if (flags & JSON_C_TO_STRING_PRETTY)
+	{
+		if (flags & JSON_C_TO_STRING_PRETTY_TAB)
+		{
+			printbuf_memset(pb, -1, '\t', level);
+		}
+		else
+		{
+			printbuf_memset(pb, -1, ' ', level * 2);
+		}
+	}
+}
+
+/* json_object_object */
+
+static int json_object_object_to_json_string(struct json_object* jso,
+					     struct printbuf *pb,
+					     int level,
+						 int flags)
+{
+	int had_children = 0;
+	struct json_object_iter iter;
+
+	sprintbuf(pb, "{" /*}*/);
+	if (flags & JSON_C_TO_STRING_PRETTY)
+		sprintbuf(pb, "\n");
+	json_object_object_foreachC(jso, iter)
+	{
+		if (had_children)
+		{
+			sprintbuf(pb, ",");
+			if (flags & JSON_C_TO_STRING_PRETTY)
+				sprintbuf(pb, "\n");
+		}
+		had_children = 1;
+		if (flags & JSON_C_TO_STRING_SPACED)
+			sprintbuf(pb, " ");
+		indent(pb, level+1, flags);
+		sprintbuf(pb, "\"");
+		json_escape_str(pb, iter.key, strlen(iter.key), flags);
+		if (flags & JSON_C_TO_STRING_SPACED)
+			sprintbuf(pb, "\": ");
+		else
+			sprintbuf(pb, "\":");
+		if(iter.val == NULL)
+			sprintbuf(pb, "null");
+		else
+			iter.val->_to_json_string(iter.val, pb, level+1,flags);
+	}
+	if (flags & JSON_C_TO_STRING_PRETTY)
+	{
+		if (had_children)
+			sprintbuf(pb, "\n");
+		indent(pb,level,flags);
+	}
+	if (flags & JSON_C_TO_STRING_SPACED)
+		return sprintbuf(pb, /*{*/ " }");
+	else
+		return sprintbuf(pb, /*{*/ "}");
+}
+
+
+static void json_object_lh_entry_free(struct lh_entry *ent)
+{
+	if (!ent->k_is_constant)
+		free(ent->k);
+	json_object_put((struct json_object*)ent->v);
+}
+
+static void json_object_object_delete(struct json_object* jso)
+{
+	lh_table_free(jso->o.c_object);
+	json_object_generic_delete(jso);
+}
+
+struct json_object* json_object_new_object(void)
+{
+	struct json_object *jso = json_object_new(json_type_object);
+	if (!jso)
+		return NULL;
+	jso->_delete = &json_object_object_delete;
+	jso->_to_json_string = &json_object_object_to_json_string;
+	jso->o.c_object = lh_kchar_table_new(JSON_OBJECT_DEF_HASH_ENTRIES,
+					&json_object_lh_entry_free);
+	if (!jso->o.c_object)
+	{
+		json_object_generic_delete(jso);
+		errno = ENOMEM;
+		return NULL;
+	}
+	return jso;
+}
+
+struct lh_table* json_object_get_object(const struct json_object *jso)
+{
+	if (!jso)
+		return NULL;
+	switch(jso->o_type)
+	{
+	case json_type_object:
+		return jso->o.c_object;
+	default:
+		return NULL;
+	}
+}
+
+void json_object_object_add_ex(struct json_object* jso,
+	const char *const key,
+	struct json_object *const val,
+	const unsigned opts)
+{
+	// We lookup the entry and replace the value, rather than just deleting
+	// and re-adding it, so the existing key remains valid.
+	json_object *existing_value = NULL;
+	struct lh_entry *existing_entry;
+	const unsigned long hash = lh_get_hash(jso->o.c_object, (void*)key);
+	existing_entry = (opts & JSON_C_OBJECT_ADD_KEY_IS_NEW) ? NULL : 
+			      lh_table_lookup_entry_w_hash(jso->o.c_object, (void*)key, hash);
+	if (!existing_entry)
+	{
+		void *const k = (opts & JSON_C_OBJECT_KEY_IS_CONSTANT) ?
+					(void*)key : strdup(key);
+		lh_table_insert_w_hash(jso->o.c_object, k, val, hash, opts);
+		return;
+	}
+	existing_value = (json_object *)existing_entry->v;
+	if (existing_value)
+		json_object_put(existing_value);
+	existing_entry->v = val;
+}
+
+int json_object_object_add(struct json_object* jso, const char *key,
+			    struct json_object *val)
+{
+	// We lookup the entry and replace the value, rather than just deleting
+	// and re-adding it, so the existing key remains valid.
+	json_object *existing_value = NULL;
+	struct lh_entry *existing_entry;
+	const unsigned long hash = lh_get_hash(jso->o.c_object, (void*)key);
+	existing_entry = lh_table_lookup_entry_w_hash(jso->o.c_object, (void*)key, hash);
+	if (!existing_entry)
+	{
+		char *keydup = strdup(key);
+		if (keydup == NULL)
+			return -1;
+
+		return lh_table_insert_w_hash(jso->o.c_object, keydup, val, hash, 0);
+	}
+	existing_value = (json_object  *)existing_entry->v;
+	if (existing_value)
+		json_object_put(existing_value);
+	existing_entry->v = val;
+
+	return 0;
+}
+
+
+int json_object_object_length(const struct json_object *jso)
+{
+	return lh_table_length(jso->o.c_object);
+}
+
+struct json_object* json_object_object_get(const struct json_object* jso, const char *key)
+{
+	struct json_object *result = NULL;
+	json_object_object_get_ex(jso, key, &result);
+	return result;
+}
+
+json_bool json_object_object_get_ex(const struct json_object* jso, const char *key, struct json_object **value)
+{
+	if (value != NULL)
+		*value = NULL;
+
+	if (NULL == jso)
+		return FALSE;
+
+	switch(jso->o_type)
+	{
+	case json_type_object:
+		return lh_table_lookup_ex(jso->o.c_object, (void*)key, (void**)value);
+	default:
+		if (value != NULL)
+			*value = NULL;
+		return FALSE;
+	}
+}
+
+void json_object_object_del(struct json_object* jso, const char *key)
+{
+	lh_table_delete(jso->o.c_object, key);
+}
+
+
+/* json_object_boolean */
+
+static int json_object_boolean_to_json_string(struct json_object* jso,
+					      struct printbuf *pb,
+					      int level,
+						  int flags)
+{
+	if (jso->o.c_boolean)
+		return sprintbuf(pb, "true");
+	else
+		return sprintbuf(pb, "false");
+}
+
+struct json_object* json_object_new_boolean(json_bool b)
+{
+	struct json_object *jso = json_object_new(json_type_boolean);
+	if (!jso)
+		return NULL;
+	jso->_to_json_string = &json_object_boolean_to_json_string;
+	jso->o.c_boolean = b;
+	return jso;
+}
+
+json_bool json_object_get_boolean(const struct json_object *jso)
+{
+	if (!jso)
+		return FALSE;
+	switch(jso->o_type)
+	{
+	case json_type_boolean:
+		return jso->o.c_boolean;
+	case json_type_int:
+		return (jso->o.c_int64 != 0);
+	case json_type_double:
+		return (jso->o.c_double != 0);
+	case json_type_string:
+		return (jso->o.c_string.len != 0);
+	default:
+		return FALSE;
+	}
+}
+
+
+/* json_object_int */
+
+static int json_object_int_to_json_string(struct json_object* jso,
+					  struct printbuf *pb,
+					  int level,
+					  int flags)
+{
+	return sprintbuf(pb, "%" PRId64, jso->o.c_int64);
+}
+
+struct json_object* json_object_new_int(int32_t i)
+{
+	struct json_object *jso = json_object_new(json_type_int);
+	if (!jso)
+		return NULL;
+	jso->_to_json_string = &json_object_int_to_json_string;
+	jso->o.c_int64 = i;
+	return jso;
+}
+
+int32_t json_object_get_int(const struct json_object *jso)
+{
+  int64_t cint64;
+  enum json_type o_type;
+
+  if(!jso) return 0;
+
+  o_type = jso->o_type;
+  cint64 = jso->o.c_int64;
+
+  if (o_type == json_type_string)
+  {
+	/*
+	 * Parse strings into 64-bit numbers, then use the
+	 * 64-to-32-bit number handling below.
+	 */
+	if (json_parse_int64(get_string_component(jso), &cint64) != 0)
+		return 0; /* whoops, it didn't work. */
+	o_type = json_type_int;
+  }
+
+  switch(o_type) {
+  case json_type_int:
+	/* Make sure we return the correct values for out of range numbers. */
+	if (cint64 <= INT32_MIN)
+		return INT32_MIN;
+	else if (cint64 >= INT32_MAX)
+		return INT32_MAX;
+	else
+		return (int32_t)cint64;
+  case json_type_double:
+    return (int32_t)jso->o.c_double;
+  case json_type_boolean:
+    return jso->o.c_boolean;
+  default:
+    return 0;
+  }
+}
+
+struct json_object* json_object_new_int64(int64_t i)
+{
+	struct json_object *jso = json_object_new(json_type_int);
+	if (!jso)
+		return NULL;
+	jso->_to_json_string = &json_object_int_to_json_string;
+	jso->o.c_int64 = i;
+	return jso;
+}
+
+int64_t json_object_get_int64(const struct json_object *jso)
+{
+	int64_t cint;
+
+	if (!jso)
+		return 0;
+	switch(jso->o_type)
+	{
+	case json_type_int:
+		return jso->o.c_int64;
+	case json_type_double:
+		return (int64_t)jso->o.c_double;
+	case json_type_boolean:
+		return jso->o.c_boolean;
+	case json_type_string:
+		if (json_parse_int64(get_string_component(jso), &cint) == 0)
+			return cint;
+	default:
+		return 0;
+	}
+}
+
+
+/* json_object_double */
+
+static int json_object_double_to_json_string(struct json_object* jso,
+					     struct printbuf *pb,
+					     int level,
+						 int flags)
+{
+  char buf[128], *p, *q;
+  int size;
+  /* Although JSON RFC does not support
+     NaN or Infinity as numeric values
+     ECMA 262 section 9.8.1 defines
+     how to handle these cases as strings */
+  if(isnan(jso->o.c_double))
+    size = snprintf(buf, sizeof(buf), "NaN");
+  else if(isinf(jso->o.c_double))
+    if(jso->o.c_double > 0)
+      size = snprintf(buf, sizeof(buf), "Infinity");
+    else
+      size = snprintf(buf, sizeof(buf), "-Infinity");
+  else
+    size = snprintf(buf, sizeof(buf), "%.17g", jso->o.c_double);
+
+  p = strchr(buf, ',');
+  if (p) {
+    *p = '.';
+  } else {
+    p = strchr(buf, '.');
+  }
+  if (p && (flags & JSON_C_TO_STRING_NOZERO)) {
+    /* last useful digit, always keep 1 zero */
+    p++;
+    for (q=p ; *q ; q++) {
+      if (*q!='0') p=q;
+    }
+    /* drop trailing zeroes */
+    *(++p) = 0;
+    size = p-buf;
+  }
+  printbuf_memappend(pb, buf, size);
+  return size;
+}
+
+struct json_object* json_object_new_double(double d)
+{
+	struct json_object *jso = json_object_new(json_type_double);
+	if (!jso)
+		return NULL;
+	jso->_to_json_string = &json_object_double_to_json_string;
+	jso->o.c_double = d;
+	return jso;
+}
+
+struct json_object* json_object_new_double_s(double d, const char *ds)
+{
+	struct json_object *jso = json_object_new_double(d);
+	if (!jso)
+		return NULL;
+
+	char *new_ds = strdup(ds);
+	if (!new_ds)
+	{
+		json_object_generic_delete(jso);
+		errno = ENOMEM;
+		return NULL;
+	}
+	json_object_set_serializer(jso, json_object_userdata_to_json_string,
+	    new_ds, json_object_free_userdata);
+	return jso;
+}
+
+int json_object_userdata_to_json_string(struct json_object *jso,
+	struct printbuf *pb, int level, int flags)
+{
+	int userdata_len = strlen((const char *)jso->_userdata);
+	printbuf_memappend(pb, (const char *)jso->_userdata, userdata_len);
+	return userdata_len;
+}
+
+void json_object_free_userdata(struct json_object *jso, void *userdata)
+{
+	free(userdata);
+}
+
+double json_object_get_double(const struct json_object *jso)
+{
+  double cdouble;
+  char *errPtr = NULL;
+
+  if(!jso) return 0.0;
+  switch(jso->o_type) {
+  case json_type_double:
+    return jso->o.c_double;
+  case json_type_int:
+    return jso->o.c_int64;
+  case json_type_boolean:
+    return jso->o.c_boolean;
+  case json_type_string:
+    errno = 0;
+    cdouble = strtod(get_string_component(jso), &errPtr);
+
+    /* if conversion stopped at the first character, return 0.0 */
+    if (errPtr == get_string_component(jso))
+        return 0.0;
+
+    /*
+     * Check that the conversion terminated on something sensible
+     *
+     * For example, { "pay" : 123AB } would parse as 123.
+     */
+    if (*errPtr != '\0')
+        return 0.0;
+
+    /*
+     * If strtod encounters a string which would exceed the
+     * capacity of a double, it returns +/- HUGE_VAL and sets
+     * errno to ERANGE. But +/- HUGE_VAL is also a valid result
+     * from a conversion, so we need to check errno.
+     *
+     * Underflow also sets errno to ERANGE, but it returns 0 in
+     * that case, which is what we will return anyway.
+     *
+     * See CERT guideline ERR30-C
+     */
+    if ((HUGE_VAL == cdouble || -HUGE_VAL == cdouble) &&
+        (ERANGE == errno))
+            cdouble = 0.0;
+    return cdouble;
+  default:
+    return 0.0;
+  }
+}
+
+
+/* json_object_string */
+
+static int json_object_string_to_json_string(struct json_object* jso,
+					     struct printbuf *pb,
+					     int level,
+						 int flags)
+{
+	sprintbuf(pb, "\"");
+	json_escape_str(pb, get_string_component(jso), jso->o.c_string.len, flags);
+	sprintbuf(pb, "\"");
+	return 0;
+}
+
+static void json_object_string_delete(struct json_object* jso)
+{
+	if(jso->o.c_string.len >= LEN_DIRECT_STRING_DATA)
+		free(jso->o.c_string.str.ptr);
+	json_object_generic_delete(jso);
+}
+
+struct json_object* json_object_new_string(const char *s)
+{
+	struct json_object *jso = json_object_new(json_type_string);
+	if (!jso)
+		return NULL;
+	jso->_delete = &json_object_string_delete;
+	jso->_to_json_string = &json_object_string_to_json_string;
+	jso->o.c_string.len = strlen(s);
+	if(jso->o.c_string.len < LEN_DIRECT_STRING_DATA) {
+		memcpy(jso->o.c_string.str.data, s, jso->o.c_string.len);
+	} else {
+		jso->o.c_string.str.ptr = strdup(s);
+		if (!jso->o.c_string.str.ptr)
+		{
+			json_object_generic_delete(jso);
+			errno = ENOMEM;
+			return NULL;
+		}
+	}
+	return jso;
+}
+
+struct json_object* json_object_new_string_len(const char *s, int len)
+{
+	char *dstbuf;
+	struct json_object *jso = json_object_new(json_type_string);
+	if (!jso)
+		return NULL;
+	jso->_delete = &json_object_string_delete;
+	jso->_to_json_string = &json_object_string_to_json_string;
+	if(len < LEN_DIRECT_STRING_DATA) {
+		dstbuf = jso->o.c_string.str.data;
+	} else {
+		jso->o.c_string.str.ptr = (char*)malloc(len + 1);
+		if (!jso->o.c_string.str.ptr)
+		{
+			json_object_generic_delete(jso);
+			errno = ENOMEM;
+			return NULL;
+		}
+		dstbuf = jso->o.c_string.str.ptr;
+	}
+	memcpy(dstbuf, (void *)s, len);
+	dstbuf[len] = '\0';
+	jso->o.c_string.len = len;
+	return jso;
+}
+
+const char* json_object_get_string(struct json_object *jso)
+{
+	if (!jso)
+		return NULL;
+	switch(jso->o_type)
+	{
+	case json_type_string:
+		return get_string_component(jso);
+	default:
+		return json_object_to_json_string(jso);
+	}
+}
+
+int json_object_get_string_len(const struct json_object *jso)
+{
+	if (!jso)
+		return 0;
+	switch(jso->o_type)
+	{
+	case json_type_string:
+		return jso->o.c_string.len;
+	default:
+		return 0;
+	}
+}
+
+
+/* json_object_array */
+
+static int json_object_array_to_json_string(struct json_object* jso,
+                                            struct printbuf *pb,
+                                            int level,
+                                            int flags)
+{
+	int had_children = 0;
+	int ii;
+	sprintbuf(pb, "[");
+	if (flags & JSON_C_TO_STRING_PRETTY)
+		sprintbuf(pb, "\n");
+	for(ii=0; ii < json_object_array_length(jso); ii++)
+	{
+		struct json_object *val;
+		if (had_children)
+		{
+			sprintbuf(pb, ",");
+			if (flags & JSON_C_TO_STRING_PRETTY)
+				sprintbuf(pb, "\n");
+		}
+		had_children = 1;
+		if (flags & JSON_C_TO_STRING_SPACED)
+			sprintbuf(pb, " ");
+		indent(pb, level + 1, flags);
+		val = json_object_array_get_idx(jso, ii);
+		if(val == NULL)
+			sprintbuf(pb, "null");
+		else
+			val->_to_json_string(val, pb, level+1, flags);
+	}
+	if (flags & JSON_C_TO_STRING_PRETTY)
+	{
+		if (had_children)
+			sprintbuf(pb, "\n");
+		indent(pb,level,flags);
+	}
+
+	if (flags & JSON_C_TO_STRING_SPACED)
+		return sprintbuf(pb, " ]");
+	else
+		return sprintbuf(pb, "]");
+}
+
+static void json_object_array_entry_free(void *data)
+{
+	json_object_put((struct json_object*)data);
+}
+
+static void json_object_array_delete(struct json_object* jso)
+{
+	array_list_free(jso->o.c_array);
+	json_object_generic_delete(jso);
+}
+
+struct json_object* json_object_new_array(void)
+{
+	struct json_object *jso = json_object_new(json_type_array);
+	if (!jso)
+		return NULL;
+	jso->_delete = &json_object_array_delete;
+	jso->_to_json_string = &json_object_array_to_json_string;
+	jso->o.c_array = array_list_new(&json_object_array_entry_free);
+	return jso;
+}
+
+struct array_list* json_object_get_array(const struct json_object *jso)
+{
+	if (!jso)
+		return NULL;
+	switch(jso->o_type)
+	{
+	case json_type_array:
+		return jso->o.c_array;
+	default:
+		return NULL;
+	}
+}
+
+void json_object_array_sort(struct json_object *jso, int(*sort_fn)(const void *, const void *))
+{
+	array_list_sort(jso->o.c_array, sort_fn);
+}
+
+struct json_object* json_object_array_bsearch(
+		const struct json_object *key,
+		const struct json_object *jso,
+		int (*sort_fn)(const void *, const void *))
+{
+	struct json_object **result;
+
+	result = (struct json_object **)array_list_bsearch(
+			(const void **)&key, jso->o.c_array, sort_fn);
+
+	if (!result)
+		return NULL;
+	return *result;
+}
+
+int json_object_array_length(const struct json_object *jso)
+{
+	return array_list_length(jso->o.c_array);
+}
+
+int json_object_array_add(struct json_object *jso,struct json_object *val)
+{
+	return array_list_add(jso->o.c_array, val);
+}
+
+int json_object_array_put_idx(struct json_object *jso, int idx,
+			      struct json_object *val)
+{
+	return array_list_put_idx(jso->o.c_array, idx, val);
+}
+
+struct json_object* json_object_array_get_idx(const struct json_object *jso,
+					      int idx)
+{
+	return (struct json_object*)array_list_get_idx(jso->o.c_array, idx);
+}
+
diff --git a/Src/json-c/json_object_iterator.c b/Src/json-c/json_object_iterator.c
new file mode 100644
index 0000000..7066649
--- /dev/null
+++ b/Src/json-c/json_object_iterator.c
@@ -0,0 +1,168 @@
+/**
+*******************************************************************************
+* @file json_object_iterator.c
+*
+* Copyright (c) 2009-2012 Hewlett-Packard Development Company, L.P.
+*
+* This library is free software; you can redistribute it and/or modify
+* it under the terms of the MIT license. See COPYING for details.
+*
+* @brief  json-c forces clients to use its private data
+*         structures for JSON Object iteration.  This API
+*         implementation corrects that by abstracting the
+*         private json-c details.
+*
+*******************************************************************************
+*/
+
+#include <stddef.h>
+
+#include "json.h"
+#include "json_object_private.h"
+
+#include "json_object_iterator.h"
+
+/**
+ * How It Works
+ *
+ * For each JSON Object, json-c maintains a linked list of zero
+ * or more lh_entry (link-hash entry) structures inside the
+ * Object's link-hash table (lh_table).
+ *
+ * Each lh_entry structure on the JSON Object's linked list
+ * represents a single name/value pair.  The "next" field of the
+ * last lh_entry in the list is set to NULL, which terminates
+ * the list.
+ *
+ * We represent a valid iterator that refers to an actual
+ * name/value pair via a pointer to the pair's lh_entry
+ * structure set as the iterator's opaque_ field.
+ *
+ * We follow json-c's current pair list representation by
+ * representing a valid "end" iterator (one that refers past the
+ * last pair) with a NULL value in the iterator's opaque_ field.
+ *
+ * A JSON Object without any pairs in it will have the "head"
+ * field of its lh_table structure set to NULL.  For such an
+ * object, json_object_iter_begin will return an iterator with
+ * the opaque_ field set to NULL, which is equivalent to the
+ * "end" iterator.
+ *
+ * When iterating, we simply update the iterator's opaque_ field
+ * to point to the next lh_entry structure in the linked list.
+ * opaque_ will become NULL once we iterate past the last pair
+ * in the list, which makes the iterator equivalent to the "end"
+ * iterator.
+ */
+
+/// Our current representation of the "end" iterator;
+///
+/// @note May not always be NULL
+static const void* kObjectEndIterValue = NULL;
+
+/**
+ * ****************************************************************************
+ */
+struct json_object_iterator
+json_object_iter_begin(struct json_object* obj)
+{
+    struct json_object_iterator iter;
+    struct lh_table* pTable;
+
+    /// @note json_object_get_object will return NULL if passed NULL
+    ///       or a non-json_type_object instance
+    pTable = json_object_get_object(obj);
+    JASSERT(NULL != pTable);
+
+    /// @note For a pair-less Object, head is NULL, which matches our
+    ///       definition of the "end" iterator
+    iter.opaque_ = pTable->head;
+    return iter;
+}
+
+/**
+ * ****************************************************************************
+ */
+struct json_object_iterator
+json_object_iter_end(const struct json_object* obj)
+{
+    struct json_object_iterator iter;
+
+    JASSERT(NULL != obj);
+    JASSERT(json_object_is_type(obj, json_type_object));
+
+    iter.opaque_ = kObjectEndIterValue;
+
+    return iter;
+}
+
+/**
+ * ****************************************************************************
+ */
+void
+json_object_iter_next(struct json_object_iterator* iter)
+{
+    JASSERT(NULL != iter);
+    JASSERT(kObjectEndIterValue != iter->opaque_);
+
+    iter->opaque_ = ((struct lh_entry *)iter->opaque_)->next;
+}
+
+
+/**
+ * ****************************************************************************
+ */
+const char*
+json_object_iter_peek_name(const struct json_object_iterator* iter)
+{
+    JASSERT(NULL != iter);
+    JASSERT(kObjectEndIterValue != iter->opaque_);
+
+    return (const char*)(((struct lh_entry *)iter->opaque_)->k);
+}
+
+
+/**
+ * ****************************************************************************
+ */
+struct json_object*
+json_object_iter_peek_value(const struct json_object_iterator* iter)
+{
+    JASSERT(NULL != iter);
+    JASSERT(kObjectEndIterValue != iter->opaque_);
+
+    return (struct json_object*)(((struct lh_entry *)iter->opaque_)->v);
+}
+
+
+/**
+ * ****************************************************************************
+ */
+json_bool
+json_object_iter_equal(const struct json_object_iterator* iter1,
+                       const struct json_object_iterator* iter2)
+{
+    JASSERT(NULL != iter1);
+    JASSERT(NULL != iter2);
+
+    return (iter1->opaque_ == iter2->opaque_);
+}
+
+
+/**
+ * ****************************************************************************
+ */
+struct json_object_iterator
+json_object_iter_init_default(void)
+{
+    struct json_object_iterator iter;
+
+    /**
+     * @note Make this a negative, invalid value, such that
+     *       accidental access to it would likely be trapped by the
+     *       hardware as an invalid address.
+     */
+    iter.opaque_ = NULL;
+
+    return iter;
+}
diff --git a/Src/json-c/json_tokener.c b/Src/json-c/json_tokener.c
new file mode 100644
index 0000000..752a7b3
--- /dev/null
+++ b/Src/json-c/json_tokener.c
@@ -0,0 +1,926 @@
+/*
+ * $Id: json_tokener.c,v 1.20 2006/07/25 03:24:50 mclark Exp $
+ *
+ * Copyright (c) 2004, 2005 Metaparadigm Pte. Ltd.
+ * Michael Clark <michael at metaparadigm.com>
+ *
+ * This library is free software; you can redistribute it and/or modify
+ * it under the terms of the MIT license. See COPYING for details.
+ *
+ *
+ * Copyright (c) 2008-2009 Yahoo! Inc.  All rights reserved.
+ * The copyrights to the contents of this file are licensed under the MIT License
+ * (http://www.opensource.org/licenses/mit-license.php)
+ */
+
+#include "config.h"
+
+#include <math.h>
+#include "math_compat.h"
+#include <stdio.h>
+#include <stdlib.h>
+#include <stddef.h>
+#include <ctype.h>
+#include <string.h>
+#include <limits.h>
+
+#include "debug.h"
+#include "printbuf.h"
+#include "arraylist.h"
+#include "json_inttypes.h"
+#include "json_object.h"
+#include "json_tokener.h"
+#include "json_util.h"
+
+#ifdef HAVE_LOCALE_H
+#include <locale.h>
+#endif /* HAVE_LOCALE_H */
+
+#define jt_hexdigit(x) (((x) <= '9') ? (x) - '0' : ((x) & 7) + 9)
+
+#if !HAVE_STRDUP && defined(_MSC_VER)
+  /* MSC has the version as _strdup */
+# define strdup _strdup
+#elif !HAVE_STRDUP
+# error You do not have strdup on your system.
+#endif /* HAVE_STRDUP */
+
+#if !HAVE_STRNCASECMP && defined(_MSC_VER)
+  /* MSC has the version as _strnicmp */
+# define strncasecmp _strnicmp
+#elif !HAVE_STRNCASECMP
+# error You do not have strncasecmp on your system.
+#endif /* HAVE_STRNCASECMP */
+
+/* Use C99 NAN by default; if not available, nan("") should work too. */
+#ifndef NAN
+#define NAN nan("")
+#endif /* !NAN */
+
+static const char json_null_str[] = "null";
+static const int json_null_str_len = sizeof(json_null_str) - 1;
+static const char json_inf_str[] = "Infinity";
+static const int json_inf_str_len = sizeof(json_inf_str) - 1;
+static const char json_nan_str[] = "NaN";
+static const int json_nan_str_len = sizeof(json_nan_str) - 1;
+static const char json_true_str[] = "true";
+static const int json_true_str_len = sizeof(json_true_str) - 1;
+static const char json_false_str[] = "false";
+static const int json_false_str_len = sizeof(json_false_str) - 1;
+
+static const char* json_tokener_errors[] = {
+  "success",
+  "continue",
+  "nesting too deep",
+  "unexpected end of data",
+  "unexpected character",
+  "null expected",
+  "boolean expected",
+  "number expected",
+  "array value separator ',' expected",
+  "quoted object property name expected",
+  "object property name separator ':' expected",
+  "object value separator ',' expected",
+  "invalid string sequence",
+  "expected comment",
+  "buffer size overflow"
+};
+
+const char *json_tokener_error_desc(enum json_tokener_error jerr)
+{
+	int jerr_int = (int)jerr;
+	if (jerr_int < 0 || jerr_int >= (int)(sizeof(json_tokener_errors) / sizeof(json_tokener_errors[0])))
+		return "Unknown error, invalid json_tokener_error value passed to json_tokener_error_desc()";
+	return json_tokener_errors[jerr];
+}
+
+enum json_tokener_error json_tokener_get_error(json_tokener *tok)
+{
+	return tok->err;
+}
+
+/* Stuff for decoding unicode sequences */
+#define IS_HIGH_SURROGATE(uc) (((uc) & 0xFC00) == 0xD800)
+#define IS_LOW_SURROGATE(uc)  (((uc) & 0xFC00) == 0xDC00)
+#define DECODE_SURROGATE_PAIR(hi,lo) ((((hi) & 0x3FF) << 10) + ((lo) & 0x3FF) + 0x10000)
+static unsigned char utf8_replacement_char[3] = { 0xEF, 0xBF, 0xBD };
+
+struct json_tokener* json_tokener_new_ex(int depth)
+{
+  struct json_tokener *tok;
+
+  tok = (struct json_tokener*)calloc(1, sizeof(struct json_tokener));
+  if (!tok) return NULL;
+  tok->stack = (struct json_tokener_srec *)calloc(depth, sizeof(struct json_tokener_srec));
+  if (!tok->stack) {
+    free(tok);
+    return NULL;
+  }
+  tok->pb = printbuf_new();
+  tok->max_depth = depth;
+  json_tokener_reset(tok);
+  return tok;
+}
+
+struct json_tokener* json_tokener_new(void)
+{
+  return json_tokener_new_ex(JSON_TOKENER_DEFAULT_DEPTH);
+}
+
+void json_tokener_free(struct json_tokener *tok)
+{
+  json_tokener_reset(tok);
+  if (tok->pb) printbuf_free(tok->pb);
+  free(tok->stack);
+  free(tok);
+}
+
+static void json_tokener_reset_level(struct json_tokener *tok, int depth)
+{
+  tok->stack[depth].state = json_tokener_state_eatws;
+  tok->stack[depth].saved_state = json_tokener_state_start;
+  json_object_put(tok->stack[depth].current);
+  tok->stack[depth].current = NULL;
+  free(tok->stack[depth].obj_field_name);
+  tok->stack[depth].obj_field_name = NULL;
+}
+
+void json_tokener_reset(struct json_tokener *tok)
+{
+  int i;
+  if (!tok)
+    return;
+
+  for(i = tok->depth; i >= 0; i--)
+    json_tokener_reset_level(tok, i);
+  tok->depth = 0;
+  tok->err = json_tokener_success;
+}
+
+struct json_object* json_tokener_parse(const char *str)
+{
+    enum json_tokener_error jerr_ignored;
+    struct json_object* obj;
+    obj = json_tokener_parse_verbose(str, &jerr_ignored);
+    return obj;
+}
+
+struct json_object* json_tokener_parse_verbose(const char *str, enum json_tokener_error *error)
+{
+    struct json_tokener* tok;
+    struct json_object* obj;
+
+    tok = json_tokener_new();
+    if (!tok)
+      return NULL;
+    obj = json_tokener_parse_ex(tok, str, -1);
+    *error = tok->err;
+    if(tok->err != json_tokener_success) {
+		if (obj != NULL)
+			json_object_put(obj);
+        obj = NULL;
+    }
+
+    json_tokener_free(tok);
+    return obj;
+}
+
+#define state  tok->stack[tok->depth].state
+#define saved_state  tok->stack[tok->depth].saved_state
+#define current tok->stack[tok->depth].current
+#define obj_field_name tok->stack[tok->depth].obj_field_name
+
+/* Optimization:
+ * json_tokener_parse_ex() consumed a lot of CPU in its main loop,
+ * iterating character-by character.  A large performance boost is
+ * achieved by using tighter loops to locally handle units such as
+ * comments and strings.  Loops that handle an entire token within
+ * their scope also gather entire strings and pass them to
+ * printbuf_memappend() in a single call, rather than calling
+ * printbuf_memappend() one char at a time.
+ *
+ * PEEK_CHAR() and ADVANCE_CHAR() macros are used for code that is
+ * common to both the main loop and the tighter loops.
+ */
+
+/* PEEK_CHAR(dest, tok) macro:
+ *   Peeks at the current char and stores it in dest.
+ *   Returns 1 on success, sets tok->err and returns 0 if no more chars.
+ *   Implicit inputs:  str, len vars
+ */
+#define PEEK_CHAR(dest, tok)                                                  \
+  (((tok)->char_offset == len) ?                                          \
+   (((tok)->depth == 0 && state == json_tokener_state_eatws && saved_state == json_tokener_state_finish) ? \
+    (((tok)->err = json_tokener_success), 0)                              \
+    :                                                                   \
+    (((tok)->err = json_tokener_continue), 0)                             \
+    ) :                                                                 \
+   (((dest) = *str), 1)                                                 \
+   )
+
+/* ADVANCE_CHAR() macro:
+ *   Incrementes str & tok->char_offset.
+ *   For convenience of existing conditionals, returns the old value of c (0 on eof)
+ *   Implicit inputs:  c var
+ */
+#define ADVANCE_CHAR(str, tok) \
+  ( ++(str), ((tok)->char_offset)++, c)
+
+
+/* End optimization macro defs */
+
+
+struct json_object* json_tokener_parse_ex(struct json_tokener *tok,
+					  const char *str, int len)
+{
+  struct json_object *obj = NULL;
+  char c = '\1';
+#ifdef HAVE_SETLOCALE
+  char *oldlocale=NULL, *tmplocale;
+
+  tmplocale = setlocale(LC_NUMERIC, NULL);
+  if (tmplocale) oldlocale = strdup(tmplocale);
+  setlocale(LC_NUMERIC, "C");
+#endif
+
+  tok->char_offset = 0;
+  tok->err = json_tokener_success;
+
+  /* this interface is presently not 64-bit clean due to the int len argument
+     and the internal printbuf interface that takes 32-bit int len arguments
+     so the function limits the maximum string size to INT32_MAX (2GB).
+     If the function is called with len == -1 then strlen is called to check
+     the string length is less than INT32_MAX (2GB) */
+  if ((len < -1) || (len == -1 && strlen(str) > INT32_MAX)) {
+    tok->err = json_tokener_error_size;
+#ifdef HAVE_SETLOCALE
+  free(oldlocale);
+#endif
+    return NULL;
+  }
+
+  while (PEEK_CHAR(c, tok)) {
+
+  redo_char:
+    switch(state) {
+
+    case json_tokener_state_eatws:
+      /* Advance until we change state */
+      while (isspace((int)c)) {
+	if ((!ADVANCE_CHAR(str, tok)) || (!PEEK_CHAR(c, tok)))
+	  goto out;
+      }
+      if(c == '/' && !(tok->flags & JSON_TOKENER_STRICT)) {
+	printbuf_reset(tok->pb);
+	printbuf_memappend_fast(tok->pb, &c, 1);
+	state = json_tokener_state_comment_start;
+      } else {
+	state = saved_state;
+	goto redo_char;
+      }
+      break;
+
+    case json_tokener_state_start:
+      switch(c) {
+      case '{':
+	state = json_tokener_state_eatws;
+	saved_state = json_tokener_state_object_field_start;
+	current = json_object_new_object();
+	break;
+      case '[':
+	state = json_tokener_state_eatws;
+	saved_state = json_tokener_state_array;
+	current = json_object_new_array();
+	break;
+      case 'I':
+      case 'i':
+	state = json_tokener_state_inf;
+	printbuf_reset(tok->pb);
+	tok->st_pos = 0;
+	goto redo_char;
+      case 'N':
+      case 'n':
+	state = json_tokener_state_null; // or NaN
+	printbuf_reset(tok->pb);
+	tok->st_pos = 0;
+	goto redo_char;
+      case '\'':
+        if (tok->flags & JSON_TOKENER_STRICT) {
+            /* in STRICT mode only double-quote are allowed */
+            tok->err = json_tokener_error_parse_unexpected;
+            goto out;
+        }
+      case '"':
+	state = json_tokener_state_string;
+	printbuf_reset(tok->pb);
+	tok->quote_char = c;
+	break;
+      case 'T':
+      case 't':
+      case 'F':
+      case 'f':
+	state = json_tokener_state_boolean;
+	printbuf_reset(tok->pb);
+	tok->st_pos = 0;
+	goto redo_char;
+#if defined(__GNUC__)
+	  case '0' ... '9':
+#else
+	  case '0':
+      case '1':
+      case '2':
+      case '3':
+      case '4':
+      case '5':
+      case '6':
+      case '7':
+      case '8':
+      case '9':
+#endif
+      case '-':
+	state = json_tokener_state_number;
+	printbuf_reset(tok->pb);
+	tok->is_double = 0;
+	goto redo_char;
+      default:
+	tok->err = json_tokener_error_parse_unexpected;
+	goto out;
+      }
+      break;
+
+    case json_tokener_state_finish:
+      if(tok->depth == 0) goto out;
+      obj = json_object_get(current);
+      json_tokener_reset_level(tok, tok->depth);
+      tok->depth--;
+      goto redo_char;
+
+    case json_tokener_state_inf: /* aka starts with 'i' */
+      {
+	size_t size_inf;
+	int is_negative = 0;
+
+	printbuf_memappend_fast(tok->pb, &c, 1);
+	size_inf = json_min(tok->st_pos+1, json_inf_str_len);
+	char *infbuf = tok->pb->buf;
+	if (*infbuf == '-')
+	{
+		infbuf++;
+		is_negative = 1;
+	}
+	if ((!(tok->flags & JSON_TOKENER_STRICT) &&
+	          strncasecmp(json_inf_str, infbuf, size_inf) == 0) ||
+	         (strncmp(json_inf_str, infbuf, size_inf) == 0)
+	        )
+	{
+		if (tok->st_pos == json_inf_str_len)
+		{
+			current = json_object_new_double(is_negative ? -INFINITY : INFINITY);
+			saved_state = json_tokener_state_finish;
+			state = json_tokener_state_eatws;
+			goto redo_char;
+		}
+	} else {
+		tok->err = json_tokener_error_parse_unexpected;
+		goto out;
+	}
+	tok->st_pos++;
+      }
+      break;
+    case json_tokener_state_null: /* aka starts with 'n' */
+      {
+	int size;
+	int size_nan;
+	printbuf_memappend_fast(tok->pb, &c, 1);
+	size = json_min(tok->st_pos+1, json_null_str_len);
+	size_nan = json_min(tok->st_pos+1, json_nan_str_len);
+	if((!(tok->flags & JSON_TOKENER_STRICT) &&
+	  strncasecmp(json_null_str, tok->pb->buf, size) == 0)
+	  || (strncmp(json_null_str, tok->pb->buf, size) == 0)
+	  ) {
+	  if (tok->st_pos == json_null_str_len) {
+	    current = NULL;
+	    saved_state = json_tokener_state_finish;
+	    state = json_tokener_state_eatws;
+	    goto redo_char;
+	  }
+	}
+	else if ((!(tok->flags & JSON_TOKENER_STRICT) &&
+	          strncasecmp(json_nan_str, tok->pb->buf, size_nan) == 0) ||
+	         (strncmp(json_nan_str, tok->pb->buf, size_nan) == 0)
+	        )
+	{
+		if (tok->st_pos == json_nan_str_len)
+		{
+			current = json_object_new_double(NAN);
+			saved_state = json_tokener_state_finish;
+			state = json_tokener_state_eatws;
+			goto redo_char;
+		}
+	} else {
+	  tok->err = json_tokener_error_parse_null;
+	  goto out;
+	}
+	tok->st_pos++;
+      }
+      break;
+
+    case json_tokener_state_comment_start:
+      if(c == '*') {
+	state = json_tokener_state_comment;
+      } else if(c == '/') {
+	state = json_tokener_state_comment_eol;
+      } else {
+	tok->err = json_tokener_error_parse_comment;
+	goto out;
+      }
+      printbuf_memappend_fast(tok->pb, &c, 1);
+      break;
+
+    case json_tokener_state_comment:
+              {
+          /* Advance until we change state */
+          const char *case_start = str;
+          while(c != '*') {
+            if (!ADVANCE_CHAR(str, tok) || !PEEK_CHAR(c, tok)) {
+              printbuf_memappend_fast(tok->pb, case_start, str-case_start);
+              goto out;
+            }
+          }
+          printbuf_memappend_fast(tok->pb, case_start, 1+str-case_start);
+          state = json_tokener_state_comment_end;
+        }
+            break;
+
+    case json_tokener_state_comment_eol:
+      {
+	/* Advance until we change state */
+	const char *case_start = str;
+	while(c != '\n') {
+	  if (!ADVANCE_CHAR(str, tok) || !PEEK_CHAR(c, tok)) {
+	    printbuf_memappend_fast(tok->pb, case_start, str-case_start);
+	    goto out;
+	  }
+	}
+	printbuf_memappend_fast(tok->pb, case_start, str-case_start);
+	MC_DEBUG("json_tokener_comment: %s\n", tok->pb->buf);
+	state = json_tokener_state_eatws;
+      }
+      break;
+
+    case json_tokener_state_comment_end:
+      printbuf_memappend_fast(tok->pb, &c, 1);
+      if(c == '/') {
+	MC_DEBUG("json_tokener_comment: %s\n", tok->pb->buf);
+	state = json_tokener_state_eatws;
+      } else {
+	state = json_tokener_state_comment;
+      }
+      break;
+
+    case json_tokener_state_string:
+      {
+	/* Advance until we change state */
+	const char *case_start = str;
+	while(1) {
+	  if(c == tok->quote_char) {
+	    printbuf_memappend_fast(tok->pb, case_start, str-case_start);
+	    current = json_object_new_string_len(tok->pb->buf, tok->pb->bpos);
+	    saved_state = json_tokener_state_finish;
+	    state = json_tokener_state_eatws;
+	    break;
+	  } else if(c == '\\') {
+	    printbuf_memappend_fast(tok->pb, case_start, str-case_start);
+	    saved_state = json_tokener_state_string;
+	    state = json_tokener_state_string_escape;
+	    break;
+	  }
+	  if (!ADVANCE_CHAR(str, tok) || !PEEK_CHAR(c, tok)) {
+	    printbuf_memappend_fast(tok->pb, case_start, str-case_start);
+	    goto out;
+	  }
+	}
+      }
+      break;
+
+    case json_tokener_state_string_escape:
+      switch(c) {
+      case '"':
+      case '\\':
+      case '/':
+	printbuf_memappend_fast(tok->pb, &c, 1);
+	state = saved_state;
+	break;
+      case 'b':
+      case 'n':
+      case 'r':
+      case 't':
+      case 'f':
+	if(c == 'b') printbuf_memappend_fast(tok->pb, "\b", 1);
+	else if(c == 'n') printbuf_memappend_fast(tok->pb, "\n", 1);
+	else if(c == 'r') printbuf_memappend_fast(tok->pb, "\r", 1);
+	else if(c == 't') printbuf_memappend_fast(tok->pb, "\t", 1);
+	else if(c == 'f') printbuf_memappend_fast(tok->pb, "\f", 1);
+	state = saved_state;
+	break;
+      case 'u':
+	tok->ucs_char = 0;
+	tok->st_pos = 0;
+	state = json_tokener_state_escape_unicode;
+	break;
+      default:
+	tok->err = json_tokener_error_parse_string;
+	goto out;
+      }
+      break;
+
+    case json_tokener_state_escape_unicode:
+	{
+          unsigned int got_hi_surrogate = 0;
+
+	  /* Handle a 4-byte sequence, or two sequences if a surrogate pair */
+	  while(1) {
+	    if(strchr(json_hex_chars, c)) {
+	      tok->ucs_char += ((unsigned int)jt_hexdigit(c) << ((3-tok->st_pos++)*4));
+	      if(tok->st_pos == 4) {
+		unsigned char unescaped_utf[4];
+
+                if (got_hi_surrogate) {
+		  if (IS_LOW_SURROGATE(tok->ucs_char)) {
+                    /* Recalculate the ucs_char, then fall thru to process normally */
+                    tok->ucs_char = DECODE_SURROGATE_PAIR(got_hi_surrogate, tok->ucs_char);
+                  } else {
+                    /* Hi surrogate was not followed by a low surrogate */
+                    /* Replace the hi and process the rest normally */
+		    printbuf_memappend_fast(tok->pb, (char*)utf8_replacement_char, 3);
+                  }
+                  got_hi_surrogate = 0;
+                }
+
+		if (tok->ucs_char < 0x80) {
+		  unescaped_utf[0] = tok->ucs_char;
+		  printbuf_memappend_fast(tok->pb, (char*)unescaped_utf, 1);
+		} else if (tok->ucs_char < 0x800) {
+		  unescaped_utf[0] = 0xc0 | (tok->ucs_char >> 6);
+		  unescaped_utf[1] = 0x80 | (tok->ucs_char & 0x3f);
+		  printbuf_memappend_fast(tok->pb, (char*)unescaped_utf, 2);
+		} else if (IS_HIGH_SURROGATE(tok->ucs_char)) {
+                  /* Got a high surrogate.  Remember it and look for the
+                   * the beginning of another sequence, which should be the
+                   * low surrogate.
+                   */
+                  got_hi_surrogate = tok->ucs_char;
+                  /* Not at end, and the next two chars should be "\u" */
+                  if ((tok->char_offset+1 != len) &&
+                      (tok->char_offset+2 != len) &&
+                      (str[1] == '\\') &&
+                      (str[2] == 'u'))
+                  {
+                /* Advance through the 16 bit surrogate, and move on to the
+                 * next sequence. The next step is to process the following
+                 * characters.
+                 */
+	            if( !ADVANCE_CHAR(str, tok) || !ADVANCE_CHAR(str, tok) ) {
+                    printbuf_memappend_fast(tok->pb, (char*)utf8_replacement_char, 3);
+                }
+                    /* Advance to the first char of the next sequence and
+                     * continue processing with the next sequence.
+                     */
+	            if (!ADVANCE_CHAR(str, tok) || !PEEK_CHAR(c, tok)) {
+	              printbuf_memappend_fast(tok->pb, (char*)utf8_replacement_char, 3);
+	              goto out;
+                    }
+	            tok->ucs_char = 0;
+                    tok->st_pos = 0;
+                    continue; /* other json_tokener_state_escape_unicode */
+                  } else {
+                    /* Got a high surrogate without another sequence following
+                     * it.  Put a replacement char in for the hi surrogate
+                     * and pretend we finished.
+                     */
+		    printbuf_memappend_fast(tok->pb, (char*)utf8_replacement_char, 3);
+                  }
+		} else if (IS_LOW_SURROGATE(tok->ucs_char)) {
+                  /* Got a low surrogate not preceded by a high */
+		  printbuf_memappend_fast(tok->pb, (char*)utf8_replacement_char, 3);
+                } else if (tok->ucs_char < 0x10000) {
+		  unescaped_utf[0] = 0xe0 | (tok->ucs_char >> 12);
+		  unescaped_utf[1] = 0x80 | ((tok->ucs_char >> 6) & 0x3f);
+		  unescaped_utf[2] = 0x80 | (tok->ucs_char & 0x3f);
+		  printbuf_memappend_fast(tok->pb, (char*)unescaped_utf, 3);
+		} else if (tok->ucs_char < 0x110000) {
+		  unescaped_utf[0] = 0xf0 | ((tok->ucs_char >> 18) & 0x07);
+		  unescaped_utf[1] = 0x80 | ((tok->ucs_char >> 12) & 0x3f);
+		  unescaped_utf[2] = 0x80 | ((tok->ucs_char >> 6) & 0x3f);
+		  unescaped_utf[3] = 0x80 | (tok->ucs_char & 0x3f);
+		  printbuf_memappend_fast(tok->pb, (char*)unescaped_utf, 4);
+		} else {
+                  /* Don't know what we got--insert the replacement char */
+		  printbuf_memappend_fast(tok->pb, (char*)utf8_replacement_char, 3);
+                }
+		state = saved_state;
+		break;
+	      }
+	    } else {
+	      tok->err = json_tokener_error_parse_string;
+	      goto out;
+	    }
+	  if (!ADVANCE_CHAR(str, tok) || !PEEK_CHAR(c, tok)) {
+            if (got_hi_surrogate) /* Clean up any pending chars */
+	      printbuf_memappend_fast(tok->pb, (char*)utf8_replacement_char, 3);
+	    goto out;
+	  }
+	}
+      }
+      break;
+
+    case json_tokener_state_boolean:
+      {
+	int size1, size2;
+	printbuf_memappend_fast(tok->pb, &c, 1);
+	size1 = json_min(tok->st_pos+1, json_true_str_len);
+	size2 = json_min(tok->st_pos+1, json_false_str_len);
+	if((!(tok->flags & JSON_TOKENER_STRICT) &&
+	  strncasecmp(json_true_str, tok->pb->buf, size1) == 0)
+	  || (strncmp(json_true_str, tok->pb->buf, size1) == 0)
+	  ) {
+	  if(tok->st_pos == json_true_str_len) {
+	    current = json_object_new_boolean(1);
+	    saved_state = json_tokener_state_finish;
+	    state = json_tokener_state_eatws;
+	    goto redo_char;
+	  }
+	} else if((!(tok->flags & JSON_TOKENER_STRICT) &&
+	  strncasecmp(json_false_str, tok->pb->buf, size2) == 0)
+	  || (strncmp(json_false_str, tok->pb->buf, size2) == 0)) {
+	  if(tok->st_pos == json_false_str_len) {
+	    current = json_object_new_boolean(0);
+	    saved_state = json_tokener_state_finish;
+	    state = json_tokener_state_eatws;
+	    goto redo_char;
+	  }
+	} else {
+	  tok->err = json_tokener_error_parse_boolean;
+	  goto out;
+	}
+	tok->st_pos++;
+      }
+      break;
+
+    case json_tokener_state_number:
+      {
+	/* Advance until we change state */
+	const char *case_start = str;
+	int case_len=0;
+	int is_exponent=0;
+	int negativesign_next_possible_location=1;
+	while(c && strchr(json_number_chars, c)) {
+	  ++case_len;
+
+	  /* non-digit characters checks */
+	  /* note: since the main loop condition to get here was
+	           an input starting with 0-9 or '-', we are
+	           protected from input starting with '.' or
+	           e/E. */
+	  if (c == '.') {
+	    if (tok->is_double != 0) {
+	      /* '.' can only be found once, and out of the exponent part.
+	         Thus, if the input is already flagged as double, it
+	         is invalid. */
+	      tok->err = json_tokener_error_parse_number;
+	      goto out;
+	    }
+	    tok->is_double = 1;
+	  }
+	  if (c == 'e' || c == 'E') {
+	    if (is_exponent != 0) {
+	      /* only one exponent possible */
+	      tok->err = json_tokener_error_parse_number;
+	      goto out;
+	    }
+	    is_exponent = 1;
+	    tok->is_double = 1;
+	    /* the exponent part can begin with a negative sign */
+	    negativesign_next_possible_location = case_len + 1;
+	  }
+	  if (c == '-' && case_len != negativesign_next_possible_location) {
+	    /* If the negative sign is not where expected (ie
+	       start of input or start of exponent part), the
+	       input is invalid. */
+	    tok->err = json_tokener_error_parse_number;
+	    goto out;
+	  }
+
+	  if (!ADVANCE_CHAR(str, tok) || !PEEK_CHAR(c, tok)) {
+	    printbuf_memappend_fast(tok->pb, case_start, case_len);
+	    goto out;
+	  }
+	}
+        if (case_len>0)
+          printbuf_memappend_fast(tok->pb, case_start, case_len);
+
+	// Check for -Infinity
+	if (tok->pb->buf[0] == '-' && case_len == 1 &&
+	    (c == 'i' || c == 'I'))
+	{
+		state = json_tokener_state_inf;
+		goto redo_char;
+	}
+      }
+      {
+	int64_t num64;
+	double  numd;
+	if (!tok->is_double && json_parse_int64(tok->pb->buf, &num64) == 0) {
+		if (num64 && tok->pb->buf[0]=='0' && (tok->flags & JSON_TOKENER_STRICT)) {
+			/* in strict mode, number must not start with 0 */
+			tok->err = json_tokener_error_parse_number;
+			goto out;
+		}
+		current = json_object_new_int64(num64);
+	}
+	else if(tok->is_double && json_parse_double(tok->pb->buf, &numd) == 0)
+	{
+          current = json_object_new_double_s(numd, tok->pb->buf);
+        } else {
+          tok->err = json_tokener_error_parse_number;
+          goto out;
+        }
+        saved_state = json_tokener_state_finish;
+        state = json_tokener_state_eatws;
+        goto redo_char;
+      }
+      break;
+
+    case json_tokener_state_array_after_sep:
+    case json_tokener_state_array:
+      if(c == ']') {
+		if (state == json_tokener_state_array_after_sep &&
+			(tok->flags & JSON_TOKENER_STRICT))
+		{
+			tok->err = json_tokener_error_parse_unexpected;
+			goto out;
+		}
+	saved_state = json_tokener_state_finish;
+	state = json_tokener_state_eatws;
+      } else {
+	if(tok->depth >= tok->max_depth-1) {
+	  tok->err = json_tokener_error_depth;
+	  goto out;
+	}
+	state = json_tokener_state_array_add;
+	tok->depth++;
+	json_tokener_reset_level(tok, tok->depth);
+	goto redo_char;
+      }
+      break;
+
+    case json_tokener_state_array_add:
+      json_object_array_add(current, obj);
+      saved_state = json_tokener_state_array_sep;
+      state = json_tokener_state_eatws;
+      goto redo_char;
+
+    case json_tokener_state_array_sep:
+      if(c == ']') {
+	saved_state = json_tokener_state_finish;
+	state = json_tokener_state_eatws;
+      } else if(c == ',') {
+	saved_state = json_tokener_state_array_after_sep;
+	state = json_tokener_state_eatws;
+      } else {
+	tok->err = json_tokener_error_parse_array;
+	goto out;
+      }
+      break;
+
+    case json_tokener_state_object_field_start:
+    case json_tokener_state_object_field_start_after_sep:
+      if(c == '}') {
+		if (state == json_tokener_state_object_field_start_after_sep &&
+		    (tok->flags & JSON_TOKENER_STRICT))
+		{
+			tok->err = json_tokener_error_parse_unexpected;
+			goto out;
+		}
+	saved_state = json_tokener_state_finish;
+	state = json_tokener_state_eatws;
+      } else if (c == '"' || c == '\'') {
+	tok->quote_char = c;
+	printbuf_reset(tok->pb);
+	state = json_tokener_state_object_field;
+      } else {
+	tok->err = json_tokener_error_parse_object_key_name;
+	goto out;
+      }
+      break;
+
+    case json_tokener_state_object_field:
+      {
+	/* Advance until we change state */
+	const char *case_start = str;
+	while(1) {
+	  if(c == tok->quote_char) {
+	    printbuf_memappend_fast(tok->pb, case_start, str-case_start);
+	    obj_field_name = strdup(tok->pb->buf);
+	    saved_state = json_tokener_state_object_field_end;
+	    state = json_tokener_state_eatws;
+	    break;
+	  } else if(c == '\\') {
+	    printbuf_memappend_fast(tok->pb, case_start, str-case_start);
+	    saved_state = json_tokener_state_object_field;
+	    state = json_tokener_state_string_escape;
+	    break;
+	  }
+	  if (!ADVANCE_CHAR(str, tok) || !PEEK_CHAR(c, tok)) {
+	    printbuf_memappend_fast(tok->pb, case_start, str-case_start);
+	    goto out;
+	  }
+	}
+      }
+      break;
+
+    case json_tokener_state_object_field_end:
+      if(c == ':') {
+	saved_state = json_tokener_state_object_value;
+	state = json_tokener_state_eatws;
+      } else {
+	tok->err = json_tokener_error_parse_object_key_sep;
+	goto out;
+      }
+      break;
+
+    case json_tokener_state_object_value:
+      if(tok->depth >= tok->max_depth-1) {
+	tok->err = json_tokener_error_depth;
+	goto out;
+      }
+      state = json_tokener_state_object_value_add;
+      tok->depth++;
+      json_tokener_reset_level(tok, tok->depth);
+      goto redo_char;
+
+    case json_tokener_state_object_value_add:
+      json_object_object_add(current, obj_field_name, obj);
+      free(obj_field_name);
+      obj_field_name = NULL;
+      saved_state = json_tokener_state_object_sep;
+      state = json_tokener_state_eatws;
+      goto redo_char;
+
+    case json_tokener_state_object_sep:
+      if(c == '}') {
+	saved_state = json_tokener_state_finish;
+	state = json_tokener_state_eatws;
+      } else if(c == ',') {
+	saved_state = json_tokener_state_object_field_start_after_sep;
+	state = json_tokener_state_eatws;
+      } else {
+	tok->err = json_tokener_error_parse_object_value_sep;
+	goto out;
+      }
+      break;
+
+    }
+    if (!ADVANCE_CHAR(str, tok))
+      goto out;
+  } /* while(POP_CHAR) */
+
+ out:
+  if (c &&
+     (state == json_tokener_state_finish) &&
+     (tok->depth == 0) &&
+     (tok->flags & JSON_TOKENER_STRICT)) {
+      /* unexpected char after JSON data */
+      tok->err = json_tokener_error_parse_unexpected;
+  }
+  if (!c) { /* We hit an eof char (0) */
+    if(state != json_tokener_state_finish &&
+       saved_state != json_tokener_state_finish)
+      tok->err = json_tokener_error_parse_eof;
+  }
+
+#ifdef HAVE_SETLOCALE
+  setlocale(LC_NUMERIC, oldlocale);
+  free(oldlocale);
+#endif
+
+  if (tok->err == json_tokener_success)
+  {
+    json_object *ret = json_object_get(current);
+	int ii;
+
+	/* Partially reset, so we parse additional objects on subsequent calls. */
+    for(ii = tok->depth; ii >= 0; ii--)
+      json_tokener_reset_level(tok, ii);
+    return ret;
+  }
+
+  MC_DEBUG("json_tokener_parse_ex: error %s at offset %d\n",
+	   json_tokener_errors[tok->err], tok->char_offset);
+  return NULL;
+}
+
+void json_tokener_set_flags(struct json_tokener *tok, int flags)
+{
+	tok->flags = flags;
+}
diff --git a/Src/json-c/json_util.c b/Src/json-c/json_util.c
new file mode 100644
index 0000000..910d84c
--- /dev/null
+++ b/Src/json-c/json_util.c
@@ -0,0 +1,314 @@
+/*
+ * $Id: json_util.c,v 1.4 2006/01/30 23:07:57 mclark Exp $
+ *
+ * Copyright (c) 2004, 2005 Metaparadigm Pte. Ltd.
+ * Michael Clark <michael at metaparadigm.com>
+ *
+ * This library is free software; you can redistribute it and/or modify
+ * it under the terms of the MIT license. See COPYING for details.
+ *
+ */
+
+#include "config.h"
+#undef realloc
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <stddef.h>
+#include <limits.h>
+#include <string.h>
+#include <errno.h>
+#include <ctype.h>
+
+#ifdef HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif /* HAVE_SYS_TYPES_H */
+
+#ifdef HAVE_SYS_STAT_H
+#include <sys/stat.h>
+#endif /* HAVE_SYS_STAT_H */
+
+#ifdef HAVE_FCNTL_H
+#include <fcntl.h>
+#endif /* HAVE_FCNTL_H */
+
+#ifdef HAVE_UNISTD_H
+# include <unistd.h>
+#endif /* HAVE_UNISTD_H */
+
+#ifdef WIN32
+# define WIN32_LEAN_AND_MEAN
+# include <windows.h>
+# include <io.h>
+#endif /* defined(WIN32) */
+
+#if !defined(HAVE_OPEN) && defined(WIN32)
+# define open _open
+#endif
+
+#if !defined(HAVE_SNPRINTF) && defined(_MSC_VER)
+  /* MSC has the version as _snprintf */
+# define snprintf _snprintf
+#elif !defined(HAVE_SNPRINTF)
+# error You do not have snprintf on your system.
+#endif /* HAVE_SNPRINTF */
+
+#include "debug.h"
+#include "printbuf.h"
+#include "json_inttypes.h"
+#include "json_object.h"
+#include "json_tokener.h"
+#include "json_util.h"
+
+static int sscanf_is_broken = 0;
+static int sscanf_is_broken_testdone = 0;
+static void sscanf_is_broken_test(void);
+
+/*
+ * Create a JSON object from already opened file descriptor.
+ *
+ * This function can be helpful, when you opened the file already,
+ * e.g. when you have a temp file.
+ * Note, that the fd must be readable at the actual position, i.e.
+ * use lseek(fd, 0, SEEK_SET) before.
+ */
+struct json_object* json_object_from_fd(int fd)
+{
+  struct printbuf *pb;
+  struct json_object *obj;
+  char buf[JSON_FILE_BUF_SIZE];
+  int ret;
+
+  if(!(pb = printbuf_new())) {
+    MC_ERROR("json_object_from_file: printbuf_new failed\n");
+    return NULL;
+  }
+  while((ret = read(fd, buf, JSON_FILE_BUF_SIZE)) > 0) {
+    printbuf_memappend(pb, buf, ret);
+  }
+  if(ret < 0) {
+    MC_ERROR("json_object_from_fd: error reading fd %d: %s\n", fd, strerror(errno));
+    printbuf_free(pb);
+    return NULL;
+  }
+  obj = json_tokener_parse(pb->buf);
+  printbuf_free(pb);
+  return obj;
+}
+
+struct json_object* json_object_from_file(const char *filename)
+{
+  struct json_object *obj;
+  int fd;
+
+  if((fd = open(filename, O_RDONLY)) < 0) {
+    MC_ERROR("json_object_from_file: error opening file %s: %s\n",
+	     filename, strerror(errno));
+    return NULL;
+  }
+  obj = json_object_from_fd(fd);
+  close(fd);
+  return obj;
+}
+
+/* extended "format and write to file" function */
+
+int json_object_to_file_ext(const char *filename, struct json_object *obj, int flags)
+{
+  const char *json_str;
+  int fd, ret;
+  unsigned int wpos, wsize;
+
+  if(!obj) {
+    MC_ERROR("json_object_to_file: object is null\n");
+    return -1;
+  }
+
+  if((fd = open(filename, O_WRONLY | O_TRUNC | O_CREAT, 0644)) < 0) {
+    MC_ERROR("json_object_to_file: error opening file %s: %s\n",
+	     filename, strerror(errno));
+    return -1;
+  }
+
+  if(!(json_str = json_object_to_json_string_ext(obj,flags))) {
+    close(fd);
+    return -1;
+  }
+
+  wsize = (unsigned int)(strlen(json_str) & UINT_MAX); /* CAW: probably unnecessary, but the most 64bit safe */
+  wpos = 0;
+  while(wpos < wsize) {
+    if((ret = write(fd, json_str + wpos, wsize-wpos)) < 0) {
+      close(fd);
+      MC_ERROR("json_object_to_file: error writing file %s: %s\n",
+	     filename, strerror(errno));
+      return -1;
+    }
+
+	/* because of the above check for ret < 0, we can safely cast and add */
+    wpos += (unsigned int)ret;
+  }
+
+  close(fd);
+  return 0;
+}
+
+// backwards compatible "format and write to file" function
+
+int json_object_to_file(const char *filename, struct json_object *obj)
+{
+  return json_object_to_file_ext(filename, obj, JSON_C_TO_STRING_PLAIN);
+}
+
+int json_parse_double(const char *buf, double *retval)
+{
+  return (sscanf(buf, "%lf", retval)==1 ? 0 : 1);
+}
+
+/*
+ * Not all implementations of sscanf actually work properly.
+ * Check whether the one we're currently using does, and if
+ * it's broken, enable the workaround code.
+ */
+static void sscanf_is_broken_test()
+{
+	int64_t num64;
+	int ret_errno, is_int64_min, ret_errno2, is_int64_max;
+
+	(void)sscanf(" -01234567890123456789012345", "%" SCNd64, &num64);
+	ret_errno = errno;
+	is_int64_min = (num64 == INT64_MIN);
+
+	(void)sscanf(" 01234567890123456789012345", "%" SCNd64, &num64);
+	ret_errno2 = errno;
+	is_int64_max = (num64 == INT64_MAX);
+
+	if (ret_errno != ERANGE || !is_int64_min ||
+	    ret_errno2 != ERANGE || !is_int64_max)
+	{
+		MC_DEBUG("sscanf_is_broken_test failed, enabling workaround code\n");
+		sscanf_is_broken = 1;
+	}
+}
+
+int json_parse_int64(const char *buf, int64_t *retval)
+{
+	int64_t num64;
+	const char *buf_sig_digits;
+	int orig_has_neg;
+	int saved_errno;
+
+	if (!sscanf_is_broken_testdone)
+	{
+		sscanf_is_broken_test();
+		sscanf_is_broken_testdone = 1;
+	}
+
+	// Skip leading spaces
+	while (isspace((int)*buf) && *buf)
+		buf++;
+
+	errno = 0; // sscanf won't always set errno, so initialize
+	if (sscanf(buf, "%" SCNd64, &num64) != 1)
+	{
+		MC_DEBUG("Failed to parse, sscanf != 1\n");
+		return 1;
+	}
+
+	saved_errno = errno;
+	buf_sig_digits = buf;
+	orig_has_neg = 0;
+	if (*buf_sig_digits == '-')
+	{
+		buf_sig_digits++;
+		orig_has_neg = 1;
+	}
+
+	// Not all sscanf implementations actually work
+	if (sscanf_is_broken && saved_errno != ERANGE)
+	{
+		char buf_cmp[100];
+		char *buf_cmp_start = buf_cmp;
+		int recheck_has_neg = 0;
+		int buf_cmp_len;
+
+		// Skip leading zeros, but keep at least one digit
+		while (buf_sig_digits[0] == '0' && buf_sig_digits[1] != '\0')
+			buf_sig_digits++;
+		if (num64 == 0) // assume all sscanf impl's will parse -0 to 0
+			orig_has_neg = 0; // "-0" is the same as just plain "0"
+
+		snprintf(buf_cmp_start, sizeof(buf_cmp), "%" PRId64, num64);
+		if (*buf_cmp_start == '-')
+		{
+			recheck_has_neg = 1;
+			buf_cmp_start++;
+		}
+		// No need to skip leading spaces or zeros here.
+
+		buf_cmp_len = strlen(buf_cmp_start);
+		/**
+		 * If the sign is different, or
+		 * some of the digits are different, or
+		 * there is another digit present in the original string
+		 * then we have NOT successfully parsed the value.
+		 */
+		if (orig_has_neg != recheck_has_neg ||
+		    strncmp(buf_sig_digits, buf_cmp_start, strlen(buf_cmp_start)) != 0 ||
+			((int)strlen(buf_sig_digits) != buf_cmp_len &&
+			 isdigit((int)buf_sig_digits[buf_cmp_len])
+		    )
+		   )
+		{
+			saved_errno = ERANGE;
+		}
+	}
+
+	// Not all sscanf impl's set the value properly when out of range.
+	// Always do this, even for properly functioning implementations,
+	// since it shouldn't slow things down much.
+	if (saved_errno == ERANGE)
+	{
+		if (orig_has_neg)
+			num64 = INT64_MIN;
+		else
+			num64 = INT64_MAX;
+	}
+	*retval = num64;
+	return 0;
+}
+
+#ifndef HAVE_REALLOC
+void* rpl_realloc(void* p, size_t n)
+{
+	if (n == 0)
+		n = 1;
+	if (p == 0)
+		return malloc(n);
+	return realloc(p, n);
+}
+#endif
+
+#define NELEM(a)        (sizeof(a) / sizeof(a[0]))
+static const char* json_type_name[] = {
+  /* If you change this, be sure to update the enum json_type definition too */
+  "null",
+  "boolean",
+  "double",
+  "int",
+  "object",
+  "array",
+  "string",
+};
+
+const char *json_type_to_name(enum json_type o_type)
+{
+	int o_type_int = (int)o_type;
+	if (o_type_int < 0 || o_type_int >= (int)NELEM(json_type_name))
+	{
+		MC_ERROR("json_type_to_name: type %d is out of range [0,%d]\n", o_type, NELEM(json_type_name));
+		return NULL;
+	}
+	return json_type_name[o_type];
+}
+
diff --git a/Src/json-c/libjson.c b/Src/json-c/libjson.c
new file mode 100644
index 0000000..b19df42
--- /dev/null
+++ b/Src/json-c/libjson.c
@@ -0,0 +1,26 @@
+
+/* dummy source file for compatibility purposes */
+
+#if defined(HAVE_CDEFS_H)
+#include <sys/cdefs.h>
+#endif
+
+#ifndef __warn_references
+
+#if defined(__GNUC__)  && defined (HAS_GNU_WARNING_LONG)
+
+#define __warn_references(sym,msg)                  \
+  __asm__(".section .gnu" #sym ",\n\t.ascii \"" msg "\"\n\t.text");
+
+#else
+#define __warn_references(sym,msg)    /* nothing */
+#endif
+
+#endif
+
+#include "json_object.h"
+
+__warn_references(json_object_get, "Warning: please link against libjson-c instead of libjson");
+
+/*        __asm__(".section .gnu.warning." __STRING(sym)  \
+            " ; .ascii \"" msg "\" ; .text") */
diff --git a/Src/json-c/linkhash.c b/Src/json-c/linkhash.c
new file mode 100644
index 0000000..6ec2399
--- /dev/null
+++ b/Src/json-c/linkhash.c
@@ -0,0 +1,670 @@
+/*
+ * $Id: linkhash.c,v 1.4 2006/01/26 02:16:28 mclark Exp $
+ *
+ * Copyright (c) 2004, 2005 Metaparadigm Pte. Ltd.
+ * Michael Clark <michael at metaparadigm.com>
+ * Copyright (c) 2009 Hewlett-Packard Development Company, L.P.
+ *
+ * This library is free software; you can redistribute it and/or modify
+ * it under the terms of the MIT license. See COPYING for details.
+ *
+ */
+
+#include "config.h"
+
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+#include <stdarg.h>
+#include <stddef.h>
+#include <limits.h>
+
+#ifdef HAVE_ENDIAN_H
+#ifdef __APPLE__
+# include <machine/endian.h>    /* attempt to define endianness */
+#else
+# include <endian.h>    /* attempt to define endianness */
+#endif
+#endif
+
+#ifdef _MSC_VER
+# define WIN32_LEAN_AND_MEAN
+# include <windows.h>   /* Get InterlockedCompareExchange */
+#endif
+
+#include "random_seed.h"
+#include "linkhash.h"
+
+/* hash functions */
+static unsigned long lh_char_hash(const void *k);
+static unsigned long lh_perllike_str_hash(const void *k);
+static lh_hash_fn *char_hash_fn = lh_char_hash;
+
+int
+json_global_set_string_hash(const int h)
+{
+	switch(h) {
+	case JSON_C_STR_HASH_DFLT:
+		char_hash_fn = lh_char_hash;
+		break;
+	case JSON_C_STR_HASH_PERLLIKE:
+		char_hash_fn = lh_perllike_str_hash;
+		break;
+	default:
+		return -1;
+	}
+	return 0;
+}
+
+void lh_abort(const char *msg, ...)
+{
+	va_list ap;
+	va_start(ap, msg);
+	vprintf(msg, ap);
+	va_end(ap);
+	exit(1);
+}
+
+static unsigned long lh_ptr_hash(const void *k)
+{
+	/* CAW: refactored to be 64bit nice */
+	return (unsigned long)((((ptrdiff_t)k * LH_PRIME) >> 4) & ULONG_MAX);
+}
+
+int lh_ptr_equal(const void *k1, const void *k2)
+{
+	return (k1 == k2);
+}
+
+/*
+ * hashlittle from lookup3.c, by Bob Jenkins, May 2006, Public Domain.
+ * http://burtleburtle.net/bob/c/lookup3.c
+ * minor modifications to make functions static so no symbols are exported
+ * minor mofifications to compile with -Werror
+ */
+
+/*
+-------------------------------------------------------------------------------
+lookup3.c, by Bob Jenkins, May 2006, Public Domain.
+
+These are functions for producing 32-bit hashes for hash table lookup.
+hashword(), hashlittle(), hashlittle2(), hashbig(), mix(), and final()
+are externally useful functions.  Routines to test the hash are included
+if SELF_TEST is defined.  You can use this free for any purpose.  It's in
+the public domain.  It has no warranty.
+
+You probably want to use hashlittle().  hashlittle() and hashbig()
+hash byte arrays.  hashlittle() is is faster than hashbig() on
+little-endian machines.  Intel and AMD are little-endian machines.
+On second thought, you probably want hashlittle2(), which is identical to
+hashlittle() except it returns two 32-bit hashes for the price of one.
+You could implement hashbig2() if you wanted but I haven't bothered here.
+
+If you want to find a hash of, say, exactly 7 integers, do
+  a = i1;  b = i2;  c = i3;
+  mix(a,b,c);
+  a += i4; b += i5; c += i6;
+  mix(a,b,c);
+  a += i7;
+  final(a,b,c);
+then use c as the hash value.  If you have a variable length array of
+4-byte integers to hash, use hashword().  If you have a byte array (like
+a character string), use hashlittle().  If you have several byte arrays, or
+a mix of things, see the comments above hashlittle().
+
+Why is this so big?  I read 12 bytes at a time into 3 4-byte integers,
+then mix those integers.  This is fast (you can do a lot more thorough
+mixing with 12*3 instructions on 3 integers than you can with 3 instructions
+on 1 byte), but shoehorning those bytes into integers efficiently is messy.
+-------------------------------------------------------------------------------
+*/
+
+/*
+ * My best guess at if you are big-endian or little-endian.  This may
+ * need adjustment.
+ */
+#if (defined(__BYTE_ORDER) && defined(__LITTLE_ENDIAN) && \
+     __BYTE_ORDER == __LITTLE_ENDIAN) || \
+    (defined(i386) || defined(__i386__) || defined(__i486__) || \
+     defined(__i586__) || defined(__i686__) || defined(vax) || defined(MIPSEL))
+# define HASH_LITTLE_ENDIAN 1
+# define HASH_BIG_ENDIAN 0
+#elif (defined(__BYTE_ORDER) && defined(__BIG_ENDIAN) && \
+       __BYTE_ORDER == __BIG_ENDIAN) || \
+      (defined(sparc) || defined(POWERPC) || defined(mc68000) || defined(sel))
+# define HASH_LITTLE_ENDIAN 0
+# define HASH_BIG_ENDIAN 1
+#else
+# define HASH_LITTLE_ENDIAN 0
+# define HASH_BIG_ENDIAN 0
+#endif
+
+#define hashsize(n) ((uint32_t)1<<(n))
+#define hashmask(n) (hashsize(n)-1)
+#define rot(x,k) (((x)<<(k)) | ((x)>>(32-(k))))
+
+/*
+-------------------------------------------------------------------------------
+mix -- mix 3 32-bit values reversibly.
+
+This is reversible, so any information in (a,b,c) before mix() is
+still in (a,b,c) after mix().
+
+If four pairs of (a,b,c) inputs are run through mix(), or through
+mix() in reverse, there are at least 32 bits of the output that
+are sometimes the same for one pair and different for another pair.
+This was tested for:
+* pairs that differed by one bit, by two bits, in any combination
+  of top bits of (a,b,c), or in any combination of bottom bits of
+  (a,b,c).
+* "differ" is defined as +, -, ^, or ~^.  For + and -, I transformed
+  the output delta to a Gray code (a^(a>>1)) so a string of 1's (as
+  is commonly produced by subtraction) look like a single 1-bit
+  difference.
+* the base values were pseudorandom, all zero but one bit set, or
+  all zero plus a counter that starts at zero.
+
+Some k values for my "a-=c; a^=rot(c,k); c+=b;" arrangement that
+satisfy this are
+    4  6  8 16 19  4
+    9 15  3 18 27 15
+   14  9  3  7 17  3
+Well, "9 15 3 18 27 15" didn't quite get 32 bits diffing
+for "differ" defined as + with a one-bit base and a two-bit delta.  I
+used http://burtleburtle.net/bob/hash/avalanche.html to choose
+the operations, constants, and arrangements of the variables.
+
+This does not achieve avalanche.  There are input bits of (a,b,c)
+that fail to affect some output bits of (a,b,c), especially of a.  The
+most thoroughly mixed value is c, but it doesn't really even achieve
+avalanche in c.
+
+This allows some parallelism.  Read-after-writes are good at doubling
+the number of bits affected, so the goal of mixing pulls in the opposite
+direction as the goal of parallelism.  I did what I could.  Rotates
+seem to cost as much as shifts on every machine I could lay my hands
+on, and rotates are much kinder to the top and bottom bits, so I used
+rotates.
+-------------------------------------------------------------------------------
+*/
+#define mix(a,b,c) \
+{ \
+  a -= c;  a ^= rot(c, 4);  c += b; \
+  b -= a;  b ^= rot(a, 6);  a += c; \
+  c -= b;  c ^= rot(b, 8);  b += a; \
+  a -= c;  a ^= rot(c,16);  c += b; \
+  b -= a;  b ^= rot(a,19);  a += c; \
+  c -= b;  c ^= rot(b, 4);  b += a; \
+}
+
+/*
+-------------------------------------------------------------------------------
+final -- final mixing of 3 32-bit values (a,b,c) into c
+
+Pairs of (a,b,c) values differing in only a few bits will usually
+produce values of c that look totally different.  This was tested for
+* pairs that differed by one bit, by two bits, in any combination
+  of top bits of (a,b,c), or in any combination of bottom bits of
+  (a,b,c).
+* "differ" is defined as +, -, ^, or ~^.  For + and -, I transformed
+  the output delta to a Gray code (a^(a>>1)) so a string of 1's (as
+  is commonly produced by subtraction) look like a single 1-bit
+  difference.
+* the base values were pseudorandom, all zero but one bit set, or
+  all zero plus a counter that starts at zero.
+
+These constants passed:
+ 14 11 25 16 4 14 24
+ 12 14 25 16 4 14 24
+and these came close:
+  4  8 15 26 3 22 24
+ 10  8 15 26 3 22 24
+ 11  8 15 26 3 22 24
+-------------------------------------------------------------------------------
+*/
+#define final(a,b,c) \
+{ \
+  c ^= b; c -= rot(b,14); \
+  a ^= c; a -= rot(c,11); \
+  b ^= a; b -= rot(a,25); \
+  c ^= b; c -= rot(b,16); \
+  a ^= c; a -= rot(c,4);  \
+  b ^= a; b -= rot(a,14); \
+  c ^= b; c -= rot(b,24); \
+}
+
+
+/*
+-------------------------------------------------------------------------------
+hashlittle() -- hash a variable-length key into a 32-bit value
+  k       : the key (the unaligned variable-length array of bytes)
+  length  : the length of the key, counting by bytes
+  initval : can be any 4-byte value
+Returns a 32-bit value.  Every bit of the key affects every bit of
+the return value.  Two keys differing by one or two bits will have
+totally different hash values.
+
+The best hash table sizes are powers of 2.  There is no need to do
+mod a prime (mod is sooo slow!).  If you need less than 32 bits,
+use a bitmask.  For example, if you need only 10 bits, do
+  h = (h & hashmask(10));
+In which case, the hash table should have hashsize(10) elements.
+
+If you are hashing n strings (uint8_t **)k, do it like this:
+  for (i=0, h=0; i<n; ++i) h = hashlittle( k[i], len[i], h);
+
+By Bob Jenkins, 2006.  bob_jenkins at burtleburtle.net.  You may use this
+code any way you wish, private, educational, or commercial.  It's free.
+
+Use for hash table lookup, or anything where one collision in 2^^32 is
+acceptable.  Do NOT use for cryptographic purposes.
+-------------------------------------------------------------------------------
+*/
+
+static uint32_t hashlittle( const void *key, size_t length, uint32_t initval)
+{
+  uint32_t a,b,c;                                          /* internal state */
+  union { const void *ptr; size_t i; } u;     /* needed for Mac Powerbook G4 */
+
+  /* Set up the internal state */
+  a = b = c = 0xdeadbeef + ((uint32_t)length) + initval;
+
+  u.ptr = key;
+  if (HASH_LITTLE_ENDIAN && ((u.i & 0x3) == 0)) {
+    const uint32_t *k = (const uint32_t *)key;         /* read 32-bit chunks */
+
+    /*------ all but last block: aligned reads and affect 32 bits of (a,b,c) */
+    while (length > 12)
+    {
+      a += k[0];
+      b += k[1];
+      c += k[2];
+      mix(a,b,c);
+      length -= 12;
+      k += 3;
+    }
+
+    /*----------------------------- handle the last (probably partial) block */
+    /*
+     * "k[2]&0xffffff" actually reads beyond the end of the string, but
+     * then masks off the part it's not allowed to read.  Because the
+     * string is aligned, the masked-off tail is in the same word as the
+     * rest of the string.  Every machine with memory protection I've seen
+     * does it on word boundaries, so is OK with this.  But VALGRIND will
+     * still catch it and complain.  The masking trick does make the hash
+     * noticably faster for short strings (like English words).
+     */
+#ifndef VALGRIND
+
+    switch(length)
+    {
+    case 12: c+=k[2]; b+=k[1]; a+=k[0]; break;
+    case 11: c+=k[2]&0xffffff; b+=k[1]; a+=k[0]; break;
+    case 10: c+=k[2]&0xffff; b+=k[1]; a+=k[0]; break;
+    case 9 : c+=k[2]&0xff; b+=k[1]; a+=k[0]; break;
+    case 8 : b+=k[1]; a+=k[0]; break;
+    case 7 : b+=k[1]&0xffffff; a+=k[0]; break;
+    case 6 : b+=k[1]&0xffff; a+=k[0]; break;
+    case 5 : b+=k[1]&0xff; a+=k[0]; break;
+    case 4 : a+=k[0]; break;
+    case 3 : a+=k[0]&0xffffff; break;
+    case 2 : a+=k[0]&0xffff; break;
+    case 1 : a+=k[0]&0xff; break;
+    case 0 : return c;              /* zero length strings require no mixing */
+    }
+
+#else /* make valgrind happy */
+
+    const uint8_t  *k8 = (const uint8_t *)k;
+    switch(length)
+    {
+    case 12: c+=k[2]; b+=k[1]; a+=k[0]; break;
+    case 11: c+=((uint32_t)k8[10])<<16;  /* fall through */
+    case 10: c+=((uint32_t)k8[9])<<8;    /* fall through */
+    case 9 : c+=k8[8];                   /* fall through */
+    case 8 : b+=k[1]; a+=k[0]; break;
+    case 7 : b+=((uint32_t)k8[6])<<16;   /* fall through */
+    case 6 : b+=((uint32_t)k8[5])<<8;    /* fall through */
+    case 5 : b+=k8[4];                   /* fall through */
+    case 4 : a+=k[0]; break;
+    case 3 : a+=((uint32_t)k8[2])<<16;   /* fall through */
+    case 2 : a+=((uint32_t)k8[1])<<8;    /* fall through */
+    case 1 : a+=k8[0]; break;
+    case 0 : return c;
+    }
+
+#endif /* !valgrind */
+
+  } else if (HASH_LITTLE_ENDIAN && ((u.i & 0x1) == 0)) {
+    const uint16_t *k = (const uint16_t *)key;         /* read 16-bit chunks */
+    const uint8_t  *k8;
+
+    /*--------------- all but last block: aligned reads and different mixing */
+    while (length > 12)
+    {
+      a += k[0] + (((uint32_t)k[1])<<16);
+      b += k[2] + (((uint32_t)k[3])<<16);
+      c += k[4] + (((uint32_t)k[5])<<16);
+      mix(a,b,c);
+      length -= 12;
+      k += 6;
+    }
+
+    /*----------------------------- handle the last (probably partial) block */
+    k8 = (const uint8_t *)k;
+    switch(length)
+    {
+    case 12: c+=k[4]+(((uint32_t)k[5])<<16);
+             b+=k[2]+(((uint32_t)k[3])<<16);
+             a+=k[0]+(((uint32_t)k[1])<<16);
+             break;
+    case 11: c+=((uint32_t)k8[10])<<16;     /* fall through */
+    case 10: c+=k[4];
+             b+=k[2]+(((uint32_t)k[3])<<16);
+             a+=k[0]+(((uint32_t)k[1])<<16);
+             break;
+    case 9 : c+=k8[8];                      /* fall through */
+    case 8 : b+=k[2]+(((uint32_t)k[3])<<16);
+             a+=k[0]+(((uint32_t)k[1])<<16);
+             break;
+    case 7 : b+=((uint32_t)k8[6])<<16;      /* fall through */
+    case 6 : b+=k[2];
+             a+=k[0]+(((uint32_t)k[1])<<16);
+             break;
+    case 5 : b+=k8[4];                      /* fall through */
+    case 4 : a+=k[0]+(((uint32_t)k[1])<<16);
+             break;
+    case 3 : a+=((uint32_t)k8[2])<<16;      /* fall through */
+    case 2 : a+=k[0];
+             break;
+    case 1 : a+=k8[0];
+             break;
+    case 0 : return c;                     /* zero length requires no mixing */
+    }
+
+  } else {                        /* need to read the key one byte at a time */
+    const uint8_t *k = (const uint8_t *)key;
+
+    /*--------------- all but the last block: affect some 32 bits of (a,b,c) */
+    while (length > 12)
+    {
+      a += k[0];
+      a += ((uint32_t)k[1])<<8;
+      a += ((uint32_t)k[2])<<16;
+      a += ((uint32_t)k[3])<<24;
+      b += k[4];
+      b += ((uint32_t)k[5])<<8;
+      b += ((uint32_t)k[6])<<16;
+      b += ((uint32_t)k[7])<<24;
+      c += k[8];
+      c += ((uint32_t)k[9])<<8;
+      c += ((uint32_t)k[10])<<16;
+      c += ((uint32_t)k[11])<<24;
+      mix(a,b,c);
+      length -= 12;
+      k += 12;
+    }
+
+    /*-------------------------------- last block: affect all 32 bits of (c) */
+    switch(length)                   /* all the case statements fall through */
+    {
+    case 12: c+=((uint32_t)k[11])<<24;
+    case 11: c+=((uint32_t)k[10])<<16;
+    case 10: c+=((uint32_t)k[9])<<8;
+    case 9 : c+=k[8];
+    case 8 : b+=((uint32_t)k[7])<<24;
+    case 7 : b+=((uint32_t)k[6])<<16;
+    case 6 : b+=((uint32_t)k[5])<<8;
+    case 5 : b+=k[4];
+    case 4 : a+=((uint32_t)k[3])<<24;
+    case 3 : a+=((uint32_t)k[2])<<16;
+    case 2 : a+=((uint32_t)k[1])<<8;
+    case 1 : a+=k[0];
+             break;
+    case 0 : return c;
+    }
+  }
+
+  final(a,b,c);
+  return c;
+}
+
+/* a simple hash function similiar to what perl does for strings.
+ * for good results, the string should not be excessivly large.
+ */
+static unsigned long lh_perllike_str_hash(const void *k) 
+{
+    const char *rkey = (char*) k;
+    unsigned hashval = 1;
+
+    while (*rkey)
+        hashval = hashval * 33 + *rkey++;
+
+    return hashval;
+}
+
+static unsigned long lh_char_hash(const void *k)
+{
+	static volatile int random_seed = -1;
+
+	if (random_seed == -1) {
+		int seed;
+		/* we can't use -1 as it is the unitialized sentinel */
+		while ((seed = json_c_get_random_seed()) == -1);
+#if defined __GNUC__
+		(void)__sync_val_compare_and_swap(&random_seed, -1, seed);
+#elif defined _MSC_VER
+		InterlockedCompareExchange((LONG *)&random_seed, seed, -1);
+#else
+#warning "racy random seed initializtion if used by multiple threads"
+		random_seed = seed; /* potentially racy */
+#endif
+	}
+
+	return hashlittle((const char*)k, strlen((const char*)k), random_seed);
+}
+
+int lh_char_equal(const void *k1, const void *k2)
+{
+	return (strcmp((const char*)k1, (const char*)k2) == 0);
+}
+
+struct lh_table* lh_table_new(int size,
+			      lh_entry_free_fn *free_fn,
+			      lh_hash_fn *hash_fn,
+			      lh_equal_fn *equal_fn)
+{
+	int i;
+	struct lh_table *t;
+
+	t = (struct lh_table*)calloc(1, sizeof(struct lh_table));
+	if (!t)
+		return NULL;
+
+	t->count = 0;
+	t->size = size;
+	t->table = (struct lh_entry*)calloc(size, sizeof(struct lh_entry));
+	if (!t->table)
+	{
+		free(t);
+		return NULL;
+	}
+	t->free_fn = free_fn;
+	t->hash_fn = hash_fn;
+	t->equal_fn = equal_fn;
+	for(i = 0; i < size; i++) t->table[i].k = LH_EMPTY;
+	return t;
+}
+
+struct lh_table* lh_kchar_table_new(int size,
+				    lh_entry_free_fn *free_fn)
+{
+	return lh_table_new(size, free_fn, char_hash_fn, lh_char_equal);
+}
+
+struct lh_table* lh_kptr_table_new(int size,
+				   lh_entry_free_fn *free_fn)
+{
+	return lh_table_new(size, free_fn, lh_ptr_hash, lh_ptr_equal);
+}
+
+int lh_table_resize(struct lh_table *t, int new_size)
+{
+	struct lh_table *new_t;
+        struct lh_entry *ent;
+
+	new_t = lh_table_new(new_size, NULL, t->hash_fn, t->equal_fn);
+	if (new_t == NULL)
+		return -1;
+
+	for (ent = t->head; ent != NULL; ent = ent->next)
+	{
+		unsigned long h = lh_get_hash(new_t, ent->k);
+		unsigned int opts = 0;
+		if (ent->k_is_constant)
+			opts = JSON_C_OBJECT_KEY_IS_CONSTANT;
+		if (lh_table_insert_w_hash(new_t, ent->k, ent->v, h, opts) != 0)
+		{
+			lh_table_free(new_t);
+			return -1;
+		}
+	}
+	free(t->table);
+	t->table = new_t->table;
+	t->size = new_size;
+	t->head = new_t->head;
+	t->tail = new_t->tail;
+	free(new_t);
+
+	return 0;
+}
+
+void lh_table_free(struct lh_table *t)
+{
+	struct lh_entry *c;
+	for(c = t->head; c != NULL; c = c->next) {
+		if(t->free_fn) {
+			t->free_fn(c);
+		}
+	}
+	free(t->table);
+	free(t);
+}
+
+
+int lh_table_insert_w_hash(struct lh_table *t, void *k, const void *v, const unsigned long h, const unsigned opts)
+{
+	unsigned long n;
+
+	if (t->count >= t->size * LH_LOAD_FACTOR)
+		if (lh_table_resize(t, t->size * 2) != 0)
+			return -1;
+
+	n = h % t->size;
+
+	while( 1 ) {
+		if(t->table[n].k == LH_EMPTY || t->table[n].k == LH_FREED) break;
+		if ((int)++n == t->size) n = 0;
+	}
+
+	t->table[n].k = k;
+	t->table[n].k_is_constant = (opts & JSON_C_OBJECT_KEY_IS_CONSTANT);
+	t->table[n].v = v;
+	t->count++;
+
+	if(t->head == NULL) {
+		t->head = t->tail = &t->table[n];
+		t->table[n].next = t->table[n].prev = NULL;
+	} else {
+		t->tail->next = &t->table[n];
+		t->table[n].prev = t->tail;
+		t->table[n].next = NULL;
+		t->tail = &t->table[n];
+	}
+
+	return 0;
+}
+int lh_table_insert(struct lh_table *t, void *k, const void *v)
+{
+	return lh_table_insert_w_hash(t, k, v, lh_get_hash(t, k), 0);
+}
+
+
+struct lh_entry* lh_table_lookup_entry_w_hash(struct lh_table *t, const void *k, const unsigned long h)
+{
+	unsigned long n = h % t->size;
+	int count = 0;
+
+	while( count < t->size ) {
+		if(t->table[n].k == LH_EMPTY) return NULL;
+		if(t->table[n].k != LH_FREED &&
+		   t->equal_fn(t->table[n].k, k)) return &t->table[n];
+		if ((int)++n == t->size) n = 0;
+		count++;
+	}
+	return NULL;
+}
+
+struct lh_entry* lh_table_lookup_entry(struct lh_table *t, const void *k)
+{
+	return lh_table_lookup_entry_w_hash(t, k, lh_get_hash(t, k));
+}
+
+const void* lh_table_lookup(struct lh_table *t, const void *k)
+{
+	void *result;
+	lh_table_lookup_ex(t, k, &result);
+	return result;
+}
+
+json_bool lh_table_lookup_ex(struct lh_table* t, const void* k, void **v)
+{
+	struct lh_entry *e = lh_table_lookup_entry(t, k);
+	if (e != NULL) {
+		if (v != NULL) *v = (void *)e->v;
+		return TRUE; /* key found */
+	}
+	if (v != NULL) *v = NULL;
+	return FALSE; /* key not found */
+}
+
+int lh_table_delete_entry(struct lh_table *t, struct lh_entry *e)
+{
+	ptrdiff_t n = (ptrdiff_t)(e - t->table); /* CAW: fixed to be 64bit nice, still need the crazy negative case... */
+
+	/* CAW: this is bad, really bad, maybe stack goes other direction on this machine... */
+	if(n < 0) { return -2; }
+
+	if(t->table[n].k == LH_EMPTY || t->table[n].k == LH_FREED) return -1;
+	t->count--;
+	if(t->free_fn) t->free_fn(e);
+	t->table[n].v = NULL;
+	t->table[n].k = LH_FREED;
+	if(t->tail == &t->table[n] && t->head == &t->table[n]) {
+		t->head = t->tail = NULL;
+	} else if (t->head == &t->table[n]) {
+		t->head->next->prev = NULL;
+		t->head = t->head->next;
+	} else if (t->tail == &t->table[n]) {
+		t->tail->prev->next = NULL;
+		t->tail = t->tail->prev;
+	} else {
+		t->table[n].prev->next = t->table[n].next;
+		t->table[n].next->prev = t->table[n].prev;
+	}
+	t->table[n].next = t->table[n].prev = NULL;
+	return 0;
+}
+
+
+int lh_table_delete(struct lh_table *t, const void *k)
+{
+	struct lh_entry *e = lh_table_lookup_entry(t, k);
+	if(!e) return -1;
+	return lh_table_delete_entry(t, e);
+}
+
+int lh_table_length(struct lh_table *t)
+{
+	return t->count;
+}
diff --git a/Src/json-c/printbuf.c b/Src/json-c/printbuf.c
new file mode 100644
index 0000000..2cf152a
--- /dev/null
+++ b/Src/json-c/printbuf.c
@@ -0,0 +1,193 @@
+/*
+ * $Id: printbuf.c,v 1.5 2006/01/26 02:16:28 mclark Exp $
+ *
+ * Copyright (c) 2004, 2005 Metaparadigm Pte. Ltd.
+ * Michael Clark <michael at metaparadigm.com>
+ *
+ * This library is free software; you can redistribute it and/or modify
+ * it under the terms of the MIT license. See COPYING for details.
+ *
+ *
+ * Copyright (c) 2008-2009 Yahoo! Inc.  All rights reserved.
+ * The copyrights to the contents of this file are licensed under the MIT License
+ * (http://www.opensource.org/licenses/mit-license.php)
+ */
+
+#include "config.h"
+#define _GNU_SOURCE
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#ifdef HAVE_STDARG_H
+# include <stdarg.h>
+#else /* !HAVE_STDARG_H */
+# error Not enough var arg support!
+#endif /* HAVE_STDARG_H */
+
+#include "debug.h"
+#include "printbuf.h"
+
+static int printbuf_extend(struct printbuf *p, int min_size);
+
+struct printbuf* printbuf_new(void)
+{
+  struct printbuf *p;
+
+  p = (struct printbuf*)calloc(1, sizeof(struct printbuf));
+  if(!p) return NULL;
+  p->size = 32;
+  p->bpos = 0;
+  if(!(p->buf = (char*)malloc(p->size))) {
+    free(p);
+    return NULL;
+  }
+  return p;
+}
+
+
+/**
+ * Extend the buffer p so it has a size of at least min_size.
+ *
+ * If the current size is large enough, nothing is changed.
+ *
+ * Note: this does not check the available space!  The caller
+ *  is responsible for performing those calculations.
+ */
+static int printbuf_extend(struct printbuf *p, int min_size)
+{
+	char *t;
+	int new_size;
+
+	if (p->size >= min_size)
+		return 0;
+
+	new_size = p->size * 2;
+	if (new_size < min_size + 8)
+		new_size =  min_size + 8;
+#ifdef PRINTBUF_DEBUG
+	MC_DEBUG("printbuf_memappend: realloc "
+	  "bpos=%d min_size=%d old_size=%d new_size=%d\n",
+	  p->bpos, min_size, p->size, new_size);
+#endif /* PRINTBUF_DEBUG */
+	if(!(t = (char*)realloc(p->buf, new_size)))
+		return -1;
+	p->size = new_size;
+	p->buf = t;
+	return 0;
+}
+
+int printbuf_memappend(struct printbuf *p, const char *buf, int size)
+{
+  if (p->size <= p->bpos + size + 1) {
+    if (printbuf_extend(p, p->bpos + size + 1) < 0)
+      return -1;
+  }
+  memcpy(p->buf + p->bpos, buf, size);
+  p->bpos += size;
+  p->buf[p->bpos]= '\0';
+  return size;
+}
+
+int printbuf_memset(struct printbuf *pb, int offset, int charvalue, int len)
+{
+	int size_needed;
+
+	if (offset == -1)
+		offset = pb->bpos;
+	size_needed = offset + len;
+	if (pb->size < size_needed)
+	{
+		if (printbuf_extend(pb, size_needed) < 0)
+			return -1;
+	}
+
+	memset(pb->buf + offset, charvalue, len);
+	if (pb->bpos < size_needed)
+		pb->bpos = size_needed;
+
+	return 0;
+}
+
+#if !defined(HAVE_VSNPRINTF) && defined(_MSC_VER)
+# define vsnprintf _vsnprintf
+#elif !defined(HAVE_VSNPRINTF) /* !HAVE_VSNPRINTF */
+# error Need vsnprintf!
+#endif /* !HAVE_VSNPRINTF && defined(WIN32) */
+
+#if !defined(HAVE_VASPRINTF)
+/* CAW: compliant version of vasprintf */
+static int vasprintf(char **buf, const char *fmt, va_list ap)
+{
+#ifndef WIN32
+	static char _T_emptybuffer = '\0';
+#endif /* !defined(WIN32) */
+	int chars;
+	char *b;
+
+	if(!buf) { return -1; }
+
+#ifdef WIN32
+	chars = _vscprintf(fmt, ap)+1;
+#else /* !defined(WIN32) */
+	/* CAW: RAWR! We have to hope to god here that vsnprintf doesn't overwrite
+	   our buffer like on some 64bit sun systems.... but hey, its time to move on */
+	chars = vsnprintf(&_T_emptybuffer, 0, fmt, ap)+1;
+	if(chars < 0) { chars *= -1; } /* CAW: old glibc versions have this problem */
+#endif /* defined(WIN32) */
+
+	b = (char*)malloc(sizeof(char)*chars);
+	if(!b) { return -1; }
+
+	if((chars = vsprintf(b, fmt, ap)) < 0)
+	{
+		free(b);
+	} else {
+		*buf = b;
+	}
+
+	return chars;
+}
+#endif /* !HAVE_VASPRINTF */
+
+int sprintbuf(struct printbuf *p, const char *msg, ...)
+{
+  va_list ap;
+  char *t;
+  int size;
+  char buf[128];
+
+  /* user stack buffer first */
+  va_start(ap, msg);
+  size = vsnprintf(buf, 128, msg, ap);
+  va_end(ap);
+  /* if string is greater than stack buffer, then use dynamic string
+     with vasprintf.  Note: some implementation of vsnprintf return -1
+     if output is truncated whereas some return the number of bytes that
+     would have been written - this code handles both cases. */
+  if(size == -1 || size > 127) {
+    va_start(ap, msg);
+    if((size = vasprintf(&t, msg, ap)) < 0) { va_end(ap); return -1; }
+    va_end(ap);
+    printbuf_memappend(p, t, size);
+    free(t);
+    return size;
+  } else {
+    printbuf_memappend(p, buf, size);
+    return size;
+  }
+}
+
+void printbuf_reset(struct printbuf *p)
+{
+  p->buf[0] = '\0';
+  p->bpos = 0;
+}
+
+void printbuf_free(struct printbuf *p)
+{
+  if(p) {
+    free(p->buf);
+    free(p);
+  }
+}
diff --git a/Src/json-c/random_seed.c b/Src/json-c/random_seed.c
new file mode 100644
index 0000000..e0fa981
--- /dev/null
+++ b/Src/json-c/random_seed.c
@@ -0,0 +1,238 @@
+/*
+ * random_seed.c
+ *
+ * Copyright (c) 2013 Metaparadigm Pte. Ltd.
+ * Michael Clark <michael at metaparadigm.com>
+ *
+ * This library is free software; you can redistribute it and/or modify
+ * it under the terms of the MIT license. See COPYING for details.
+ *
+ */
+
+#include <stdio.h>
+#include "config.h"
+#include "random_seed.h"
+
+#define DEBUG_SEED(s)
+
+
+#if defined ENABLE_RDRAND
+
+/* cpuid */
+
+#if defined __GNUC__ && (defined __i386__ || defined __x86_64__)
+#define HAS_X86_CPUID 1
+
+static void do_cpuid(int regs[], int h)
+{
+    __asm__ __volatile__(
+#if defined __x86_64__
+                         "pushq %%rbx;\n"
+#else
+                         "pushl %%ebx;\n"
+#endif
+                         "cpuid;\n"
+#if defined __x86_64__
+                         "popq %%rbx;\n"
+#else
+                         "popl %%ebx;\n"
+#endif
+                         : "=a"(regs[0]), [ebx] "=r"(regs[1]), "=c"(regs[2]), "=d"(regs[3])
+                         : "a"(h));
+}
+
+#elif defined _MSC_VER
+
+#define HAS_X86_CPUID 1
+#define do_cpuid __cpuid
+
+#endif
+
+/* has_rdrand */
+
+#if HAS_X86_CPUID
+
+static int has_rdrand( void )
+{
+    // CPUID.01H:ECX.RDRAND[bit 30] == 1
+    int regs[4];
+    do_cpuid(regs, 1);
+    return (regs[2] & (1 << 30)) != 0;
+}
+
+#endif
+
+/* get_rdrand_seed - GCC x86 and X64 */
+
+#if defined __GNUC__ && (defined __i386__ || defined __x86_64__)
+
+#define HAVE_RDRAND 1
+
+static int get_rdrand_seed( void )
+{
+    DEBUG_SEED("get_rdrand_seed");
+    int _eax;
+    // rdrand eax
+    __asm__ __volatile__("1: .byte 0x0F\n"
+                         "   .byte 0xC7\n"
+                         "   .byte 0xF0\n"
+                         "   jnc 1b;\n"
+                         : "=a" (_eax));
+    return _eax;
+}
+
+#endif
+
+#if defined _MSC_VER
+
+#if _MSC_VER >= 1700
+#define HAVE_RDRAND 1
+
+/* get_rdrand_seed - Visual Studio 2012 and above */
+
+static int get_rdrand_seed()
+{
+    DEBUG_SEED("get_rdrand_seed");
+    int r;
+    while (_rdrand32_step(&r) == 0);
+    return r;
+}
+
+#elif defined _M_IX86
+#define HAVE_RDRAND 1
+
+/* get_rdrand_seed - Visual Studio 2010 and below - x86 only */
+
+static int get_rdrand_seed( void )
+{
+	DEBUG_SEED("get_rdrand_seed");
+	int _eax;
+retry:
+	// rdrand eax
+	__asm _emit 0x0F __asm _emit 0xC7 __asm _emit 0xF0
+	__asm jnc retry
+	__asm mov _eax, eax
+	return _eax;
+}
+
+#endif
+#endif
+
+#endif /* defined ENABLE_RDRAND */
+
+
+/* has_dev_urandom */
+
+#if defined (__APPLE__) || defined(__unix__) || defined(__linux__)
+
+#include <string.h>
+#include <fcntl.h>
+#include <unistd.h>
+#include <errno.h>
+#include <stdlib.h>
+#include <sys/stat.h>
+
+#define HAVE_DEV_RANDOM 1
+
+static const char *dev_random_file = "/dev/urandom";
+
+static int has_dev_urandom(void)
+{
+    struct stat buf;
+    if (stat(dev_random_file, &buf)) {
+        return 0;
+    }
+    return ((buf.st_mode & S_IFCHR) != 0);
+}
+
+
+/* get_dev_random_seed */
+
+static int get_dev_random_seed(void)
+{
+    DEBUG_SEED("get_dev_random_seed");
+
+    int fd = open(dev_random_file, O_RDONLY);
+    if (fd < 0) {
+        fprintf(stderr, "error opening %s: %s", dev_random_file, strerror(errno));
+        exit(1);
+    }
+
+    int r;
+    ssize_t nread = read(fd, &r, sizeof(r));
+    if (nread != sizeof(r)) {
+        fprintf(stderr, "error short read %s: %s", dev_random_file, strerror(errno));
+        exit(1);
+    }
+
+    close(fd);
+    return r;
+}
+
+#endif
+
+
+/* get_cryptgenrandom_seed */
+
+#ifdef WIN32
+
+#define HAVE_CRYPTGENRANDOM 1
+
+#include <windows.h>
+#include <wincrypt.h>
+#ifndef __GNUC__
+#pragma comment(lib, "advapi32.lib")
+#endif
+
+static int get_cryptgenrandom_seed( void )
+{
+    DEBUG_SEED("get_cryptgenrandom_seed");
+
+    HCRYPTPROV hProvider = 0;
+    int r;
+
+    if (!CryptAcquireContextW(&hProvider, 0, 0, PROV_RSA_FULL, CRYPT_VERIFYCONTEXT | CRYPT_SILENT)) {
+        fprintf(stderr, "error CryptAcquireContextW");
+        exit(1);
+    }
+
+    if (!CryptGenRandom(hProvider, sizeof(r), (BYTE*)&r)) {
+        fprintf(stderr, "error CryptGenRandom");
+        exit(1);
+    }
+
+    CryptReleaseContext(hProvider, 0);
+
+    return r;
+}
+
+#endif
+
+
+/* get_time_seed */
+
+#include <time.h>
+
+static int get_time_seed( void )
+{
+    DEBUG_SEED("get_time_seed");
+
+    return (int)time(NULL) * 433494437;
+}
+
+
+/* json_c_get_random_seed */
+
+int json_c_get_random_seed( void )
+{
+#if HAVE_RDRAND
+    if (has_rdrand()) return get_rdrand_seed();
+#endif
+#if HAVE_DEV_RANDOM
+    if (has_dev_urandom()) return get_dev_random_seed();
+#endif
+#if HAVE_CRYPTGENRANDOM
+    return get_cryptgenrandom_seed();
+#endif
+    return get_time_seed();
+}
diff --git a/Test/CMIP6schema.py b/Test/CMIP6schema.py
new file mode 100644
index 0000000..fde8d55
--- /dev/null
+++ b/Test/CMIP6schema.py
@@ -0,0 +1,25 @@
+from jsonschema import validate
+
+CMIP6schema = {
+    "title": "JSON schema for the CMIP6 ESGF file",
+    "$schema": "http://json-schema.org/draft-04/schema#",
+
+    "type": "object",
+    "dimension": { 
+        "name" : { "type" : "string" },
+    },
+    "variables": {
+        "type": "array",
+            "items": { "type": "string " },
+        "time": {
+            "bounds": { "type" : "time_bnds"} 
+            "units": "days since 2030-1-1" ;
+            "calendar": "360_day" ;
+            "axis": "T" ;
+            "long_name": "time" ;
+            "standard_name": "time" ;
+        }
+    }
+}
+
+
diff --git a/Test/climatology_test_code.f90 b/Test/climatology_test_code.f90
index 57b9bb5..5a10b36 100644
--- a/Test/climatology_test_code.f90
+++ b/Test/climatology_test_code.f90
@@ -221,41 +221,18 @@ PROGRAM ipcc_test_code
   !   experiment conditions, and provide information to be included as 
   !   attributes in all CF-netCDF files written as part of this dataset.
 
-  error_flag = cmor_dataset(                                   &
-       outpath='Test',                                         &
-       experiment_id='abrupt 4XCO2',           &
-       institution=                                            &
-       'GICC (Generic International Climate Center, ' //       &
-       'Geneva, Switzerland)',                                 &
-       source='GICCM1 (2002): ' //                             &
-       'atmosphere:  GICAM3 (gicam_0_brnchT_itea_2, T63L32); '// &
-       'ocean: MOM (mom3_ver_3.5.2, 2x3L15); '             //  &
-       'sea ice: GISIM4; land: GILSM2.5',                      &
-       calendar='360_day',                                      &
-       realization=1,                                          &
-       history='Output from archive/giccm_03_std_2xCO2_2256.', &
-       comment='Equilibrium reached after 30-year spin-up ' // &
-       'after which data were output starting with nominal '// &
-       'date of January 2030',                                 &
-       references='Model described by Koder and Tolkien ' //   &
-       '(J. Geophys. Res., 2001, 576-591).  Also '        //   &
-       'see http://www.GICC.su/giccm/doc/index.html '     //   &
-       ' 2XCO2 simulation described in Dorkey et al. '    //   &
-       '(Clim. Dyn., 2003, 323-357.)', &
-       model_id = 'GICCM1', &
-       forcing='TO',contact="Barry Bonds",institute_id="PCMDI",&
-       parent_experiment_rip="N/A",parent_experiment_id="N/A",branch_time=bt)
+  error_flag = cmor_dataset_json("Test/test2.json")
 
   !  Define all axes that will be needed
 
   ipres = cmor_axis(  &
-       table='Tables/CMIP5_Amon',        &
-       table_entry='plevs',       &
+       table='Tables/CMIP6_Amon.json',        &
+       table_entry='plev17',       &
        units='Pa',                   &
        length=lev,                   &
        coord_vals=plevs)
   ilat = cmor_axis(  &
-       table='Tables/CMIP5_Amon',    &
+       table='Tables/CMIP6_Amon.json',    &
        table_entry='latitude',       &
        units='degrees_north',        &  
        length=lat,                   &
@@ -263,7 +240,7 @@ PROGRAM ipcc_test_code
        cell_bounds=bnds_lat)        
       
   ilon = cmor_axis(  &
-       table='Tables/CMIP5_Amon',    &
+       table='Tables/CMIP6_Amon.json',    &
        table_entry='longitude',      &
        length=lon,                   &
        units='degrees_east',         &
@@ -275,7 +252,7 @@ PROGRAM ipcc_test_code
   !   cmor_write (later, below).
 
   itim = cmor_axis(  &
-       table='Tables/CMIP5_Amon',    &
+       table='Tables/CMIP6_Amon.json',    &
        table_entry='time2',           &
        units='days since 2030-1-1',  &
        length=ntimes*24                &
@@ -286,7 +263,7 @@ PROGRAM ipcc_test_code
   
   DO m=1,n2d
      var2d_ids(m) = cmor_variable(    &
-          table='Tables/CMIP5_Amon',  &
+          table='Tables/CMIP6_Amon.json',  &
           table_entry=entry2d(m),     & 
           units=units2d(m),           & 
           axis_ids=(/ ilon, ilat, ipres, itim /), &
diff --git a/Test/cmor_speed_and_compression.json b/Test/cmor_speed_and_compression.json
new file mode 100644
index 0000000..8fdb5c4
--- /dev/null
+++ b/Test/cmor_speed_and_compression.json
@@ -0,0 +1,61 @@
+{
+    "_control_vocabulary_file":     "CMIP6_CV.json",
+    "_cmip6_option":                "CMIP6",
+
+    "activity_id":                  "CMIP",
+    "outpath":                      "CMIP6",
+    "experiment_id":                "piControl",
+    "calendar":                     "360_day",
+    "realization_index":            "1",
+    "initialization_index":         "1",
+    "physics_index":                "1",
+    "forcing_index":                "1",
+    "source_type":                  "AOGCM",
+    "sub_experiment":               "none",
+    "sub_experiment_id":            "none",
+    "parent_sub_experiment_id":     "N/A",
+    "parent_mip_era":               "N/A",
+    "mip_era":                      "CMIP6",
+    "contact ":                     "Python Coder (python at a.b.com) ",
+    "institution_id":               "PCMDI",
+    "model_id":                     "GICCM1",
+    "history":                      "output from archivcl_A1.nce/giccm_03_std_2xCO2_2256.",
+    "comment":                      "equilibrium reached after 30-year spin-up ",
+    "model_id":                     "pcmdi-10a", 
+    "parent_experiment_rip":        "r1i3p2",
+    "parent_experiment_id":         "lgm",
+    "parent_variant_label":            "r1i3p2",
+    "branch_time":                  "0",
+
+
+    "parent_activity_id":           "CMIP",
+    "parent_source_id":             "GFDL-CM2-1",
+    "parent_variant_label":            "r1i1p1f3",
+
+    "branch_method":                "standard",
+    "branch_time_in_child":         "00D0",
+    "branch_time_in_parent":        "3650.0D0",
+    "branch_time_units_in_parent":  "days since 1000-1-1",
+
+    "further_info_url":             "http://furtherinfo.es-doc.org/<mip_era><institution_id><source_id><experiment_id><sub_experiment_id><variant_label>",
+    "grid":                         "native atmosphere T63 gaussian grid (64x128 latxlon)",
+    "grid_label":                  "gn",
+    "grid_resolution":              "5 km",
+
+    "institution_id":               "CSIRO-BOM",
+    "institution":                  "Commonwealth Scientific and Industrial Research Organisation, Australia, and Bureau of Meteorology, Australia",
+
+    "references":                   "Model described by Koder and Tolkien (J. Geophys. Res.,2001, 576 - 591).  Also see http://www.GICC.su/giccm/doc/index.html  2XCO2 simulation described in Dorkey et al. '(Clim. Dyn., 2003, 323 - 357.)",
+    "run_variant":                  "forcing: black carbon aerosol only",
+    "source_id":                    "NICAM",
+    "source":                       "NICAM:",
+    "output_path_template":         "<activity_id><institution_id><source_id><experiment_id><variant_label><table><variable_id><grid_label><version>",
+    "output_file_template":         "<variable_id><table><experiment_id><source_id><variant_label><grid_label>",
+
+    "license":                      "One of 2 licenses: ----- CMIP6 model data produced by <Your CentreName> is licensed under a Creative Commons Attribution 'NonCommercial Share Alike' 4.0 International License (http://creativecommons.org/licenses/by/4.0/). Use of the data should be acknowledged following guidelines found at <what URL???> The data is hosted via the Earth System Grid Federation. Permissions beyond the scope of this license may be available at http://pcmdi.org/cmip5/terms [...]
+
+
+}
+
+
+
diff --git a/Test/cmor_speed_and_compression.py b/Test/cmor_speed_and_compression.py
index 35b4a39..f82d95c 100644
--- a/Test/cmor_speed_and_compression.py
+++ b/Test/cmor_speed_and_compression.py
@@ -1,4 +1,7 @@
 import cmor,numpy,sys,os
+from time import localtime, strftime
+today = strftime("%Y%m%d", localtime())
+
 try:
     import cdms2
     cdms2.setNetcdfShuffleFlag(0)
@@ -33,22 +36,8 @@ f=open("mytable","w")
 f.write(s)
 f.close()
 
-cmor.setup(inpath="Test",set_verbosity=cmor.CMOR_NORMAL, netcdf_file_action = cmor.CMOR_REPLACE, exit_control = cmor.CMOR_EXIT_ON_MAJOR);
-cmor.dataset(
-    outpath = "Test",
-    experiment_id = "historical",
-    institution = "GICC (Generic International Climate Center, Geneva, Switzerland)",
-    source = "GICCM1 (2002): atmosphere:  GICAM3 (gicam_0_brnchT_itea_2, T63L32); ocean: MOM (mom3_ver_3.5.2, 2x3L15); sea ice: GISIM4; land: GILSM2.5",
-    calendar = "standard",
-    realization = 1,
-    contact = "Charles Doutriaux (doutriaux1 at llnl.gov)",
-    history = "Test for speed and compression.",
-    comment = "NetCDF4 vs NetCDF3 testing",
-    references = "http://cdat.sf.net",
-    leap_year=0,
-    leap_month=0,
-    institute_id="PCMDI",
-    month_lengths=None,model_id="GICCM1",forcing="SO",parent_experiment_id="lgm",branch_time=4.)
+cmor.setup(inpath="Tables",set_verbosity=cmor.CMOR_NORMAL, netcdf_file_action = cmor.CMOR_REPLACE_4, exit_control = cmor.CMOR_EXIT_ON_MAJOR);
+cmor.dataset_json("Test/cmor_speed_and_compression.json")
 
 tables=[]
 tables.append(cmor.load_table("mytable"))
@@ -56,7 +45,8 @@ print 'Tables ids:',tables
 
 
 ## read in data, just one slice
-f=cdms2.open(sys.prefix+'/sample_data/tas_ccsr-95a.xml')
+f=cdms2.open('data/tas_ccsr-95a.xml')
+
 
 s=f("tas",time=slice(0,1),squeeze=1)
 
@@ -135,7 +125,7 @@ cmor.close()
 
 import cdtime,os
 ltime = cdtime.reltime(ntimes-1,'month since 1980').tocomp()
-lcmor = os.stat("Test/CMIP5/output/PCMDI/GICCM1/historical/mon/atmos/tas/r1i1p1/tas_Amon_GICCM1_historical_r1i1p1_198001-%i%.2i.nc" % (ltime.year,ltime.month))[6]
+lcmor = os.stat("CMIP6/CMIP/CSIRO-BOM/NICAM/piControl/r1i1p1f1/Amon/tas/gn/v%s/tas_Amon_piControl_NICAM_r1i1p1f1_gn_198001-%i%.2i.nc" % (today,ltime.year,ltime.month))[6]
 print 'level:',level,"shuffle:",shuffle
 print 'total cmor:',totcmor,mincmor,totcmor/ntimes,maxcmor,lcmor
 lcdms = os.stat("Test/crap.nc")[6]
diff --git a/Test/cmor_speed_and_compression_01.py b/Test/cmor_speed_and_compression_01.py
index b084b74..3d605b0 100644
--- a/Test/cmor_speed_and_compression_01.py
+++ b/Test/cmor_speed_and_compression_01.py
@@ -1,4 +1,7 @@
 import cmor,numpy,sys,os
+from time import localtime, strftime
+today = strftime("%Y%m%d", localtime())
+
 try:
     import cdms2
     cdms2.setNetcdfShuffleFlag(0)
@@ -8,87 +11,72 @@ except:
     print "This test code needs a recent cdms2 interface for i/0"
     sys.exit()
 
-if len(sys.argv)>1:
+if len(sys.argv) > 1:
     level = int(sys.argv[1])
 else:
-    level=int(os.environ.get("DEFLATE_LEVEL",0))
+    level = int(os.environ.get("DEFLATE_LEVEL", 0))
 
-if len(sys.argv)>2:
-    shuffle= int(sys.argv[2])
+if len(sys.argv) > 2:
+    shuffle = int(sys.argv[2])
 else:
-    shuffle=int(os.environ.get("SHUFFLE",0))
+    shuffle = int(os.environ.get("SHUFFLE", 0))
 
-if level==0:
+if level == 0:
     deflate = 0
 else:
     deflate = 1
 
-f=open("Test/speed_test_table_A")
-s=f.read()
+f = open("Test/speed_test_table_A")
+s = f.read()
 f.close()
-s=s.replace("${DEFLATE_LEVEL}",str(level))
-s=s.replace("${DEFLATE}",str(deflate))
-s=s.replace("${SHUFFLE}",str(shuffle))
-f=open("mytable","w")
+s = s.replace("${DEFLATE_LEVEL}", str(level))
+s = s.replace("${DEFLATE}", str(deflate))
+s = s.replace("${SHUFFLE}", str(shuffle))
+f = open("mytable", "w")
 f.write(s)
 f.close()
 
-cmor.setup(inpath="Test",set_verbosity=cmor.CMOR_NORMAL, netcdf_file_action = cmor.CMOR_REPLACE, exit_control = cmor.CMOR_EXIT_ON_MAJOR);
-cmor.dataset(
-    outpath = "Test",
-    experiment_id = "lgm",
-    institution = "GICC (Generic International Climate Center, Geneva, Switzerland)",
-    source = "GICCM1 (2002): atmosphere:  GICAM3 (gicam_0_brnchT_itea_2, T63L32); ocean: MOM (mom3_ver_3.5.2, 2x3L15); sea ice: GISIM4; land: GILSM2.5",
-    calendar = "standard",
-    realization = 1,
-    contact = "Charles Doutriaux (doutriaux1 at llnl.gov)",
-    history = "Test for speed and compression.",
-    comment = "NetCDF4 vs NetCDF3 testing",
-    references = "http://cdat.sf.net",
-    leap_year=0,
-    leap_month=0,
-    institute_id="PCMDI",
-    month_lengths=None,model_id="GICCM1",forcing="SO",parent_experiment_id="N/A",branch_time=0.)
-
-tables=[]
+cmor.setup(inpath="Tables",set_verbosity=cmor.CMOR_NORMAL, netcdf_file_action = cmor.CMOR_REPLACE_4, exit_control = cmor.CMOR_EXIT_ON_MAJOR);
+cmor.dataset_json("Test/cmor_speed_and_compression.json")
+
+tables = []
 tables.append(cmor.load_table("mytable"))
-print 'Tables ids:',tables
+print 'Tables ids:', tables
 
 
 ## read in data, just one slice
-f=cdms2.open(sys.prefix+'/sample_data/tas_ccsr-95a.xml')
+f=cdms2.open('data/tas_ccsr-95a.xml')
 s=f("tas",time=slice(0,12),squeeze=1)
-
 ntimes = 12
-varout='tas'
+varout = 'tas'
 
-myaxes=numpy.arange(10)
-myvars=numpy.arange(10)
-myaxes[0] = cmor.axis(table_entry = 'latitude', 
-                      units = 'degrees_north', 
-                      coord_vals = s.getLatitude()[:],cell_bounds=s.getLatitude().getBounds())
-myaxes[1] = cmor.axis(table_entry = 'longitude', 
-                      units = 'degrees_north', 
-                      coord_vals = s.getLongitude()[:],cell_bounds=s.getLongitude().getBounds())
+myaxes = numpy.arange(10)
+myvars = numpy.arange(10)
+myaxes[0] = cmor.axis(table_entry='latitude',
+                      units='degrees_north',
+                      coord_vals=s.getLatitude()[:], cell_bounds=s.getLatitude().getBounds())
+myaxes[1] = cmor.axis(table_entry='longitude',
+                      units='degrees_north',
+                      coord_vals=s.getLongitude()[:], cell_bounds=s.getLongitude().getBounds())
 
 
+myaxes[2] = cmor.axis(table_entry='time',
+                      units=s.getTime().units,
+                      coord_vals=s.getTime()[:], cell_bounds=s.getTime().getBounds())
 
-myaxes[2] = cmor.axis(table_entry = 'time',
-                      units = s.getTime().units,
-                      coord_vals = s.getTime()[:],cell_bounds=s.getTime().getBounds())
+pass_axes = [myaxes[2], myaxes[0], myaxes[1]]
 
-pass_axes = [myaxes[2],myaxes[0],myaxes[1]]
+myvars[0] = cmor.variable(table_entry=varout,
+                          units=s.units,
+                          axis_ids=pass_axes,
+                          original_name=s.id,
+                          history='no history',
+                          comment='testing speed'
+                          )
 
-myvars[0] = cmor.variable( table_entry = varout,
-                           units = s.units,
-                           axis_ids = pass_axes,
-                           original_name = s.id,
-                           history = 'no history',
-                           comment = 'testing speed'
-                           )
 
-
-import time,MV2
+import time
+import MV2
 st = time.time()
 totcmor=0
 totcdms=0
@@ -102,7 +90,7 @@ f=cdms2.open("Test/crap.nc","w")
 print s.filled().shape
 cmor.write(myvars[0],s.filled(),ntimes_passed=ntimes)
 c=time.time()
-#print 'cmor write time:',c-c0
+print 'cmor write time:',c-c0
 totcmor+=c-c0
 if maxcmor<c-c0:
     maxcmor=c-c0
@@ -111,7 +99,7 @@ if mincmor>c-c0:
 c0=c
 f.write(s,id=varout)
 c=time.time()
-#print 'cdms time:',c-c0
+print 'cdms time:',c-c0
 totcdms+=c-c0
 if maxcdms<c-c0:
     maxcdms=c-c0
@@ -123,29 +111,28 @@ cmor.close()
 
 import cdtime,os
 ltime = cdtime.reltime(ntimes-1,'month since 1980').tocomp()
-lcmor = os.stat("Test/CMIP5/output/PCMDI/GICCM1/lgm/mon/atmos/tas/r1i1p1/tas_Amon_GICCM1_lgm_r1i1p1_198401-198412.nc")[6]
+lcmor = os.stat("CMIP6/CMIP/CSIRO-BOM/NICAM/piControl/r1i1p1f1/Amon/tas/gn/v%s/tas_Amon_piControl_NICAM_r1i1p1f1_gn_197901-197912.nc"%(today))[6]
 print 'level:',level,"shuffle:",shuffle
 print 'total cmor:',totcmor,mincmor,totcmor/ntimes,maxcmor,lcmor
 lcdms = os.stat("Test/crap.nc")[6]
-print 'total cdms:',totcdms,mincdms,totcdms/ntimes,maxcdms,lcdms
-print 'Size diff:',float(lcmor)/float(lcdms)
-print 'speed diff:', totcmor/totcdms
+print 'total cdms:', totcdms, mincdms, totcdms / ntimes, maxcdms, lcdms
+print 'Size diff:', float(lcmor) / float(lcdms)
+print 'speed diff:', totcmor / totcdms
 
 if os.path.exists("summary.txt"):
     f = open("summary.txt")
-    s=f.read()
+    s = f.read()
     f.close()
     dic = eval(s)
 else:
     dic = {}
 
-dic[(level,shuffle)]=(float(lcmor)/float(lcdms),totcmor/totcdms)
+dic[(level, shuffle)] = (float(lcmor) / float(lcdms), totcmor / totcdms)
 
 for i in range(10):
-    a = dic.get((i,0),"N/A")
-    b = dic.get((i,1),"N/A")
-    print 'Level: ',i,"no suffle:",a,"shuffle",b
-f=open("summary.txt","w")
+    a = dic.get((i, 0), "N/A")
+    b = dic.get((i, 1), "N/A")
+    print 'Level: ', i, "no suffle:", a, "shuffle", b
+f = open("summary.txt", "w")
 f.write(repr(dic))
 f.close()
-
diff --git a/Test/cmor_speed_and_compression_02.py b/Test/cmor_speed_and_compression_02.py
index ad0378a..7eff20c 100644
--- a/Test/cmor_speed_and_compression_02.py
+++ b/Test/cmor_speed_and_compression_02.py
@@ -1,4 +1,7 @@
 import cmor,numpy,sys,os
+from time import localtime, strftime
+today = strftime("%Y%m%d", localtime())
+
 try:
     import cdms2
 except:
diff --git a/Test/cmor_speed_and_compression_01.py b/Test/cmor_speed_and_compression_03.py
similarity index 62%
copy from Test/cmor_speed_and_compression_01.py
copy to Test/cmor_speed_and_compression_03.py
index b084b74..1a229ce 100644
--- a/Test/cmor_speed_and_compression_01.py
+++ b/Test/cmor_speed_and_compression_03.py
@@ -1,4 +1,8 @@
 import cmor,numpy,sys,os
+from time import localtime, strftime
+today = strftime("%Y%m%d", localtime())
+
+
 try:
     import cdms2
     cdms2.setNetcdfShuffleFlag(0)
@@ -8,55 +12,18 @@ except:
     print "This test code needs a recent cdms2 interface for i/0"
     sys.exit()
 
-if len(sys.argv)>1:
-    level = int(sys.argv[1])
-else:
-    level=int(os.environ.get("DEFLATE_LEVEL",0))
-
-if len(sys.argv)>2:
-    shuffle= int(sys.argv[2])
-else:
-    shuffle=int(os.environ.get("SHUFFLE",0))
-
-if level==0:
-    deflate = 0
-else:
-    deflate = 1
-
-f=open("Test/speed_test_table_A")
-s=f.read()
-f.close()
-s=s.replace("${DEFLATE_LEVEL}",str(level))
-s=s.replace("${DEFLATE}",str(deflate))
-s=s.replace("${SHUFFLE}",str(shuffle))
-f=open("mytable","w")
-f.write(s)
-f.close()
-
-cmor.setup(inpath="Test",set_verbosity=cmor.CMOR_NORMAL, netcdf_file_action = cmor.CMOR_REPLACE, exit_control = cmor.CMOR_EXIT_ON_MAJOR);
-cmor.dataset(
-    outpath = "Test",
-    experiment_id = "lgm",
-    institution = "GICC (Generic International Climate Center, Geneva, Switzerland)",
-    source = "GICCM1 (2002): atmosphere:  GICAM3 (gicam_0_brnchT_itea_2, T63L32); ocean: MOM (mom3_ver_3.5.2, 2x3L15); sea ice: GISIM4; land: GILSM2.5",
-    calendar = "standard",
-    realization = 1,
-    contact = "Charles Doutriaux (doutriaux1 at llnl.gov)",
-    history = "Test for speed and compression.",
-    comment = "NetCDF4 vs NetCDF3 testing",
-    references = "http://cdat.sf.net",
-    leap_year=0,
-    leap_month=0,
-    institute_id="PCMDI",
-    month_lengths=None,model_id="GICCM1",forcing="SO",parent_experiment_id="N/A",branch_time=0.)
+level = 3
+shuffle = 1
+cmor.setup(inpath="Tables",set_verbosity=cmor.CMOR_NORMAL, netcdf_file_action = cmor.CMOR_REPLACE_4, exit_control = cmor.CMOR_EXIT_ON_MAJOR);
+cmor.dataset_json("Test/cmor_speed_and_compression.json")
 
 tables=[]
-tables.append(cmor.load_table("mytable"))
+tables.append(cmor.load_table("CMIP6_Amon.json"))
 print 'Tables ids:',tables
 
 
 ## read in data, just one slice
-f=cdms2.open(sys.prefix+'/sample_data/tas_ccsr-95a.xml')
+f=cdms2.open('data/tas_ccsr-95a.xml')
 s=f("tas",time=slice(0,12),squeeze=1)
 
 ntimes = 12
@@ -86,7 +53,7 @@ myvars[0] = cmor.variable( table_entry = varout,
                            history = 'no history',
                            comment = 'testing speed'
                            )
-
+cmor.set_deflate(myvars[0], shuffle, 1, level)
 
 import time,MV2
 st = time.time()
@@ -102,7 +69,7 @@ f=cdms2.open("Test/crap.nc","w")
 print s.filled().shape
 cmor.write(myvars[0],s.filled(),ntimes_passed=ntimes)
 c=time.time()
-#print 'cmor write time:',c-c0
+print 'cmor write time:',c-c0
 totcmor+=c-c0
 if maxcmor<c-c0:
     maxcmor=c-c0
@@ -111,7 +78,7 @@ if mincmor>c-c0:
 c0=c
 f.write(s,id=varout)
 c=time.time()
-#print 'cdms time:',c-c0
+print 'cdms time:',c-c0
 totcdms+=c-c0
 if maxcdms<c-c0:
     maxcdms=c-c0
@@ -123,7 +90,7 @@ cmor.close()
 
 import cdtime,os
 ltime = cdtime.reltime(ntimes-1,'month since 1980').tocomp()
-lcmor = os.stat("Test/CMIP5/output/PCMDI/GICCM1/lgm/mon/atmos/tas/r1i1p1/tas_Amon_GICCM1_lgm_r1i1p1_198401-198412.nc")[6]
+lcmor = os.stat("CMIP6/CMIP/CSIRO-BOM/NICAM/piControl/r1i1p1f1/Amon/tas/gn/v%s/tas_Amon_piControl_NICAM_r1i1p1f1_gn_197901-197912.nc"%(today))[6]
 print 'level:',level,"shuffle:",shuffle
 print 'total cmor:',totcmor,mincmor,totcmor/ntimes,maxcmor,lcmor
 lcdms = os.stat("Test/crap.nc")[6]
diff --git a/Test/ipcc_test_code.c b/Test/ipcc_test_code.c
index a62d07e..704419c 100644
--- a/Test/ipcc_test_code.c
+++ b/Test/ipcc_test_code.c
@@ -150,7 +150,7 @@ int main()
   double data3d[lev*lat*lon];
   double alats[lat];
   double alons[lon];
- int ilats[lat];
+  int ilats[lat];
   int ilons[lon];
   double   plevs[lev];
   int   iplevs[lev];
@@ -210,7 +210,7 @@ int main()
 
   
   m = CMOR_EXIT_ON_MAJOR;
-  j = CMOR_REPLACE;
+  j = CMOR_REPLACE_4;
   i=1;
   it=0;
   printf("ok mode is:%i\n",m);
@@ -226,29 +226,16 @@ int main()
 
 
   printf("yep: %s, %s\n",c1,c2);
-  ierr = cmor_dataset(
-       "Test",
-       "abrupt 4XCO2",
-       "GICC (Generic International Climate Center, Geneva, Switzerland)",
-       "GICCM1(2002): atmosphere:  GICAM3 (gicam_0_brnchT_itea_2, T63L32); ocean: MOM (mom3_ver_3.5.2, 2x3L15); sea ice: GISIM4; land: GILSM2.5",
-       "360_day",
-       1,
-       "Rusty Koder (koder at middle_earth.net)",
-       "Output from archive/giccm_03_std_2xCO2_2256.",
-       "Equilibrium reached after 30-year spin-up after which data were output starting with nominal date of January 2030",
-       "Model described by Koder and Tolkien (J. Geophys. Res., 2001, 576-591).  Also see http://www.GICC.su/giccm/doc/index.html  2XCO2 simulation described in Dorkey et al. '(Clim. Dyn., 2003, 323-357.)",
-       0,
-       0,
-       &tmpmo[0],&c1[0],&c2[0],
-       0,
-       0,"GICC","N/A",&bt,"r1i1p1");
+  ierr = cmor_dataset_json("Test/ipcc_test_code.json");
 
   printf("Test code: ok load cmor table(s)\n");
-  ierr = cmor_load_table("Tables/CMIP5_Omon",&tables[0]);
-  ierr = cmor_load_table("Tables/CMIP5_Amon",&tables[1]);
+  ierr = cmor_load_table("Tables/CMIP6_Omon.json",&tables[0]);
+  ierr = cmor_load_table("Tables/CMIP6_Amon.json",&tables[1]);
+
   strcpy(id,"time");
   strcpy(units,"months since 1980");
   strcpy(interval,"1 month");
+
   read_time(0, &Time[0], &bnds_time[0]);
   read_time(1, &Time[1], &bnds_time[2]);
   ierr = cmor_axis(&myaxes[0],id,units,ntimes,&Time[0],'d',&bnds_time[0],2,interval);
@@ -257,10 +244,12 @@ int main()
   strcpy(units,"degrees_north");
   strcpy(interval,"");
   ierr = cmor_axis(&myaxes[1],id,units,lat,&alats,'d',&bnds_lat,2,interval);
+
   strcpy(id,"longitude");
   strcpy(units,"degrees_east");
   ierr = cmor_axis(&myaxes[2],id,units,lon,&alons,'d',&bnds_lon,2,interval);
-  strcpy(id,"plevs");
+
+  strcpy(id,"plev17");
   strcpy(units,"hPa");
   ierr = cmor_axis(&myaxes[3],id,units,lev,&iplevs,'i',NULL,0,interval);
 
@@ -314,16 +303,14 @@ int main()
   myaxes2[3] = myaxes[2];
 
   printf("Test code: defining variables from table 1, %s\n",positive2d[0]);
-  ierr = cmor_variable(&myvars[0],entry2d[0],units2d[0],3,myaxes,'d',NULL,&dtmp2,&positive2d[0][0],varin2d[0],"no history","no future");
+  ierr = cmor_variable(&myvars[0],entry2d[0],units2d[0],3,myaxes,'d',NULL,&dtmp2,positive2d[0],varin2d[0],"no history","no future");
   ierr = cmor_variable(&myvars[1],entry3d[2],units3d[2],4,myaxes2,'d',NULL,&dtmp2,NULL,varin3d[2],"no history","no future");
+
   printf("Test code: definig tas\n");
   ierr = cmor_variable(&myvars[5],"tas","K",3,myaxes,'d',NULL,&dtmp2,NULL,"TS","no history","no future");
 
   myaxes2[1] = myaxes[4];
   ierr = cmor_variable(&myvars[2],entry3d[0],units3d[0],4,myaxes2,'d',NULL,&dtmp2,NULL,varin3d[0],"no history","no future");
-
-
-  
   ierr = cmor_zfactor(&myvars[3],myaxes2[1],"p0","Pa",0,NULL,'f',&p0,NULL);
   ierr = cmor_zfactor(&myvars[3],myaxes2[1],"b","",1,&myaxes2[1],'d',&b_coeff,&b_coeff_bnds);
   ierr = cmor_zfactor(&myvars[3],myaxes2[1],"a","",1,&myaxes2[1],'d',&a_coeff,&a_coeff_bnds);
@@ -339,46 +326,40 @@ int main()
   myaxes2[1] = myaxes[5]; /* region */
   myaxes2[2] = myaxes[8]; /* latitudes */
   printf("Test code: ok we define hfogo positive: %s\n",positive2d[0]);
-  ierr = cmor_variable(&myvars[4],"htovgyre","W",3,myaxes2,'d',NULL,&dtmp2,&positive2d[0][0],varin2d[0],"no history","no future");
+  ierr = cmor_variable(&myvars[4],"htovgyre","W",3,myaxes2,'d',NULL,&dtmp2,NULL,varin2d[0],"no history","no future");
 
   cmor_set_table(tables[1]);
 
+
   for (i=0;i<ntimes;i++) {
     printf("Test code: writing time: %i of %i\n",i+1,ntimes);
     
     printf("2d\n");
     read_2d_input_files(i, varin2d[0], &data2d,lat,lon);
     sprintf(id,"%i",i);
-/*     ierr = cmor_write(myvars[0],&data2d,'d',id,1,&time,&bnds_time,NULL); */
-/*     read_3d_input_files(i, varin3d[2], &data3d,lev,lat,lon); */
-/*     ierr = cmor_write(myvars[1],&data3d,'d',id,1,&time,&bnds_time,NULL); */
-/*     read_3d_input_files(i, varin3d[0], &data3d,5,lat,lon); */
-/*     ierr = cmor_write(myvars[2],&data3d,'d',id,1,&time,&bnds_time,NULL); */
-/*     read_2d_input_files(i, varin2d[3], &data2d,lat,lon); */
-/*     ierr = cmor_write(myvars[3],&data2d,'d',id,1,&time,&bnds_time,&myvars[2]); */
-    ierr = cmor_write(myvars[0],&data2d,'d',NULL,1,NULL,NULL,NULL);
+    ierr = cmor_write(myvars[0],&data2d,'d',1,NULL,NULL,NULL);
 
     printf("3d\n");
     read_3d_input_files(i, varin3d[2], &data3d,lev,lat,lon);
-    ierr = cmor_write(myvars[1],&data3d,'d',NULL,1,NULL,NULL,NULL);
+    ierr = cmor_write(myvars[1],&data3d,'d',1,NULL,NULL,NULL);
     printf("writing tas\n");
     read_2d_input_files(i, varin2d[1], &data2d,lat,lon);
-    ierr = cmor_write(myvars[5],&data2d,'d',NULL,1,NULL,NULL,NULL);
+    ierr = cmor_write(myvars[5],&data2d,'d',1,NULL,NULL,NULL);
 
     printf("3d zfactor\n");
     read_3d_input_files(i, varin3d[0], &data3d,5,lat,lon);
-    ierr = cmor_write(myvars[2],&data3d,'d',NULL,1,NULL,NULL,NULL);
+    ierr = cmor_write(myvars[2],&data3d,'d',1,NULL,NULL,NULL);
 
     printf("writing ps\n");
     read_2d_input_files(i, varin2d[3], &data2d,lat,lon);
-    ierr = cmor_write(myvars[3],&data2d,'d',NULL,1,NULL,NULL,&myvars[2]);
+    ierr = cmor_write(myvars[3],&data2d,'d',1,NULL,NULL,&myvars[2]);
 
     /* rereading hfls to fake hfogo */
     printf("2d region\n");
     read_2d_input_files(i, "htov", &data2d,lat,lon);
-    ierr = cmor_write(myvars[4],&data2d,'d',NULL,1,NULL,NULL,NULL);
+    ierr = cmor_write(myvars[4],&data2d,'d',1,NULL,NULL,NULL);
   }
   ierr = cmor_close_variable(myvars[0],NULL,NULL);
   ierr = cmor_close();
-  return 0;
+  return( 0 );
 }
diff --git a/Test/ipcc_test_code.f90 b/Test/ipcc_test_code.f90
index 46598d8..db9c5f4 100644
--- a/Test/ipcc_test_code.f90
+++ b/Test/ipcc_test_code.f90
@@ -217,36 +217,13 @@ PROGRAM ipcc_test_code
 
   mycal = '360_day'
 
-  error_flag = cmor_dataset(                                   &
-       outpath='Test',                                         &
-       experiment_id='abrupt 4XCO2',           &
-       institution=                                            &
-       'GICC (Generic International Climate Center, ' //       &
-       'Geneva, Switzerland)',                                 &
-       source='GICCM1 (2002): ' //                             &
-       'atmosphere:  GICAM3 (gicam_0_brnchT_itea_2, T63L32); '// &
-       'ocean: MOM (mom3_ver_3.5.2, 2x3L15); '             //  &
-       'sea ice: GISIM4; land: GILSM2.5',                      &
-       calendar=mycal,                                      &
-       realization=1,                                          &
-       history='Output from archive/giccm_03_std_2xCO2_2256.', &
-       institute_id = 'PCMDI', &
-       comment='Equilibrium reached after 30-year spin-up ' // &
-       'after which data were output starting with nominal '// &
-       'date of January 2030',                                 &
-       references='Model described by Koder and Tolkien ' //   &
-       '(J. Geophys. Res., 2001, 576-591).  Also '        //   &
-       'see http://www.GICC.su/giccm/doc/index.html '     //   &
-       ' 2XCO2 simulation described in Dorkey et al. '    //   &
-       '(Clim. Dyn., 2003, 323-357.)',&
-       model_id='GICCM1',forcing='TO',contact="Barry Bonds",&
-       parent_experiment_rip="N/A",parent_experiment_id="N/A",branch_time=bt)
+  error_flag = cmor_dataset_json("Test/test2.json")
   
   
   !  Define all axes that will be needed
 
   ilat = cmor_axis(  &
-       table='Tables/CMIP5_Amon',    &
+       table='Tables/CMIP6_Amon.json',    &
        table_entry='latitude',       &
        units='degrees_north',        &  
        length=lat,                   &
@@ -254,7 +231,7 @@ PROGRAM ipcc_test_code
        cell_bounds=bnds_lat)        
       
   ilon2 = cmor_axis(  &
-       table='Tables/CMIP5_Lmon',    &
+       table='Tables/CMIP6_Lmon.json',    &
        table_entry='longitude',      &
        length=lon,                   &
        units='degrees_east',         &
@@ -262,7 +239,7 @@ PROGRAM ipcc_test_code
        cell_bounds=bnds_lon)      
         
   ilat2 = cmor_axis(  &
-       table='Tables/CMIP5_Lmon',    &
+       table='Tables/CMIP6_Lmon.json',    &
        table_entry='latitude',       &
        units='degrees_north',        &  
        length=lat,                   &
@@ -270,7 +247,7 @@ PROGRAM ipcc_test_code
        cell_bounds=bnds_lat)        
       
   ilon = cmor_axis(  &
-       table='Tables/CMIP5_Amon',    &
+       table='Tables/CMIP6_Amon.json',    &
        table_entry='longitude',      &
        length=lon,                   &
        units='degrees_east',         &
@@ -278,8 +255,8 @@ PROGRAM ipcc_test_code
        cell_bounds=bnds_lon)      
         
   ipres = cmor_axis(  &
-       table='Tables/CMIP5_Amon',    &
-       table_entry='plevs',       &
+       table='Tables/CMIP6_Amon.json',    &
+       table_entry='plev17',       &
        units='Pa',                   &
        length=lev2,                   &
        coord_vals=plevs)
@@ -289,13 +266,13 @@ PROGRAM ipcc_test_code
   !   cmor_write (later, below).
 
   itim = cmor_axis(  &
-       table='Tables/CMIP5_Amon',    &
+       table='Tables/CMIP6_Amon.json',    &
        table_entry='time',           &
        units='days since 2030-1-1',  &
        length=ntimes,                &
        interval='20 minutes')
   itim2 = cmor_axis(  &
-       table='Tables/CMIP5_Lmon',    &
+       table='Tables/CMIP6_Lmon.json',    &
        table_entry='time',           &
        units='days since 2030-1-1',  &
        length=ntimes,                &
@@ -307,7 +284,7 @@ PROGRAM ipcc_test_code
   zlev_bnds=(/ 0.,.2, .42, .62, .8, 1. /)
 
   ilev = cmor_axis(  &
-       table='Tables/CMIP5_Amon',    &
+       table='Tables/CMIP6_Amon.json',    &
        table_entry='standard_hybrid_sigma',       &
        units='1', &
        length=lev,                   &
@@ -352,7 +329,7 @@ PROGRAM ipcc_test_code
   !    (appearing in IPCC table A1c)
 
   var3d_ids(1) = cmor_variable(    &
-       table='Tables/CMIP5_Amon',  &
+       table='Tables/CMIP6_Amon.json',  &
        table_entry=entry3d(1),     &
        units=units3d(1),           &
        axis_ids=(/ ilon, ilat, ilev, itim /),  &
@@ -364,7 +341,7 @@ PROGRAM ipcc_test_code
   
   DO m=2,n3d
      var3d_ids(m) = cmor_variable(    &
-          table='Tables/CMIP5_Amon',  &
+          table='Tables/CMIP6_Amon.json',  &
           table_entry=entry3d(m),     &
           units=units3d(m),           &
           axis_ids=(/ ilon, ilat, ipres, itim /), &
@@ -378,7 +355,7 @@ PROGRAM ipcc_test_code
   DO m=1,n2d
      if (m.ne.3) then
      var2d_ids(m) = cmor_variable(    &
-          table='Tables/CMIP5_Amon',      &
+          table='Tables/CMIP6_Amon.json',      &
           table_entry=entry2d(m),     & 
           units=units2d(m),           & 
           axis_ids=(/ ilon, ilat, itim /), &
@@ -387,7 +364,7 @@ PROGRAM ipcc_test_code
           original_name=varin2d(m))   
   else
      var2d_ids(m) = cmor_variable(    &
-          table='Tables/CMIP5_Lmon',      &
+          table='Tables/CMIP6_Lmon.json',      &
           table_entry=entry2d(m),     & 
           units=units2d(m),           & 
           axis_ids=(/ ilon2, ilat2, itim2 /), &
@@ -456,8 +433,6 @@ PROGRAM ipcc_test_code
        
         ! append a single time sample of data for a single field to 
         ! the appropriate netCDF file.
-        call cmor_create_output_path(var3d_ids(m),outpath)
-        print*, 'Ok we will dump that at: ',outpath
         error_flag = cmor_write(                                  &
              var_id        = var3d_ids(m),                        &
              data          = data3d,                              &
diff --git a/Test/ipcc_test_code.json b/Test/ipcc_test_code.json
new file mode 100644
index 0000000..bdcb845
--- /dev/null
+++ b/Test/ipcc_test_code.json
@@ -0,0 +1,92 @@
+{
+           "_control_vocabulary_file": "CMIP6_CV.json",
+           "_cmip6_option":           "CMIP6",
+
+           "tracking_prefix":        "hdl:21.14100",
+           "activity_id":            "ISMIP6",
+
+           "branch_method":          "standard",
+           "branch_time_in_child":   "365.0",
+           "#output":                "Output Path where files are written",
+           "outpath":                "CMIP6",
+
+           "#experiment_id":         "Correspond to id found in CV json file",
+           "#experiment_id":         "piClim-aer",
+           "experiment_id":          "piControl-withism",
+           "#experiment_id":         "land-hist",
+           "sub_experiment_id":      "ds1968",
+           "sub_experiment":         "none",
+
+           "source_type":            "AGCM AER CHEM DENIS",
+           "source_type":            "AGCM AER DENIS",
+           "source_type":            "AOGCM ISM AER",
+           "#source_type":            "LND",
+           "#parent_sub_experiment_id": "N/A",
+           "parent_mip_era":         "N/A",
+           "mip_era":                "CMIP6",
+           "#calendar":              "",
+           "calendar":               "360_day",
+           "branch_time":            "1.34",
+
+           "#realization_index":     "",
+           "realization_index":      "11",
+
+           "#initialization_index":  "",
+           "initialization_index":   "1",
+
+           "#physics_index":         "",
+           "physics_index":          "1",
+
+           "#forcing_index":         "",
+           "forcing_index":          "1",
+
+           "#contact ":              "Not required",
+           "#contact ":              "Python Coder (coder at a.b.c.com)",
+
+           "#history":               "not required, supplemented by CMOR",
+           "history":                "Output from archivcl_A1.nce/giccm_03_std_2xCO2_2256.",
+
+           "#comment":               "Not required",
+           "comment":                "Equilibrium reached after 30-year spin-up after which data were output starting with nominal date of January 2030",
+
+           "#references":            "Not required",
+           "references":             "Model described by Koder and Tolkien (J. Geophys. Res., 2001, 576-591).  Also see http://www.GICC.su/giccm/doc/index.html  2XCO2 simulation described in Dorkey et al. '(Clim. Dyn., 2003, 323-357.)'",
+
+
+           "#driving_variant_label":     "no-driver",
+
+
+           "grid":                   "gs1x1",
+           "grid_label":             "gr",
+           "grid_resolution":        "5 km",
+
+           "institution_id":         "BNU",
+
+           "parent_activity_id":     "CMIP",
+           "parent_experiment_id":   "histALL",
+           "parent_source_id":       "GFDL-CM2-1",
+           "parent_variant_label":      "r1i1p1f3",
+
+
+           "#run_variant":           "Description of run variant (Recommended).",
+           "run_variant":            "forcing: black carbon aerosol only",
+
+           "#source_id":              "Model Source",
+           "source_id":               "CESM1-CAM5",
+
+           "#source":                "source title, first part is source_id",
+           "source":                 "CESM1 (CAM5): model version ca. 2009",
+
+
+           "#output_path_template":   "Template for output path directory using tables keys or global attributes",
+           "output_path_template":    "<activity_id><institution_id><source_id><experiment_id><variant_label><table><variable_id><grid_label><version>",
+
+
+           "output_file_template":    "<variable_id><table><experiment_id><source_id><variant_label><grid_label>",
+
+           "license":                "One of 2 licenses: ----- CMIP6 model data produced by <Your CentreName> is licensed under a Creative Commons Attribution 'NonCommercial Share Alike' 4.0 International License (http://creativecommons.org/licenses/by/4.0/). Use of the data should be acknowledged following guidelines found at <what URL???> The data is hosted via the Earth System Grid Federation. Permissions beyond the scope of this license may be available at http://pcmdi.org/cmip5/term [...]
+
+
+
+}
+
diff --git a/Test/ipcc_test_code.c b/Test/ipcc_test_code_json.c
similarity index 99%
copy from Test/ipcc_test_code.c
copy to Test/ipcc_test_code_json.c
index a62d07e..e9eea04 100644
--- a/Test/ipcc_test_code.c
+++ b/Test/ipcc_test_code_json.c
@@ -244,8 +244,8 @@ int main()
        0,"GICC","N/A",&bt,"r1i1p1");
 
   printf("Test code: ok load cmor table(s)\n");
-  ierr = cmor_load_table("Tables/CMIP5_Omon",&tables[0]);
-  ierr = cmor_load_table("Tables/CMIP5_Amon",&tables[1]);
+  ierr = cmor_load_table("Tables/CMIP5_Omon.json",&tables[0]);
+  ierr = cmor_load_table("Tables/CMIP5_Amon.json",&tables[1]);
   strcpy(id,"time");
   strcpy(units,"months since 1980");
   strcpy(interval,"1 month");
diff --git a/Test/jamie_hybrid_height.json b/Test/jamie_hybrid_height.json
new file mode 100644
index 0000000..c618eb2
--- /dev/null
+++ b/Test/jamie_hybrid_height.json
@@ -0,0 +1,62 @@
+{
+           "_control_vocabulary_file": "CMIP6_CV.json",
+           "_cmip6_option":           "CMIP6",
+
+    "activity_id":                  "CMIP",
+    "outpath":                      "CMIP6",
+    "experiment_id":                "piControl",
+    "calendar":                     "360_day",
+    "realization_index":            "1",
+    "initialization_index":         "1",
+    "physics_index":                "1",
+    "forcing_index":                "1",
+     "source_type":                      "AOGCM",
+     "sub_experiment":                      "none",
+     "sub_experiment_id":                      "none",
+     "parent_sub_experiment_id":                      "N/A",
+     "parent_mip_era":                      "N/A",
+     "mip_era":                      "CMIP6",
+    "contact ":                     "Python Coder (python at a.b.com) ",
+    "institution_id":                 "PCMDI",
+    "model_id":                     "GICCM1",
+    "history":                      "output from archivcl_A1.nce/giccm_03_std_2xCO2_2256.",
+    "comment":                      "equilibrium reached after 30-year spin-up ",
+    "references":                   "model described by Koder and Tolkien ",
+    "model_id":                     "pcmdi-10a", 
+    "parent_experiment_rip":        "r1i3p2",
+    "parent_experiment_id":         "lgm",
+    "parent_variant_label":            "r1i3p2",
+    "branch_time":                  "0",
+
+
+    "parent_activity_id":           "CMIP",
+    "parent_source_id":             "GFDL-CM2-1",
+    "parent_variant_label":            "r1i1p1f3",
+
+    "branch_method":                "standard",
+    "branch_time_in_child":         "00D0",
+    "branch_time_in_parent":        "3650.0D0",
+    "branch_time_units_in_parent":  "days since 1000-1-1",
+
+    "further_info_url":             "http://furtherinfo.es-doc.org/<mip_era><institution_id><source_id><experiment_id><sub_experiment_id><variant_label>",
+    "grid":                         "native atmosphere T63 gaussian grid (64x128 latxlon)",
+    "grid_label":                  "gn",
+    "grid_resolution":              "5 km",
+
+    "institution_id":               "CSIRO-BOM",
+    "institution":                  "Commonwealth Scientific and Industrial Research Organisation, Australia, and Bureau of Meteorology, Australia",
+
+    "references":                   "Model described by Koder and Tolkien (J. Geophys. Res.,2001, 576 - 591).  Also see http://www.GICC.su/giccm/doc/index.html  2XCO2 simulation described in Dorkey et al. '(Clim. Dyn., 2003, 323 - 357.)",
+    "run_variant":                  "forcing: black carbon aerosol only",
+    "source_id":                    "NICAM",
+    "source":                       "NICAM:",
+    "output_path_template":         "<activity_id><institution_id><source_id><experiment_id><variant_label><table><variable_id><grid_label><version>",
+    "output_file_template":         "<variable_id><table><experiment_id><source_id><variant_label><grid_label>",
+
+    "license":                      "One of 2 licenses: ----- CMIP6 model data produced by <Your CentreName> is licensed under a Creative Commons Attribution 'NonCommercial Share Alike' 4.0 International License (http://creativecommons.org/licenses/by/4.0/). Use of the data should be acknowledged following guidelines found at <what URL???> The data is hosted via the Earth System Grid Federation. Permissions beyond the scope of this license may be available at http://pcmdi.org/cmip5/terms [...]
+
+
+}
+
+
+
diff --git a/Test/jamie_hybrid_height.py b/Test/jamie_hybrid_height.py
index 3f5f8be..8fd2665 100644
--- a/Test/jamie_hybrid_height.py
+++ b/Test/jamie_hybrid_height.py
@@ -7,21 +7,12 @@ def main():
 
     cmor.setup(inpath='Tables',
                netcdf_file_action = cmor.CMOR_REPLACE)
-    cmor.dataset('pre-industrial control', 'mohc', 'HadGEM2: source',
-                 '360_day',
-                 institute_id = 'ukmo',
-                 model_id = 'HadGEM2',
-                 history = 'some global history',
-                 forcing = 'N/A',
-                 parent_experiment_id = 'N/A',
-                 parent_experiment_rip = 'N/A',
-                 branch_time = 0.,
-                 contact = 'bob')
+    cmor.dataset_json("Test/jamie_hybrid_height.json")
  
-    table = 'CMIP5_6hrLev'
+    table = 'CMIP6_6hrLev.json'
     cmor.load_table(table)
     axes = [ {'table_entry': 'time1',
-              'units': 'days since 2000-01-01 00:00:00',
+              'units': 'days since 2000-01-01 00:00:00'
               },
              {'table_entry': 'latitude',
               'units': 'degrees_north',
@@ -58,7 +49,7 @@ def main():
 
     print 'cmor.variable call complete'
     
-    cmor.write(varid, values, time_vals = [6.0])
+    cmor.write(varid, values, time_vals = [6.0], time_bnds = [3., 12.])
 
     print 'cmor.write call complete'
 
diff --git a/Test/jamie_positive.json b/Test/jamie_positive.json
new file mode 100644
index 0000000..c618eb2
--- /dev/null
+++ b/Test/jamie_positive.json
@@ -0,0 +1,62 @@
+{
+           "_control_vocabulary_file": "CMIP6_CV.json",
+           "_cmip6_option":           "CMIP6",
+
+    "activity_id":                  "CMIP",
+    "outpath":                      "CMIP6",
+    "experiment_id":                "piControl",
+    "calendar":                     "360_day",
+    "realization_index":            "1",
+    "initialization_index":         "1",
+    "physics_index":                "1",
+    "forcing_index":                "1",
+     "source_type":                      "AOGCM",
+     "sub_experiment":                      "none",
+     "sub_experiment_id":                      "none",
+     "parent_sub_experiment_id":                      "N/A",
+     "parent_mip_era":                      "N/A",
+     "mip_era":                      "CMIP6",
+    "contact ":                     "Python Coder (python at a.b.com) ",
+    "institution_id":                 "PCMDI",
+    "model_id":                     "GICCM1",
+    "history":                      "output from archivcl_A1.nce/giccm_03_std_2xCO2_2256.",
+    "comment":                      "equilibrium reached after 30-year spin-up ",
+    "references":                   "model described by Koder and Tolkien ",
+    "model_id":                     "pcmdi-10a", 
+    "parent_experiment_rip":        "r1i3p2",
+    "parent_experiment_id":         "lgm",
+    "parent_variant_label":            "r1i3p2",
+    "branch_time":                  "0",
+
+
+    "parent_activity_id":           "CMIP",
+    "parent_source_id":             "GFDL-CM2-1",
+    "parent_variant_label":            "r1i1p1f3",
+
+    "branch_method":                "standard",
+    "branch_time_in_child":         "00D0",
+    "branch_time_in_parent":        "3650.0D0",
+    "branch_time_units_in_parent":  "days since 1000-1-1",
+
+    "further_info_url":             "http://furtherinfo.es-doc.org/<mip_era><institution_id><source_id><experiment_id><sub_experiment_id><variant_label>",
+    "grid":                         "native atmosphere T63 gaussian grid (64x128 latxlon)",
+    "grid_label":                  "gn",
+    "grid_resolution":              "5 km",
+
+    "institution_id":               "CSIRO-BOM",
+    "institution":                  "Commonwealth Scientific and Industrial Research Organisation, Australia, and Bureau of Meteorology, Australia",
+
+    "references":                   "Model described by Koder and Tolkien (J. Geophys. Res.,2001, 576 - 591).  Also see http://www.GICC.su/giccm/doc/index.html  2XCO2 simulation described in Dorkey et al. '(Clim. Dyn., 2003, 323 - 357.)",
+    "run_variant":                  "forcing: black carbon aerosol only",
+    "source_id":                    "NICAM",
+    "source":                       "NICAM:",
+    "output_path_template":         "<activity_id><institution_id><source_id><experiment_id><variant_label><table><variable_id><grid_label><version>",
+    "output_file_template":         "<variable_id><table><experiment_id><source_id><variant_label><grid_label>",
+
+    "license":                      "One of 2 licenses: ----- CMIP6 model data produced by <Your CentreName> is licensed under a Creative Commons Attribution 'NonCommercial Share Alike' 4.0 International License (http://creativecommons.org/licenses/by/4.0/). Use of the data should be acknowledged following guidelines found at <what URL???> The data is hosted via the Earth System Grid Federation. Permissions beyond the scope of this license may be available at http://pcmdi.org/cmip5/terms [...]
+
+
+}
+
+
+
diff --git a/Test/jamie_positive.py b/Test/jamie_positive.py
index deb415f..3bff737 100644
--- a/Test/jamie_positive.py
+++ b/Test/jamie_positive.py
@@ -6,17 +6,9 @@ def main():
     
     cmor.setup(inpath='Tables',
                netcdf_file_action = cmor.CMOR_REPLACE_3)
-    cmor.dataset('pre-industrial control', 'ukmo', 'HadCM3', '360_day',
-                 institute_id = 'ukmo',
-                 model_id = 'HadCM3',
-                 history = 'some global history',
-                 forcing = 'N/A',
-                 parent_experiment_id = 'N/A',
-                 parent_experiment_rip = 'N/A',
-                 branch_time = 0.,
-                 contact = 'bob')
+    cmor.dataset_json("Test/jamie_positive.json")
  
-    table = 'CMIP5_Amon'
+    table = 'CMIP6_Amon.json'
     cmor.load_table(table)
     axes = [ {'table_entry': 'time',
               'units': 'days since 2000-01-01 00:00:00',
diff --git a/Test/karls.json b/Test/karls.json
new file mode 100644
index 0000000..c618eb2
--- /dev/null
+++ b/Test/karls.json
@@ -0,0 +1,62 @@
+{
+           "_control_vocabulary_file": "CMIP6_CV.json",
+           "_cmip6_option":           "CMIP6",
+
+    "activity_id":                  "CMIP",
+    "outpath":                      "CMIP6",
+    "experiment_id":                "piControl",
+    "calendar":                     "360_day",
+    "realization_index":            "1",
+    "initialization_index":         "1",
+    "physics_index":                "1",
+    "forcing_index":                "1",
+     "source_type":                      "AOGCM",
+     "sub_experiment":                      "none",
+     "sub_experiment_id":                      "none",
+     "parent_sub_experiment_id":                      "N/A",
+     "parent_mip_era":                      "N/A",
+     "mip_era":                      "CMIP6",
+    "contact ":                     "Python Coder (python at a.b.com) ",
+    "institution_id":                 "PCMDI",
+    "model_id":                     "GICCM1",
+    "history":                      "output from archivcl_A1.nce/giccm_03_std_2xCO2_2256.",
+    "comment":                      "equilibrium reached after 30-year spin-up ",
+    "references":                   "model described by Koder and Tolkien ",
+    "model_id":                     "pcmdi-10a", 
+    "parent_experiment_rip":        "r1i3p2",
+    "parent_experiment_id":         "lgm",
+    "parent_variant_label":            "r1i3p2",
+    "branch_time":                  "0",
+
+
+    "parent_activity_id":           "CMIP",
+    "parent_source_id":             "GFDL-CM2-1",
+    "parent_variant_label":            "r1i1p1f3",
+
+    "branch_method":                "standard",
+    "branch_time_in_child":         "00D0",
+    "branch_time_in_parent":        "3650.0D0",
+    "branch_time_units_in_parent":  "days since 1000-1-1",
+
+    "further_info_url":             "http://furtherinfo.es-doc.org/<mip_era><institution_id><source_id><experiment_id><sub_experiment_id><variant_label>",
+    "grid":                         "native atmosphere T63 gaussian grid (64x128 latxlon)",
+    "grid_label":                  "gn",
+    "grid_resolution":              "5 km",
+
+    "institution_id":               "CSIRO-BOM",
+    "institution":                  "Commonwealth Scientific and Industrial Research Organisation, Australia, and Bureau of Meteorology, Australia",
+
+    "references":                   "Model described by Koder and Tolkien (J. Geophys. Res.,2001, 576 - 591).  Also see http://www.GICC.su/giccm/doc/index.html  2XCO2 simulation described in Dorkey et al. '(Clim. Dyn., 2003, 323 - 357.)",
+    "run_variant":                  "forcing: black carbon aerosol only",
+    "source_id":                    "NICAM",
+    "source":                       "NICAM:",
+    "output_path_template":         "<activity_id><institution_id><source_id><experiment_id><variant_label><table><variable_id><grid_label><version>",
+    "output_file_template":         "<variable_id><table><experiment_id><source_id><variant_label><grid_label>",
+
+    "license":                      "One of 2 licenses: ----- CMIP6 model data produced by <Your CentreName> is licensed under a Creative Commons Attribution 'NonCommercial Share Alike' 4.0 International License (http://creativecommons.org/licenses/by/4.0/). Use of the data should be acknowledged following guidelines found at <what URL???> The data is hosted via the Earth System Grid Federation. Permissions beyond the scope of this license may be available at http://pcmdi.org/cmip5/terms [...]
+
+
+}
+
+
+
diff --git a/Test/karls_test.f90 b/Test/karls_test.f90
index a56e584..7ef94df 100644
--- a/Test/karls_test.f90
+++ b/Test/karls_test.f90
@@ -226,34 +226,12 @@ PROGRAM karls_test
   !   experiment conditions, and provide information to be included as 
   !   attributes in all CF-netCDF files written as part of this dataset.
 
-  error_flag = cmor_dataset(                                   &
-       outpath='Test',                                         &
-       experiment_id='abrupt 4XCO2',           &
-       institution=                                            &
-       'GICC (Generic International Climate Center, ' //       &
-       'Geneva, Switzerland)',                                 &
-       source='GICCM1 (2002): ' //                             &
-       'atmosphere:  GICAM3 (gicam_0_brnchT_itea_2, T63L32); '// &
-       'ocean: MOM (mom3_ver_3.5.2, 2x3L15); '             //  &
-       'sea ice: GISIM4; land: GILSM2.5',                      &
-       calendar='360_day',                                      &
-       realization=1,                                          &
-       history='Output from archive/giccm_03_std_2xCO2_2256.', &
-       comment='Equilibrium reached after 30-year spin-up ' // &
-       'after which data were output starting with nominal '// &
-       'date of January 2030',                                 &
-       references='Model described by Koder and Tolkien ' //   &
-       '(J. Geophys. Res., 2001, 576-591).  Also '        //   &
-       'see http://www.GICC.su/giccm/doc/index.html '     //   &
-       ' 2XCO2 simulation described in Dorkey et al. '    //   &
-       '(Clim. Dyn., 2003, 323-357.)',&
-       model_id='GICCM1',forcing='TO',contact="Barry Bonds",&
-       parent_experiment_rip="N/A",parent_experiment_id="N/A",branch_time=bt,institute_id="PCMDI")
+  error_flag = cmor_dataset_json("karls.json")
   
   !  Define all axes that will be needed
 
   iz =  cmor_axis(  &
-       table='Tables/CMIP5_Amon',    &
+       table='Tables/CMIP6_Amon.json',    &
        table_entry='height2m',       &
        units='m',                    &  
        length=1,                     &
@@ -261,7 +239,7 @@ PROGRAM karls_test
 print*, 'iz = ', iz
   
   ilat = cmor_axis(  &
-       table='Tables/CMIP5_Amon',    &
+       table='Tables/CMIP6_Amon.json',    &
        table_entry='latitude',       &
        units='degrees_north',        &  
        length=lat,                   &
@@ -269,14 +247,14 @@ print*, 'iz = ', iz
        cell_bounds=bnds_lat)        
       
   ilon = cmor_axis(  &
-       table='Tables/CMIP5_Amon',    &
+       table='Tables/CMIP6_Amon.json',    &
        table_entry='longitude',      &
        length=lon,                   &
        units='degrees_east',         &
        coord_vals=alons,             &
        cell_bounds=bnds_lon)      
   ilat2 = cmor_axis(  &
-       table='Tables/CMIP5_Lmon',    &
+       table='Tables/CMIP6_Lmon.json',    &
        table_entry='latitude',       &
        units='degrees_north',        &  
        length=lat,                   &
@@ -284,17 +262,17 @@ print*, 'iz = ', iz
        cell_bounds=bnds_lat)        
       
   ilon2 = cmor_axis(  &
-       table='Tables/CMIP5_Lmon',    &
+       table='Tables/CMIP6_Lmon.json',    &
        table_entry='longitude',      &
        length=lon,                   &
        units='degrees_east',         &
        coord_vals=alons,             &
        cell_bounds=bnds_lon)      
         
-  print*, 'plevs:',plevs
+  print*, 'plev17:',plevs
   ipres = cmor_axis(  &
-       table='Tables/CMIP5_Amon',    &
-       table_entry='plevs',       &
+       table='Tables/CMIP6_Amon.json',    &
+       table_entry='plev17',       &
        units='Pa',                   &
        length=lev2,                   &
        coord_vals=plevs)
@@ -304,13 +282,13 @@ print*, 'iz = ', iz
   !   cmor_write (later, below).
 
   itim = cmor_axis(  &
-       table='Tables/CMIP5_Amon',    &
+       table='Tables/CMIP6_Amon.json',    &
        table_entry='time',           &
        units='days since 2030-1-1',  &
        length=ntimes,                &
        interval='1 month')
   itim2 = cmor_axis(  &
-       table='Tables/CMIP5_Lmon',    &
+       table='Tables/CMIP6_Lmon.json',    &
        table_entry='time',           &
        units='days since 2030-1-1',  &
        length=ntimes,                &
@@ -322,7 +300,7 @@ print*, 'iz = ', iz
   zlev_bnds=(/ 0.,.2, .42, .62, .8, 1. /)
 
   ilev = cmor_axis(  &
-       table='Tables/CMIP5_Amon',    &
+       table='Tables/CMIP6_Amon.json',    &
        table_entry='standard_hybrid_sigma',       &
        length=lev,                   &
        units = '1', &
@@ -367,7 +345,7 @@ print*, 'iz = ', iz
   !    (appearing in IPCC table A1c)
 
   var3d_ids(1) = cmor_variable(    &
-       table='Tables/CMIP5_Amon',  &
+       table='Tables/CMIP6_Amon.json',  &
        table_entry=entry3d(1),     &
        units=units3d(1),           &
        axis_ids=(/ ilon, ilat, ilev, itim /),  &
@@ -379,7 +357,7 @@ print*, 'iz = ', iz
   
   DO m=2,n3d
      var3d_ids(m) = cmor_variable(    &
-          table='Tables/CMIP5_Amon',  &
+          table='Tables/CMIP6_Amon.json',  &
           table_entry=entry3d(m),     &
           units=units3d(m),           &
           axis_ids=(/ ilon, ilat, ipres, itim /), &
@@ -396,17 +374,17 @@ print*, 'iz = ', iz
      IF (m.eq.2) then
 !!$
      var2d_ids(m) = cmor_variable(    &
-          table='Tables/CMIP5_Amon',  &
+          table='Tables/CMIP6_Amon.json',  &
           table_entry=entry2d(m),     & 
           units=units2d(m),           & 
-          axis_ids=(/ ilon, iz, ilat, itim  /), &
+          axis_ids=(/ ilon,  ilat, itim  /), &
           missing_value=1.0e28,       &
           positive=positive2d(m),     &
           original_name=varin2d(m))   
 
   else if (m.eq.3) then
      var2d_ids(m) = cmor_variable(    &
-          table='Tables/CMIP5_Lmon',  &
+          table='Tables/CMIP6_Lmon.json',  &
           table_entry=entry2d(m),     & 
           units=units2d(m),           & 
           axis_ids=(/ ilon2, ilat2, itim2 /), &
@@ -415,7 +393,7 @@ print*, 'iz = ', iz
           original_name=varin2d(m))   
   else
      var2d_ids(m) = cmor_variable(    &
-          table='Tables/CMIP5_Amon',  &
+          table='Tables/CMIP6_Amon.json',  &
           table_entry=entry2d(m),     & 
           units=units2d(m),           & 
           axis_ids=(/ ilon, ilat, itim /), &
diff --git a/Test/main_prog.f90 b/Test/main_prog.f90
index 513aca9..619ca95 100644
--- a/Test/main_prog.f90
+++ b/Test/main_prog.f90
@@ -211,26 +211,7 @@ PROGRAM mip_contribution
   !   attributes in all CF-netCDF files written as part of this dataset.
 
   print*, 'calling cmor_dataset'
-  error_flag = cmor_dataset(                                   &
-       outpath='Test',         &
-       experiment_id='abrupt 4XCO2',           &
-       institution=                                            &
-       'GICC (Generic International Climate Center, ' //       &
-       'Geneva, Switzerland)',                                 &
-       source='GICCM1  2002(giccm_0_brnchT_itea_2, T63L32)',    &
-       calendar='360_day',                                      &
-       realization=1,                                          &
-       history='Output from archive/giccm_03_std_2xCO2_2256.', &
-       comment='Equilibrium reached after 30-year spin-up ' // &
-       'after which data were output starting with nominal '// &
-       'date of January 2030',                                 &
-       references='Model described by Koder and Tolkien ' //   &
-       '(J. Geophys. Res., 2001, 576-591).  Also ' //          &
-       'see http://www.GICC.su/giccm/doc/index.html '  //      &
-       ' 2XCO2 simulation described in Dorkey et al. '//       &
-       '(Clim. Dyn., 2003, 323-357.)', model_id="GICCM1", &
-       forcing='TO',contact="Barry Bonds",institute_id="PCMDI",&
-       parent_experiment_rip="N/A",parent_experiment_id="N/A",branch_time=bt)
+  error_flag = cmor_dataset_json("Test/test2.json")
   
   print*, 'returned from cmor_dataset'
 
@@ -238,43 +219,43 @@ PROGRAM mip_contribution
 
   print*, 'defining 3-d axes'
    axis2d_ids2(1) = cmor_axis(  &
-       table='Tables/CMIP5_Lmon',    &
+       table='Tables/CMIP6_Lmon.json',    &
        table_entry='latitude',       &
        units='degrees_north',        &  
        length=lat,                   &
        coord_vals=alats,             & 
        cell_bounds=bnds_lat)              
   axis2d_ids2(2) = cmor_axis(  &
-       table='Tables/CMIP5_Lmon',    &
+       table='Tables/CMIP6_Lmon.json',    &
        table_entry='longitude',      &
        length=lon,                   &
        units='degrees_east',         &
        coord_vals=alons,             &
        cell_bounds=bnds_lon)              
   axis2d_ids2(3) = cmor_axis(  &
-       table='Tables/CMIP5_Lmon',    &
+       table='Tables/CMIP6_Lmon.json',    &
        table_entry='time',           &
        units='days since 1979-1-1',  &
        length=ntimes,                &
        interval='1 month')
  
   axis3d_ids(2) = cmor_axis(  &
-       table='Tables/CMIP5_Amon',    &
+       table='Tables/CMIP6_Amon.json',    &
        table_entry='latitude',       &
        units='degrees_north',        &  
        length=lat,                   &
        coord_vals=alats,             & 
        cell_bounds=bnds_lat)              
   axis3d_ids(1) = cmor_axis(  &
-       table='Tables/CMIP5_Amon',    &
+       table='Tables/CMIP6_Amon.json',    &
        table_entry='longitude',      &
        length=lon,                   &
        units='degrees_east',         &
        coord_vals=alons,             &
        cell_bounds=bnds_lon)              
   axis3d_ids(3) = cmor_axis(  &
-       table='Tables/CMIP5_Amon',    &
-       table_entry='plevs',       &
+       table='Tables/CMIP6_Amon.json',    &
+       table_entry='plev17',       &
        units='Pa',                   &
        length=lev,                   &
        coord_vals=plevs)
@@ -283,7 +264,7 @@ PROGRAM mip_contribution
   !   cmor_write (below).
 print*, 'before time '
   axis3d_ids(4) = cmor_axis(  &
-       table='Tables/CMIP5_Amon',    &
+       table='Tables/CMIP6_Amon.json',    &
        table_entry='time',           &
        units='days since 1979-1-1',  &
        length=ntimes,                &
@@ -305,7 +286,7 @@ print*, 'finished defining 2-d axes'
   
   DO m=1,n3d
      var3d_ids(m) = cmor_variable(    &   
-          table='Tables/CMIP5_Amon',  &
+          table='Tables/CMIP6_Amon.json',  &
           table_entry=entry3d(m),     &
           units=units3d(m),           &
           axis_ids=axis3d_ids,        &
@@ -320,7 +301,7 @@ print*, 'finished defining 2-d axes'
   DO m=1,n2d
      if (m.eq.3) then
         var2d_ids(m) = cmor_variable(    &
-             table='Tables/CMIP5_Lmon',  & 
+             table='Tables/CMIP6_Lmon.json',  & 
              table_entry=entry2d(m),     & 
 !!$          file_suffix='1979-2001',    &
              units=units2d(m),           & 
@@ -330,7 +311,7 @@ print*, 'finished defining 2-d axes'
              original_name=varin2d(m))  
      else 
      var2d_ids(m) = cmor_variable(    &
-          table='Tables/CMIP5_Amon',  & 
+          table='Tables/CMIP6_Amon.json',  & 
           table_entry=entry2d(m),     & 
           units=units2d(m),           & 
           axis_ids=axis2d_ids,        &
diff --git a/Test/mytest.f90 b/Test/mytest.f90
index b84ed26..71246af 100644
--- a/Test/mytest.f90
+++ b/Test/mytest.f90
@@ -51,24 +51,7 @@ program main
        exit_control=1)
     
   print*,'CMOR DATASET'
-  ierr = cmor_dataset(                                   &
-       outpath='Test',         &
-       experiment_id='abrupt 4XCO2',           &
-       institution=                                            &
-       'GICC (Generic International Climate Center, ' //       &
-       ' Geneva, Switzerland)',                                &
-       source='GICCM  2002(giccm_0_brnchT_itea_2, T63L32)',    &
-       calendar='noleap',                                      &
-       realization=1,                                          &
-       history='Output from archive/giccm_03_std_2xCO2_2256.', &
-       comment='Equilibrium reached after 30-year spin-up ' // &
-       'after which data were output starting with nominal '// &
-       'date of January 2030',                                 &
-       references='Model described by Koder and Tolkien ' //   &
-       '(J. Geophys. Res., 2001, 576-591).  Also ' //          &
-       'see http://www.GICC.su/giccm/doc/index.html '  //      &
-       ' 2XCO2 simulation described in Dorkey et al. '//       &
-       '(Clim. Dyn., 2003, 323-357.)' )
+  ierr = cmor_dataset_json("Test/test2.json")
   
   current=>mydims
   do i = 0,ndim-1
diff --git a/Test/mytest_3d_i_2.f90 b/Test/mytest_3d_i_2.f90
index 55a7c96..936a260 100644
--- a/Test/mytest_3d_i_2.f90
+++ b/Test/mytest_3d_i_2.f90
@@ -51,24 +51,7 @@ program main
        exit_control=1)
     
   print*,'CMOR DATASET'
-  ierr = cmor_dataset(                                   &
-       outpath='Test',         &
-       experiment_id='2xCO2 equilibrium experiment',           &
-       institution=                                            &
-       'GICC (Generic International Climate Center, ' //       &
-       ' Geneva, Switzerland)',                                &
-       source='GICCM  2002(giccm_0_brnchT_itea_2, T63L32)',    &
-       calendar='noleap',                                      &
-       realization=1,                                          &
-       history='Output from archive/giccm_03_std_2xCO2_2256.', &
-       comment='Equilibrium reached after 30-year spin-up ' // &
-       'after which data were output starting with nominal '// &
-       'date of January 2030',                                 &
-       references='Model described by Koder and Tolkien ' //   &
-       '(J. Geophys. Res., 2001, 576-591).  Also ' //          &
-       'see http://www.GICC.su/giccm/doc/index.html '  //      &
-       ' 2XCO2 simulation described in Dorkey et al. '//       &
-       '(Clim. Dyn., 2003, 323-357.)' )
+  ierr = cmor_dataset_json("Test/test2.json")
   
   current=>mydims
   do i = 0,ndim-1
diff --git a/Test/mytest_3d_r.f90 b/Test/mytest_3d_r.f90
index c611f04..22c65c4 100644
--- a/Test/mytest_3d_r.f90
+++ b/Test/mytest_3d_r.f90
@@ -53,24 +53,7 @@ program main
        exit_control=1)
     
   print*,'CMOR DATASET'
-  ierr = cmor_dataset(                                   &
-       outpath='Test',         &
-       experiment_id='2xCO2 equilibrium experiment',           &
-       institution=                                            &
-       'GICC (Generic International Climate Center, ' //       &
-       ' Geneva, Switzerland)',                                &
-       source='GICCM  2002(giccm_0_brnchT_itea_2, T63L32)',    &
-       calendar='noleap',                                      &
-       realization=1,                                          &
-       history='Output from archive/giccm_03_std_2xCO2_2256.', &
-       comment='Equilibrium reached after 30-year spin-up ' // &
-       'after which data were output starting with nominal '// &
-       'date of January 2030',                                 &
-       references='Model described by Koder and Tolkien ' //   &
-       '(J. Geophys. Res., 2001, 576-591).  Also ' //          &
-       'see http://www.GICC.su/giccm/doc/index.html '  //      &
-       ' 2XCO2 simulation described in Dorkey et al. '//       &
-       '(Clim. Dyn., 2003, 323-357.)' )
+  ierr = cmor_dataset_json("Test/test2.json")
   
   current=>mydims
   do i = 0,ndim-1
diff --git a/Test/mytest_3d_r_2.f90 b/Test/mytest_3d_r_2.f90
index b0b0390..d7b74ff 100644
--- a/Test/mytest_3d_r_2.f90
+++ b/Test/mytest_3d_r_2.f90
@@ -51,24 +51,7 @@ program main
        exit_control=1)
     
   print*,'CMOR DATASET'
-  ierr = cmor_dataset(                                   &
-       outpath='Test',         &
-       experiment_id='2xCO2 equilibrium experiment',           &
-       institution=                                            &
-       'GICC (Generic International Climate Center, ' //       &
-       ' Geneva, Switzerland)',                                &
-       source='GICCM  2002(giccm_0_brnchT_itea_2, T63L32)',    &
-       calendar='noleap',                                      &
-       realization=1,                                          &
-       history='Output from archive/giccm_03_std_2xCO2_2256.', &
-       comment='Equilibrium reached after 30-year spin-up ' // &
-       'after which data were output starting with nominal '// &
-       'date of January 2030',                                 &
-       references='Model described by Koder and Tolkien ' //   &
-       '(J. Geophys. Res., 2001, 576-591).  Also ' //          &
-       'see http://www.GICC.su/giccm/doc/index.html '  //      &
-       ' 2XCO2 simulation described in Dorkey et al. '//       &
-       '(Clim. Dyn., 2003, 323-357.)' )
+  ierr = cmor_dataset_json("Test/test2.json")
   
   current=>mydims
   do i = 0,ndim-1
diff --git a/Test/mytest_4d_d_big_array_2.f90 b/Test/mytest_4d_d_big_array_2.f90
index 424e945..e642bbe 100644
--- a/Test/mytest_4d_d_big_array_2.f90
+++ b/Test/mytest_4d_d_big_array_2.f90
@@ -69,26 +69,7 @@ program main
        exit_control=1)
     
   print*,'Test Code: CMOR DATASET'
-  ierr = cmor_dataset(                                   &
-       outpath='Test',         &
-       experiment_id='abrupt 4XCO2',           &
-       institution=                                            &
-       'GICC (Generic International Climate Center, ' //       &
-       ' Geneva, Switzerland)',                                &
-       source='GICCM1  2002(giccm_0_brnchT_itea_2, T63L32)',    &
-       calendar='360_day',                                      &
-       realization=1,                                          &
-       history='Output from archive/giccm_03_std_2xCO2_2256.', &
-       comment='Equilibrium reached after 30-year spin-up ' // &
-       'after which data were output starting with nominal '// &
-       'date of January 2030',                                 &
-       references='Model described by Koder and Tolkien ' //   &
-       '(J. Geophys. Res., 2001, 576-591).  Also ' //          &
-       'see http://www.GICC.su/giccm/doc/index.html '  //      &
-       ' 2XCO2 simulation described in Dorkey et al. '//       &
-       '(Clim. Dyn., 2003, 323-357.)', model_id="GICCM1", &
-       forcing='TO',contact="Barry Bonds",institute_id="PCMDI",&
-       parent_experiment_rip="N/A",parent_experiment_id="N/A",branch_time=bt)
+  ierr = cmor_dataset_json("Test/test2.json")
 
   current=>mydims
   do i = 0,ndim-1
@@ -100,7 +81,7 @@ program main
 !!$     print*, 'Test Code: ',current%bounds(1:2,1:min(4,size(current%values)))
      if (trim(adjustl(current%name)).eq.'time') then
         print*, 'Test Code: time found'
-        myaxis(ndim-i)=cmor_axis('Tables/CMIP5_Amon', &
+        myaxis(ndim-i)=cmor_axis('Tables/CMIP6_Amon.json', &
           table_entry=current%name,&
           units=current%units,&
           length=current%n,&
@@ -108,7 +89,7 @@ program main
 !!$          cell_bounds=current%bounds, &
           interval='30 days')
      else
-     myaxis(ndim-i)=cmor_axis('Tables/CMIP5_Amon', &
+     myaxis(ndim-i)=cmor_axis('Tables/CMIP6_Amon.json', &
           table_entry=current%name,&
           units=current%units,&
           length=current%n,&
@@ -122,7 +103,7 @@ program main
   print*,'Test Code: CMOR VARCMOR VARCMOR VARCMOR'
 
   mymiss=1.e20
-  myvar=cmor_variable('Tables/CMIP5_Amon',&
+  myvar=cmor_variable('Tables/CMIP6_Amon.json',&
        'ta',&
        'K',&
        myaxis,&
@@ -190,7 +171,7 @@ contains
        ntot=ntot*n
        read(file_unit,'(A)') current%name
        print*, 'Test Code: NAME is:',current%name,trim(adjustl(mydims%name))
-       if (current%name.eq."pressure") current%name="plevs"
+       if (current%name.eq."pressure") current%name="plev17"
        read(file_unit,'(A)') current%units
        read(file_unit,*) (current%values(j),j=1,n)
        read(file_unit,*) ((current%bounds(j,k),j=1,2),k=1,n)
diff --git a/Test/mytest_4d_d_big_array_3.f90 b/Test/mytest_4d_d_big_array_3.f90
index 7050766..e38b913 100644
--- a/Test/mytest_4d_d_big_array_3.f90
+++ b/Test/mytest_4d_d_big_array_3.f90
@@ -69,26 +69,7 @@ program main
        exit_control=1)
     
   print*,'Test Code: CMOR DATASET'
-  ierr = cmor_dataset(                                   &
-       outpath='Test',         &
-       experiment_id='abrupt 4XCO2',           &
-       institution=                                            &
-       'GICCM1 (Generic International Climate Center, ' //       &
-       ' Geneva, Switzerland)',                                &
-       source='GICCM1  2002(giccm_0_brnchT_itea_2, T63L32)',    &
-       calendar='360_day',                                      &
-       realization=1,                                          &
-       history='Output from archive/giccm_03_std_2xCO2_2256.', &
-       comment='Equilibrium reached after 30-year spin-up ' // &
-       'after which data were output starting with nominal '// &
-       'date of January 2030',                                 &
-       references='Model described by Koder and Tolkien ' //   &
-       '(J. Geophys. Res., 2001, 576-591).  Also ' //          &
-       'see http://www.GICC.su/giccm/doc/index.html '  //      &
-       ' 2XCO2 simulation described in Dorkey et al. '//       &
-       '(Clim. Dyn., 2003, 323-357.)', model_id="GICCM1", &
-       forcing='TO',contact="Barry Bonds",institute_id="PCMDI",&
-       parent_experiment_rip="N/A",parent_experiment_id="N/A",branch_time=bt)
+  ierr = cmor_dataset_json("Test/test2.json")
   
   current=>mydims
   do i = 0,ndim-1
@@ -100,7 +81,7 @@ program main
 !!$     print*, 'Test Code: ',current%bounds(1:2,1:min(4,size(current%values)))
      if (trim(adjustl(current%name)).eq.'time') then
         print*, 'Test Code: time found'
-        myaxis(ndim-i)=cmor_axis('Tables/CMIP5_Amon', &
+        myaxis(ndim-i)=cmor_axis('Tables/CMIP6_Amon.json', &
           table_entry=current%name,&
           units=current%units,&
           length=current%n,&
@@ -108,7 +89,7 @@ program main
 !!$          cell_bounds=current%bounds, &
           interval='30 days')
      else
-     myaxis(ndim-i)=cmor_axis('Tables/CMIP5_Amon', &
+     myaxis(ndim-i)=cmor_axis('Tables/CMIP6_Amon.json', &
           table_entry=current%name,&
           units=current%units,&
           length=current%n,&
@@ -122,7 +103,7 @@ program main
   print*,'Test Code: CMOR VARCMOR VARCMOR VARCMOR'
 
   mymiss=1.e20
-  myvar=cmor_variable('Tables/CMIP5_Amon',&
+  myvar=cmor_variable('Tables/CMIP6_Amon.json',&
        'ta',&
        'K',&
        myaxis,&
@@ -190,7 +171,7 @@ contains
        ntot=ntot*n
        read(file_unit,'(A)') current%name
        print*, 'Test Code: NAME is:',current%name,trim(adjustl(mydims%name))
-       if (current%name.eq."pressure") current%name="plevs"
+       if (current%name.eq."pressure") current%name="plev17"
        read(file_unit,'(A)') current%units
        read(file_unit,*) (current%values(j),j=1,n)
        read(file_unit,*) ((current%bounds(j,k),j=1,2),k=1,n)
diff --git a/Test/mytest_4d_d_big_array_4.f90 b/Test/mytest_4d_d_big_array_4.f90
index d06caf4..9611a0f 100644
--- a/Test/mytest_4d_d_big_array_4.f90
+++ b/Test/mytest_4d_d_big_array_4.f90
@@ -57,26 +57,7 @@ program main
        exit_control=1)
     
   print*,'Test Code: CMOR DATASET'
-  ierr = cmor_dataset(                                   &
-       outpath='Test',         &
-       experiment_id='abrupt 4XCO2',           &
-       institution=                                            &
-       'GICC (Generic International Climate Center, ' //       &
-       ' Geneva, Switzerland)',                                &
-       source='GICCM1  2002(giccm_0_brnchT_itea_2, T63L32)',    &
-       calendar='360_day',                                      &
-       realization=1,                                          &
-       history='Output from archive/giccm_03_std_2xCO2_2256.', &
-       comment='Equilibrium reached after 30-year spin-up ' // &
-       'after which data were output starting with nominal '// &
-       'date of January 2030',                                 &
-       references='Model described by Koder and Tolkien ' //   &
-       '(J. Geophys. Res., 2001, 576-591).  Also ' //          &
-       'see http://www.GICC.su/giccm/doc/index.html '  //      &
-       ' 2XCO2 simulation described in Dorkey et al. '//       &
-       '(Clim. Dyn., 2003, 323-357.)',model_id="GICCM1", &
-       forcing='TO',contact="Barry Bonds",institute_id="PCMDI",&
-       parent_experiment_rip="N/A",parent_experiment_id="N/A",branch_time=bt)
+  ierr = cmor_dataset_json("Test/test2.json") 
 
   current=>mydims
   do i = 0,ndim-1
@@ -89,7 +70,7 @@ program main
      if (trim(adjustl(current%name)).eq.'time') then
         print*, 'Test Code: time found'
   print*, 'Test Code: bounds:',current%bounds,current%units
-      myaxis(ndim-i)=cmor_axis('Tables/CMIP5_Amon', &
+      myaxis(ndim-i)=cmor_axis('Tables/CMIP6_Amon.json', &
           table_entry=current%name,&
           units=current%units,&
           length=current%n,&
@@ -97,7 +78,7 @@ program main
           cell_bounds=current%bounds, &
           interval='1 month')
      else
-     myaxis(ndim-i)=cmor_axis('Tables/CMIP5_Amon', &
+     myaxis(ndim-i)=cmor_axis('Tables/CMIP6_Amon.json', &
           table_entry=current%name,&
           units=current%units,&
           length=current%n,&
@@ -111,7 +92,7 @@ program main
   print*,'Test Code: CMOR VARCMOR VARCMOR VARCMOR'
 
   mymiss=1.e20
-  myvar=cmor_variable('Tables/CMIP5_Amon',&
+  myvar=cmor_variable('Tables/CMIP6_Amon.json',&
        'ta',&
        'K',&
        myaxis,&
@@ -189,7 +170,7 @@ contains
        ntot=ntot*n
        read(file_unit,'(A)') current%name
        print*, 'Test Code: NAME is:',current%name,trim(adjustl(mydims%name))
-       if (current%name.eq."pressure") current%name="plevs"
+       if (current%name.eq."pressure") current%name="plev17"
        read(file_unit,'(A)') current%units
        read(file_unit,*) (current%values(j),j=1,n)
        read(file_unit,*) ((current%bounds(j,k),j=1,2),k=1,n)
diff --git a/Test/mytest_4d_d_big_array_5.f90 b/Test/mytest_4d_d_big_array_5.f90
index 6dd55b9..e712c5d 100644
--- a/Test/mytest_4d_d_big_array_5.f90
+++ b/Test/mytest_4d_d_big_array_5.f90
@@ -69,26 +69,7 @@ program main
        exit_control=1)
     
   print*,'Test Code: CMOR DATASET'
-  ierr = cmor_dataset(                                   &
-       outpath='Test',         &
-       experiment_id='abrupt 4XCO2',           &
-       institution=                                            &
-       'GICC (Generic International Climate Center, ' //       &
-       ' Geneva, Switzerland)',                                &
-       source='GICCM1  2002(giccm_0_brnchT_itea_2, T63L32)',    &
-       calendar='noleap',                                      &
-       realization=1,                                          &
-       history='Output from archive/giccm_03_std_2xCO2_2256.', &
-       comment='Equilibrium reached after 30-year spin-up ' // &
-       'after which data were output starting with nominal '// &
-       'date of January 2030',                                 &
-       references='Model described by Koder and Tolkien ' //   &
-       '(J. Geophys. Res., 2001, 576-591).  Also ' //          &
-       'see http://www.GICC.su/giccm/doc/index.html '  //      &
-       ' 2XCO2 simulation described in Dorkey et al. '//       &
-       '(Clim. Dyn., 2003, 323-357.)',model_id='GICCM1', &
-       forcing='TO',contact="Barry Bonds",institute_id="PCMDI",&
-       parent_experiment_rip="N/A",parent_experiment_id="N/A",branch_time=bt)
+  ierr = cmor_dataset_json("Test/test2.json")
   
   current=>mydims
   do i = 0,ndim-1
@@ -100,7 +81,7 @@ program main
 !!$     print*, 'Test Code: ',current%bounds(1:2,1:min(4,size(current%values)))
      if (trim(adjustl(current%name)).eq.'time') then
         print*, 'Test Code: time found','with ',current%n,'times'
-        myaxis(ndim-i)=cmor_axis('Tables/CMIP5_Amon', &
+        myaxis(ndim-i)=cmor_axis('Tables/CMIP6_Amon.json', &
           table_entry=current%name,&
           units=current%units,&
           length=current%n,&
@@ -108,7 +89,7 @@ program main
           cell_bounds=current%bounds, &
           interval='31 days')
      else
-     myaxis(ndim-i)=cmor_axis('Tables/CMIP5_Amon', &
+     myaxis(ndim-i)=cmor_axis('Tables/CMIP6_Amon.json', &
           table_entry=current%name,&
           units=current%units,&
           length=current%n,&
@@ -122,7 +103,7 @@ program main
   print*,'Test Code: CMOR VARCMOR VARCMOR VARCMOR'
 
   mymiss=1.e20
-  myvar=cmor_variable('Tables/CMIP5_Amon',&
+  myvar=cmor_variable('Tables/CMIP6_Amon.json',&
        'ta',&
        'K',&
        myaxis,&
@@ -187,7 +168,7 @@ contains
        ntot=ntot*n
        read(file_unit,'(A)') current%name
        print*, 'Test Code: NAME is:',current%name,trim(adjustl(mydims%name))
-       if (current%name.eq."pressure") current%name="plevs"
+       if (current%name.eq."pressure") current%name="plev17"
        read(file_unit,'(A)') current%units
        read(file_unit,*) (current%values(j),j=1,n)
        read(file_unit,*) ((current%bounds(j,k),j=1,2),k=1,n)
diff --git a/Test/mytest_4d_r.f90 b/Test/mytest_4d_r.f90
index 96b4434..032439e 100644
--- a/Test/mytest_4d_r.f90
+++ b/Test/mytest_4d_r.f90
@@ -51,27 +51,7 @@ program main
        exit_control=1)
     
   print*,'CMOR DATASET'
-  ierr = cmor_dataset(                                   &
-       outpath='Test',         &
-       experiment_id='abrupt 4XCO2',           &
-       institution=                                            &
-       'GICC (Generic International Climate Center, ' //       &
-       ' Geneva, Switzerland)',                                &
-       source='GICCM1  2002(giccm_0_brnchT_itea_2, T63L32)',    &
-       calendar='noleap',                                      &
-       realization=1,                                          &
-       history='Output from archive/giccm_03_std_2xCO2_2256.', &
-       comment='Equilibrium reached after 30-year spin-up ' // &
-       'after which data were output starting with nominal '// &
-       'date of January 2030',                                 &
-       references='Model described by Koder and Tolkien ' //   &
-       '(J. Geophys. Res., 2001, 576-591).  Also ' //          &
-       'see http://www.GICC.su/giccm/doc/index.html '  //      &
-       ' 2XCO2 simulation described in Dorkey et al. '//       &
-       '(Clim. Dyn., 2003, 323-357.)', &
-       model_id="GICCM1",&
-       forcing='TO',contact="Barry Bonds",institute_id="PCMDI",&
-       parent_experiment_rip="N/A",parent_experiment_id="N/A",branch_time=bt)
+  ierr = cmor_dataset_json("Test/test2.json") 
   
   current=>mydims
   do i = 0,ndim-1
@@ -83,7 +63,7 @@ program main
 !!$     print*, current%bounds(1:2,1:min(4,size(current%values)))
      if (trim(adjustl(current%name)).eq.'time') then
         print*, 'time found'
-     myaxis(ndim-i)=cmor_axis('Tables/CMIP5_Amon', &
+     myaxis(ndim-i)=cmor_axis('Tables/CMIP6_Amon.json', &
           table_entry=current%name,&
           units=current%units,&
           length=current%n,&
@@ -91,7 +71,7 @@ program main
 !!$          cell_bounds=current%bounds, &
           interval='1 month')
      else
-     myaxis(ndim-i)=cmor_axis('Tables/CMIP5_Amon', &
+     myaxis(ndim-i)=cmor_axis('Tables/CMIP6_Amon.json', &
           table_entry=current%name,&
           units=current%units,&
           length=current%n,&
@@ -105,7 +85,7 @@ program main
   print*,'CMOR VARCMOR VARCMOR VARCMOR'
 
   mymiss=1.e20
-  myvar=cmor_variable('Tables/CMIP5_Amon',&
+  myvar=cmor_variable('Tables/CMIP6_Amon.json',&
        'ta',&
        'K',&
        myaxis,&
@@ -174,7 +154,7 @@ contains
        ntot=ntot*n
        read(file_unit,'(A)') current%name
        print*, 'NAME is:',current%name,trim(adjustl(mydims%name))
-       if (current%name.eq."pressure") current%name="plevs"
+       if (current%name.eq."pressure") current%name="plev17"
        read(file_unit,'(A)') current%units
        read(file_unit,*) (current%values(j),j=1,n)
        read(file_unit,*) ((current%bounds(j,k),j=1,2),k=1,n)
diff --git a/Test/mytest_4d_r_big_array.f90 b/Test/mytest_4d_r_big_array.f90
index 093906c..02956f8 100644
--- a/Test/mytest_4d_r_big_array.f90
+++ b/Test/mytest_4d_r_big_array.f90
@@ -67,26 +67,7 @@ program main
        exit_control=1)
     
   print*,'Test Code: CMOR DATASET'
-  ierr = cmor_dataset(                                   &
-       outpath='Test',         &
-       experiment_id='abrupt 4XCO2',           &
-       institution=                                            &
-       'GICC (Generic International Climate Center, ' //       &
-       ' Geneva, Switzerland)',                                &
-       source='GICCM1  2002(giccm_0_brnchT_itea_2, T63L32)',    &
-       calendar='360_day',                                      &
-       realization=1,                                          &
-       history='Output from archive/giccm_03_std_2xCO2_2256.', &
-       comment='Equilibrium reached after 30-year spin-up ' // &
-       'after which data were output starting with nominal '// &
-       'date of January 2030',                                 &
-       references='Model described by Koder and Tolkien ' //   &
-       '(J. Geophys. Res., 2001, 576-591).  Also ' //          &
-       'see http://www.GICC.su/giccm/doc/index.html '  //      &
-       ' 2XCO2 simulation described in Dorkey et al. '//       &
-       '(Clim. Dyn., 2003, 323-357.)', model_id="GICCM1", &
-       forcing='TO',contact="Barry Bonds",institute_id="PCMDI",&
-       parent_experiment_rip="N/A",parent_experiment_id="N/A",branch_time=bt)
+  ierr = cmor_dataset_json("Test/test2.json")
   current=>mydims
   do i = 0,ndim-1
      print*,'Test Code: CMOR AXIS',i,'AAAAAAA*************************************************************************'
@@ -97,7 +78,7 @@ program main
 !!$     print*, 'Test Code: ',current%bounds(1:2,1:min(4,size(current%values)))
      if (trim(adjustl(current%name)).eq.'time') then
         print*, 'Test Code: time found'
-        myaxis(ndim-i)=cmor_axis('Tables/CMIP5_Amon', &
+        myaxis(ndim-i)=cmor_axis('Tables/CMIP6_Amon.json', &
           table_entry=current%name,&
           units=current%units,&
           length=current%n,&
@@ -105,7 +86,7 @@ program main
 !!$          cell_bounds=current%bounds, &
           interval='1 month')
      else
-     myaxis(ndim-i)=cmor_axis('Tables/CMIP5_Amon', &
+     myaxis(ndim-i)=cmor_axis('Tables/CMIP6_Amon.json', &
           table_entry=current%name,&
           units=current%units,&
           length=current%n,&
@@ -119,7 +100,7 @@ program main
   print*,'Test Code: CMOR VARCMOR VARCMOR VARCMOR'
 
   mymiss=1.e20
-  myvar=cmor_variable('Tables/CMIP5_Amon',&
+  myvar=cmor_variable('Tables/CMIP6_Amon.json',&
        'ta',&
        'K',&
        myaxis,&
@@ -187,7 +168,7 @@ contains
        ntot=ntot*n
        read(file_unit,'(A)') current%name
        print*, 'Test Code: NAME is:',current%name,trim(adjustl(mydims%name))
-       if (current%name.eq."pressure") current%name="plevs"
+       if (current%name.eq."pressure") current%name="plev17"
        read(file_unit,'(A)') current%units
        read(file_unit,*) (current%values(j),j=1,n)
        read(file_unit,*) ((current%bounds(j,k),j=1,2),k=1,n)
diff --git a/Test/omonxyztst.f90 b/Test/omonxyztst.f90
index 64fa3f5..98875bd 100644
--- a/Test/omonxyztst.f90
+++ b/Test/omonxyztst.f90
@@ -233,31 +233,7 @@ PROGRAM mip_contribution
   ! Define dataset as output from the INM model 
 
   print*, 'calling cmor_dataset'
-  error_flag = cmor_dataset(                                   &
-       outpath='Test',         &
-       contact='Evgeny Volodin, volodin at inm.ras.ru,' //  & 
-       'INM RAS, Gubkina 8, Moscow, 119333 Russia,' // &
-       '+7-495-9383904',            &
-       experiment_id='piControl',        &
-       institution='INM (Institute for Numerical Mathematics, ' //       &
-       ' Moscow, Russia)',                                &
-       institute_id='INM',       &
-       source='inmcm4.0 (2009)',    &
-       calendar='365_day',                                      &
-       realization=1,                                          &
-       initialization_method=1,           &
-       history='Output from /data5/volodin/PICNTL', &
-       comment='no comments',  &
-       references='Volodin, Diansky, Gusev 2010. Climate ' //   &
-       'model INMCM4.0. Izvestia RAS. Atmospheric and ' //          &
-       'oceanic physics, V.46, N4, in print.',          &
-       model_id="inmcm4", &
-       !modeling_realm="ocean",  &
-       parent_experiment_rip="N/A",parent_experiment_id="N/A",   &
-       physics_version=1,      &
-       branch_time=bt, &
-      ! frequency='mon',                           &
-       forcing="N/A")
+  error_flag = cmor_dataset_json("Test/test2.json")
   
   print*, 'returned from cmor_dataset'
 
diff --git a/Test/python_test_table_A b/Test/python_test_table_A
index 7292432..c440b8b 100644
--- a/Test/python_test_table_A
+++ b/Test/python_test_table_A
@@ -1,2388 +1,2013 @@
-cmor_version: 2.0         ! version of CMOR that can read this table
-cf_version:   1.0         ! version of CF that output conforms to
-project_id:   IPCC Fourth Assessment  ! project id
-table_id:     Table A1    ! table id
-table_date:   17 November 2004 ! date this table was constructed
-required_global_attributes: creation_date tracking_id model_id forcing
+{
+    "Header": {
+        "#product": "output",
+        "missing_value": "1e20",
+        "approx_interval": "30.00000",
+        "#baseURL": "http://cmip-pcmdi.llnl.gov/CMIP6/dataLocation",
+        "cmor_version": "3.0",
+        "forcings": "N/A Nat Ant GHG SD SI SA TO SO Oz LU Sl Vl SS Ds BC MD OC AA",
+        "frequency": "mon",
+        "table_id": "Table Amon",
+        "table_date": "24 February 2016",
+        "modeling_realm": "atmos",
+        "generic_levels": "alevel alevhalf",
+        "activity_id": "CMIP6-XXXXX",
+        "data_specs_version": "3.0",
+        "Conventions": "CF-1.8 CMIP-6.0"
+    },
+    "axis_entry": {
+        "olayer100m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "0.0", 
+            "value": "50.0", 
+            "z_bounds_factors": "", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "100.0", 
+            "axis": "Z"
+        }, 
+        "ocean_sigma_z": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "sigma: sigma eta: eta depth: depth depth_c: depth_c nsigma: nsigma zlev: zlev", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "value": "", 
+            "z_bounds_factors": "sigma: sigma_bnds eta: eta depth: depth depth_c: depth_c nsigma: nsigma zlev: zlev_bnds", 
+            "long_name": "ocean sigma over z coordinate", 
+            "standard_name": "ocean_sigma_z", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "for k <= nsigma: z(n,k,j,i) = eta(n,j,i) + sigma(k)*(min(depth_c,depth(j,i))+eta(n,j,i)) ; for k > nsigma: z(n,k,j,i) = zlev(k)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "smooth_level": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "a: a b1: b1 b2: b2 ztop: ztop zsurf1: zsurf1 zsurf2: zsurf2", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-200.0", 
+            "value": "", 
+            "z_bounds_factors": "a: a_bnds b1: b1_bnds b2: b2_bnds ztop: ztop zsurf1: zsurf1 zsurf2: zsurf2", 
+            "long_name": "atmosphere smooth level vertical (SLEVE) coordinate", 
+            "standard_name": "atmosphere_sleve_coordinate", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "m", 
+            "formula": "z = a*ztop + b1*zsurf1 + b2*zsurf2", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "800000.0", 
+            "axis": "Z"
+        }, 
+        "ocean_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "sigma: lev eta: eta depth: depth", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-1.0", 
+            "value": "", 
+            "z_bounds_factors": "sigma: lev_bnds eta: eta depth: depth", 
+            "long_name": "ocean sigma coordinate", 
+            "standard_name": "ocean_sigma_coordinate", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "z(n,k,j,i) = eta(n,j,i) + sigma(k)*(depth(j,i)+eta(n,j,i))", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "0.0", 
+            "axis": "Z"
+        }, 
+        "depth0m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "0.0", 
+            "value": "0.0", 
+            "z_bounds_factors": "", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "100.0", 
+            "axis": "Z"
+        }, 
+        "ocean_s": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "s: lev eta: eta depth: depth a: a_coeff b: b_coeff depth_c: depth_c", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-1.0", 
+            "value": "", 
+            "z_bounds_factors": "s: lev_bnds eta: eta depth: depth a: a b: b depth_c: depth_c", 
+            "long_name": "ocean s-coordinate", 
+            "standard_name": "ocean_s_coordinate", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "z(n,k,j,i) = eta(n,j,i)*(1+s(k)) + depth_c*s(k) + (depth(j,i)-depth_c)*C(k) \n where \n C(k)=(1-b)*sinh(a*s(k))/sinh(a) +\n           b*(tanh(a*(s(k)+0.5))/(2*tanh(0.5*a)) - 0.5)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "0.0", 
+            "axis": "Z"
+        }, 
+        "height2m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "up", 
+            "must_have_bounds": "no", 
+            "valid_min": "1.0", 
+            "value": "2.0", 
+            "z_bounds_factors": "", 
+            "long_name": "height", 
+            "standard_name": "height", 
+            "out_name": "height", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "10.0", 
+            "axis": "Z"
+        }, 
+        "depth_coord": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "value": "", 
+            "z_bounds_factors": "", 
+            "long_name": "ocean depth coordinate", 
+            "standard_name": "depth", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "12000.0", 
+            "axis": "Z"
+        }, 
+        "alternate_hybrid_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "ap: ap b: b ps: ps", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "value": "", 
+            "z_bounds_factors": "ap: ap_bnds b: b_bnds ps: ps", 
+            "long_name": "hybrid sigma pressure coordinate", 
+            "standard_name": "atmosphere_hybrid_sigma_pressure_coordinate", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "1", 
+            "formula": "p = ap + b*ps", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "1.0", 
+            "axis": "Z"
+        }, 
+        "time2": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "value": "", 
+            "z_bounds_factors": "", 
+            "long_name": "time", 
+            "standard_name": "time", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "yes", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
 
-expt_id_ok:   'pre-industrial control experiment'
-expt_id_ok:   'present-day control experiment'
-expt_id_ok:   'climate of the 20th Century experiment (20C3M)'
-expt_id_ok:   'committed climate change experiment'  ! official name(s) of 
-expt_id_ok:   'SRES A2 experiment'                   !  project's experiments
-expt_id_ok:   '720 ppm stabilization experiment (SRES A1B)'    
-expt_id_ok:   '550 ppm stabilization experiment (SRES B1)'
-expt_id_ok:   '1%/year CO2 increase experiment (to doubling)'
-expt_id_ok:   '1%/year CO2 increase experiment (to quadrupling)'
-expt_id_ok:   'slab ocean control experiment'
-expt_id_ok:   '2xCO2 equilibrium experiment'
-expt_id_ok:   'AMIP experiment'
-
-baseURL: http://cmip-pcmdi.llnl.gov
-
-magic_number: -1          ! used to check whether this file has been 
-                          !   altered from the official version.
-                          !   should be set to number of non-blank 
-                          !   characters in file. 
-approx_interval:  30.     ! approximate spacing between successive time
-                          !   samples (in units of the output time 
-                          !   coordinate), but this is ignored if set to 0.
-missing_value: 1.e20      ! value used to indicate a missing value
-                          !   in arrays output by netCDF as 32-bit IEEE 
-                          !   floating-point numbers (float or real)
-
-!*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#
-!
-! SUBROUTINE ARGUMENT DEFAULT INFORMATION
-!
-!*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#
-!
-!  set default specifications for subroutine arguments to:
-!     required/indeterminate/optional/ignored/forbidden
-!    (indeterminate may or may not be required information, but is not always
-!     required as an argument of the function call)
-!
-!
-!============
-subroutine_entry: cmor_axis
-!============
-!
-required: table axis_name units length coord_vals cell_bounds
-ignored: interval
-!
-!============
-subroutine_entry: cmor_variable
-!============
-!
-required: table table_entry units axis_ids
-indeterminate: missing_value
-optional: tolerance original_name history comment
-ignored: positive
-!
-!============
-subroutine_entry: cmor_write
-!============
-!
-required:  var_id data 
-indeterminate: ntimes_passed time_vals time_bnds store_with
-optional: file_suffix
-!
-!
-!*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#
-!
-! AXIS INFORMATION
-!
-!*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#
-!
-! ??? what about climatology???
-! ??? what about model level data???
-!
-!
-!  TEMPLATE FOR AXES
-!
-!============
-!axis_entry:               ! (required)
-!============
-!
-!    Override default argument specifications for cmor_axis 
-!------------
-!    acceptable arguments include units length coord_vals cell_bounds interval
-!required:                  ! (default: table axis_name units length
-!                                        coord_vals cell_bounds)
-!indeterminate:
-!optional:
-!ignored:                   ! (default: interval)
-!forbidden:
-!------------
-!
-! Axis attributes:
-!----------------------------------	
-!standard_name:             ! (required)
-!units:                     ! (required)
-!axis:                      ! X, Y, Z, T (default: undeclared)
-!positive:                  ! up or down (default: undeclared)
-!long_name:                 ! (default: undeclared)
-!----------------------------------	
-!
-! Additional axis information:
-!----------------------------------	
-!out_name:                ! (default: same as axis_entry) 
-!type:                    ! double (default), real, character, integer
-!stored_direction:        ! increasing (default) or decreasing
-!valid_min:               ! type: double precision (default: no check performed
-!valid_max:               ! type: double precision (default: no check performed
-!requested:               ! space-separated list of requested coordinates 
-                          !       (default: undeclared)
-!bounds_requested:        ! space-separated list of requested coordinate bounds
-                          !       (default: undeclared)
-!tol_on_requests:         ! fractional tolerance for meeting request
-                          !  (default=1.e-3, which is used in the formula:
-                          !     eps =  MIN(( tol*interval between grid-points)
-                          !          and (1.e-3*tol*coordinate value)))
-!value:                   ! of scalar (singleton) dimension 
-!bounds_values:           ! of scalar (singleton) dimension bounds
-!----------------------------------	
-!
-!
-!  TEMPLATE FOR VARIABLES
-!
-!
-!============
-!variable_entry:                ! (required)
-!============
-!
-!    Override default argument specifications for cmor_variable
-!------------
-!        acceptable arguments include  file_suffix missing_value tolerance 
-!                               original_name history comment positive
-!required:                   ! (default: table table_entry units axis_ids)
-!indeterminate:              ! (default: file_suffix missing_value)
-!optional:                   ! (default: original_name history comment)
-!ignored:                    ! (default: positive)
-!forbidden:
-!------------
-!
-! Variable attributes:
-!----------------------------------	
-!standard_name:              ! (required)
-!units:                      ! (required)
-!cell_methods:               ! (default: undeclared)
-!long_name:                  ! (default: undeclared)
-!comment:                    ! (default: undeclared)
-!----------------------------------	
-!
-! Additional variable information:
-!----------------------------------	
-!dimensions:                 ! (required)  (scalar dimension(s) should appear
-                             !      last in list)
-!out_name:                   ! (default: variable_entry)
-!type:                       ! real (default), double, integer 
-!positive:                   ! up or down (default: undeclared)
-!valid_min:                  ! type: real (default: no check performed)
-!valid_max:                  ! type: real (default: no check performed)
-!ok_min_mean_abs:            ! type: real (default: no check performed)
-!ok_max_mean_abs:            ! type: real (default: no check performed)
-!----------------------------------	
-! 
-
-!
-!============
-axis_entry: longitude
-!============
-!
-!------------
-!
-! Axis attributes:
-!----------------------------------	
-standard_name:    longitude
-units:            degrees_east
-axis:             X
-long_name:        longitude
-!----------------------------------	
-!
-! Additional axis information:
-!----------------------------------	
-out_name:         lon
-valid_min:        0.           ! CMOR will add n*360 to input values
-                               ! (where n is an integer) to ensure 
-                               !  longitudes are in proper range.  The
-                               !  data will also be rearranged 
-                               !  appropriately.
-valid_max:        360.         !  see above comment.
-!----------------------------------	
-!
-!
-!=============
-axis_entry: latitude
-!=============
-!
-! Axis attributes:
-!----------------------------------	
-standard_name:    latitude
-units:            degrees_north
-axis:             Y
-long_name:        latitude
-!----------------------------------	
-!
-! Additional axis information:
-!----------------------------------	
-out_name:         lat
-valid_min:        -90.
-valid_max:        90.
-!----------------------------------	
-!
-!
-
-! ??? What about climatological data???
-!
-
-!============
-axis_entry: time
-!============
-!
-!    Override default argument specifications for cmor_axis 
-!------------
-optional: interval length
-indeterminate: coord_vals cell_bounds
-!------------
-!
-! Axis attributes:
-!----------------------------------	
-standard_name:    time
-units:            days since ?
-axis:             T
-long_name:        time
-!----------------------------------	
-!
-!
-!============
-axis_entry: pressure
-!============
-!
-!    Override default argument specifications for cmor_axis 
-!------------
-ignored: cell_bounds
-!------------
-!
-! Axis attributes:
-!----------------------------------	
-standard_name:    air_pressure
-units:            Pa 
-axis:             Z
-positive:         down
-long_name:        pressure
-!----------------------------------	
-!
-! Additional axis information:
-!----------------------------------	
-out_name:         plev
-stored_direction: decreasing
-valid_min:        0.
-valid_max:        110000.
-!requested:        100000. 92500. 85000. 70000. 60000. 50000. 40000. 
-!requested:         30000. 25000. 20000. 15000. 10000.  7000.  5000.
-!requested:          3000.  2000.  1000.
-!----------------------------------	
-!
-!
-!============
-axis_entry: height1
-!============
-!
-!    Override default argument specifications for cmor_axis 
-!------------
-ignored: cell_bounds
-!------------
-!
-! Axis attributes:
-!----------------------------------	
-standard_name:    height
-units:            m
-axis:             Z
-positive:         up
-long_name:        height
-!----------------------------------	
-!
-! Additional axis information:
-!----------------------------------	
-out_name:         height
-valid_min:        0.
-valid_max:        10.
-value:            2.
-!----------------------------------	
-!
-!
-!============
-axis_entry: height2
-!============
-!
-!    Override default argument specifications for cmor_axis 
-!------------
-ignored: cell_bounds
-!------------
-!
-! Axis attributes:
-!----------------------------------	
-standard_name:    height
-units:            m
-axis:             Z
-positive:         up
-long_name:        height
-!----------------------------------	
-!
-! Additional axis information:
-!----------------------------------	
-out_name:         height
-valid_min:        0.
-valid_max:        30.
-value:            10.
-!----------------------------------	
-!
-!
-!============
-axis_entry: depth1
-!============
-!
-!------------
-!
-! Axis attributes:
-!----------------------------------	
-standard_name:    depth
-units:            m
-axis:             Z
-positive:         down
-long_name:         depth
-!----------------------------------	
-!
-! Additional axis information:
-!----------------------------------	
-out_name:         depth
-valid_min:        0.0
-valid_max:        1.0
-value:            0.05
-bounds_values:    0.0 0.1
-!----------------------------------
-!
-!
-!============
-axis_entry: pressure1
-!
-!   Scalar dimension (200 hPa) defined for near-tropopause radiation fluxes
-!      (rsntp, rlntp, rsntpcs, rlntpcs, rsftropa_?, rsftropi_?, rlftropa_?, 
-!       rlftropi_?, rsftropacs_?, rsftropics_?, rlftropacs_?, rlftropics_?)
-!============
-!
-!    Override default argument specifications for cmor_axis 
-!------------
-ignored: cell_bounds
-!------------
-!
-!------------
-!
-! Axis attributes:
-!----------------------------------	
-standard_name:    air_pressure
-units:            Pa
-axis:             Z
-positive:         down
-long_name:        pressure
-!----------------------------------	
-!
-! Additional axis information:
-!----------------------------------	
-out_name:         plev
-valid_min:        10000.
-valid_max:        30000.
-value:            20000.
-!----------------------------------
-!
-!
-!============
-axis_entry: pressure2
-!============
-!
-!------------
-!
-! Axis attributes:
-!----------------------------------	
-standard_name:    air_pressure
-stored_direction: decreasing
-units:            Pa
-axis:             Z
-positive:         down
-long_name:        pressure
-!----------------------------------	
-!
-! Additional axis information:
-!----------------------------------	
-out_name:         plev
-bounds_requested: 100000. 80000. 80000. 68000. 68000. 56000. 56000. 44000. 44000. 31000. 31000. 18000. 18000.   0.
-!bounds_requested:  56000. 44000. 44000. 31000. 31000. 18000.
-!bounds_requested:  18000.     0.
-!----------------------------------!
-!
-!
-!============
-axis_entry: pressure3
-!
-!   Is defined for Table A1e: sulfate aerosol data (trsul)
-!============
-!
-!    Override default argument specifications for cmor_axis 
-!------------
-optional: cell_bounds
-!------------
-!
-! Axis attributes:
-!----------------------------------	
-standard_name:    air_pressure
-units:            Pa 
-axis:             Z
-positive:         down
-long_name:        pressure
-!----------------------------------	
-!
-! Additional axis information:
-!----------------------------------	
-out_name:         plev
-stored_direction: decreasing
-valid_min:        0.
-valid_max:        110000.
-requested:        100400. 98300. 95300. 91000. 84800. 76500. 66300. 
-requested:         54600. 42500. 31800. 23800. 18300. 14000. 10300.
-requested:          7200.  4700.  2700.  1300.   400.
-!----------------------------------	
-!
-!
-!============
-axis_entry: tau
-!============
-!
-!------------
-!
-! Axis attributes:
-!----------------------------------	
-standard_name:    cloud_optical_depth
-units:            1
-long_name:        optical depth
-!----------------------------------	
-!
-! Additional axis information:
-!----------------------------------	
-bounds_requested:  0.0  0.3  0.3  1.3  1.3  3.6  3.6  9.4 
-bounds_requested:  9.4 23.0 23.0 60.0 60.0 100000.
-!----------------------------------
-!
-!
-!============
-axis_entry: standard_sigma
-!============
-!
-!    Override default argument specifications for cmor_axis 
-!------------
-optional: units
-!------------
-!
-! Axis attributes:
-!----------------------------------	
-standard_name:    atmosphere_sigma_coordinate
-axis:             Z
-positive:         down
-long_name:        sigma coordinate
-!----------------------------------	
-!
-! Additional axis information:
-!----------------------------------	
-out_name:         lev
-stored_direction: decreasing
-valid_min:        0.0
-valid_max:        1.0
-formula:          p(n,k,j,i) = ptop + sigma(k)*(ps(n,j,i) - ptop)
-convert_to:       standard_hybrid_sigma
-z_factors:        ptop: ptop sigma: sigma ps: ps
-z_bounds_factors: ptop: ptop sigma: sigma_bnds ps: ps
-!----------------------------------	
-!
-!
-!============
-axis_entry:  standard_hybrid_sigma
-!============
-!
-!    Override default argument specifications for cmor_axis 
-!------------
-optional: units
-!------------
-!
-! Axis attributes:
-!----------------------------------	
-standard_name:    atmosphere_hybrid_sigma_pressure_coordinate
-units:            1
-axis:             Z 
-positive:         down
-long_name:        hybrid sigma pressure coordinate
-!----------------------------------	
-!
-! Additional axis information:
-!----------------------------------	
-out_name:         lev
-stored_direction: decreasing
-valid_min:        0.0
-valid_max:        1.0
-formula:          p(n,k,j,i) = a(k)*p0 + b(k)*ps(n,j,i)
-z_factors:        p0: p0 a: a b: b ps: ps
-z_bounds_factors: p0: p0 a: a_bnds b: b_bnds ps: ps
-!----------------------------------		
-!
-!
-!============
-axis_entry:  alternate_hybrid_sigma
-!============
-!
-!    Override default argument specifications for cmor_axis 
-!------------
-optional: units
-!------------
-!
-! Axis attributes:
-!----------------------------------	
-standard_name:    atmosphere_hybrid_sigma_pressure_coordinate
-stored_direction: decreasing
-units:            1
-axis:             Z
-positive:         down
-long_name:        hybrid sigma pressure coordinate
-!----------------------------------	
-!
-! Additional axis information:
-!----------------------------------	
-out_name:         lev
-valid_min:        0.0
-valid_max:        1.0
-formula:          p(n,k,j,i) = ap(k) + b(k)*ps(n,j,i)
-convert_to:       standard_hybrid_sigma
-z_factors:        p0: p0 ap: ap b: b ps: ps
-z_bounds_factors: p0 ap: ap_bnds b: b_bnds ps: ps
-!----------------------------------		
-!
-!
-!============
-axis_entry:  hybrid_height
-!============
-!
-!    Override default argument specifications for cmor_axis 
-!------------
-optional: units
-!------------
-!
-! Axis attributes:
-!----------------------------------	
-standard_name:    atmosphere_hybrid_height_coordinate
-units:            m
-axis:             Z 
-positive:         up
-long_name:        hybrid height coordinate
-!----------------------------------	
-!
-! Additional axis information:
-!----------------------------------	
-out_name:         lev
-stored_direction: increasing
-valid_min:        0.0
-formula:          z(k,j,i) = a(k) + b(k)*orog(j,i)
-z_factors:        a: a b: b orog: orog
-z_bounds_factors: a: a_bnds b: b_bnds orog: orog
-!----------------------------------		
-!
-!
-!*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#
-!
-! VARIABLE INFORMATION
-!
-!*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#
-!
-!
-!
-! ***************************************************************
-!
-! Vertical dimensionless coordinate variables:
-!
-! ***************************************************************
-!
-!
-!
-!============
-variable_entry: p0
-!============
-!
-!    Override default argument specifications for cmor_variable
-!------------
-ignored: axis_ids
-!------------
-!
-! Variable attributes:
-!----------------------------------	
-long_name:       reference pressure for hybrid sigma coordinate 
-units:           Pa
-!----------------------------------	
-!
-!
-!============
-variable_entry: ptop
-!============
-!
-!    Override default argument specifications for cmor_variable
-!------------
-ignored: axis_ids
-!------------
-!
-! Variable attributes:
-!----------------------------------	
-long_name:       pressure at top of model 
-units:           Pa
-!----------------------------------	
-!
-!
-!============
-variable_entry: sigma
-!============
-!
-!    Override default argument specifications for cmor_variable
-!------------
-optional: units
-!------------
-!
-! Variable attributes:
-!----------------------------------	
-long_name:  sigma coordinate
-!----------------------------------	
-!
-! Additional variable information:
-!----------------------------------	
-dimensions:         zlevel
-type:               double
-!----------------------------------	
-!
-!
-!============
-variable_entry: sigma_bnds
-!============
-!
-!    Override default argument specifications for cmor_variable
-!------------
-optional: units
-!------------
-!
-! Variable attributes:
-!----------------------------------	
-long_name:  sigma coordinate for layer bounds
-!----------------------------------	
-!
-! Additional variable information:
-!----------------------------------	
-dimensions:         zlevel
-type:               double
-!----------------------------------	
-!
-!
-!============
-variable_entry: a
-!============
-!
-!    Override default argument specifications for cmor_variable
-!------------
-optional: units
-!------------
-!
-! Variable attributes:
-!----------------------------------	
-long_name:   hybrid sigma coordinate A coefficient for layer
-!----------------------------------	
-!
-! Additional variable information:
-!----------------------------------	
-dimensions:         zlevel
-type:               double
-!----------------------------------	
-!
-!
-!============
-variable_entry: b
-!============
-!
-!    Override default argument specifications for cmor_variable
-!------------
-optional: units
-!------------
-!
-! Variable attributes:
-!----------------------------------	
-long_name:   hybrid sigma coordinate B coefficient for layer
-!----------------------------------	
-!
-! Additional variable information:
-!----------------------------------	
-dimensions:         zlevel
-type:               double
-!----------------------------------	
-!
-!
-!============
-variable_entry: a_bnds
-!============
-!
-!    Override default argument specifications for cmor_variable
-!------------
-optional: units
-!------------
-!
-! Variable attributes:
-!----------------------------------	
-long_name:   hybrid sigma coordinate A coefficient for layer bounds
-!----------------------------------	
-!
-! Additional variable information:
-!----------------------------------	
-dimensions:         zlevel
-type:               double
-!----------------------------------	
-!
-!
-!============
-variable_entry: b_bnds
-!============
-!
-!    Override default argument specifications for cmor_variable
-!------------
-optional: units
-!------------
-!
-! Variable attributes:
-!----------------------------------	
-long_name:   hybrid sigma coordinate B coefficient for layer bounds
-!----------------------------------	
-!
-! Additional variable information:
-!----------------------------------	
-dimensions:         zlevel
-type:               double
-!----------------------------------
-!
-!
-!============
-variable_entry: ap
-!============
-!
-! Variable attributes:
-!----------------------------------	
-long_name:   alternate hybrid sigma coordinate A coefficient for layer
-units:           Pa
-!----------------------------------	
-!
-! Additional variable information:
-!----------------------------------	
-dimensions:         zlevel
-type:               double
-!----------------------------------	
-!
-!
-!============
-variable_entry: ap_bnds
-!============
-!
-! Variable attributes:
-!----------------------------------	
-long_name:   alternate hybrid sigma coordinate A coefficient for layer bounds
-units:           Pa
-!----------------------------------	
-!
-! Additional variable information:
-!----------------------------------	
-dimensions:         zlevel
-type:               double
-!----------------------------------	
-!
-!
-!============
-variable_entry: ztop
-!============
-!
-!    Override default argument specifications for cmor_variable
-!------------
-ignored: axis_ids
-!------------
-!
-! Variable attributes:
-!----------------------------------	
-long_name:       height of top of model 
-units:           m
-!----------------------------------	
-!
-!
-!============
-variable_entry: az
-!============
-!
-!    Override default argument specifications for cmor_variable
-!------------
-optional: units
-!------------
-!
-! Variable attributes:
-!----------------------------------	
-long_name:   hybrid height coordinate coefficient (eta) for layer
-!----------------------------------	
-!
-! Additional variable information:
-!----------------------------------	
-dimensions:         zlevel
-type:               double
-!----------------------------------	
-!
-!
-!============
-variable_entry: bz
-!============
-!
-!    Override default argument specifications for cmor_variable 
-!------------
-optional: units
-!------------
-!
-! Variable attributes:
-!----------------------------------	
-long_name:   hybrid height coordinate coefficient (tau) for layer
-!----------------------------------	
-!
-! Additional variable information:
-!----------------------------------	
-dimensions:         zlevel
-type:               double
-!----------------------------------	
-!
-!
-!============
-variable_entry: az_bnds
-!============
-!
-!    Override default argument specifications for cmor_variable
-!------------
-optional: units
-!------------
-!
-! Variable attributes:
-!----------------------------------	
-long_name:   hybrid sigma coordinate coefficient (eta) for layer bounds
-!----------------------------------	
-!
-! Additional variable information:
-!----------------------------------	
-dimensions:         zlevel
-type:               double
-!----------------------------------	
-!
-!
-!============
-variable_entry: bz_bnds
-!============
-!
-!    Override default argument specifications for cmor_variable
-!------------
-optional: units
-!------------
-!
-! Variable attributes:
-!----------------------------------	
-long_name:   hybrid sigma coordinate B coefficient (tau) for layer bounds
-!----------------------------------	
-!
-! Additional variable information:
-!----------------------------------	
-dimensions:         zlevel
-type:               double
-!----------------------------------
-!
-!
-!
-! ***************************************************************
-!
-! IPCC Table A1a: Monthly-mean 2-d atmosphere or land surface data
-!
-! ***************************************************************
-!
-!
-!
-!============
-variable_entry: psl
-!============
-!
-! Variable attributes:
-!----------------------------------	
-standard_name:   air_pressure_at_sea_level     
-units:           Pa
-cell_methods:    time: mean
-long_name:       Sea Level Pressure
-!----------------------------------	
-!
-! Additional variable information:
-!----------------------------------	
-dimensions:       longitude latitude time
-valid_min:        90000.
-valid_max:        120000.
-ok_min_mean_abs:  102000.
-ok_max_mean_abs:  98000.
-!----------------------------------	
-! 
-!
-!============
-variable_entry: pr
-!============
-!
-! Variable attributes:
-!----------------------------------	
-standard_name:  precipitation_flux
-units:          kg m-2 s-1
-cell_methods:   time: mean
-long_name:      Precipitation
-comment:        includes all types (rain, snow, large-scale, convective, etc.)
-!----------------------------------	
-!
-! Additional variable information:
-!----------------------------------	
-dimensions:         longitude latitude time
-valid_min:          0.0
-valid_max:          1.e-3
-ok_min_mean_abs:    1.e-6
-ok_max_mean_abs:    5.e-5 
-!----------------------------------	
-!
-!
-!============
-variable_entry: tas
-!============
-!
-! Variable attributes:
-!----------------------------------	
-standard_name:   air_temperature     
-units:           K
-cell_methods:    time: mean
-long_name:       Surface Air Temperature
-!----------------------------------	
-!
-! Additional variable information:
-!----------------------------------	
-dimensions:       longitude latitude time height1
-valid_min:        195.
-valid_max:        330.
-ok_min_mean_abs:  270.
-ok_max_mean_abs:  300.
-!----------------------------------	
-! 
-!
-!============
-variable_entry: mrsos
-!============
-!
-! Variable attributes:
-!----------------------------------	
-standard_name: moisture_content_of_soil_layer
-units:         kg m-2
-cell_methods:  time: mean
-long_name:     Moisture in Upper 0.1 m of Soil Column
-comment:         includes subsurface frozen water but not surface snow and ice 
-!----------------------------------	
-!
-! Additional variable information:
-!----------------------------------	
-dimensions:       longitude latitude time depth1
-!----------------------------------	 
-!
-!
-!============
-variable_entry: mrso
-!============
-!
-! Variable attributes:
-!----------------------------------	
-standard_name: soil_moisture_content
-units:         kg m-2
-cell_methods:  time: mean
-long_name:     Total Soil Moisture Content
-comment:         includes subsurface frozen water but not surface snow and ice 
-!----------------------------------	
-!
-! Additional variable information:
-!----------------------------------	
-dimensions:       longitude latitude time
-!----------------------------------	 
-!
-!
-!============
-variable_entry: tauu
-!============
-!
-!    Override default argument specifications for cmor_variable
-!------------
-required: positive
-!------------
-!
-! Variable attributes:
-!----------------------------------	
-standard_name: surface_downward_eastward_stress
-units:         Pa
-cell_methods:  time: mean
-long_name:     Zonal Surface Wind Stress
-!----------------------------------	
-!
-! Additional variable information:
-!----------------------------------	
-dimensions:       longitude latitude time
-positive:         down
-!----------------------------------	
-! 
-!
-!============
-variable_entry: tauv
-!============
-!
-!    Override default argument specifications for cmor_variable
-!------------
-required: positive
-!------------
-!
-! Variable attributes:
-!----------------------------------	
-standard_name: surface_downward_northward_stress
-units:         Pa
-cell_methods:  time: mean
-long_name:     Meridional Surface Wind Stress
-!----------------------------------	
-!
-! Additional variable information:
-!----------------------------------	
-dimensions:       longitude latitude time
-positive:         down
-!----------------------------------	
-! 
-!
-!============
-variable_entry: snd
-!============
-!
-! Variable attributes:
-!----------------------------------	
-standard_name: surface_snow_thickness
-units:         m
-cell_methods:  time: mean
-long_name:     Snow Depth
-!----------------------------------	
-!
-! Additional variable information:
-!----------------------------------	
-dimensions:       longitude latitude time
-valid_min:        0.0
-!----------------------------------	
-! 
-!
-!============
-variable_entry: hfls
-!============
-!
-!    Override default argument specifications for cmor_variable
-!------------
-required: positive
-!------------
-!
-! Variable attributes:
-!----------------------------------	
-standard_name: surface_upward_latent_heat_flux
-units:         W m-2
-cell_methods:  time: mean
-long_name:     Surface Latent Heat Flux
-!----------------------------------	
-!
-! Additional variable information:
-!----------------------------------	
-dimensions:       longitude latitude time
-positive:         up
-valid_min:        -120
-valid_max:        900.
-ok_min_mean_abs:  50.
-ok_max_mean_abs:  120.
-!----------------------------------	
-! 
-!
-!============
-variable_entry: hfss
-!============
-!
-!    Override default argument specifications for cmor_variable
-!------------
-required: positive
-!------------
-!
-! Variable attributes:
-!----------------------------------	
-standard_name: surface_upward_sensible_heat_flux
-units:         W m-2
-cell_methods:  time: mean
-long_name:     Surface Sensible Heat Flux
-!----------------------------------	
-!
-! Additional variable information:
-!----------------------------------	
-dimensions:       longitude latitude time
-positive:         up
-!----------------------------------	
-! 
-!
-!============
-variable_entry: rlds
-!============
-!
-!    Override default argument specifications for cmor_variable
-!------------
-required: positive
-!------------
-!
-! Variable attributes:
-!----------------------------------	
-standard_name: surface_downwelling_longwave_flux_in_air
-units:         W m-2
-cell_methods:  time: mean
-long_name:     Surface Downwelling Longwave Radiation
-!----------------------------------	
-!
-! Additional variable information:
-!----------------------------------	
-dimensions:       longitude latitude time
-positive:         down
-valid_min:        20.
-valid_max:        600.
-ok_min_mean_abs:  300.
-ok_max_mean_abs:  370.
-!----------------------------------	
-! 
-!
-!============
-variable_entry: rlus
-!============
-!
-!    Override default argument specifications for cmor_variable
-!------------
-required: positive
-!------------
-!
-! Variable attributes:
-!----------------------------------	
-standard_name: surface_upwelling_longwave_flux_in_air
-units:         W m-2
-cell_methods:  time: mean
-long_name:     Surface Upwelling Longwave Radiation
-!----------------------------------	
-!
-! Additional variable information:
-!----------------------------------	
-dimensions:       longitude latitude time
-positive:         up
-valid_min:        50.
-valid_max:        750.
-ok_min_mean_abs:  250.
-ok_max_mean_abs:  450.
-!----------------------------------	
-! 
-!
-!============
-variable_entry: rsds
-!============
-!
-!    Override default argument specifications for cmor_variable
-!------------
-required: positive
-!------------
-!
-! Variable attributes:
-!----------------------------------	
-standard_name: surface_downwelling_shortwave_flux_in_air
-units:         W m-2
-cell_methods:  time: mean
-long_name:     Surface Downwelling Shortwave Radiation
-!----------------------------------	
-!
-! Additional variable information:
-!----------------------------------	
-dimensions:       longitude latitude time
-positive:         down
-valid_min:        0.
-valid_max:        550.
-ok_min_mean_abs:  150.
-ok_max_mean_abs:  220.
-!----------------------------------	
-! 
-!
-!============
-variable_entry: rsus
-!============
-!
-!    Override default argument specifications for cmor_variable
-!------------
-required: positive
-!------------
-!
-! Variable attributes:
-!----------------------------------	
-standard_name: surface_upwelling_shortwave_flux_in_air
-units:         W m-2
-cell_methods:  time: mean
-long_name:     Surface Upwelling Shortwave Radiation
-!----------------------------------	
-!
-! Additional variable information:
-!----------------------------------	
-dimensions:       longitude latitude time
-valid_min:        0.
-positive:         up
-!----------------------------------	
-! 
-!
-!============
-variable_entry: ts
-!============
-!
-! Variable attributes:
-!----------------------------------	
-standard_name: surface_temperature
-units:         K    
-cell_methods:  time: mean
-long_name:     Surface Skin Temperature
-!----------------------------------	
-!
-! Additional variable information:
-!----------------------------------	
-dimensions:       longitude latitude time
-valid_min:        170.
-valid_max:        340.
-ok_min_mean_abs:  280.
-ok_max_mean_abs:  300.
-!----------------------------------	
-! 
-!
-!============
-variable_entry: ps
-!============
-!
-! Variable attributes:
-!----------------------------------	
-standard_name:   surface_air_pressure     
-units:           Pa
-cell_methods:    time: mean
-long_name:       Surface Pressure
-!----------------------------------	
-!
-! Additional variable information:
-!----------------------------------	
-dimensions:       longitude latitude time
-valid_min:        0.48e5
-valid_max:        1.1e5
-ok_min_mean_abs:  0.97e5
-ok_max_mean_abs:  1.0e5
-!----------------------------------	
-!
-!
-!============
-variable_entry: prsn
-!============
-!
-! Variable attributes:
-!----------------------------------	
-standard_name:  snowfall_flux
-units:          kg m-2 s-1
-cell_methods:   time: mean
-long_name:      Snowfall Flux
-!----------------------------------	
-!
-! Additional variable information:
-!----------------------------------	
-dimensions:         longitude latitude time
-valid_min:          0.0
-!----------------------------------	
-!
-!
-!============
-variable_entry: prc
-!============
-!
-! Variable attributes:
-!----------------------------------	
-standard_name:  convective_precipitation_flux
-units:          kg m-2 s-1
-cell_methods:   time: mean
-long_name:      Convective Precipitation
-comment:        includes both liquid and solid phases
-!----------------------------------	
-!
-! Additional variable information:
-!----------------------------------	
-dimensions:         longitude latitude time
-valid_min:          0.0
-!----------------------------------	
-!
-!
-!============
-variable_entry: prw
-!============
-!
-! Variable attributes:
-!----------------------------------	
-standard_name:  atmosphere_water_vapor_content
-units:          kg m-2
-cell_methods:   time: mean
-long_name:      Precipitable Water
-!----------------------------------	
-!
-! Additional variable information:
-!----------------------------------	
-dimensions:         longitude latitude time
-valid_min:          0.0
-valid_max:          150.
-ok_min_mean_abs:    20.
-ok_max_mean_abs:    30. 
-!----------------------------------	
-!
-!
-!============
-variable_entry: mrfso
-!============
-!
-! Variable attributes:
-!----------------------------------	
-standard_name: soil_frozen_water_content
-units:         kg m-2
-cell_methods:  time: mean
-long_name:     Soil Frozen Water Content
-comment:       excludes surface snow and ice
-!----------------------------------	
-!
-! Additional variable information:
-!----------------------------------	
-dimensions:       longitude latitude time
-valid_min:          0.0
-!----------------------------------	 
-!
-!
-!============
-variable_entry: mrros
-!============
-!
-! Variable attributes:
-!----------------------------------	
-standard_name: surface_runoff_flux
-units:         kg m-2 s-1
-cell_methods:  time: mean
-long_name:     Surface Runoff
-!----------------------------------	
-!
-! Additional variable information:
-!----------------------------------	
-dimensions:       longitude latitude time
-!----------------------------------	 
-!
-!
-!============
-variable_entry: mrro
-!============
-!
-! Variable attributes:
-!----------------------------------	
-standard_name: runoff_flux
-units:         kg m-2 s-1
-cell_methods:  time: mean
-long_name:     Surface and Subsurface Runoff
-!----------------------------------	
-!
-! Additional variable information:
-!----------------------------------	
-dimensions:       longitude latitude time
-!----------------------------------	 
-!
-!
-!============
-variable_entry: snw
-!============
-!
-! Variable attributes:
-!----------------------------------	
-standard_name: surface_snow_amount_where_land
-units:         kg m-2
-cell_methods:  time: mean
-long_name:     Snow Amount
-!----------------------------------	
-!
-! Additional variable information:
-!----------------------------------	
-dimensions:       longitude latitude time
-valid_min:          0.0
-!----------------------------------	 
-!
-!
-!============
-variable_entry: snc
-!============
-!
-! Variable attributes:
-!----------------------------------	
-standard_name: surface_snow_area_fraction_where_land
-units:         %
-cell_methods:  time: mean
-long_name:     Snow Area Fraction
-!----------------------------------	
-!
-! Additional variable information:
-!----------------------------------	
-dimensions:       longitude latitude time
-valid_min:          0.0
-valid_max:          100.
-!----------------------------------	 
-!
-!
-!============
-variable_entry: snm
-!============
-!
-! Variable attributes:
-!----------------------------------	
-standard_name: surface_snow_melt_flux_where_land
-units:         kg m-2 s-1
-cell_methods:  time: mean
-long_name:     Snow Melt
-!----------------------------------	
-!
-! Additional variable information:
-!----------------------------------	
-dimensions:       longitude latitude time
-valid_min:          0.0
-!----------------------------------	 
-!
-!
-!============
-variable_entry: uas
-!============
-!
-! Variable attributes:
-!----------------------------------	
-standard_name:   eastward_wind    
-units:           m s-1
-cell_methods:    time: mean
-long_name:       Zonal Surface Wind Speed
-!----------------------------------	
-!
-! Additional variable information:
-!----------------------------------	
-dimensions:       longitude latitude time height2
-!----------------------------------	
-! 
-!
-!============
-variable_entry: vas
-!============
-!
-! Variable attributes:
-!----------------------------------	
-standard_name:   northward_wind    
-units:           m s-1
-cell_methods:    time: mean
-long_name:       Meridional Surface Wind Speed
-!----------------------------------	
-!
-! Additional variable information:
-!----------------------------------	
-dimensions:       longitude latitude time height2
-!----------------------------------	
-! 
-!
-!============
-variable_entry: huss
-!============
-!
-! Variable attributes:
-!----------------------------------	
-standard_name:   specific_humidity   
-units:           kg kg-1
-cell_methods:    time: mean
-long_name:       Surface Specific Humidity
-!----------------------------------	
-!
-! Additional variable information:
-!----------------------------------	
-dimensions:       longitude latitude time height1
-valid_min:        0.0
-!----------------------------------	
-! 
-!
-!============
-variable_entry: rsdt
-!============
-!
-!    Override default argument specifications for cmor_variable
-!------------
-required: positive
-!------------
-!
-! Variable attributes:
-!----------------------------------	
-standard_name: toa_incoming_shortwave_flux
-units:         W m-2
-cell_methods:  time: mean
-long_name:     TOA Incident Shortwave Radiation
-!----------------------------------	
-!
-! Additional variable information:
-!----------------------------------	
-dimensions:       longitude latitude time
-valid_min:        0.
-positive:         down
-!----------------------------------	
-! 
-!
-!============
-variable_entry: rsut
-!============
-!
-!    Override default argument specifications for cmor_variable
-!------------
-required: positive
-!------------
-!
-! Variable attributes:
-!----------------------------------	
-standard_name: toa_outgoing_shortwave_flux
-units:         W m-2
-cell_methods:  time: mean
-long_name:     TOA Reflected Shortwave Radiation
-!----------------------------------	
-!
-! Additional variable information:
-!----------------------------------	
-dimensions:       longitude latitude time
-valid_min:        0.
-positive:         up
-!----------------------------------	
-! 
-!
-!============
-variable_entry: rlut
-!============
-!
-!    Override default argument specifications for cmor_variable
-!------------
-required: positive
-!------------
-!
-! Variable attributes:
-!----------------------------------	
-standard_name: toa_outgoing_longwave_flux
-units:         W m-2
-cell_methods:  time: mean
-long_name:     Outgoing Longwave Radiation
-!----------------------------------	
-!
-! Additional variable information:
-!----------------------------------	
-dimensions:       longitude latitude time
-valid_min:        10.
-valid_max:        500.
-positive:         up
-!----------------------------------	
-! 
-!
-!============
-variable_entry: rtmt
-!============
-!
-!    Override default argument specifications for cmor_variable
-!------------
-required: positive
-!------------
-!
-! Variable attributes:
-!----------------------------------	
-standard_name: net_downward_radiative_flux_at_top_of_atmosphere_model
-units:         W m-2
-cell_methods:  time: mean
-long_name:     Net Flux at Top of Model
-!----------------------------------	
-!
-! Additional variable information:
-!----------------------------------	
-dimensions:       longitude latitude time
-positive:         down
-!----------------------------------	
-! 
-!
-!============
-variable_entry: rsntp
-!============
-!
-!    Override default argument specifications for cmor_variable
-!------------
-required: positive
-!------------
-!
-! Variable attributes:
-!----------------------------------	
-standard_name: net_downward_shortwave_flux_in_air
-units:         W m-2
-cell_methods:  time: mean
-long_name:     Net Downward Shortwave Flux at 200 hPa
-!----------------------------------	
-!
-! Additional variable information:
-!----------------------------------	
-dimensions:       longitude latitude time pressure1
-valid_min:        0.
-positive:         down
-!----------------------------------	
-! 
-!
-!============
-variable_entry: rlntp
-!============
-!
-!    Override default argument specifications for cmor_variable
-!------------
-required: positive
-!------------
-!
-! Variable attributes:
-!----------------------------------	
-standard_name: net_upward_longwave_flux_in_air
-units:         W m-2
-cell_methods:  time: mean
-long_name:     Net Upward Longwave Flux at 200 hPa
-!----------------------------------	
-!
-! Additional variable information:
-!----------------------------------	
-dimensions:       longitude latitude time pressure1
-valid_min:        0.
-positive:         up
-!----------------------------------	
-! 
-!
-!============
-variable_entry: rsntpcs
-!============
-!
-!    Override default argument specifications for cmor_variable
-!------------
-required: positive
-!------------
-!
-! Variable attributes:
-!----------------------------------	
-standard_name: net_downward_shortwave_flux_in_air_assuming_clear_sky
-units:         W m-2
-cell_methods:  time: mean
-long_name:     Net Downward Clear-Sky Shortwave Flux at 200 hPa
-!----------------------------------	
-!
-! Additional variable information:
-!----------------------------------	
-dimensions:       longitude latitude time pressure1
-valid_min:        0.
-positive:         down
-!----------------------------------	
-! 
-!
-!============
-variable_entry: rlntpcs
-!============
-!
-!    Override default argument specifications for cmor_variable
-!------------
-required: positive
-!------------
-!
-! Variable attributes:
-!----------------------------------	
-standard_name: net_upward_longwave_flux_in_air_assuming_clear_sky
-units:         W m-2
-cell_methods:  time: mean
-long_name:     Net Upward Clear-Sky Longwave Flux at 200 hPa
-!----------------------------------	
-!
-! Additional variable information:
-!----------------------------------	
-dimensions:       longitude latitude time pressure1
-valid_min:        0.
-positive:         up
-!----------------------------------	
-! 
-!
-!============
-variable_entry: rsdscs
-!============
-!
-!    Override default argument specifications for cmor_variable
-!------------
-required: positive
-!------------
-!
-! Variable attributes:
-!----------------------------------	
-standard_name: surface_downwelling_shortwave_flux_in_air_assuming_clear_sky
-units:         W m-2
-cell_methods:  time: mean
-long_name:     Incident Surface Clear-Sky Shortwave
-!----------------------------------	
-!
-! Additional variable information:
-!----------------------------------	
-dimensions:       longitude latitude time
-valid_min:        0.
-positive:         down
-!----------------------------------	
-! 
-!
-!============
-variable_entry: rsuscs
-!============
-!
-!    Override default argument specifications for cmor_variable
-!------------
-required: positive
-!------------
-!
-! Variable attributes:
-!----------------------------------	
-standard_name: surface_upwelling_shortwave_flux_in_air_assuming_clear_sky
-units:         W m-2
-cell_methods:  time: mean
-long_name:     Reflected Surface Clear-Sky Shortwave
-!----------------------------------	
-!
-! Additional variable information:
-!----------------------------------	
-dimensions:       longitude latitude time
-valid_min:        0.
-positive:         up
-!----------------------------------	
-! 
-!
-!============
-variable_entry: rldscs
-!============
-!
-!    Override default argument specifications for cmor_variable
-!------------
-required: positive
-!------------
-!
-! Variable attributes:
-!----------------------------------	
-standard_name: surface_downwelling_longwave_flux_in_air_assuming_clear_sky
-units:         W m-2
-cell_methods:  time: mean
-long_name:     Downwelling Surface Clear-Sky Longwave
-!----------------------------------	
-!
-! Additional variable information:
-!----------------------------------	
-dimensions:       longitude latitude time
-valid_min:        0.
-positive:         down
-!----------------------------------	
-! 
-!
-!============
-variable_entry: rlutcs
-!============
-!
-!    Override default argument specifications for cmor_variable
-!------------
-required: positive
-!------------
-!
-! Variable attributes:
-!----------------------------------	
-standard_name: toa_outgoing_longwave_flux_assuming_clear_sky
-units:         W m-2
-cell_methods:  time: mean
-long_name:     Outgoing Clear-Sky Longwave
-!----------------------------------	
-!
-! Additional variable information:
-!----------------------------------	
-dimensions:       longitude latitude time
-valid_min:        10.
-valid_max:        500.
-positive:         up
-!----------------------------------	
-! 
-!
-!============
-variable_entry: rsutcs
-!============
-!
-!    Override default argument specifications for cmor_variable
-!------------
-required: positive
-!------------
-!
-! Variable attributes:
-!----------------------------------	
-standard_name: toa_outgoing_shortwave_flux_assuming_clear_sky
-units:         W m-2
-cell_methods:  time: mean
-long_name:     Reflected Clear-Sky Shortwave
-!----------------------------------	
-!
-! Additional variable information:
-!----------------------------------	
-dimensions:       longitude latitude time
-valid_min:        0.
-positive:         up
-!----------------------------------	
-! 
-!
-!============
-variable_entry: clt2
-!============
-!
-! Variable attributes:
-!----------------------------------	
-standard_name: cloud_area_fraction
-units:         %
-cell_methods:  time: mean
-long_name:     Total Cloud Fraction
-deflate: 1
-deflate_level: 9
-!----------------------------------	
-!
-! Additional variable information:
-!----------------------------------	
-dimensions:       longitude latitude time
-valid_min:        0.0
-valid_max:        100.0
-ok_min_mean_abs:  30.
-ok_max_mean_abs:  75.
-!----------------------------------	
-! 
-!
-!============
-variable_entry: clt
-!============
-!
-! Variable attributes:
-!----------------------------------	
-standard_name: cloud_area_fraction
-units:         %
-cell_methods:  time: mean
-long_name:     Total Cloud Fraction
-deflate: 0
-deflate_level: 0
-!----------------------------------	
-!
-! Additional variable information:
-!----------------------------------	
-dimensions:       longitude latitude time
-valid_min:        0.0
-valid_max:        100.0
-ok_min_mean_abs:  30.
-ok_max_mean_abs:  75.
-!----------------------------------	
-! 
-!
-!============
-variable_entry: clwvi
-!============
-!
-! Variable attributes:
-!----------------------------------	
-standard_name: atmosphere_cloud_condensed_water_content
-units:         kg m-2
-cell_methods:  time: mean
-long_name:     Column Integerated Cloud Water Content
-comment:       should include both liquid and solid phase
-!----------------------------------	
-!
-! Additional variable information:
-!----------------------------------	
-dimensions:       longitude latitude time
-valid_min:        0.0
-!----------------------------------	
-! 
-!
-!============
-variable_entry: clivi
-!============
-!
-! Variable attributes:
-!----------------------------------	
-standard_name: atmosphere_cloud_ice_content
-units:         kg m-2
-cell_methods:  time: mean
-long_name:     Column Integerated Cloud Ice Content
-!----------------------------------	
-!
-! Additional variable information:
-!----------------------------------	
-dimensions:       longitude latitude time
-valid_min:        0.0
-!----------------------------------	
-!
-!
-!
-!
-! ***************************************************************
-!
-! IPCC Table A1b: Time-independent 2-d land surface data
-!
-! ***************************************************************
-!
-!
-!
-!============
-variable_entry: orog
-!============
-!
-! Variable attributes:
-!----------------------------------	
-standard_name: surface_altitude
-units:         m
-long_name:     Surface Altitude
-!----------------------------------	
-!
-! Additional variable information:
-!----------------------------------	
-dimensions:       longitude latitude
-valid_min:        -500.
-valid_max:        12000.
-ok_min_mean_abs:  0.
-ok_max_mean_abs:  2000.
-!----------------------------------	
-!
-!
-!============
-variable_entry: sftlf
-!============
-!
-! Variable attributes:
-!----------------------------------	
-standard_name: land_area_fraction
-units:         %
-long_name:     Land Area Fraction
-!----------------------------------	
-!
-! Additional variable information:
-!----------------------------------	
-dimensions:       longitude latitude
-valid_min:        0.0
-valid_max:        100.
-ok_min_mean_abs:  20.
-ok_max_mean_abs:  40.
-!----------------------------------	
-!
-!
-!============
-variable_entry: sftgif
-!============
-!
-! Variable attributes:
-!----------------------------------	
-standard_name: land_ice_area_fraction
-units:         %
-long_name:     Fraction of Grid Cell Covered with Glacier
-!----------------------------------	
-!
-! Additional variable information:
-!----------------------------------	
-dimensions:       longitude latitude
-valid_min:        0.0
-valid_max:        100.
-!----------------------------------	
-!
-!
-!============
-variable_entry: mrsofc
-!============
-!
-! Variable attributes:
-!----------------------------------	
-standard_name: soil_moisture_content_at_field_capacity
-units:         kg m-2
-long_name:     Capacity of Soil to Store Water
-!----------------------------------	
-!
-! Additional variable information:
-!----------------------------------	
-dimensions:       longitude latitude
-!----------------------------------	
-!
-!
-!
-!
-! ***************************************************************
-!
-! IPCC Table A1c: Monthly-mean 3-d atmosphere data
-!
-! ***************************************************************
-!
-!
-!
-!============
-variable_entry: cl
-!============
-!
-! Variable attributes:
-!----------------------------------	
-standard_name:  cloud_area_fraction_in_atmosphere_layer
-units:          %
-cell_methods:   time: mean
-long_name:      Cloud Fraction
-!----------------------------------	
-!
-! Additional variable information:
-!----------------------------------	
-dimensions:         longitude latitude zlevel time
-valid_min:          0.0
-valid_max:          100.0
-ok_min_mean_abs:    10.0
-ok_max_mean_abs:    90.0
-!----------------------------------	
-!
-!
-!============
-variable_entry: ta
-!============
-!
-! Variable attributes:
-!----------------------------------	
-standard_name: air_temperature
-units:         K
-cell_methods:  time: mean
-long_name:     Temperature
-!----------------------------------	
-!
-! Additional variable information:
-!----------------------------------	
-dimensions:       longitude latitude pressure2 time
-valid_min:        150.
-valid_max:        350.
-ok_min_mean_abs:  200.
-ok_max_mean_abs:  300.
-!----------------------------------	
-!
-!
-!============
-variable_entry: ua
-!============
-!
-! Variable attributes:
-!----------------------------------	
-standard_name: eastward_wind
-units:         m s-1
-cell_methods:  time: mean
-long_name:     Zonal Wind Component
-!----------------------------------	
-!
-! Additional variable information:
-!----------------------------------	
-dimensions:       longitude latitude pressure time
-valid_min:        -200.
-valid_max:        300.
-ok_min_mean_abs:  0.1
-ok_max_mean_abs:  100.
-!----------------------------------	
-!
-!
-!============
-variable_entry: va
-!============
-!
-! Variable attributes:
-!----------------------------------	
-standard_name: northward_wind
-units:         m s-1
-cell_methods:  time: mean
-long_name:     Meridional Wind Component
-!----------------------------------	
-!
-! Additional variable information:
-!----------------------------------	
-dimensions:       longitude latitude pressure time
-valid_min:        -100.
-valid_max:        100.
-ok_min_mean_abs:  0.1
-ok_max_mean_abs:  50.
-!----------------------------------	
-!
-!
-!============
-variable_entry: hus
-!============
-!
-! Variable attributes:
-!----------------------------------	
-standard_name: specific_humidity
-units:         1
-cell_methods:  time: mean
-long_name:     Specific Humidity 
-!----------------------------------	
-!
-! Additional variable information:
-!----------------------------------	
-dimensions:       longitude latitude pressure time
-!----------------------------------	
-!
-!
-!============
-variable_entry: wap
-!============
-!
-! Variable attributes:
-!----------------------------------	
-standard_name: lagrangian_tendency_of_air_pressure
-units:         Pa s-1
-cell_methods:  time: mean
-long_name:     Omega (=dp/dt) 
-!----------------------------------	
-!
-! Additional variable information:
-!----------------------------------	
-dimensions:       longitude latitude pressure time
-!----------------------------------	
-!
-!
-!============
-variable_entry: zg
-!============
-!
-! Variable attributes:
-!----------------------------------	
-standard_name: geopotential_height
-units:         m
-cell_methods:  time: mean
-long_name:     Geopotential Height 
-!----------------------------------	
-!
-! Additional variable information:
-!----------------------------------	
-dimensions:       longitude latitude pressure time
-!----------------------------------	
-!
-!
-!============
-variable_entry: hur
-!============
-!
-! Variable attributes:
-!----------------------------------	
-standard_name: relative_humidity
-units:         %
-cell_methods:  time: mean
-long_name:     Relative Humidity 
-!----------------------------------	
-!
-! Additional variable information:
-!----------------------------------	
-dimensions:       longitude latitude pressure time
-valid_min:        0.
-valid_max:        100.
-ok_min_mean_abs:  1.
-ok_max_mean_abs:  99.
-!----------------------------------	
-!
-!
-!============
-variable_entry: tro3
-!============
-!
-! Variable attributes:
-!----------------------------------	
-standard_name: mole_fraction_of_o3_in_air
-units:         1e-9
-cell_methods:  time: mean
-long_name:     Ozone Mole Fraction
-!----------------------------------	
-!
-! Additional variable information:
-!----------------------------------	
-dimensions:       longitude latitude pressure time
-!----------------------------------	
-!
-!
-!
-!
-! ***************************************************************
-!
-! IPCC Table A1d: Monthly-mean 3-d ISCCP simulator data
-!
-! ***************************************************************
-!
-!
-!
-!============
-variable_entry: clisccp
-!============
-!
-! Variable attributes:
-!----------------------------------	
-standard_name: isccp_cloud_area_fraction
-units:         1
-cell_methods:  time: mean
-long_name:     Cloud Fraction as Calculated by the ISCCP Simulator
-!----------------------------------	
-!
-! Additional variable information:
-!----------------------------------	
-dimensions:       longitude latitude pressure2 tau time
-valid_min:        0.0
-valid_max:        1.0
-ok_min_mean_abs:  0.001
-ok_max_mean_abs:  0.9
-!----------------------------------	
-!
-!
-!
-!
-! ***************************************************************
-!
-! IPCC Table A1e: Monthly-mean 2-d and 3-d sulfate aerosol fields
-!
-! ***************************************************************
-!
-!
-!
-!============
-variable_entry: trsul
-!============
-!
-! Variable attributes:
-!----------------------------------	
-standard_name: mass_concentration_of_sulfate_aerosol_in_air 
-units:         1e-9 kg m-3
-cell_methods:  time: mean
-long_name:     Mass Concentration of Sulfate Aerosol
-!----------------------------------	
-!
-! Additional variable information:
-!----------------------------------	
-dimensions:       longitude latitude pressure3 time
-!----------------------------------	
-!
-!
-!============
-variable_entry: trsult
-!============
-!
-! Variable attributes:
-!----------------------------------	
-standard_name: atmosphere_content_of_sulfate_aerosol 
-units:         1e-6 kg m-2
-cell_methods:  time: mean
-long_name:     Sulfate Burden
-!----------------------------------	
-!
-! Additional variable information:
-!----------------------------------	
-dimensions:       longitude latitude time
-!----------------------------------	
-!
-!
-!
-!
-! ***************************************************************
-!
-! IPCC Table A1f: Monthly-mean land surface fields and prescribed land surface characteristics
-!
-! ***************************************************************
-!
-!
-!
-!============
-variable_entry: prveg
-!============
-!
-! Variable attributes:
-!----------------------------------	
-standard_name: precipitation_flux_onto_canopy
-units:         kg m-2 s-1 
-cell_methods:  time: mean
-long_name:     Precipitation Intercepted by Vegetation Canopy
-!----------------------------------	
-!
-! Additional variable information:
-!----------------------------------	
-dimensions:       longitude latitude time
-!----------------------------------	
-!
-!
-!============
-variable_entry: evspsblveg
-!============
-!
-! Variable attributes:
-!----------------------------------	
-standard_name: water_evaporation_flux_from_canopy
-units:         kg m-2 s-1 
-cell_methods:  time: mean
-long_name:     Evaporation from Vegetation Canopy
-!----------------------------------	
-!
-! Additional variable information:
-!----------------------------------	
-dimensions:       longitude latitude time
-!----------------------------------	
-!
-!
-!============
-variable_entry: zmla
-!============
-!
-! Variable attributes:
-!----------------------------------	
-standard_name: atmosphere_boundary_layer_thickness
-units:         m
-cell_methods:  time: mean
-long_name:     Atmospheric Boundary Layer Thickness
-!----------------------------------	
-!
-! Additional variable information:
-!----------------------------------	
-dimensions:       longitude latitude time
-!----------------------------------	
-!
-!
-!============
-variable_entry: rootd
-!============
-!
-! Variable attributes:
-!----------------------------------	
-standard_name: root_depth
-units:         m
-long_name:     Root Depth
-!----------------------------------	
-!
-! Additional variable information:
-!----------------------------------	
-dimensions:       longitude latitude
-!----------------------------------	
-!
-!
-!============
-variable_entry: tasmin
-!============
-!
-! Variable attributes:
-!----------------------------------	
-standard_name: air_temperature
-units:         K
-cell_methods:  time: minimum within days time: mean over days
-long_name:     Daily Minimum Surface Air Temperature
-!----------------------------------	
-!
-! Additional variable information:
-!----------------------------------	
-dimensions:       longitude latitude time height1
-!----------------------------------	
-!
-!
-!============
-variable_entry: tasmax
-!============
-!
-! Variable attributes:
-!----------------------------------	
-standard_name: air_temperature
-units:         K
-cell_methods:  time: maximum within days time: mean over days
-long_name:     Daily Miximum Surface Air Temperature
-!----------------------------------	
-!
-! Additional variable information:
-!----------------------------------	
-dimensions:       longitude latitude time height1
-!----------------------------------	
-!
-!
+"pressure2": {
+                "standard_name":    "air_pressure",
+                "stored_direction": "decreasing",
+                "units":            "Pa",
+                "axis":             "Z",
+                "positive":         "down",
+                "long_name":        "pressure",
+                "out_name":         "plev",
+                "bounds_requested":    [   "100000.",   "80000.", "80000.", "68000.", "68000.", "56000.", "56000.", "44000.", "44000.", "31000.", "31000.", "18000.", "18000.", "0." ],
+},
+        "oline": {
+            "requested": [
+                "barents_opening", 
+                "bering_strait", 
+                "canadian_archipelago", 
+                "denmark_strait", 
+                "drake_passage", 
+                "english_channel", 
+                "pacific_equatorial_undercurrent", 
+                "faroe_scotland_channel", 
+                "florida_bahamas_strait", 
+                "fram_strait", 
+                "iceland_faroe_channel", 
+                "indonesian_thoughflow", 
+                "mozambique_channel", 
+                "taiwan_luzon_straits", 
+                "windward_passage"
+            ], 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "value": "", 
+            "z_bounds_factors": "", 
+            "long_name": "ocean passage", 
+            "standard_name": "region", 
+            "out_name": "line", 
+            "type": "character", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "latitude": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "", 
+            "valid_min": "-90.0", 
+            "value": "", 
+            "z_bounds_factors": "", 
+            "long_name": "latitude", 
+            "standard_name": "latitude", 
+            "out_name": "lat", 
+            "type": "double", 
+            "units": "degrees_north", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "90.0", 
+            "axis": "Y"
+        }, 
+        "basin": {
+            "requested": [
+                "atlantic_arctic_ocean", 
+                "indian_pacific_ocean", 
+                "global_ocean"
+            ], 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "value": "", 
+            "z_bounds_factors": "", 
+            "long_name": "ocean basin", 
+            "standard_name": "region", 
+            "out_name": "basin", 
+            "type": "character", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "height10m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "up", 
+            "must_have_bounds": "no", 
+            "valid_min": "1.0", 
+            "value": "10.0", 
+            "z_bounds_factors": "", 
+            "long_name": "height", 
+            "standard_name": "height", 
+            "out_name": "height", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "30.0", 
+            "axis": "Z"
+        }, 
+        "standard_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "ptop: ptop sigma: lev ps: ps", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "value": "", 
+            "z_bounds_factors": "ptop: ptop sigma: lev_bnds ps: ps", 
+            "long_name": "sigma coordinate", 
+            "standard_name": "atmosphere_sigma_coordinate", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "p = ptop + sigma*(ps - ptop)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "1.0", 
+            "axis": "Z"
+        }, 
+        "rho": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "value": "", 
+            "z_bounds_factors": "", 
+            "long_name": "density++++?", 
+            "standard_name": "", 
+            "out_name": "rho", 
+            "type": "double", 
+            "units": "kg m-3", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "depth100m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "80.0", 
+            "value": "100.0", 
+            "z_bounds_factors": "", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "120.0", 
+            "axis": "Z"
+        }, 
+        "natural_log_pressure": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "p0: p0 lev: lev", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-1.0", 
+            "value": "", 
+            "z_bounds_factors": "p0: p0 lev: lev_bnds", 
+            "long_name": "atmosphere natural log pressure coordinate", 
+            "standard_name": "atmosphere_ln_pressure_coordinate", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "p = p0 * exp(-lev)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "20.0", 
+            "axis": "Z"
+        }, 
+        "hybrid_height": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "a: lev b: b orog: orog", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "value": "", 
+            "z_bounds_factors": "a: lev_bnds b: b_bnds orog: orog", 
+            "long_name": "hybrid height coordinate", 
+            "standard_name": "atmosphere_hybrid_height_coordinate", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "m", 
+            "formula": "z = a + b*orog", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "longitude": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "0.0", 
+            "value": "", 
+            "z_bounds_factors": "", 
+            "long_name": "longitude", 
+            "standard_name": "longitude", 
+            "out_name": "lon", 
+            "type": "double", 
+            "units": "degrees_east", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "360.0", 
+            "axis": "X"
+        }, 
+        "time": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "value": "", 
+            "z_bounds_factors": "", 
+            "long_name": "time", 
+            "standard_name": "time", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "ocean_double_sigma": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "sigma: sigma depth: depth z1: z1 z2: z2 a: a_coeff href: href k_c: k_c", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "value": "", 
+            "z_bounds_factors": "sigma: sigma_bnds depth: depth z1: z1 z2: z2 a: a href: href k_c: k_c", 
+            "long_name": "ocean double sigma coordinate", 
+            "standard_name": "ocean_double_sigma", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "for k <= k_c:\n z(k,j,i)= sigma(k)*f(j,i) \n for k > k_c:\n z(k,j,i)= f(j,i) + (sigma(k)-1)*(depth(j,i)-f(j,i)) \n f(j,i)= 0.5*(z1+ z2) + 0.5*(z1-z2)* tanh(2*a/(z1-z2)*(depth(j,i)-href))", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plevs": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "value": "", 
+            "z_bounds_factors": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "standard_hybrid_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "p0: p0 a: a b: b ps: ps", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "value": "", 
+            "z_bounds_factors": "p0: p0 a: a_bnds b: b_bnds ps: ps", 
+            "long_name": "hybrid sigma pressure coordinate", 
+            "standard_name": "atmosphere_hybrid_sigma_pressure_coordinate", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "1", 
+            "formula": "p = a*p0 + b*ps", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "1.0", 
+            "axis": "Z"
+        }
+    }, 
+    "variable_entry": {
+        "sci": {
+            "comment": "Fraction of time that shallow convection occurs in the grid cell.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Fraction of Time Shallow Convection Occurs", 
+            "standard_name": "shallow_convection_time_fraction", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "1", 
+            "out_name": "sci", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "depth_c": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: depth_c", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "tro3": {
+            "comment": "", 
+            "dimensions": "longitude latitude plevs time", 
+            "positive": "", 
+            "valid_min": "-419.2", 
+            "long_name": "Mole Fraction of O3", 
+            "standard_name": "mole_fraction_of_ozone_in_air", 
+            "modeling_realm": "atmos atmosChem", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "-149.1", 
+            "units": "0.000000001", 
+            "out_name": "tro3", 
+            "type": "real", 
+            "valid_max": "1.162e+04", 
+            "ok_max_mean_abs": "7558"
+        }, 
+        "rsutcs": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "valid_min": "0", 
+            "long_name": "TOA Outgoing Clear-Sky Shortwave Radiation", 
+            "standard_name": "toa_outgoing_shortwave_flux_assuming_clear_sky", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "54.7", 
+            "units": "W m-2", 
+            "out_name": "rsutcs", 
+            "type": "real", 
+            "valid_max": "444", 
+            "ok_max_mean_abs": "73.36"
+        }, 
+        "rldscs": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "down", 
+            "valid_min": "33.55", 
+            "long_name": "Surface Downwelling Clear-Sky Longwave Radiation", 
+            "standard_name": "surface_downwelling_longwave_flux_in_air_assuming_clear_sky", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "238.6", 
+            "units": "W m-2", 
+            "out_name": "rldscs", 
+            "type": "real", 
+            "valid_max": "543.6", 
+            "ok_max_mean_abs": "293.8"
+        }, 
+        "n2oglobal": {
+            "comment": "", 
+            "dimensions": "time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Global Mean Mole Fraction of N2O", 
+            "standard_name": "mole_fraction_of_nitrous_oxide_in_air", 
+            "modeling_realm": "atmos atmosChem", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "0.000000001", 
+            "out_name": "n2oglobal", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "cli": {
+            "comment": "Includes both large-scale and convective cloud. This is the mass of  cloud ice  in the grid cell divided by the mass of air (including the water in all phases) in the grid cell.  This includes precipitating hydrometeors ONLY if the precipitating hydrometeors affect the calculation of radiative transfer in model.", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Mass Fraction of Cloud Ice", 
+            "standard_name": "mass_fraction_of_cloud_ice_in_air", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "1", 
+            "out_name": "cli", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "ts": {
+            "comment": "''skin'' temperature (i.e., SST for open ocean)", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "176.8", 
+            "long_name": "Surface Temperature", 
+            "standard_name": "surface_temperature", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "262.8", 
+            "units": "K", 
+            "out_name": "ts", 
+            "type": "real", 
+            "valid_max": "339.6", 
+            "ok_max_mean_abs": "293.3"
+        }, 
+        "clt": {
+            "comment": "For the whole atmospheric column, as seen from the surface or the top of the atmosphere. Include both large-scale and convective cloud.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "-0.0001822", 
+            "long_name": "Total Cloud Fraction", 
+            "standard_name": "cloud_area_fraction", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "39.37", 
+            "units": "%", 
+            "out_name": "clt", 
+            "type": "real", 
+            "valid_max": "105", 
+            "ok_max_mean_abs": "84.98"
+        }, 
+        "clw": {
+            "comment": "Includes both large-scale and convective cloud.  This is the mass of  cloud liquid water in the grid cell divided by the mass of air (including the water in all phases) in the grid cell.  This includes precipitating hydrometeors ONLY if the precipitating hydrometeors affect the calculation of radiative transfer in model.", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Mass Fraction of Cloud Liquid Water", 
+            "standard_name": "mass_fraction_of_cloud_liquid_water_in_air", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "1", 
+            "out_name": "clw", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "ta": {
+            "comment": "", 
+            "dimensions": "longitude latitude pressure2 time", 
+            "positive": "", 
+            "valid_min": "157.1", 
+            "long_name": "Air Temperature", 
+            "standard_name": "air_temperature", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "194.3", 
+            "units": "K", 
+            "out_name": "ta", 
+            "type": "real", 
+            "valid_max": "336.3", 
+            "ok_max_mean_abs": "299.8"
+        }, 
+        "psl": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "9.122e+04", 
+            "long_name": "Sea Level Pressure", 
+            "standard_name": "air_pressure_at_sea_level", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "9.57e+04", 
+            "units": "Pa", 
+            "out_name": "psl", 
+            "type": "real", 
+            "valid_max": "1.137e+05", 
+            "ok_max_mean_abs": "1.063e+05"
+        }, 
+        "nsigma": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: nsigma", 
+            "type": "integer", 
+            "dimensions": ""
+        }, 
+        "co2Clim": {
+            "comment": "", 
+            "dimensions": "longitude latitude plevs time2", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Mole Fraction of CO2", 
+            "standard_name": "mole_fraction_of_carbon_dioxide_in_air", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean within years time: mean over years", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "0.000001", 
+            "out_name": "co2Clim", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "sfcWind": {
+            "comment": "near-surface (usually, 10 meters) wind speed.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Near-Surface Wind Speed", 
+            "standard_name": "wind_speed", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "m s-1", 
+            "out_name": "sfcWind", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "ch4Clim": {
+            "comment": "", 
+            "dimensions": "longitude latitude plevs time2", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Mole Fraction of CH4", 
+            "standard_name": "mole_fraction_of_methane_in_air", 
+            "modeling_realm": "atmos atmosChem", 
+            "cell_measures": "time: mean within years time: mean over years", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "0.000000001", 
+            "out_name": "ch4Clim", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "clwvi": {
+            "comment": "Mass of condensed (liquid + ice) water in the column divided by the area of the column (not just the area of the cloudy portion of the column). Includes precipitating hydrometeors ONLY if the precipitating hydrometeors affect the calculation of radiative transfer in model.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "-3.827e-06", 
+            "long_name": "Condensed Water Path", 
+            "standard_name": "atmosphere_cloud_condensed_water_content", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "-0.03549", 
+            "units": "kg m-2", 
+            "out_name": "clwvi", 
+            "type": "real", 
+            "valid_max": "3.364", 
+            "ok_max_mean_abs": "0.2846"
+        }, 
+        "rsdscs": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "down", 
+            "valid_min": "-1.748e+30", 
+            "long_name": "Surface Downwelling Clear-Sky Shortwave Radiation", 
+            "standard_name": "surface_downwelling_shortwave_flux_in_air_assuming_clear_sky", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "206.9", 
+            "units": "W m-2", 
+            "out_name": "rsdscs", 
+            "type": "real", 
+            "valid_max": "522.4", 
+            "ok_max_mean_abs": "239"
+        }, 
+        "huss": {
+            "comment": "near-surface (usually, 2 meter) specific humidity.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "-7.21e-06", 
+            "long_name": "Near-Surface Specific Humidity", 
+            "standard_name": "specific_humidity", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0.006391", 
+            "units": "1", 
+            "out_name": "huss", 
+            "type": "real", 
+            "valid_max": "0.02992", 
+            "ok_max_mean_abs": "0.008749"
+        }, 
+        "rtmt": {
+            "comment": "i.e., at the top of that portion of the atmosphere where dynamics are explicitly treated by the model. This is reported only if it differs from the net downward radiative flux at the top of the atmosphere.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "down", 
+            "valid_min": "-232.8", 
+            "long_name": "Net Downward Flux at Top of Model", 
+            "standard_name": "net_downward_radiative_flux_at_top_of_atmosphere_model", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "76.91", 
+            "units": "W m-2", 
+            "out_name": "rtmt", 
+            "type": "real", 
+            "valid_max": "218.7", 
+            "ok_max_mean_abs": "89.25"
+        }, 
+        "evspsbl": {
+            "comment": "at surface; flux of water into the atmosphere due to conversion of both liquid and solid phases to vapor (from underlying surface and vegetation)", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Evaporation", 
+            "standard_name": "water_evaporation_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "evspsbl", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "a_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: a(k+1/2)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "co2": {
+            "comment": "", 
+            "dimensions": "longitude latitude plevs time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Mole Fraction of CO2", 
+            "standard_name": "mole_fraction_of_carbon_dioxide_in_air", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "0.000001", 
+            "out_name": "co2", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "cfc11global": {
+            "comment": "", 
+            "dimensions": "time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Global Mean Mole Fraction of CFC11", 
+            "standard_name": "mole_fraction_of_cfc11_in_air", 
+            "modeling_realm": "atmos atmosChem", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "1E-012", 
+            "out_name": "cfc11global", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "rlds": {
+            "comment": "This is the 3-hour mean flux.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "down", 
+            "valid_min": "30.71", 
+            "long_name": "Surface Downwelling Longwave Radiation", 
+            "standard_name": "surface_downwelling_longwave_flux_in_air", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "271.2", 
+            "units": "W m-2", 
+            "out_name": "rlds", 
+            "type": "real", 
+            "valid_max": "520.5", 
+            "ok_max_mean_abs": "323.6"
+        }, 
+        "sigma_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: sigma(k+1/2)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "ch4globalClim": {
+            "comment": "", 
+            "dimensions": "time2", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Global Mean Mole Fraction of CH4", 
+            "standard_name": "mole_fraction_of_methane_in_air", 
+            "modeling_realm": "atmos atmosChem", 
+            "cell_measures": "time: mean within years time: mean over years", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "0.000000001", 
+            "out_name": "ch4globalClim", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "tauv": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "down", 
+            "valid_min": "-2.472", 
+            "long_name": "Surface Downward Northward Wind Stress", 
+            "standard_name": "surface_downward_northward_stress", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "0.01447", 
+            "units": "Pa", 
+            "out_name": "tauv", 
+            "type": "real", 
+            "valid_max": "2.527", 
+            "ok_max_mean_abs": "0.08134"
+        }, 
+        "rlut": {
+            "comment": "at the top of the atmosphere.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "valid_min": "67.48", 
+            "long_name": "TOA Outgoing Longwave Radiation", 
+            "standard_name": "toa_outgoing_longwave_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "207.4", 
+            "units": "W m-2", 
+            "out_name": "rlut", 
+            "type": "real", 
+            "valid_max": "383.2", 
+            "ok_max_mean_abs": "234.4"
+        }, 
+        "rsdt": {
+            "comment": "at the top of the atmosphere", 
+            "dimensions": "longitude latitude time", 
+            "positive": "down", 
+            "valid_min": "0", 
+            "long_name": "TOA Incident Shortwave Radiation", 
+            "standard_name": "toa_incoming_shortwave_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "282.6", 
+            "units": "W m-2", 
+            "out_name": "rsdt", 
+            "type": "real", 
+            "valid_max": "580.4", 
+            "ok_max_mean_abs": "315.8"
+        }, 
+        "rsds": {
+            "comment": "This is the 3-hour mean flux.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "down", 
+            "valid_min": "-0.002946", 
+            "long_name": "Surface Downwelling Shortwave Radiation", 
+            "standard_name": "surface_downwelling_shortwave_flux_in_air", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "143.9", 
+            "units": "W m-2", 
+            "out_name": "rsds", 
+            "type": "real", 
+            "valid_max": "524.4", 
+            "ok_max_mean_abs": "181.6"
+        }, 
+        "z1": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: z1", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "sbl": {
+            "comment": "The snow and ice sublimation flux is the loss of snow and ice mass from the surface resulting from their conversion to water vapor that enters the atmosphere.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "-0.004959", 
+            "long_name": "Surface Snow and Ice Sublimation Flux", 
+            "standard_name": "surface_snow_and_ice_sublimation_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "-5.521e-05", 
+            "units": "kg m-2 s-1", 
+            "out_name": "sbl", 
+            "type": "real", 
+            "valid_max": "0.0009936", 
+            "ok_max_mean_abs": "9.61e-05"
+        }, 
+        "cfc113global": {
+            "comment": "", 
+            "dimensions": "time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Global Mean Mole Fraction of CFC113", 
+            "standard_name": "mole_fraction_of_cfc113_in_air", 
+            "modeling_realm": "atmos atmosChem", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "1E-012", 
+            "out_name": "cfc113global", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "rsus": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "valid_min": "-0.006589", 
+            "long_name": "Surface Upwelling Shortwave Radiation", 
+            "standard_name": "surface_upwelling_shortwave_flux_in_air", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "26.22", 
+            "units": "W m-2", 
+            "out_name": "rsus", 
+            "type": "real", 
+            "valid_max": "422.2", 
+            "ok_max_mean_abs": "43.77"
+        }, 
+        "cfc12global": {
+            "comment": "", 
+            "dimensions": "time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Global Mean Mole Fraction of CFC12", 
+            "standard_name": "mole_fraction_of_cfc12_in_air", 
+            "modeling_realm": "atmos atmosChem", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "1E-012", 
+            "out_name": "cfc12global", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "rsut": {
+            "comment": "at the top of the atmosphere", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "valid_min": "-0.02689", 
+            "long_name": "TOA Outgoing Shortwave Radiation", 
+            "standard_name": "toa_outgoing_shortwave_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "96.72", 
+            "units": "W m-2", 
+            "out_name": "rsut", 
+            "type": "real", 
+            "valid_max": "421.9", 
+            "ok_max_mean_abs": "114.1"
+        }, 
+        "ci": {
+            "comment": "Fraction of time that convection occurs in the grid cell .", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Fraction of Time Convection Occurs", 
+            "standard_name": "convection_time_fraction", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "1", 
+            "out_name": "ci", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "n2oClim": {
+            "comment": "", 
+            "dimensions": "longitude latitude plevs time2", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Mole Fraction of N2O", 
+            "standard_name": "mole_fraction_of_nitrous_oxide_in_air", 
+            "modeling_realm": "atmos atmosChem", 
+            "cell_measures": "time: mean within years time: mean over years", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "0.000000001", 
+            "out_name": "n2oClim", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "co2massClim": {
+            "comment": "", 
+            "dimensions": "time2", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Total Atmospheric Mass of CO2", 
+            "standard_name": "atmosphere_mass_of_carbon_dioxide", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean within years time: mean over years", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "kg", 
+            "out_name": "co2massClim", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "cl": {
+            "comment": "Includes both large-scale and convective cloud.", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Cloud Area Fraction", 
+            "standard_name": "cloud_area_fraction_in_atmosphere_layer", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "-0.04479", 
+            "units": "%", 
+            "out_name": "cl", 
+            "type": "real", 
+            "valid_max": "105", 
+            "ok_max_mean_abs": "26.07"
+        }, 
+        "n2oglobalClim": {
+            "comment": "", 
+            "dimensions": "time2", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Global Mean Mole Fraction of N2O", 
+            "standard_name": "mole_fraction_of_nitrous_oxide_in_air", 
+            "modeling_realm": "atmos atmosChem", 
+            "cell_measures": "time: mean within years time: mean over years", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "0.000000001", 
+            "out_name": "n2oglobalClim", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "rlutcs": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "valid_min": "70.59", 
+            "long_name": "TOA Outgoing Clear-Sky Longwave Radiation", 
+            "standard_name": "toa_outgoing_longwave_flux_assuming_clear_sky", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "228.9", 
+            "units": "W m-2", 
+            "out_name": "rlutcs", 
+            "type": "real", 
+            "valid_max": "377.5", 
+            "ok_max_mean_abs": "260.4"
+        }, 
+        "href": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: href", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "hfls": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "valid_min": "-76.77", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "50.39", 
+            "units": "W m-2", 
+            "out_name": "hfls", 
+            "type": "real", 
+            "valid_max": "790.7", 
+            "ok_max_mean_abs": "73.2"
+        }, 
+        "co2mass": {
+            "comment": "", 
+            "dimensions": "time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Total Atmospheric Mass of CO2", 
+            "standard_name": "atmosphere_mass_of_carbon_dioxide", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "kg", 
+            "out_name": "co2mass", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "pr": {
+            "comment": "at surface; includes both liquid and solid phases from all types of clouds (both large-scale and convective)", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Precipitation", 
+            "standard_name": "precipitation_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "2.156e-05", 
+            "units": "kg m-2 s-1", 
+            "out_name": "pr", 
+            "type": "real", 
+            "valid_max": "0.001254", 
+            "ok_max_mean_abs": "3.215e-05"
+        }, 
+        "ps": {
+            "comment": "surface pressure, not mean sea level pressure", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "4.791e+04", 
+            "long_name": "Surface Air Pressure", 
+            "standard_name": "surface_air_pressure", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "9.165e+04", 
+            "units": "Pa", 
+            "out_name": "ps", 
+            "type": "real", 
+            "valid_max": "1.119e+05", 
+            "ok_max_mean_abs": "1.019e+05"
+        }, 
+        "rlus": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "valid_min": "43.75", 
+            "long_name": "Surface Upwelling Longwave Radiation", 
+            "standard_name": "surface_upwelling_longwave_flux_in_air", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "325.6", 
+            "units": "W m-2", 
+            "out_name": "rlus", 
+            "type": "real", 
+            "valid_max": "658", 
+            "ok_max_mean_abs": "376.3"
+        }, 
+        "z2": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: z2", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "vas": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "-18.04", 
+            "long_name": "Northward Near-Surface Wind", 
+            "standard_name": "northward_wind", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "1.065", 
+            "units": "m s-1", 
+            "out_name": "vas", 
+            "type": "real", 
+            "valid_max": "22.84", 
+            "ok_max_mean_abs": "2.678"
+        }, 
+        "wap": {
+            "comment": "commonly referred to as ''omega'', this represents the vertical component of velocity in pressure coordinates (positive down)", 
+            "dimensions": "longitude latitude plevs time", 
+            "positive": "", 
+            "valid_min": "-1.126", 
+            "long_name": "omega (=dp/dt)", 
+            "standard_name": "lagrangian_tendency_of_air_pressure", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "-0.005083", 
+            "units": "Pa s-1", 
+            "out_name": "wap", 
+            "type": "real", 
+            "valid_max": "2.319", 
+            "ok_max_mean_abs": "0.04256"
+        }, 
+        "a": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: a(k)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "zg": {
+            "comment": "", 
+            "dimensions": "longitude latitude plevs time", 
+            "positive": "", 
+            "valid_min": "-719.7", 
+            "long_name": "Geopotential Height", 
+            "standard_name": "geopotential_height", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "-113.4", 
+            "units": "m", 
+            "out_name": "zg", 
+            "type": "real", 
+            "valid_max": "3.437e+04", 
+            "ok_max_mean_abs": "3.299e+04"
+        }, 
+        "hurs": {
+            "comment": "This is the relative humidity with respect to liquid water for T> 0 C, and with respect to ice for T<0 C.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Near-Surface Relative Humidity", 
+            "standard_name": "relative_humidity", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "%", 
+            "out_name": "hurs", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "tsAdjust": {
+            "comment": "''skin'' temperature (i.e., SST for open ocean)", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Bias-Corrected Surface Temperature", 
+            "standard_name": "surface_temperature", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "K", 
+            "out_name": "tsAdjust", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "pfull": {
+            "comment": "", 
+            "dimensions": "longitude latitude alevel time2", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Pressure on Model Levels", 
+            "standard_name": "air_pressure", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean within years time: mean over years", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "Pa", 
+            "out_name": "pfull", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "ch4global": {
+            "comment": "", 
+            "dimensions": "time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Global Mean Mole Fraction of CH4", 
+            "standard_name": "mole_fraction_of_methane_in_air", 
+            "modeling_realm": "atmos atmosChem", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "0.000000001", 
+            "out_name": "ch4global", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "hur": {
+            "comment": "This is the relative humidity with respect to liquid water for T> 0 C, and with respect to ice for T<0 C.", 
+            "dimensions": "longitude latitude plevs time", 
+            "positive": "", 
+            "valid_min": "-2.642", 
+            "long_name": "Relative Humidity", 
+            "standard_name": "relative_humidity", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "-10.31", 
+            "units": "%", 
+            "out_name": "hur", 
+            "type": "real", 
+            "valid_max": "135.7", 
+            "ok_max_mean_abs": "97"
+        }, 
+        "hus": {
+            "comment": "", 
+            "dimensions": "longitude latitude plevs time", 
+            "positive": "", 
+            "valid_min": "-0.000299", 
+            "long_name": "Specific Humidity", 
+            "standard_name": "specific_humidity", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "-0.0003539", 
+            "units": "1", 
+            "out_name": "hus", 
+            "type": "real", 
+            "valid_max": "0.02841", 
+            "ok_max_mean_abs": "0.01041"
+        }, 
+        "p0": {
+            "units": "Pa", 
+            "long_name": "vertical coordinate formula term: reference pressure", 
+            "type": "", 
+            "dimensions": ""
+        }, 
+        "b": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: b(k)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "mc": {
+            "comment": "The net mass flux should represent the difference between the updraft and downdraft components.  The flux is computed as the mass divided by the area of the grid cell.", 
+            "dimensions": "longitude latitude alevhalf time", 
+            "positive": "up", 
+            "valid_min": "", 
+            "long_name": "Convective Mass Flux", 
+            "standard_name": "atmosphere_net_upward_convective_mass_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "mc", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "fco2antt": {
+            "comment": "This is requested only for the emission-driven coupled carbon climate model runs.  Does not include natural fire sources but, includes all anthropogenic sources, including fossil fuel use, cement production, agricultural burning, and sources associated with anthropogenic land use change excluding forest regrowth.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "valid_min": "", 
+            "long_name": "Carbon Mass Flux into Atmosphere Due to All Anthropogenic Emissions of CO2", 
+            "standard_name": "tendency_of_atmosphere_mass_content_of_carbon_dioxide_expressed_as_carbon_due_to_anthropogenic_emission", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg  m-2 s-1", 
+            "out_name": "fco2antt", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "ch4": {
+            "comment": "", 
+            "dimensions": "longitude latitude plevs time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Mole Fraction of CH4", 
+            "standard_name": "mole_fraction_of_methane_in_air", 
+            "modeling_realm": "atmos atmosChem", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "0.000000001", 
+            "out_name": "ch4", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "tasmin": {
+            "comment": "minimum near-surface (usually, 2 meter) air temperature (add cell_method attribute time: min)", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "182.8", 
+            "long_name": "Daily Minimum Near-Surface Air Temperature", 
+            "standard_name": "air_temperature", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: minimum within days time: mean over days", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "260.9", 
+            "units": "K", 
+            "out_name": "tasmin", 
+            "type": "real", 
+            "valid_max": "323", 
+            "ok_max_mean_abs": "290.6"
+        }, 
+        "tauu": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "down", 
+            "valid_min": "-2.729", 
+            "long_name": "Surface Downward Eastward Wind Stress", 
+            "standard_name": "surface_downward_eastward_stress", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "0.03979", 
+            "units": "Pa", 
+            "out_name": "tauu", 
+            "type": "real", 
+            "valid_max": "2.934", 
+            "ok_max_mean_abs": "0.1065"
+        }, 
+        "tasmax": {
+            "comment": "maximum near-surface (usually, 2 meter) air temperature (add cell_method attribute time: max)", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "181.9", 
+            "long_name": "Daily Maximum Near-Surface Air Temperature", 
+            "standard_name": "air_temperature", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: maximum within days time: mean over days", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "264.9", 
+            "units": "K", 
+            "out_name": "tasmax", 
+            "type": "real", 
+            "valid_max": "341.9", 
+            "ok_max_mean_abs": "294"
+        }, 
+        "pslAdjust": {
+            "comment": "not, in general, the same as surface pressure", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Bias-Corrected Sea Level Pressure", 
+            "standard_name": "air_pressure_at_sea_level", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "Pa", 
+            "out_name": "pslAdjust", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "k_c": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: k_c", 
+            "type": "integer", 
+            "dimensions": ""
+        }, 
+        "ua": {
+            "comment": "", 
+            "dimensions": "longitude latitude plevs time", 
+            "positive": "", 
+            "valid_min": "-68.65", 
+            "long_name": "Eastward Wind", 
+            "standard_name": "eastward_wind", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "1.101", 
+            "units": "m s-1", 
+            "out_name": "ua", 
+            "type": "real", 
+            "valid_max": "136.6", 
+            "ok_max_mean_abs": "22.42"
+        }, 
+        "orog": {
+            "comment": "height above the geoid; as defined here, ''the geoid'' is a surface of constant geopotential that, if the ocean were at rest, would coincide with mean sea level. Under this definition, the geoid changes as the mean volume of the ocean changes (e.g., due to glacial melt, or global warming of the ocean).  Report here the height above the present-day geoid.  Over ocean, report as 0.0", 
+            "dimensions": "longitude latitude", 
+            "positive": "", 
+            "valid_min": "-700", 
+            "long_name": "Surface Altitude", 
+            "standard_name": "surface_altitude", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "m", 
+            "out_name": "orog", 
+            "type": "real", 
+            "valid_max": "1.00E+04", 
+            "ok_max_mean_abs": ""
+        }, 
+        "va": {
+            "comment": "", 
+            "dimensions": "longitude latitude plevs time", 
+            "positive": "", 
+            "valid_min": "-71.1", 
+            "long_name": "Northward Wind", 
+            "standard_name": "northward_wind", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "0.9886", 
+            "units": "m s-1", 
+            "out_name": "va", 
+            "type": "real", 
+            "valid_max": "69.93", 
+            "ok_max_mean_abs": "4.679"
+        }, 
+        "n2o": {
+            "comment": "", 
+            "dimensions": "longitude latitude plevs time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Mole Fraction of N2O", 
+            "standard_name": "mole_fraction_of_nitrous_oxide_in_air", 
+            "modeling_realm": "atmos atmosChem", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "0.000000001", 
+            "out_name": "n2o", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "prc": {
+            "comment": "at surface; includes both liquid and solid phases.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Convective Precipitation", 
+            "standard_name": "convective_precipitation_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "-2.528e-06", 
+            "units": "kg m-2 s-1", 
+            "out_name": "prc", 
+            "type": "real", 
+            "valid_max": "0.0006323", 
+            "ok_max_mean_abs": "3.209e-05"
+        }, 
+        "tas": {
+            "comment": "near-surface (usually, 2 meter) air temperature", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "180.6", 
+            "long_name": "Near-Surface Air Temperature", 
+            "standard_name": "air_temperature", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "262.4", 
+            "units": "K", 
+            "out_name": "tas", 
+            "type": "real", 
+            "valid_max": "335.1", 
+            "ok_max_mean_abs": "293"
+        }, 
+        "rsuscs": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "valid_min": "-0.01446", 
+            "long_name": "Surface Upwelling Clear-Sky Shortwave Radiation", 
+            "standard_name": "surface_upwelling_shortwave_flux_in_air_assuming_clear_sky", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "31.65", 
+            "units": "W m-2", 
+            "out_name": "rsuscs", 
+            "type": "real", 
+            "valid_max": "462.2", 
+            "ok_max_mean_abs": "61.59"
+        }, 
+        "uas": {
+            "comment": "near-surface (usually, 10 meters) eastward component of wind.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "-19.01", 
+            "long_name": "Eastward Near-Surface Wind", 
+            "standard_name": "eastward_wind", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "1.668", 
+            "units": "m s-1", 
+            "out_name": "uas", 
+            "type": "real", 
+            "valid_max": "18.68", 
+            "ok_max_mean_abs": "4.106"
+        }, 
+        "hfss": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "valid_min": "-264.5", 
+            "long_name": "Surface Upward Sensible Heat Flux", 
+            "standard_name": "surface_upward_sensible_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "10.7", 
+            "units": "W m-2", 
+            "out_name": "hfss", 
+            "type": "real", 
+            "valid_max": "844.8", 
+            "ok_max_mean_abs": "34.84"
+        }, 
+        "ap_bnds": {
+            "units": "Pa", 
+            "long_name": "vertical coordinate formula term: ap(k+1/2)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "ap": {
+            "units": "Pa", 
+            "long_name": "vertical coordinate formula term: ap(k)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "prw": {
+            "comment": "vertically integrated through the atmospheric column", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "-0.0006775", 
+            "long_name": "Water Vapor Path", 
+            "standard_name": "atmosphere_water_vapor_content", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "12.75", 
+            "units": "kg m-2", 
+            "out_name": "prw", 
+            "type": "real", 
+            "valid_max": "78.04", 
+            "ok_max_mean_abs": "23.09"
+        }, 
+        "prsn": {
+            "comment": "at surface; includes precipitation of all forms of water in the solid phase", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Snowfall Flux", 
+            "standard_name": "snowfall_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "1.449e-06", 
+            "units": "kg m-2 s-1", 
+            "out_name": "prsn", 
+            "type": "real", 
+            "valid_max": "0.0002987", 
+            "ok_max_mean_abs": "6.11e-06"
+        }, 
+        "zlev": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: zlev(k)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "fco2nat": {
+            "comment": "This is what the atmosphere sees (on its own grid).  This field should be equivalent to the combined natural fluxes of carbon (requested in the L_mon and O_mon tables) that account for natural exchanges between the atmosphere and land or ocean reservoirs (i.e., ''net ecosystem biospheric productivity'', for land, and ''air to sea CO2 flux'', for ocean.)", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "valid_min": "", 
+            "long_name": "Surface Carbon Mass Flux into the Atmosphere Due to Natural Sources", 
+            "standard_name": "surface_upward_mass_flux_of_carbon_dioxide_expressed_as_carbon_due_to_emission_from_natural_sources", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "fco2nat", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "b_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: b(k+1/2)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "phalf": {
+            "comment": "", 
+            "dimensions": "longitude latitude alevhalf time2", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Pressure on Model Half-Levels", 
+            "standard_name": "air_pressure", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean within years time: mean over years", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "Pa", 
+            "out_name": "phalf", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "tasAdjust": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Bias-Corrected Near-Surface Air Temperature", 
+            "standard_name": "air_temperature", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "K", 
+            "out_name": "tasAdjust", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "fco2fos": {
+            "comment": "This is the prescribed anthropogenic CO2 flux from fossil fuel use, including cement production, and flaring (but not from land-use changes, agricultural burning, forest regrowth, etc.)", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "valid_min": "", 
+            "long_name": "Carbon Mass Flux into Atmosphere Due to Fossil Fuel Emissions of CO2", 
+            "standard_name": "tendency_of_atmosphere_mass_content_of_carbon_dioxide_expressed_as_carbon_due_to_emission_from_fossil_fuel_combustion", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "fco2fos", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "hcfc22global": {
+            "comment": "", 
+            "dimensions": "time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Global Mean Mole Fraction of HCFC22", 
+            "standard_name": "mole_fraction_of_hcfc22_in_air", 
+            "modeling_realm": "atmos atmosChem", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "1E-012", 
+            "out_name": "hcfc22global", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "tro3Clim": {
+            "comment": "", 
+            "dimensions": "longitude latitude plevs time2", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Mole Fraction of O3", 
+            "standard_name": "mole_fraction_of_ozone_in_air", 
+            "modeling_realm": "atmos atmosChem", 
+            "cell_measures": "time: mean within years time: mean over years", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "0.000000001", 
+            "out_name": "tro3Clim", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "zlev_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: zlev(k+1/2)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "clivi": {
+            "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", 
+            "positive": "", 
+            "valid_min": "-1.872e-06", 
+            "long_name": "Ice Water Path", 
+            "standard_name": "atmosphere_mass_content_of_cloud_ice", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "-0.0348", 
+            "units": "kg m-2", 
+            "out_name": "clivi", 
+            "type": "real", 
+            "valid_max": "1.535", 
+            "ok_max_mean_abs": "0.1187"
+        }, 
+        "prAdjust": {
+            "comment": "at surface; includes both liquid and solid phases from all types of clouds (both large-scale and convective)", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Bias-Corrected Precipitation", 
+            "standard_name": "precipitation_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "prAdjust", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "cct": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Air Pressure at Convective Cloud Top", 
+            "standard_name": "air_pressure_at_convective_cloud_top", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "Pa", 
+            "out_name": "cct", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "sigma": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: sigma(k)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "ccb": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Air Pressure at Convective Cloud Base", 
+            "standard_name": "air_pressure_at_convective_cloud_base", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "Pa", 
+            "out_name": "ccb", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }
+    }
+}
diff --git a/Test/rewrite_harvardf_data.f90 b/Test/rewrite_harvardf_data.f90
index 9954ffb..05b70f5 100644
--- a/Test/rewrite_harvardf_data.f90
+++ b/Test/rewrite_harvardf_data.f90
@@ -15,7 +15,7 @@ USE cmor_users_functions
       character(len = 20) :: units_string = 'K'
 !     character(len = 20) :: input_table  = 'IPCC_test_table_A'
 !!$      character(len = 20) :: input_table  = 'IPCC_table_A2'
-      character(len = 20) :: input_table  = 'Tables/CMIP5_day'
+      character(len = 25) :: input_table  = 'Tables/CMIP6_day.json'
 
       character :: first_line    ! throwaway
 
@@ -63,19 +63,7 @@ USE cmor_users_functions
       ierrorflag = cmor_setup(netcdf_file_action = 'replace')
 
       print *, 'Identifying output data sets for CMOR ...'
-      ierrorflag = cmor_dataset(                               &
-                      outpath       = 'Test',                    &
-                      experiment_id =                          &
-      'abrupt 4XCO2',        &
-                      institution   =                          &
-      'Berkeley CAS (Center for Atmospheric Science)',         &
-                      source        =                          &
-      'GICCM1 ftp://ftp.as.harvard.edu/pub/nigec/HU_Wofsy/hf_data',   &
-                      calendar      = 'gregorian',             &
-                      contact       =                          &
-      'Jasmin John, Berkeley CAS <jjohn at berkeley.edu>', &
-                      model_id = "GICCM1" ,institute_id="PCMDI",&
-                      parent_experiment_rip="N/A",parent_experiment_id='N/A',forcing='SO',branch_time=bt)
+      ierrorflag = cmor_dataset_json("Test/test2.json")
 
 !     print *, ' ** Time coordinate vector:', t
 !     print *, ' ** Time bounds vector:',     tbounds
diff --git a/Test/speed_test_table_A b/Test/speed_test_table_A
index 8bea21c..d080dc0 100644
--- a/Test/speed_test_table_A
+++ b/Test/speed_test_table_A
@@ -1,2131 +1,2002 @@
-table_id: Table Amon
-modeling_realm: atmos
-
-frequency: mon
-
-cmor_version: 2.0         ! version of CMOR that can read this table
-cf_version:   1.4         ! version of CF that output conforms to
-project_id:   CMIP5  ! project id
-table_date:   02 April 2010 ! date this table was constructed
-
-missing_value: 1.e20      ! value used to indicate a missing value
-                          !   in arrays output by netCDF as 32-bit IEEE 
-                          !   floating-point numbers (float or real)
-
-baseURL: http://cmip-pcmdi.llnl.gov/CMIP5/dataLocation 
-product: output
-
-required_global_attributes: creation_date tracking_id forcing model_id parent_experiment_id branch_time contact ! space separated required global attribute 
-
-forcings:   N/A Nat Ant GHG SD SI SA TO SO Oz LU Sl Vl SS Ds BC MD OC AA
-
-expt_id_ok: '10- or 30-year run initialized in year XXXX' 'decadalXXXX'
-expt_id_ok: 'volcano-free hindcasts XXXX' 'noVolcXXXX'
-expt_id_ok: 'prediction with 2010 volcano' 'volcIn2010'
-expt_id_ok: 'pre-industrial control' 'piControl'
-expt_id_ok: 'Historical' 'historical'
-expt_id_ok: 'mid-Holocene' 'midHolocene'
-expt_id_ok: 'last glacial maximum' 'lgm'
-expt_id_ok: 'last millennium' 'past1000'
-expt_id_ok: 'RCP4.5' 'rcp45'
-expt_id_ok: 'RCP8.5' 'rcp85'
-expt_id_ok: 'RCP2.6' 'rcp26'
-expt_id_ok: 'RCP6' 'rcp60'
-expt_id_ok: 'ESM pre-industrial control' 'esmControl'
-expt_id_ok: 'ESM historical' 'esmHistorical'
-expt_id_ok: 'ESM RCP8.5' 'esmrcp85'
-expt_id_ok: 'ESM fixed climate 1' 'esmFixClim1'
-expt_id_ok: 'ESM fixed climate 2' 'esmFixClim2'
-expt_id_ok: 'ESM feedback 1' 'esmFdbk1'
-expt_id_ok: 'ESM feedback 2' 'esmFdbk2'
-expt_id_ok: '1 percent per year CO2' '1pctCO2'
-expt_id_ok: 'abrupt 4XCO2' 'abrupt4xCO2'
-expt_id_ok: 'natural-only' 'historicalNat'
-expt_id_ok: 'GHG-only' 'historicalGHG'
-expt_id_ok: 'anthropogenic-only' 'historicalAnt'
-expt_id_ok: 'anthropogenic sulfate aerosol direct effect only' 'historicalSD'
-expt_id_ok: 'anthropogenic sulfate aerosol indirect effect only' 'historicalSI'
-expt_id_ok: 'anthropogenic sulfate aerosol only' 'historicalSA'
-expt_id_ok: 'tropospheric ozone only' 'historicalTO'
-expt_id_ok: 'stratospheric ozone' 'historicalSO'
-expt_id_ok: 'ozone only' 'historicalOz'
-expt_id_ok: 'land-use change only' 'historicalLU'
-expt_id_ok: 'solar irradiance only' 'historicalSl'
-expt_id_ok: 'volcanic aerosol only' 'historicalVl'
-expt_id_ok: 'sea salt only' 'historicalSS'
-expt_id_ok: 'dust' 'historicalDs'
-expt_id_ok: 'black carbon only' 'historicalBC'
-expt_id_ok: 'mineral dust only' 'historicalMD'
-expt_id_ok: 'organic carbon only' 'historicalOC'
-expt_id_ok: 'anthropogenic aerosols only' 'historicalAA'
-expt_id_ok: 'AMIP' 'amip'
-expt_id_ok: '2030 time-slice' 'sst2030'
-expt_id_ok: 'control SST climatology' 'sstClim'
-expt_id_ok: 'CO2 forcing' 'sstClim4xCO2'
-expt_id_ok: 'all aerosol forcing' 'sstClimAerosol'
-expt_id_ok: 'sulfate aerosol forcing' 'sstClimSulfate'
-expt_id_ok: '4xCO2 AMIP' 'amip4xCO2'
-expt_id_ok: 'AMIP plus patterned anomaly' 'amipFuture'
-expt_id_ok: 'aqua planet control' 'aquaControl'
-expt_id_ok: '4xCO2 aqua planet' 'aqua4xCO2'
-expt_id_ok: 'aqua planet plus 4K anomaly' 'aqua4K'
-expt_id_ok: 'AMIP plus 4K anomaly' 'amip4K'
-
-
-approx_interval:  30.000000     ! approximate spacing between successive time
-                          !   samples (in units of the output time 
-                          !   coordinate.
-
-!============
-axis_entry: longitude
-!============
-!----------------------------------
-! Axis attributes:
-!----------------------------------
-standard_name:    longitude
-units:            degrees_east
-axis:             X             ! X, Y, Z, T (default: undeclared)
-long_name:        longitude
-!----------------------------------
-! Additional axis information:
-!----------------------------------
-out_name:         lon
-valid_min:        0         
-valid_max:        360 
-stored_direction: increasing
-type:             double
-must_have_bounds: yes
-!----------------------------------
-!
-
-
-!============
-axis_entry: latitude
-!============
-!----------------------------------
-! Axis attributes:
-!----------------------------------
-standard_name:    latitude
-units:            degrees_north
-axis:             Y             ! X, Y, Z, T (default: undeclared)
-long_name:        latitude
-!----------------------------------
-! Additional axis information:
-!----------------------------------
-out_name:         lat
-valid_min:        -90         
-valid_max:        90 
-stored_direction: increasing
-type:             double
-must_have_bounds: yes
-!----------------------------------
-!
-
-
-!============
-axis_entry: plevs
-!============
-!----------------------------------
-! Axis attributes:
-!----------------------------------
-standard_name:    air_pressure
-units:            Pa
-axis:             Z             ! X, Y, Z, T (default: undeclared)
-positive:         down         ! up or down (default: undeclared)
-long_name:        pressure
-!----------------------------------
-! Additional axis information:
-!----------------------------------
-out_name:         plev
-stored_direction: decreasing
-tolerance:        0.001
-
-type:             double
-requested:        100000. 92500. 85000. 70000. 60000. 50000. 40000. 30000. 25000. 20000. 15000. 10000. 7000. 5000. 3000. 2000. 1000.        ! space-separated list of requested coordinates 
-must_have_bounds: no
-!----------------------------------
-!
-
-
-!============
-axis_entry: alevhalf
-!============
-!----------------------------------
-! Axis attributes:
-!----------------------------------
-axis:             Z             ! X, Y, Z, T (default: undeclared)
-positive:         up         ! up or down (default: undeclared)
-long_name:        atmospheric model half-level
-!----------------------------------
-! Additional axis information:
-!----------------------------------
-out_name:         lev
-type:             double
-must_have_bounds: no
-index_only:       ok
-!----------------------------------
-!
-
-
-!============
-axis_entry: time
-!============
-!----------------------------------
-! Axis attributes:
-!----------------------------------
-standard_name:    time
-units:            days since ?
-axis:             T             ! X, Y, Z, T (default: undeclared)
-long_name:        time
-!----------------------------------
-! Additional axis information:
-!----------------------------------
-out_name:         time
-stored_direction: increasing
-type:             double
-must_have_bounds: yes
-!----------------------------------
-!
-
-
-!============
-axis_entry: time2
-!============
-!----------------------------------
-! Axis attributes:
-!----------------------------------
-standard_name:    time
-units:            days since ?
-axis:             T             ! X, Y, Z, T (default: undeclared)
-long_name:        time
-!----------------------------------
-! Additional axis information:
-!----------------------------------
-out_name:         time
-stored_direction: increasing
-type:             double
-must_have_bounds: yes
-climatology:      yes
-!----------------------------------
-!
-
-
-!============
-axis_entry: height2m
-!============
-!----------------------------------
-! Axis attributes:
-!----------------------------------
-standard_name:    height
-units:            m
-axis:             Z             ! X, Y, Z, T (default: undeclared)
-positive:         up         ! up or down (default: undeclared)
-long_name:        height
-!----------------------------------
-! Additional axis information:
-!----------------------------------
-out_name:         height
-valid_min:        1         
-valid_max:        10 
-stored_direction: increasing
-type:             double
-value:            2.            ! of scalar (singleton) dimension 
-must_have_bounds: no
-!----------------------------------
-!
-
-
-!============
-axis_entry: height10m
-!============
-!----------------------------------
-! Axis attributes:
-!----------------------------------
-standard_name:    height
-units:            m
-axis:             Z             ! X, Y, Z, T (default: undeclared)
-positive:         up         ! up or down (default: undeclared)
-long_name:        height
-!----------------------------------
-! Additional axis information:
-!----------------------------------
-out_name:         height
-valid_min:        1         
-valid_max:        30 
-stored_direction: increasing
-type:             double
-value:            10.            ! of scalar (singleton) dimension 
-must_have_bounds: no
-!----------------------------------
-!
-
-!============
-axis_entry: smooth_level
-!============
-!
-! This coordinate is a hybrid height coordinate with units of meters (m).
-!  It increases upward.
-!  The values of a(k)*ztop, which appear in the formula below, should be stored as smooth_level. 
-!  Note that in the netCDF file the variable will be named "lev", not smooth_level.
-!
-!------------
-!
-! Axis attributes:
-!----------------------------------	
-standard_name:    atmosphere_sleve_coordinate
-units:            m
-axis:             Z
-positive:	      up
-long_name:        atmosphere smooth level vertical (SLEVE) coordinate
-!----------------------------------	
-!
-! Additional axis information:
-!----------------------------------	
-out_name:         lev
-must_have_bounds: yes
-stored_direction: increasing
-valid_min:        -200.
-valid_max:        800000.
-formula:          z(n,k,j,i) = a(k)*ztop + b1(k)*zsurf1(n,j,i) + b2(k)*zsurf2(n,j,i)
-z_factors:        a: a b1: b1 b2: b2 ztop: ztop zsurf1: zsurf1 zsurf2: zsurf2
-z_bounds_factors: a: a_bnds b1: b1_bnds b2: b2_bnds ztop: ztop zsurf1: zsurf1 zsurf2: zsurf2
-!----------------------------------	
-!
-!============
-axis_entry: natural_log_pressure
-!============
-!
-!This coordinate is dimensionless and varies from near 0 at the surface and increases upward.
-!  The values of lev(k), which appears in the formula below, should be stored as natural_log_pressure.  
-!  Note that in the netCDF file the variable will be named "lev", not natural_log_pressure.
-!
-!------------
-!
-! Axis attributes:
-!----------------------------------	
-standard_name:    atmosphere_ln_pressure_coordinate
-axis:             Z
-long_name:        atmosphere natural log pressure coordinate
-positive:	      down
-!----------------------------------	
-!
-! Additional axis information:
-!----------------------------------	
-out_name:         lev
-must_have_bounds: yes
-stored_direction: decreasing
-valid_min:        -1.
-valid_max:        20.
-formula:          p(k) = p0 * exp(-lev(k))
-z_factors:        p0: p0 lev: lev
-z_bounds_factors: p0: p0 lev: lev_bnds
-!----------------------------------	
-!
-!============
-axis_entry: standard_sigma
-!============
-!
-! This coordinate is dimensionless and varies from 0 at the model top to 1.0 at the surface.
-!  The values of sigma(k), which appears in the formula below, should be stored as standard_sigma.  
-!  Note that in the netCDF file the variable will be named "lev", not standard_sigma.
-!
-!------------
-!
-! Axis attributes:
-!----------------------------------	
-standard_name:    atmosphere_sigma_coordinate
-axis:             Z
-positive:         down
-long_name:        sigma coordinate
-!----------------------------------	
-!
-! Additional axis information:
-!----------------------------------	
-out_name:         lev
-must_have_bounds: yes
-stored_direction: decreasing
-valid_min:        0.0
-valid_max:        1.0
-formula:          p(n,k,j,i) = ptop + sigma(k)*(ps(n,j,i) - ptop)
-z_factors:        ptop: ptop sigma: lev ps: ps
-z_bounds_factors: ptop: ptop sigma: lev_bnds ps: ps
-!----------------------------------	
-!
-!
-!============
-axis_entry:  standard_hybrid_sigma
-!============
-!
-! This coordinate is dimensionless and varies from a small value at the model top to 1.0 at the surface.
-!  The values of a(k)+ b(k), which appear in the formula below, should be stored as standard_hybrid_sigma.  
-!  Note that in the netCDF file the variable will be named "lev", not standard_hybrid_sigma.
-!
-!---------------------------------
-! Axis attributes:
-!----------------------------------	
-standard_name:    atmosphere_hybrid_sigma_pressure_coordinate
-units:            1
-axis:             Z 
-positive:         down
-long_name:        hybrid sigma pressure coordinate
-!----------------------------------
-! Additional axis information:
-!----------------------------------	
-out_name:         lev
-must_have_bounds: yes
-stored_direction: decreasing
-valid_min:        0.0
-valid_max:        1.0
-formula:          p(n,k,j,i) = a(k)*p0 + b(k)*ps(n,j,i)
-z_factors:        p0: p0 a: a b: b ps: ps
-z_bounds_factors: p0: p0 a: a_bnds b: b_bnds ps: ps
-!----------------------------------		
-!
-!
-!============
-axis_entry:  alternate_hybrid_sigma
-!============
-!
-! This coordinate is dimensionless and varies from a small value at the model top to 1.0 at the surface.
-!  The values of ap(k)/p0 + b(k), which appear in the formula below, should be stored as alternate_hybrid_sigma.  
-!  Note that in the netCDF file the variable will be named "lev", not alternate_hybrid_sigma.
-!
-!------------
-!
-! Axis attributes:
-!----------------------------------	
-standard_name:    atmosphere_hybrid_sigma_pressure_coordinate
-units:            1
-axis:             Z
-positive:         down
-long_name:        hybrid sigma pressure coordinate
-!----------------------------------	
-!
-! Additional axis information:
-!----------------------------------	
-out_name:         lev
-must_have_bounds: yes
-stored_direction: decreasing
-valid_min:        0.0
-valid_max:        1.0
-formula:          p(n,k,j,i) = ap(k) + b(k)*ps(n,j,i)
-z_factors:        ap: ap b: b ps: ps
-z_bounds_factors: ap: ap_bnds b: b_bnds ps: ps
-!----------------------------------		
-!
-!
-!============
-axis_entry:  hybrid_height
-!============
-!
-! This coordinate has dimension of meters (m) and increases upward.
-!  The values of a(k) which appear in the formula below, should be stored as hybrid_height.  
-!  Note that in the netCDF file the variable will be named "lev", not hybrid_height.
-!
-!------------
-!
-! Axis attributes:
-!----------------------------------	
-standard_name:    atmosphere_hybrid_height_coordinate
-units:            m
-axis:             Z 
-positive:         up
-long_name:        hybrid height coordinate
-!----------------------------------	
-!
-! Additional axis information:
-!----------------------------------	
-out_name:         lev
-must_have_bounds: yes
-stored_direction: increasing
-valid_min:        0.0
-formula:          z(k,j,i) = a(k) + b(k)*orog(j,i)
-z_factors:        a: lev b: b orog: orog
-z_bounds_factors: a: lev_bnds b: b_bnds orog: orog
-!----------------------------------		
-!
-! ***************************************************************
-!
-! Vertical coordinate formula terms:
-!
-! ***************************************************************
-!
-!
-!============
-variable_entry:    orog
-!============
-modeling_realm:    atmos
-!----------------------------------
-! Variable attributes:
-!----------------------------------
-standard_name:     surface_altitude
-units:             m
-long_name:         Surface Altitude
-comment:           height above the geoid; as defined here, ""the geoid"" is a surface of constant geopotential that, if the ocean were at rest, would coincide with mean sea level. Under this definition, the geoid changes as the mean volume of the ocean changes (e.g., due to glacial melt, or global warming of the ocean).  Report here the height above the present-day geoid.  Over ocean, report as 0.0
-!----------------------------------
-! Additional variable information:
-!----------------------------------
-dimensions:        longitude latitude
-out_name:          orog
-type:              real
-valid_min:         -700
-valid_max:         1.00E+04
-!----------------------------------
-!
-!
-!============
-variable_entry: p0
-!============
-!------------
-!
-! Variable attributes:
-!----------------------------------	
-long_name:       vertical coordinate formula term: reference pressure 
-units:           Pa
-!----------------------------------	
-!
-!
-!============
-variable_entry: ptop
-!============
-!
-!------------
-!
-! Variable attributes:
-!----------------------------------	
-long_name:       pressure at top of model 
-units:           Pa
-!----------------------------------	
-!
-!
-!
-!============
-variable_entry: a
-!============
-!------------
-!
-! Variable attributes:
-!----------------------------------	
-long_name:   vertical coordinate formula term: a(k)
-!----------------------------------	
-!
-! Additional variable information:
-!----------------------------------	
-dimensions:         alevel
-type:               double
-!----------------------------------	
-!
-!
-!============
-variable_entry: b
-!============
-!------------
-!
-! Variable attributes:
-!----------------------------------	
-long_name:   vertical coordinate formula term: b(k)
-!----------------------------------	
-!
-! Additional variable information:
-!----------------------------------	
-dimensions:         alevel
-type:               double
-!----------------------------------	
-!
-!
-!============
-variable_entry: a_bnds
-!============
-!
-!------------
-!
-! Variable attributes:
-!----------------------------------	
-long_name:   vertical coordinate formula term: a(k+1/2)
-!----------------------------------	
-!
-! Additional variable information:
-!----------------------------------	
-dimensions:         alevel
-type:               double
-!----------------------------------	
-!
-!
-!============
-variable_entry: b_bnds
-!============
-!
-!------------
-!
-! Variable attributes:
-!----------------------------------	
-long_name:   vertical coordinate formula term: b(k+1/2)
-!----------------------------------	
-!
-! Additional variable information:
-!----------------------------------	
-dimensions:         alevel
-type:               double
-!----------------------------------
-!
-!
-!============
-variable_entry: ap
-!============
-!
-! Variable attributes:
-!----------------------------------	
-long_name:   vertical coordinate formula term: ap(k)
-units:           Pa
-!----------------------------------	
-!
-! Additional variable information:
-!----------------------------------	
-dimensions:         alevel
-type:               double
-!----------------------------------	
-!
-!
-!============
-variable_entry: ap_bnds
-!============
-!
-! Variable attributes:
-!----------------------------------	
-long_name:   vertical coordinate formula term: ap(k+1/2)
-units:           Pa
-!----------------------------------	
-!
-! Additional variable information:
-!----------------------------------	
-dimensions:         alevel
-type:               double
-!----------------------------------	
-!
-!
-!============
-variable_entry: ztop
-!============
-!
-!------------
-!
-! Variable attributes:
-!----------------------------------	
-long_name:       height of top of model 
-units:           m
-!----------------------------------	
-!
-!
-!
-
-!============
-variable_entry:    tas
-!============
-modeling_realm:    atmos
-!----------------------------------
-! Variable attributes:
-!----------------------------------
-standard_name:     air_temperature
-units:             K
-deflate: ${DEFLATE_LEVEL}
-shuffle: ${SHUFFLE}
-deflate_level: ${DEFLATE_LEVEL}
-cell_methods:      time: mean
-cell_measures:      area: areacello volume: volcello
-long_name:         Near-Surface Air Temperature
-comment:           near-surface (usually, 2 meter) air temperature.
-!----------------------------------
-! Additional variable information:
-!----------------------------------
-dimensions:        longitude latitude time height2m
-out_name:          tas
-type:              real
-!----------------------------------
-!
-
-!============
-variable_entry:    ts
-!============
-modeling_realm:    atmos
-!----------------------------------
-! Variable attributes:
-!----------------------------------
-standard_name:     surface_temperature
-units:             K
-cell_methods:      time: mean
-cell_measures:      area: areacello volume: volcello
-long_name:         Surface Temperature
-comment:           ""skin"" temperature (i.e., SST for open ocean)
-!----------------------------------
-! Additional variable information:
-!----------------------------------
-dimensions:        longitude latitude time
-out_name:          ts
-type:              real
-!----------------------------------
-!
-
-!============
-variable_entry:    tasmin
-!============
-modeling_realm:    atmos
-!----------------------------------
-! Variable attributes:
-!----------------------------------
-standard_name:     air_temperature
-units:             K
-cell_methods:      time: minimum within days time: mean over days
-long_name:         Daily Minimum Near-Surface Air Temperature
-comment:           monthly mean of the daily-minimum near-surface (usually, 2 meter) air temperature.
-!----------------------------------
-! Additional variable information:
-!----------------------------------
-dimensions:        longitude latitude time height2m
-out_name:          tasmin
-type:              real
-!----------------------------------
-!
-
-!============
-variable_entry:    tasmax
-!============
-modeling_realm:    atmos
-!----------------------------------
-! Variable attributes:
-!----------------------------------
-standard_name:     air_temperature
-units:             K
-cell_methods:      time: maximum within days time: mean over days
-long_name:         Daily Maximum Near-Surface Air Temperature
-comment:           monthly mean of the daily-maximum near-surface (usually, 2 meter) air temperature.
-!----------------------------------
-! Additional variable information:
-!----------------------------------
-dimensions:        longitude latitude time height2m
-out_name:          tasmax
-type:              real
-!----------------------------------
-!
-
-!============
-variable_entry:    psl
-!============
-modeling_realm:    atmos
-!----------------------------------
-! Variable attributes:
-!----------------------------------
-standard_name:     air_pressure_at_sea_level
-units:             Pa
-cell_methods:      time: mean
-long_name:         Sea Level Pressure
-comment:           not, in general, the same as surface pressure
-!----------------------------------
-! Additional variable information:
-!----------------------------------
-dimensions:        longitude latitude time
-out_name:          psl
-type:              real
-!----------------------------------
-!
-
-!============
-variable_entry:    ps
-!============
-modeling_realm:    atmos
-!----------------------------------
-! Variable attributes:
-!----------------------------------
-standard_name:     surface_air_pressure
-units:             Pa
-cell_methods:      time: mean
-long_name:         Surface Air Pressure
-comment:           not, in general, the same as mean sea-level pressure
-!----------------------------------
-! Additional variable information:
-!----------------------------------
-dimensions:        longitude latitude time
-out_name:          ps
-type:              real
-!----------------------------------
-!
-
-!============
-variable_entry:    uas
-!============
-modeling_realm:    atmos
-!----------------------------------
-! Variable attributes:
-!----------------------------------
-standard_name:     eastward_wind
-units:             m s-1
-cell_methods:      time: mean
-long_name:         Eastward Near-Surface Wind Speed
-comment:           near-surface (usually, 10 meters) eastward component of wind.
-!----------------------------------
-! Additional variable information:
-!----------------------------------
-dimensions:        longitude latitude time height10m
-out_name:          uas
-type:              real
-!----------------------------------
-!
-
-!============
-variable_entry:    vas
-!============
-modeling_realm:    atmos
-!----------------------------------
-! Variable attributes:
-!----------------------------------
-standard_name:     northward_wind
-units:             m s-1
-cell_methods:      time: mean
-long_name:         Northward Near-Surface Wind Speed
-comment:           near-surface (usually, 10 meters) northward component of wind.
-!----------------------------------
-! Additional variable information:
-!----------------------------------
-dimensions:        longitude latitude time height10m
-out_name:          vas
-type:              real
-!----------------------------------
-!
-
-!============
-variable_entry:    sfcWind
-!============
-modeling_realm:    atmos
-!----------------------------------
-! Variable attributes:
-!----------------------------------
-standard_name:     wind_speed
-units:             m s-1
-cell_methods:      time: mean
-long_name:         Near-Surface Wind Speed
-comment:           near-surface (usually, 10 meters) wind speed.  This is the mean of the speed, not the speed computed from the mean u and v components of wind
-!----------------------------------
-! Additional variable information:
-!----------------------------------
-dimensions:        longitude latitude time height10m
-out_name:          sfcWind
-type:              real
-!----------------------------------
-!
-
-!============
-variable_entry:    hurs
-!============
-modeling_realm:    atmos
-!----------------------------------
-! Variable attributes:
-!----------------------------------
-standard_name:     relative_humidity
-units:             %
-cell_methods:      time: mean
-long_name:         Near-Surface Relative Humidity
-comment:           near-surface (usually, 2meters) relative humidity expressed as a percentage.  This is the relative humidity with respect to liquid water for T> 0 C, and with respect to ice for T<0 C.
-!----------------------------------
-! Additional variable information:
-!----------------------------------
-dimensions:        longitude latitude time height2m
-out_name:          hurs
-type:              real
-!----------------------------------
-!
-
-!============
-variable_entry:    huss
-!============
-modeling_realm:    atmos
-!----------------------------------
-! Variable attributes:
-!----------------------------------
-standard_name:     specific_humidity
-units:             1
-cell_methods:      time: mean
-long_name:         Near-Surface Specific Humidity
-comment:           near-surface (usually, 2 meters) specific humidity.
-!----------------------------------
-! Additional variable information:
-!----------------------------------
-dimensions:        longitude latitude time height2m
-out_name:          huss
-type:              real
-!----------------------------------
-!
-
-!============
-variable_entry:    pr
-!============
-modeling_realm:    atmos
-!----------------------------------
-! Variable attributes:
-!----------------------------------
-standard_name:     precipitation_flux
-units:             kg m-2 s-1
-cell_methods:      time: mean
-long_name:         Precipitation
-comment:           at surface; includes both liquid and solid phases from all types of clouds (both large-scale and convective)
-!----------------------------------
-! Additional variable information:
-!----------------------------------
-dimensions:        longitude latitude time
-out_name:          pr
-type:              real
-!----------------------------------
-!
-
-!============
-variable_entry:    prsn
-!============
-modeling_realm:    atmos
-!----------------------------------
-! Variable attributes:
-!----------------------------------
-standard_name:     snowfall_flux
-units:             kg m-2 s-1
-cell_methods:      time: mean
-long_name:         Snowfall Flux
-comment:           at surface; includes precipitation of all forms of water in the solid phase
-!----------------------------------
-! Additional variable information:
-!----------------------------------
-dimensions:        longitude latitude time
-out_name:          prsn
-type:              real
-!----------------------------------
-!
-
-!============
-variable_entry:    prc
-!============
-modeling_realm:    atmos
-!----------------------------------
-! Variable attributes:
-!----------------------------------
-standard_name:     convective_precipitation_flux
-units:             kg m-2 s-1
-cell_methods:      time: mean
-long_name:         Convective Precipitation
-comment:           at surface; includes both liquid and solid phases.
-!----------------------------------
-! Additional variable information:
-!----------------------------------
-dimensions:        longitude latitude time
-out_name:          prc
-type:              real
-!----------------------------------
-!
-
-!============
-variable_entry:    evspsbl
-!============
-modeling_realm:    atmos
-!----------------------------------
-! Variable attributes:
-!----------------------------------
-standard_name:     water_evaporation_flux
-units:             kg m-2 s-1
-cell_methods:      time: mean
-long_name:         Evaporation
-comment:           at surface; flux of water into the atmosphere due to conversion of both liquid and solid phases to vapor (from underlying surface and vegetation)
-!----------------------------------
-! Additional variable information:
-!----------------------------------
-dimensions:        longitude latitude time
-out_name:          evspsbl
-type:              real
-!----------------------------------
-!
-
-!============
-variable_entry:    sbl
-!============
-modeling_realm:    atmos
-!----------------------------------
-! Variable attributes:
-!----------------------------------
-standard_name:     water_sublimation_flux
-units:             kg m-2 s-1
-cell_methods:      time: mean
-long_name:         Surface Snow and Ice Sublimation Flux
-comment:           The snow and ice sublimation flux is the loss of snow and ice mass from the surface resulting from their conversion to water vapor that enters the atmosphere.
-!----------------------------------
-! Additional variable information:
-!----------------------------------
-dimensions:        longitude latitude time
-out_name:          sbl
-type:              real
-!----------------------------------
-!
-
-!============
-variable_entry:    tauu
-!============
-modeling_realm:    atmos
-!----------------------------------
-! Variable attributes:
-!----------------------------------
-standard_name:     surface_downward_eastward_stress
-units:             Pa
-cell_methods:      time: mean
-long_name:         Surface Downward Eastward Wind Stress
-!----------------------------------
-! Additional variable information:
-!----------------------------------
-dimensions:        longitude latitude time
-out_name:          tauu
-type:              real
-positive:          down
-!----------------------------------
-!
-
-!============
-variable_entry:    tauv
-!============
-modeling_realm:    atmos
-!----------------------------------
-! Variable attributes:
-!----------------------------------
-standard_name:     surface_downward_northward_stress
-units:             Pa
-cell_methods:      time: mean
-long_name:         Surface Downward Northward Wind Stress
-!----------------------------------
-! Additional variable information:
-!----------------------------------
-dimensions:        longitude latitude time
-out_name:          tauv
-type:              real
-positive:          down
-!----------------------------------
-!
-
-!============
-variable_entry:    hfls
-!============
-modeling_realm:    atmos
-!----------------------------------
-! Variable attributes:
-!----------------------------------
-standard_name:     surface_upward_latent_heat_flux
-units:             W m-2
-cell_methods:      time: mean
-long_name:         Surface Upward Latent Heat Flux
-comment:           includes both evaporation and sublimation
-!----------------------------------
-! Additional variable information:
-!----------------------------------
-dimensions:        longitude latitude time
-out_name:          hfls
-type:              real
-positive:          up
-!----------------------------------
-!
-
-!============
-variable_entry:    hfss
-!============
-modeling_realm:    atmos
-!----------------------------------
-! Variable attributes:
-!----------------------------------
-standard_name:     surface_upward_sensible_heat_flux
-units:             W m-2
-cell_methods:      time: mean
-long_name:         Surface Upward Sensible Heat Flux
-!----------------------------------
-! Additional variable information:
-!----------------------------------
-dimensions:        longitude latitude time
-out_name:          hfss
-type:              real
-positive:          up
-!----------------------------------
-!
-
-!============
-variable_entry:    rlds
-!============
-modeling_realm:    atmos
-!----------------------------------
-! Variable attributes:
-!----------------------------------
-standard_name:     surface_downwelling_longwave_flux_in_air
-units:             W m-2
-cell_methods:      time: mean
-long_name:         Surface Downwelling Longwave Radiation
-!----------------------------------
-! Additional variable information:
-!----------------------------------
-dimensions:        longitude latitude time
-out_name:          rlds
-type:              real
-positive:          down
-!----------------------------------
-!
-
-!============
-variable_entry:    rlus
-!============
-modeling_realm:    atmos
-!----------------------------------
-! Variable attributes:
-!----------------------------------
-standard_name:     surface_upwelling_longwave_flux_in_air
-units:             W m-2
-cell_methods:      time: mean
-long_name:         Surface Upwelling Longwave Radiation
-!----------------------------------
-! Additional variable information:
-!----------------------------------
-dimensions:        longitude latitude time
-out_name:          rlus
-type:              real
-positive:          up
-!----------------------------------
-!
-
-!============
-variable_entry:    rsds
-!============
-modeling_realm:    atmos
-!----------------------------------
-! Variable attributes:
-!----------------------------------
-standard_name:     surface_downwelling_shortwave_flux_in_air
-units:             W m-2
-cell_methods:      time: mean
-long_name:         Surface Downwelling Shortwave Radiation
-!----------------------------------
-! Additional variable information:
-!----------------------------------
-dimensions:        longitude latitude time
-out_name:          rsds
-type:              real
-positive:          down
-!----------------------------------
-!
-
-!============
-variable_entry:    rsus
-!============
-modeling_realm:    atmos
-!----------------------------------
-! Variable attributes:
-!----------------------------------
-standard_name:     surface_upwelling_shortwave_flux_in_air
-units:             W m-2
-cell_methods:      time: mean
-long_name:         Surface Upwelling Shortwave Radiation
-!----------------------------------
-! Additional variable information:
-!----------------------------------
-dimensions:        longitude latitude time
-out_name:          rsus
-type:              real
-positive:          up
-!----------------------------------
-!
-
-!============
-variable_entry:    rsdscs
-!============
-modeling_realm:    atmos
-!----------------------------------
-! Variable attributes:
-!----------------------------------
-standard_name:     surface_downwelling_shortwave_flux_in_air_assuming_clear_sky
-units:             W m-2
-cell_methods:      time: mean
-long_name:         Surface Downwelling Clear-Sky Shortwave Radiation
-!----------------------------------
-! Additional variable information:
-!----------------------------------
-dimensions:        longitude latitude time
-out_name:          rsdscs
-type:              real
-positive:          down
-!----------------------------------
-!
-
-!============
-variable_entry:    rsuscs
-!============
-modeling_realm:    atmos
-!----------------------------------
-! Variable attributes:
-!----------------------------------
-standard_name:     surface_upwelling_shortwave_flux_in_air_assuming_clear_sky
-units:             W m-2
-cell_methods:      time: mean
-long_name:         Surface Upwelling Clear-Sky Shortwave Radiation
-!----------------------------------
-! Additional variable information:
-!----------------------------------
-dimensions:        longitude latitude time
-out_name:          rsuscs
-type:              real
-positive:          up
-!----------------------------------
-!
-
-!============
-variable_entry:    rldscs
-!============
-modeling_realm:    atmos
-!----------------------------------
-! Variable attributes:
-!----------------------------------
-standard_name:     surface_downwelling_longwave_flux_in_air_assuming_clear_sky
-units:             W m-2
-cell_methods:      time: mean
-long_name:         Surface Downwelling Clear-Sky Longwave Radiation
-!----------------------------------
-! Additional variable information:
-!----------------------------------
-dimensions:        longitude latitude time
-out_name:          rldscs
-type:              real
-positive:          down
-!----------------------------------
-!
-
-!============
-variable_entry:    rsdt
-!============
-modeling_realm:    atmos
-!----------------------------------
-! Variable attributes:
-!----------------------------------
-standard_name:     toa_incoming_shortwave_flux
-units:             W m-2
-cell_methods:      time: mean
-long_name:         TOA Incident Shortwave Radiation
-comment:           incident shortwave at the top of the atmosphere
-!----------------------------------
-! Additional variable information:
-!----------------------------------
-dimensions:        longitude latitude time
-out_name:          rsdt
-type:              real
-positive:          down
-!----------------------------------
-!
-
-!============
-variable_entry:    rsut
-!============
-modeling_realm:    atmos
-!----------------------------------
-! Variable attributes:
-!----------------------------------
-standard_name:     toa_outgoing_shortwave_flux
-units:             W m-2
-cell_methods:      time: mean
-long_name:         TOA Outgoing Shortwave Radiation
-comment:           at the top of the atmosphere
-!----------------------------------
-! Additional variable information:
-!----------------------------------
-dimensions:        longitude latitude time
-out_name:          rsut
-type:              real
-positive:          up
-!----------------------------------
-!
-
-!============
-variable_entry:    rlut
-!============
-modeling_realm:    atmos
-!----------------------------------
-! Variable attributes:
-!----------------------------------
-standard_name:     toa_outgoing_longwave_flux
-units:             W m-2
-cell_methods:      time: mean
-long_name:         TOA Outgoing Longwave Radiation
-comment:           at the top of the atmosphere (to be compared with satellite measurements)
-!----------------------------------
-! Additional variable information:
-!----------------------------------
-dimensions:        longitude latitude time
-out_name:          rlut
-type:              real
-positive:          up
-!----------------------------------
-!
-
-!============
-variable_entry:    rlutcs
-!============
-modeling_realm:    atmos
-!----------------------------------
-! Variable attributes:
-!----------------------------------
-standard_name:     toa_outgoing_longwave_flux_assuming_clear_sky
-units:             W m-2
-cell_methods:      time: mean
-long_name:         TOA Outgoing Clear-Sky Longwave Radiation
-!----------------------------------
-! Additional variable information:
-!----------------------------------
-dimensions:        longitude latitude time
-out_name:          rlutcs
-type:              real
-positive:          up
-!----------------------------------
-!
-
-!============
-variable_entry:    rsutcs
-!============
-modeling_realm:    atmos
-!----------------------------------
-! Variable attributes:
-!----------------------------------
-standard_name:     toa_outgoing_shortwave_flux_assuming_clear_sky
-units:             W m-2
-cell_methods:      time: mean
-long_name:         TOA Outgoing Clear-Sky Shortwave Radiation
-!----------------------------------
-! Additional variable information:
-!----------------------------------
-dimensions:        longitude latitude time
-out_name:          rsutcs
-type:              real
-positive:          up
-!----------------------------------
-!
-
-!============
-variable_entry:    prw
-!============
-modeling_realm:    atmos
-!----------------------------------
-! Variable attributes:
-!----------------------------------
-standard_name:     atmosphere_water_vapor_content
-units:             kg m-2
-cell_methods:      time: mean
-long_name:         Water Vapor Path
-comment:           vertically integrated through the atmospheric column
-!----------------------------------
-! Additional variable information:
-!----------------------------------
-dimensions:        longitude latitude time
-out_name:          prw
-type:              real
-!----------------------------------
-!
-
-!============
-variable_entry:    clt
-!============
-modeling_realm:    atmos
-!----------------------------------
-! Variable attributes:
-!----------------------------------
-standard_name:     cloud_area_fraction
-units:             %
-cell_methods:      time: mean
-long_name:         Total Cloud Fraction
-comment:           for the whole atmospheric column, as seen from the surface or the top of the atmosphere. Include both large-scale and convective cloud.
-!----------------------------------
-! Additional variable information:
-!----------------------------------
-dimensions:        longitude latitude time
-out_name:          clt
-type:              real
-!----------------------------------
-!
-
-!============
-variable_entry:    clwvi
-!============
-modeling_realm:    atmos
-!----------------------------------
-! Variable attributes:
-!----------------------------------
-standard_name:     atmosphere_cloud_condensed_water_content
-units:             kg m-2
-cell_methods:      time: mean
-long_name:         Condensed Water Path
-comment:           calculate mass of condensed (liquid + ice) water in the column divided by the area of the column (not just the area of the cloudy portion of the column). Include precipitating hydrometeors ONLY if the precipitating hydrometeor affects the calculation of radiative transfer in model.  
-!----------------------------------
-! Additional variable information:
-!----------------------------------
-dimensions:        longitude latitude time
-out_name:          clwvi
-type:              real
-!----------------------------------
-!
-
-!============
-variable_entry:    clivi
-!============
-modeling_realm:    atmos
-!----------------------------------
-! Variable attributes:
-!----------------------------------
-standard_name:     atmosphere_cloud_ice_content
-units:             kg m-2
-cell_methods:      time: mean
-long_name:         Ice Water Path
-comment:           calculate mass of ice water in the column divided by the area of the column (not just the area of the cloudy portion of the column). Include precipitating frozen hydrometeors ONLY if the precipitating hydrometeor affects the calculation of radiative transfer in model.  
-!----------------------------------
-! Additional variable information:
-!----------------------------------
-dimensions:        longitude latitude time
-out_name:          clivi
-type:              real
-!----------------------------------
-!
-
-!============
-variable_entry:    rtmt
-!============
-modeling_realm:    atmos
-!----------------------------------
-! Variable attributes:
-!----------------------------------
-standard_name:     net_downward_radiative_flux_at_top_of_atmosphere_model
-units:             W m-2
-cell_methods:      time: mean
-long_name:         Net Downward Flux at Top of Model
-comment:           i.e., at the top of that portion of the atmosphere where dynamics are explicitly treated by the model. Report only if this differs from the net downward radiative flux at the top of the atmosphere.
-!----------------------------------
-! Additional variable information:
-!----------------------------------
-dimensions:        longitude latitude time
-out_name:          rtmt
-type:              real
-positive:          down
-!----------------------------------
-!
-
-!============
-variable_entry:    ccb
-!============
-modeling_realm:    atmos
-!----------------------------------
-! Variable attributes:
-!----------------------------------
-standard_name:     air_pressure_at_convective_cloud_base
-units:             Pa
-cell_methods:      time: mean
-long_name:         Air Pressure at Convective Cloud Base
-!----------------------------------
-! Additional variable information:
-!----------------------------------
-dimensions:        longitude latitude time
-out_name:          ccb
-type:              real
-!----------------------------------
-!
-
-!============
-variable_entry:    cct
-!============
-modeling_realm:    atmos
-!----------------------------------
-! Variable attributes:
-!----------------------------------
-standard_name:     air_pressure_at_convective_cloud_top
-units:             Pa
-cell_methods:      time: mean
-long_name:         Air Pressure at Convective Cloud Top
-!----------------------------------
-! Additional variable information:
-!----------------------------------
-dimensions:        longitude latitude time
-out_name:          cct
-type:              real
-!----------------------------------
-!
-
-!============
-variable_entry:    ci 
-!============
-modeling_realm:    atmos
-!----------------------------------
-! Variable attributes:
-!----------------------------------
-units:             1
-cell_methods:      time: mean
-long_name:         Fraction of Time Convection Occurs
-comment:           Fraction of time that convection occurs in the grid cell .
-!----------------------------------
-! Additional variable information:
-!----------------------------------
-dimensions:        longitude latitude time
-out_name:          ci 
-type:              real
-!----------------------------------
-!
-
-!============
-variable_entry:    sci
-!============
-modeling_realm:    atmos
-!----------------------------------
-! Variable attributes:
-!----------------------------------
-units:             1
-cell_methods:      time: mean
-long_name:         Fraction of Time Shallow Convection Occurs
-comment:           Fraction of time that shallow convection occurs in the grid cell. ( For models with a distinct shallow convection scheme only)
-!----------------------------------
-! Additional variable information:
-!----------------------------------
-dimensions:        longitude latitude time
-out_name:          sci
-type:              real
-!----------------------------------
-!
-
-!============
-variable_entry:    fco2antt
-!============
-modeling_realm:    atmos
-!----------------------------------
-! Variable attributes:
-!----------------------------------
-units:             kg  m-2 s-1
-cell_methods:      time: mean
-long_name:         Carbon Mass Flux into Atmosphere Due to All Anthropogenic Emissions of CO2
-comment:           This is requested only for the emission-driven coupled carbon climate model runs.  Do not include natural fire sources, but include all anthropogenic sources, including fossil fuel use, cement production, agricultural burning, and sources associated with anthropogenic land use change excluding forest regrowth.
-!----------------------------------
-! Additional variable information:
-!----------------------------------
-dimensions:        longitude latitude time
-out_name:          fco2antt
-type:              real
-positive:          up
-!----------------------------------
-!
-
-!============
-variable_entry:    fco2fos
-!============
-modeling_realm:    atmos
-!----------------------------------
-! Variable attributes:
-!----------------------------------
-units:             kg m-2 s-1
-cell_methods:      time: mean
-long_name:         Carbon Mass Flux into Atmosphere Due to Fossil Fuel Emissions of CO2
-comment:           This is requested only for the emission-driven coupled carbon climate model runs.  Report the prescribed anthropogenic CO2 flux from fossil fuel use, including cement production, and flaring (but not from land-use changes, agricultural burning, forest regrowth, etc.)
-!----------------------------------
-! Additional variable information:
-!----------------------------------
-dimensions:        longitude latitude time
-out_name:          fco2fos
-type:              real
-positive:          up
-!----------------------------------
-!
-
-!============
-variable_entry:    fco2nat
-!============
-modeling_realm:    atmos
-!----------------------------------
-! Variable attributes:
-!----------------------------------
-units:             kg m-2 s-1
-cell_methods:      time: mean
-long_name:         Surface Carbon Mass Flux into the Atmosphere Due to Natural Sources
-comment:           Report from all simulations (both emission-driven and concentration-driven) performed by models with fully interactive and responsive carbon cycles.  This is what the atmosphere sees (on its own grid).  This field should be equivalent to the combined natural fluxes of carbon (requested in the L_mon and O_mon tables) that account for natural exchanges between the atmosphere and land or ocean reservoirs (i.e., ""net ecosystem biospheric productivity"", for land, and ""ai [...]
-!----------------------------------
-! Additional variable information:
-!----------------------------------
-dimensions:        longitude latitude time
-out_name:          fco2nat
-type:              real
-positive:          up
-!----------------------------------
-!
-
-!============
-variable_entry:    cl
-!============
-modeling_realm:    atmos
-!----------------------------------
-! Variable attributes:
-!----------------------------------
-standard_name:     cloud_area_fraction_in_atmosphere_layer
-units:             %
-cell_methods:      time: mean
-cell_measures:      area: areacella
-long_name:         Cloud Area Fraction
-comment:           Report on model layers (not standard pressures).  Include both large-scale and convective cloud.
-!----------------------------------
-! Additional variable information:
-!----------------------------------
-dimensions:        longitude latitude alevel time
-out_name:          cl
-type:              real
-!----------------------------------
-!
-
-!============
-variable_entry:    clw
-!============
-modeling_realm:    atmos
-!----------------------------------
-! Variable attributes:
-!----------------------------------
-standard_name:     mass_fraction_of_cloud_liquid_water_in_air
-units:             1
-cell_methods:      time: mean
-cell_measures:      area: areacella
-long_name:         Mass Fraction of Cloud Liquid Water
-comment:           Report on model layers (not standard pressures).  Include both large-scale and convective cloud.  Calculate as the mass of cloud liquid water in the grid cell divided by the mass of air (including the water in all phases) in the grid cells. Include precipitating hydrometeors ONLY if the precipitating hydrometeor affects the calculation of radiative transfer in model.  
-!----------------------------------
-! Additional variable information:
-!----------------------------------
-dimensions:        longitude latitude alevel time
-out_name:          clw
-type:              real
-!----------------------------------
-!
-
-!============
-variable_entry:    cli
-!============
-modeling_realm:    atmos
-!----------------------------------
-! Variable attributes:
-!----------------------------------
-standard_name:     mass_fraction_of_cloud_ice_in_air
-units:             1
-cell_methods:      time: mean
-cell_measures:      area: areacella
-long_name:         Mass Fraction of Cloud Ice
-comment:           Report on model layers (not standard pressures).  Include both large-scale and convective cloud.  Calculate as the mass of cloud ice in the grid cell divided by the mass of air (including the water in all phases) in the grid cell. Include precipitating hydrometeors ONLY if the precipitating hydrometeor affects the calculation of radiative transfer in model.  
-!----------------------------------
-! Additional variable information:
-!----------------------------------
-dimensions:        longitude latitude alevel time
-out_name:          cli
-type:              real
-!----------------------------------
-!
-
-!============
-variable_entry:    mc
-!============
-modeling_realm:    atmos
-!----------------------------------
-! Variable attributes:
-!----------------------------------
-standard_name:     atmosphere_net_upward_convective_mass_flux
-units:             kg m-2 s-1
-cell_methods:      time: mean
-cell_measures:      area: areacella
-long_name:         Convective Mass Flux
-comment:           Report on model half-levels (i.e., model layer bounds and not standard pressures).  The net mass flux should represent the difference between the updraft and downdraft components.  The flux is computed as the mass divided by the area of the grid cell.  
-!----------------------------------
-! Additional variable information:
-!----------------------------------
-dimensions:        longitude latitude alevhalf time
-out_name:          mc
-type:              real
-positive:          up
-!----------------------------------
-!
-
-!============
-variable_entry:    ta
-!============
-modeling_realm:    atmos
-!----------------------------------
-! Variable attributes:
-!----------------------------------
-standard_name:     air_temperature
-units:             K
-cell_methods:      time: mean
-cell_measures:      area: areacella
-long_name:         Air Temperature
-!----------------------------------
-! Additional variable information:
-!----------------------------------
-dimensions:        longitude latitude plevs time
-out_name:          ta
-type:              real
-!----------------------------------
-!
-
-!============
-variable_entry:    ua
-!============
-modeling_realm:    atmos
-!----------------------------------
-! Variable attributes:
-!----------------------------------
-standard_name:     eastward_wind
-units:             m s-1
-cell_methods:      time: mean
-cell_measures:      area: areacella
-long_name:         Eastward Wind
-!----------------------------------
-! Additional variable information:
-!----------------------------------
-dimensions:        longitude latitude plevs time
-out_name:          ua
-type:              real
-!----------------------------------
-!
-
-!============
-variable_entry:    va
-!============
-modeling_realm:    atmos
-!----------------------------------
-! Variable attributes:
-!----------------------------------
-standard_name:     northward_wind
-units:             m s-1
-cell_methods:      time: mean
-cell_measures:      area: areacella
-long_name:         Northward Wind
-!----------------------------------
-! Additional variable information:
-!----------------------------------
-dimensions:        longitude latitude plevs time
-out_name:          va
-type:              real
-!----------------------------------
-!
-
-!============
-variable_entry:    hus
-!============
-modeling_realm:    atmos
-!----------------------------------
-! Variable attributes:
-!----------------------------------
-standard_name:     specific_humidity
-units:             1
-cell_methods:      time: mean
-cell_measures:      area: areacella
-long_name:         Specific Humidity
-!----------------------------------
-! Additional variable information:
-!----------------------------------
-dimensions:        longitude latitude plevs time
-out_name:          hus
-type:              real
-!----------------------------------
-!
-
-!============
-variable_entry:    hur
-!============
-modeling_realm:    atmos
-!----------------------------------
-! Variable attributes:
-!----------------------------------
-standard_name:     relative_humidity
-units:             %
-cell_methods:      time: mean
-cell_measures:      area: areacella
-long_name:         Relative Humidity
-comment:           This is the relative humidity with respect to liquid water for T> 0 C, and with respect to ice for T<0 C.
-!----------------------------------
-! Additional variable information:
-!----------------------------------
-dimensions:        longitude latitude plevs time
-out_name:          hur
-type:              real
-!----------------------------------
-!
-
-!============
-variable_entry:    wap
-!============
-modeling_realm:    atmos
-!----------------------------------
-! Variable attributes:
-!----------------------------------
-standard_name:     lagrangian_tendency_of_air_pressure
-units:             Pa s-1
-cell_methods:      time: mean
-cell_measures:      area: areacella
-long_name:         omega (=dp/dt)
-comment:           commonly referred to as ""omega"", this represents the vertical component of velocity in pressure coordinates (positive down)
-!----------------------------------
-! Additional variable information:
-!----------------------------------
-dimensions:        longitude latitude plevs time
-out_name:          wap
-type:              real
-!----------------------------------
-!
-
-!============
-variable_entry:    zg
-!============
-modeling_realm:    atmos
-!----------------------------------
-! Variable attributes:
-!----------------------------------
-standard_name:     geopotential_height
-units:             m
-cell_methods:      time: mean
-cell_measures:      area: areacella
-long_name:         Geopotential Height
-!----------------------------------
-! Additional variable information:
-!----------------------------------
-dimensions:        longitude latitude plevs time
-out_name:          zg
-type:              real
-!----------------------------------
-!
-
-!============
-variable_entry:    tro3
-!============
-modeling_realm:    atmos atmosChem
-!----------------------------------
-! Variable attributes:
-!----------------------------------
-standard_name:     mole_fraction_of_ozone_in_air
-units:             1e-9
-cell_methods:      time: mean
-cell_measures:      area: areacella
-long_name:         Mole Fraction of O3
-comment:           If this does not change over time (except possibly to vary identically over each annual cycle), report instead the variable described in the next table entry. 
-!----------------------------------
-! Additional variable information:
-!----------------------------------
-dimensions:        longitude latitude plevs time
-out_name:          tro3
-type:              real
-!----------------------------------
-!
-
-!============
-variable_entry:    tro3Clim
-!============
-modeling_realm:    atmos atmosChem
-!----------------------------------
-! Variable attributes:
-!----------------------------------
-standard_name:     mole_fraction_of_ozone_in_air
-units:             1e-9
-cell_methods:      time: mean within years time: mean over years
-cell_measures:      area: areacella
-long_name:         Mole Fraction of O3
-comment:           If O3 does not vary from one year to the next, report 12 months, starting with January.   (Note: include all 12 months even if the values don't vary seasonally.)  When calling CMOR, identify this variable as tro3Clim, not tro3. If the O3 varies from one year to the next,  then report instead the field described in the previous table entry.  
-!----------------------------------
-! Additional variable information:
-!----------------------------------
-dimensions:        longitude latitude plevs time2
-out_name:          tro3
-type:              real
-!----------------------------------
-!
-
-!============
-variable_entry:    co2
-!============
-modeling_realm:    atmos
-!----------------------------------
-! Variable attributes:
-!----------------------------------
-standard_name:     mole_fraction_of_carbon_dioxide_in_air
-units:             1e-6
-cell_methods:      time: mean
-cell_measures:      area: areacella
-long_name:         Mole Fraction of CO2
-comment:           For some simulations (e.g., prescribed concentration pi-control run), this will not vary from one year to the next, and so report instead the variable described in the next table entry.  If spatially uniform, omit this field, but report Total Atmospheric Mass of CO2 (see the table entry after the next one). 
-!----------------------------------
-! Additional variable information:
-!----------------------------------
-dimensions:        longitude latitude plevs time
-out_name:          co2
-type:              real
-!----------------------------------
-!
-
-!============
-variable_entry:    co2Clim
-!============
-modeling_realm:    atmos
-!----------------------------------
-! Variable attributes:
-!----------------------------------
-standard_name:     mole_fraction_of_carbon_dioxide_in_air
-units:             1e-6
-cell_methods:      time: mean within years time: mean over years
-cell_measures:      area: areacella
-long_name:         Mole Fraction of CO2
-comment:           Report only for simulations (e.g., prescribed concentration pi-control run), in which the CO2 does not vary from one year to the next. Report 12 monthly values, starting with January, even if the values don't vary seasonally.  When calling CMOR, identify this variable as co2Clim, not co2.   If  CO2 is spatially uniform, omit this field, but report Total Atmospheric Mass of CO2 (see the table entry after the next).
-!----------------------------------
-! Additional variable information:
-!----------------------------------
-dimensions:        longitude latitude plevs time2
-out_name:          co2
-type:              real
-!----------------------------------
-!
-
-!============
-variable_entry:    co2mass
-!============
-modeling_realm:    atmos
-!----------------------------------
-! Variable attributes:
-!----------------------------------
-units:             kg
-cell_methods:      time: mean
-long_name:         Total Atmospheric Mass of CO2
-comment:           For some simulations (e.g., prescribed concentration pi-control run), this will not vary from one year to the next, and so report instead the variable described in the next table entry.  If CO2 is spatially nonuniform, omit this field, but report Mole Fraction of CO2 (see the table entry before the previous one). 
-!----------------------------------
-! Additional variable information:
-!----------------------------------
-dimensions:        time
-out_name:          co2mass
-type:              real
-!----------------------------------
-!
-
-!============
-variable_entry:    co2massClim
-!============
-modeling_realm:    atmos
-!----------------------------------
-! Variable attributes:
-!----------------------------------
-units:             kg
-cell_methods:      time: mean within years time: mean over years
-long_name:         Total Atmospheric Mass of CO2
-comment:           Report only for simulations (e.g., prescribed concentration pi-control run), in which the CO2 does not vary from one year to the next. Report 12 monthly values, starting with January, even if the values don't vary seasonally.  When calling CMOR, identify this variable as co2massClim, not co2mass.  If CO2 is spatially nonuniform, omit this field, but report Mole Fraction of CO2 (see the table entry before the previous one). 
-!----------------------------------
-! Additional variable information:
-!----------------------------------
-dimensions:        time2
-out_name:          co2mass
-type:              real
-!----------------------------------
-!
-
-!============
-variable_entry:    ch4
-!============
-modeling_realm:    atmos atmosChem
-!----------------------------------
-! Variable attributes:
-!----------------------------------
-standard_name:     mole_fraction_of_methane_in_air
-units:             1e-9
-cell_methods:      time: mean
-cell_measures:      area: areacella
-long_name:         Mole Fraction of CH4
-comment:           For some simulations (e.g., prescribed concentration pi-control run), this will not vary from one year to the next, and so report instead the variable described in the next table entry.  If CH4 is spatially uniform, omit this field, but report Global Mean Mole Fraction of CH4 (see the table entry after the next one). 
-!----------------------------------
-! Additional variable information:
-!----------------------------------
-dimensions:        longitude latitude plevs time
-out_name:          ch4
-type:              real
-!----------------------------------
-!
-
-!============
-variable_entry:    ch4
-!============
-modeling_realm:    atmos atmosChem
-!----------------------------------
-! Variable attributes:
-!----------------------------------
-standard_name:     mole_fraction_of_methane_in_air
-units:             1e-9
-cell_methods:      time: mean within years time: mean over years
-cell_measures:      area: areacella
-long_name:         Mole Fraction of CH4
-comment:           Report only for simulations (e.g., prescribed concentration pi-control run), in which the CH4 does not vary from one year to the next. Report 12 monthly values, starting with January, even if the values don't vary seasonally.  When calling CMOR, identify this variable as ch4global, not ch4.   If  CH4 is spatially uniform, omit this field, but report Global Mean Mole Fraction of CH4 (see the table entry after the next).
-!----------------------------------
-! Additional variable information:
-!----------------------------------
-dimensions:        longitude latitude plevs time2
-out_name:          ch4
-type:              real
-!----------------------------------
-!
-
-!============
-variable_entry:    ch4global
-!============
-modeling_realm:    atmos atmosChem
-!----------------------------------
-! Variable attributes:
-!----------------------------------
-standard_name:     mole_fraction_of_methane_in_air
-units:             1e-9
-cell_methods:      time: mean
-long_name:         Global Mean Mole Fraction of CH4
-comment:           For some simulations (e.g., prescribed concentration pi-control run), this will not vary from one year to the next, and so report instead the variable described in the next table entry.  If CH4 is spatially nonuniform, omit this field, but report Mole Fraction of CH4 (see the table entry before the previous one). 
-!----------------------------------
-! Additional variable information:
-!----------------------------------
-dimensions:        time
-out_name:          ch4global
-type:              real
-!----------------------------------
-!
-
-!============
-variable_entry:    ch4globalClim
-!============
-modeling_realm:    atmos atmosChem
-!----------------------------------
-! Variable attributes:
-!----------------------------------
-standard_name:     mole_fraction_of_methane_in_air
-units:             1e-9
-cell_methods:      time: mean within years time: mean over years
-long_name:         Global Mean Mole Fraction of CH4
-comment:           Report only for simulations (e.g., prescribed concentration pi-control run), in which the CH4 does not vary from one year to the next. Report 12 monthly values, starting with January, even if the values don't vary seasonally.  When calling CMOR, identify this variable as ch4globalClim, not ch4global.  If CH4 is spatially nonuniform, omit this field, but report Global Mean Mole Fraction of CH4 (see the table entry before the previous one). 
-!----------------------------------
-! Additional variable information:
-!----------------------------------
-dimensions:        time2
-out_name:          ch4global
-type:              real
-!----------------------------------
-!
-
-!============
-variable_entry:    n2o
-!============
-modeling_realm:    atmos atmosChem
-!----------------------------------
-! Variable attributes:
-!----------------------------------
-standard_name:     mole_fraction_of_nitrous_oxide_in_air
-units:             1e-9
-cell_methods:      time: mean
-cell_measures:      area: areacella
-long_name:         Mole Fraction of N2O
-comment:           For some simulations (e.g., prescribed concentration pi-control run), this will not vary from one year to the next, and so report instead the variable described in the next table entry.  If N2O is spatially uniform, omit this field, but report Global Mean Mole Fraction of N2O (see the table entry after the next one). 
-!----------------------------------
-! Additional variable information:
-!----------------------------------
-dimensions:        longitude latitude plevs time
-out_name:          n2o
-type:              real
-!----------------------------------
-!
-
-!============
-variable_entry:    n2oClim
-!============
-modeling_realm:    atmos atmosChem
-!----------------------------------
-! Variable attributes:
-!----------------------------------
-standard_name:     mole_fraction_of_nitrous_oxide_in_air
-units:             1e-9
-cell_methods:      time: mean within years time: mean over years
-cell_measures:      area: areacella
-long_name:         Mole Fraction of N2O
-comment:           Report only for simulations (e.g., prescribed concentration pi-control run), in which the N2O does not vary from one year to the next. Report 12 monthly values, starting with January, even if the values don't vary seasonally.  When calling CMOR, identify this variable as n2oglobal, not n2o.   If  N2O is spatially uniform, omit this field, but report Global Mean Mole Fraction of N2O (see the table entry after the next).
-!----------------------------------
-! Additional variable information:
-!----------------------------------
-dimensions:        longitude latitude plevs time2
-out_name:          n2o
-type:              real
-!----------------------------------
-!
-
-!============
-variable_entry:    n2oglobal
-!============
-modeling_realm:    atmos atmosChem
-!----------------------------------
-! Variable attributes:
-!----------------------------------
-standard_name:     mole_fraction_of_nitrous_oxide_in_air
-units:             1e-9
-cell_methods:      time: mean
-long_name:         Global Mean Mole Fraction of N2O
-comment:           For some simulations (e.g., prescribed concentration pi-control run), this will not vary from one year to the next, and so report instead the variable described in the next table entry.  If N2O is spatially nonuniform, omit this field, but report Mole Fraction of N2O (see the table entry before the previous one). 
-!----------------------------------
-! Additional variable information:
-!----------------------------------
-dimensions:        time
-out_name:          n2oglobal
-type:              real
-!----------------------------------
-!
-
-!============
-variable_entry:    n2oglobalClim
-!============
-modeling_realm:    atmos atmosChem
-!----------------------------------
-! Variable attributes:
-!----------------------------------
-standard_name:     mole_fraction_of_nitrous_oxide_in_air
-units:             1e-9
-cell_methods:      time: mean within years time: mean over years
-long_name:         Global Mean Mole Fraction of N2O
-comment:           Report only for simulations (e.g., prescribed concentration pi-control run), in which the N2O does not vary from one year to the next. Report 12 monthly values, starting with January, even if the values don't vary seasonally.  When calling CMOR, identify this variable as ch4globalClim, not ch4global.  If N2O is spatially nonuniform, omit this field, but report Global Mean Mole Fraction of N2O (see the table entry before the previous one). 
-!----------------------------------
-! Additional variable information:
-!----------------------------------
-dimensions:        time2
-out_name:          n2oglobal
-type:              real
-!----------------------------------
-!
-
-
-!============
-variable_entry:    pfull
-!============
-modeling_realm:    atmos
-!----------------------------------
-! Variable attributes:
-!----------------------------------
-standard_name:     air_pressure
-units:             Pa
-cell_methods:      time: mean within years time: mean over years
-cell_measures:      area: areacella
-long_name:         Pressure on Model Levels
-!----------------------------------
-! Additional variable information:
-!----------------------------------
-dimensions:        longitude latitude alevel time2
-out_name:          pfull
-type:              real
-!----------------------------------
-!
-
-!============
-variable_entry:    phalf
-!============
-modeling_realm:    atmos
-!----------------------------------
-! Variable attributes:
-!----------------------------------
-standard_name:     air_pressure
-units:             Pa
-cell_methods:      time: mean within years time: mean over years
-cell_measures:      area: areacella
-long_name:         Pressure on Model Half-Levels
-!----------------------------------
-! Additional variable information:
-!----------------------------------
-dimensions:        longitude latitude alevhalf time2
-out_name:          phalf
-type:              real
-!----------------------------------
-!
-
+{
+    "Header": {
+        "missing_value": "1e20",
+        "approx_interval": "30.00000",
+        "cmor_version": "3.0",
+        "forcings": "N/A Nat Ant GHG SD SI SA TO SO Oz LU Sl Vl SS Ds BC MD OC AA",
+        "frequency": "mon",
+        "table_id": "Table Amon",
+        "table_date": "24 February 2016",
+        "realm": "atmos",
+        "generic_levels": "alevel alevhalf",
+        "data_specs_version": "3.0",
+        "Conventions": "CF-1.8 CMIP-6.0"
+    },
+    "axis_entry": {
+        "olayer100m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "0.0", 
+            "value": "50.0", 
+            "z_bounds_factors": "", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "100.0", 
+            "axis": "Z"
+        }, 
+        "ocean_sigma_z": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "sigma: sigma eta: eta depth: depth depth_c: depth_c nsigma: nsigma zlev: zlev", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "value": "", 
+            "z_bounds_factors": "sigma: sigma_bnds eta: eta depth: depth depth_c: depth_c nsigma: nsigma zlev: zlev_bnds", 
+            "long_name": "ocean sigma over z coordinate", 
+            "standard_name": "ocean_sigma_z", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "for k <= nsigma: z(n,k,j,i) = eta(n,j,i) + sigma(k)*(min(depth_c,depth(j,i))+eta(n,j,i)) ; for k > nsigma: z(n,k,j,i) = zlev(k)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "smooth_level": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "a: a b1: b1 b2: b2 ztop: ztop zsurf1: zsurf1 zsurf2: zsurf2", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-200.0", 
+            "value": "", 
+            "z_bounds_factors": "a: a_bnds b1: b1_bnds b2: b2_bnds ztop: ztop zsurf1: zsurf1 zsurf2: zsurf2", 
+            "long_name": "atmosphere smooth level vertical (SLEVE) coordinate", 
+            "standard_name": "atmosphere_sleve_coordinate", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "m", 
+            "formula": "z = a*ztop + b1*zsurf1 + b2*zsurf2", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "800000.0", 
+            "axis": "Z"
+        }, 
+        "ocean_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "sigma: lev eta: eta depth: depth", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-1.0", 
+            "value": "", 
+            "z_bounds_factors": "sigma: lev_bnds eta: eta depth: depth", 
+            "long_name": "ocean sigma coordinate", 
+            "standard_name": "ocean_sigma_coordinate", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "z(n,k,j,i) = eta(n,j,i) + sigma(k)*(depth(j,i)+eta(n,j,i))", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "0.0", 
+            "axis": "Z"
+        }, 
+        "depth0m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "0.0", 
+            "value": "0.0", 
+            "z_bounds_factors": "", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "100.0", 
+            "axis": "Z"
+        }, 
+        "ocean_s": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "s: lev eta: eta depth: depth a: a_coeff b: b_coeff depth_c: depth_c", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-1.0", 
+            "value": "", 
+            "z_bounds_factors": "s: lev_bnds eta: eta depth: depth a: a b: b depth_c: depth_c", 
+            "long_name": "ocean s-coordinate", 
+            "standard_name": "ocean_s_coordinate", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "z(n,k,j,i) = eta(n,j,i)*(1+s(k)) + depth_c*s(k) + (depth(j,i)-depth_c)*C(k) \n where \n C(k)=(1-b)*sinh(a*s(k))/sinh(a) +\n           b*(tanh(a*(s(k)+0.5))/(2*tanh(0.5*a)) - 0.5)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "0.0", 
+            "axis": "Z"
+        }, 
+        "height2m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "up", 
+            "must_have_bounds": "no", 
+            "valid_min": "1.0", 
+            "value": "2.0", 
+            "z_bounds_factors": "", 
+            "long_name": "height", 
+            "standard_name": "height", 
+            "out_name": "height", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "10.0", 
+            "axis": "Z"
+        }, 
+        "depth_coord": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "value": "", 
+            "z_bounds_factors": "", 
+            "long_name": "ocean depth coordinate", 
+            "standard_name": "depth", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "12000.0", 
+            "axis": "Z"
+        }, 
+        "alternate_hybrid_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "ap: ap b: b ps: ps", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "value": "", 
+            "z_bounds_factors": "ap: ap_bnds b: b_bnds ps: ps", 
+            "long_name": "hybrid sigma pressure coordinate", 
+            "standard_name": "atmosphere_hybrid_sigma_pressure_coordinate", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "1", 
+            "formula": "p = ap + b*ps", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "1.0", 
+            "axis": "Z"
+        }, 
+        "time2": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "value": "", 
+            "z_bounds_factors": "", 
+            "long_name": "time", 
+            "standard_name": "time", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "yes", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "oline": {
+            "requested": [
+                "barents_opening", 
+                "bering_strait", 
+                "canadian_archipelago", 
+                "denmark_strait", 
+                "drake_passage", 
+                "english_channel", 
+                "pacific_equatorial_undercurrent", 
+                "faroe_scotland_channel", 
+                "florida_bahamas_strait", 
+                "fram_strait", 
+                "iceland_faroe_channel", 
+                "indonesian_thoughflow", 
+                "mozambique_channel", 
+                "taiwan_luzon_straits", 
+                "windward_passage"
+            ], 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "value": "", 
+            "z_bounds_factors": "", 
+            "long_name": "ocean passage", 
+            "standard_name": "region", 
+            "out_name": "line", 
+            "type": "character", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "latitude": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-90.0", 
+            "value": "", 
+            "z_bounds_factors": "", 
+            "long_name": "latitude", 
+            "standard_name": "latitude", 
+            "out_name": "lat", 
+            "type": "double", 
+            "units": "degrees_north", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "90.0", 
+            "axis": "Y"
+        }, 
+        "basin": {
+            "requested": [
+                "atlantic_arctic_ocean", 
+                "indian_pacific_ocean", 
+                "global_ocean"
+            ], 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "value": "", 
+            "z_bounds_factors": "", 
+            "long_name": "ocean basin", 
+            "standard_name": "region", 
+            "out_name": "basin", 
+            "type": "character", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "height10m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "up", 
+            "must_have_bounds": "no", 
+            "valid_min": "1.0", 
+            "value": "10.0", 
+            "z_bounds_factors": "", 
+            "long_name": "height", 
+            "standard_name": "height", 
+            "out_name": "height", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "30.0", 
+            "axis": "Z"
+        }, 
+        "standard_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "ptop: ptop sigma: lev ps: ps", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "value": "", 
+            "z_bounds_factors": "ptop: ptop sigma: lev_bnds ps: ps", 
+            "long_name": "sigma coordinate", 
+            "standard_name": "atmosphere_sigma_coordinate", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "p = ptop + sigma*(ps - ptop)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "1.0", 
+            "axis": "Z"
+        }, 
+        "rho": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "value": "", 
+            "z_bounds_factors": "", 
+            "long_name": "density++++?", 
+            "standard_name": "", 
+            "out_name": "rho", 
+            "type": "double", 
+            "units": "kg m-3", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "depth100m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "80.0", 
+            "value": "100.0", 
+            "z_bounds_factors": "", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "120.0", 
+            "axis": "Z"
+        }, 
+        "natural_log_pressure": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "p0: p0 lev: lev", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-1.0", 
+            "value": "", 
+            "z_bounds_factors": "p0: p0 lev: lev_bnds", 
+            "long_name": "atmosphere natural log pressure coordinate", 
+            "standard_name": "atmosphere_ln_pressure_coordinate", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "p = p0 * exp(-lev)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "20.0", 
+            "axis": "Z"
+        }, 
+        "hybrid_height": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "a: lev b: b orog: orog", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "value": "", 
+            "z_bounds_factors": "a: lev_bnds b: b_bnds orog: orog", 
+            "long_name": "hybrid height coordinate", 
+            "standard_name": "atmosphere_hybrid_height_coordinate", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "m", 
+            "formula": "z = a + b*orog", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "longitude": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "value": "", 
+            "z_bounds_factors": "", 
+            "long_name": "longitude", 
+            "standard_name": "longitude", 
+            "out_name": "lon", 
+            "type": "double", 
+            "units": "degrees_east", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "360.0", 
+            "axis": "X"
+        }, 
+        "time": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "value": "", 
+            "z_bounds_factors": "", 
+            "long_name": "time", 
+            "standard_name": "time", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "ocean_double_sigma": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "sigma: sigma depth: depth z1: z1 z2: z2 a: a_coeff href: href k_c: k_c", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "value": "", 
+            "z_bounds_factors": "sigma: sigma_bnds depth: depth z1: z1 z2: z2 a: a href: href k_c: k_c", 
+            "long_name": "ocean double sigma coordinate", 
+            "standard_name": "ocean_double_sigma", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "for k <= k_c:\n z(k,j,i)= sigma(k)*f(j,i) \n for k > k_c:\n z(k,j,i)= f(j,i) + (sigma(k)-1)*(depth(j,i)-f(j,i)) \n f(j,i)= 0.5*(z1+ z2) + 0.5*(z1-z2)* tanh(2*a/(z1-z2)*(depth(j,i)-href))", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plevs": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "value": "", 
+            "z_bounds_factors": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "standard_hybrid_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "p0: p0 a: a b: b ps: ps", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "value": "", 
+            "z_bounds_factors": "p0: p0 a: a_bnds b: b_bnds ps: ps", 
+            "long_name": "hybrid sigma pressure coordinate", 
+            "standard_name": "atmosphere_hybrid_sigma_pressure_coordinate", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "1", 
+            "formula": "p = a*p0 + b*ps", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "1.0", 
+            "axis": "Z"
+        }
+    }, 
+    "variable_entry": {
+        "sci": {
+            "comment": "Fraction of time that shallow convection occurs in the grid cell.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Fraction of Time Shallow Convection Occurs", 
+            "standard_name": "shallow_convection_time_fraction", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "1", 
+            "out_name": "sci", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "depth_c": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: depth_c", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "tro3": {
+            "comment": "", 
+            "dimensions": "longitude latitude plevs time", 
+            "positive": "", 
+            "valid_min": "-419.2", 
+            "long_name": "Mole Fraction of O3", 
+            "standard_name": "mole_fraction_of_ozone_in_air", 
+            "modeling_realm": "atmos atmosChem", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "-149.1", 
+            "units": "0.000000001", 
+            "out_name": "tro3", 
+            "type": "real", 
+            "valid_max": "1.162e+04", 
+            "ok_max_mean_abs": "7558"
+        }, 
+        "rsutcs": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "valid_min": "0", 
+            "long_name": "TOA Outgoing Clear-Sky Shortwave Radiation", 
+            "standard_name": "toa_outgoing_shortwave_flux_assuming_clear_sky", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "54.7", 
+            "units": "W m-2", 
+            "out_name": "rsutcs", 
+            "type": "real", 
+            "valid_max": "444", 
+            "ok_max_mean_abs": "73.36"
+        }, 
+        "rldscs": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "down", 
+            "valid_min": "33.55", 
+            "long_name": "Surface Downwelling Clear-Sky Longwave Radiation", 
+            "standard_name": "surface_downwelling_longwave_flux_in_air_assuming_clear_sky", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "238.6", 
+            "units": "W m-2", 
+            "out_name": "rldscs", 
+            "type": "real", 
+            "valid_max": "543.6", 
+            "ok_max_mean_abs": "293.8"
+        }, 
+        "n2oglobal": {
+            "comment": "", 
+            "dimensions": "time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Global Mean Mole Fraction of N2O", 
+            "standard_name": "mole_fraction_of_nitrous_oxide_in_air", 
+            "modeling_realm": "atmos atmosChem", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "0.000000001", 
+            "out_name": "n2oglobal", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "cli": {
+            "comment": "Includes both large-scale and convective cloud. This is the mass of  cloud ice  in the grid cell divided by the mass of air (including the water in all phases) in the grid cell.  This includes precipitating hydrometeors ONLY if the precipitating hydrometeors affect the calculation of radiative transfer in model.", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Mass Fraction of Cloud Ice", 
+            "standard_name": "mass_fraction_of_cloud_ice_in_air", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "1", 
+            "out_name": "cli", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "ts": {
+            "comment": "''skin'' temperature (i.e., SST for open ocean)", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "176.8", 
+            "long_name": "Surface Temperature", 
+            "standard_name": "surface_temperature", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "262.8", 
+            "units": "K", 
+            "out_name": "ts", 
+            "type": "real", 
+            "valid_max": "339.6", 
+            "ok_max_mean_abs": "293.3"
+        }, 
+        "clt": {
+            "comment": "For the whole atmospheric column, as seen from the surface or the top of the atmosphere. Include both large-scale and convective cloud.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "-0.0001822", 
+            "long_name": "Total Cloud Fraction", 
+            "standard_name": "cloud_area_fraction", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "39.37", 
+            "units": "%", 
+            "out_name": "clt", 
+            "type": "real", 
+            "valid_max": "105", 
+            "ok_max_mean_abs": "84.98"
+        }, 
+        "clw": {
+            "comment": "Includes both large-scale and convective cloud.  This is the mass of  cloud liquid water in the grid cell divided by the mass of air (including the water in all phases) in the grid cell.  This includes precipitating hydrometeors ONLY if the precipitating hydrometeors affect the calculation of radiative transfer in model.", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Mass Fraction of Cloud Liquid Water", 
+            "standard_name": "mass_fraction_of_cloud_liquid_water_in_air", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "1", 
+            "out_name": "clw", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "ta": {
+            "comment": "", 
+            "dimensions": "longitude latitude plevs time", 
+            "positive": "", 
+            "valid_min": "157.1", 
+            "long_name": "Air Temperature", 
+            "standard_name": "air_temperature", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "194.3", 
+            "units": "K", 
+            "out_name": "ta", 
+            "type": "real", 
+            "valid_max": "336.3", 
+            "ok_max_mean_abs": "299.8"
+        }, 
+        "psl": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "9.122e+04", 
+            "long_name": "Sea Level Pressure", 
+            "standard_name": "air_pressure_at_sea_level", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "9.57e+04", 
+            "units": "Pa", 
+            "out_name": "psl", 
+            "type": "real", 
+            "valid_max": "1.137e+05", 
+            "ok_max_mean_abs": "1.063e+05"
+        }, 
+        "nsigma": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: nsigma", 
+            "type": "integer", 
+            "dimensions": ""
+        }, 
+        "co2Clim": {
+            "comment": "", 
+            "dimensions": "longitude latitude plevs time2", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Mole Fraction of CO2", 
+            "standard_name": "mole_fraction_of_carbon_dioxide_in_air", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean within years time: mean over years", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "0.000001", 
+            "out_name": "co2Clim", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "sfcWind": {
+            "comment": "near-surface (usually, 10 meters) wind speed.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Near-Surface Wind Speed", 
+            "standard_name": "wind_speed", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "m s-1", 
+            "out_name": "sfcWind", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "ch4Clim": {
+            "comment": "", 
+            "dimensions": "longitude latitude plevs time2", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Mole Fraction of CH4", 
+            "standard_name": "mole_fraction_of_methane_in_air", 
+            "modeling_realm": "atmos atmosChem", 
+            "cell_measures": "time: mean within years time: mean over years", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "0.000000001", 
+            "out_name": "ch4Clim", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "clwvi": {
+            "comment": "Mass of condensed (liquid + ice) water in the column divided by the area of the column (not just the area of the cloudy portion of the column). Includes precipitating hydrometeors ONLY if the precipitating hydrometeors affect the calculation of radiative transfer in model.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "-3.827e-06", 
+            "long_name": "Condensed Water Path", 
+            "standard_name": "atmosphere_cloud_condensed_water_content", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "-0.03549", 
+            "units": "kg m-2", 
+            "out_name": "clwvi", 
+            "type": "real", 
+            "valid_max": "3.364", 
+            "ok_max_mean_abs": "0.2846"
+        }, 
+        "rsdscs": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "down", 
+            "valid_min": "-1.748e+30", 
+            "long_name": "Surface Downwelling Clear-Sky Shortwave Radiation", 
+            "standard_name": "surface_downwelling_shortwave_flux_in_air_assuming_clear_sky", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "206.9", 
+            "units": "W m-2", 
+            "out_name": "rsdscs", 
+            "type": "real", 
+            "valid_max": "522.4", 
+            "ok_max_mean_abs": "239"
+        }, 
+        "huss": {
+            "comment": "near-surface (usually, 2 meter) specific humidity.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "-7.21e-06", 
+            "long_name": "Near-Surface Specific Humidity", 
+            "standard_name": "specific_humidity", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0.006391", 
+            "units": "1", 
+            "out_name": "huss", 
+            "type": "real", 
+            "valid_max": "0.02992", 
+            "ok_max_mean_abs": "0.008749"
+        }, 
+        "rtmt": {
+            "comment": "i.e., at the top of that portion of the atmosphere where dynamics are explicitly treated by the model. This is reported only if it differs from the net downward radiative flux at the top of the atmosphere.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "down", 
+            "valid_min": "-232.8", 
+            "long_name": "Net Downward Flux at Top of Model", 
+            "standard_name": "net_downward_radiative_flux_at_top_of_atmosphere_model", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "76.91", 
+            "units": "W m-2", 
+            "out_name": "rtmt", 
+            "type": "real", 
+            "valid_max": "218.7", 
+            "ok_max_mean_abs": "89.25"
+        }, 
+        "evspsbl": {
+            "comment": "at surface; flux of water into the atmosphere due to conversion of both liquid and solid phases to vapor (from underlying surface and vegetation)", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Evaporation", 
+            "standard_name": "water_evaporation_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "evspsbl", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "a_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: a(k+1/2)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "co2": {
+            "comment": "", 
+            "dimensions": "longitude latitude plevs time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Mole Fraction of CO2", 
+            "standard_name": "mole_fraction_of_carbon_dioxide_in_air", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "0.000001", 
+            "out_name": "co2", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "cfc11global": {
+            "comment": "", 
+            "dimensions": "time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Global Mean Mole Fraction of CFC11", 
+            "standard_name": "mole_fraction_of_cfc11_in_air", 
+            "modeling_realm": "atmos atmosChem", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "1E-012", 
+            "out_name": "cfc11global", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "rlds": {
+            "comment": "This is the 3-hour mean flux.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "down", 
+            "valid_min": "30.71", 
+            "long_name": "Surface Downwelling Longwave Radiation", 
+            "standard_name": "surface_downwelling_longwave_flux_in_air", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "271.2", 
+            "units": "W m-2", 
+            "out_name": "rlds", 
+            "type": "real", 
+            "valid_max": "520.5", 
+            "ok_max_mean_abs": "323.6"
+        }, 
+        "sigma_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: sigma(k+1/2)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "ch4globalClim": {
+            "comment": "", 
+            "dimensions": "time2", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Global Mean Mole Fraction of CH4", 
+            "standard_name": "mole_fraction_of_methane_in_air", 
+            "modeling_realm": "atmos atmosChem", 
+            "cell_measures": "time: mean within years time: mean over years", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "0.000000001", 
+            "out_name": "ch4globalClim", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "tauv": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "down", 
+            "valid_min": "-2.472", 
+            "long_name": "Surface Downward Northward Wind Stress", 
+            "standard_name": "surface_downward_northward_stress", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "0.01447", 
+            "units": "Pa", 
+            "out_name": "tauv", 
+            "type": "real", 
+            "valid_max": "2.527", 
+            "ok_max_mean_abs": "0.08134"
+        }, 
+        "rlut": {
+            "comment": "at the top of the atmosphere.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "valid_min": "67.48", 
+            "long_name": "TOA Outgoing Longwave Radiation", 
+            "standard_name": "toa_outgoing_longwave_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "207.4", 
+            "units": "W m-2", 
+            "out_name": "rlut", 
+            "type": "real", 
+            "valid_max": "383.2", 
+            "ok_max_mean_abs": "234.4"
+        }, 
+        "rsdt": {
+            "comment": "at the top of the atmosphere", 
+            "dimensions": "longitude latitude time", 
+            "positive": "down", 
+            "valid_min": "0", 
+            "long_name": "TOA Incident Shortwave Radiation", 
+            "standard_name": "toa_incoming_shortwave_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "282.6", 
+            "units": "W m-2", 
+            "out_name": "rsdt", 
+            "type": "real", 
+            "valid_max": "580.4", 
+            "ok_max_mean_abs": "315.8"
+        }, 
+        "rsds": {
+            "comment": "This is the 3-hour mean flux.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "down", 
+            "valid_min": "-0.002946", 
+            "long_name": "Surface Downwelling Shortwave Radiation", 
+            "standard_name": "surface_downwelling_shortwave_flux_in_air", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "143.9", 
+            "units": "W m-2", 
+            "out_name": "rsds", 
+            "type": "real", 
+            "valid_max": "524.4", 
+            "ok_max_mean_abs": "181.6"
+        }, 
+        "z1": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: z1", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "sbl": {
+            "comment": "The snow and ice sublimation flux is the loss of snow and ice mass from the surface resulting from their conversion to water vapor that enters the atmosphere.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "-0.004959", 
+            "long_name": "Surface Snow and Ice Sublimation Flux", 
+            "standard_name": "surface_snow_and_ice_sublimation_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "-5.521e-05", 
+            "units": "kg m-2 s-1", 
+            "out_name": "sbl", 
+            "type": "real", 
+            "valid_max": "0.0009936", 
+            "ok_max_mean_abs": "9.61e-05"
+        }, 
+        "cfc113global": {
+            "comment": "", 
+            "dimensions": "time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Global Mean Mole Fraction of CFC113", 
+            "standard_name": "mole_fraction_of_cfc113_in_air", 
+            "modeling_realm": "atmos atmosChem", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "1E-012", 
+            "out_name": "cfc113global", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "rsus": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "valid_min": "-0.006589", 
+            "long_name": "Surface Upwelling Shortwave Radiation", 
+            "standard_name": "surface_upwelling_shortwave_flux_in_air", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "26.22", 
+            "units": "W m-2", 
+            "out_name": "rsus", 
+            "type": "real", 
+            "valid_max": "422.2", 
+            "ok_max_mean_abs": "43.77"
+        }, 
+        "cfc12global": {
+            "comment": "", 
+            "dimensions": "time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Global Mean Mole Fraction of CFC12", 
+            "standard_name": "mole_fraction_of_cfc12_in_air", 
+            "modeling_realm": "atmos atmosChem", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "1E-012", 
+            "out_name": "cfc12global", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "rsut": {
+            "comment": "at the top of the atmosphere", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "valid_min": "-0.02689", 
+            "long_name": "TOA Outgoing Shortwave Radiation", 
+            "standard_name": "toa_outgoing_shortwave_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "96.72", 
+            "units": "W m-2", 
+            "out_name": "rsut", 
+            "type": "real", 
+            "valid_max": "421.9", 
+            "ok_max_mean_abs": "114.1"
+        }, 
+        "ci": {
+            "comment": "Fraction of time that convection occurs in the grid cell .", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Fraction of Time Convection Occurs", 
+            "standard_name": "convection_time_fraction", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "1", 
+            "out_name": "ci", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "n2oClim": {
+            "comment": "", 
+            "dimensions": "longitude latitude plevs time2", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Mole Fraction of N2O", 
+            "standard_name": "mole_fraction_of_nitrous_oxide_in_air", 
+            "modeling_realm": "atmos atmosChem", 
+            "cell_measures": "time: mean within years time: mean over years", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "0.000000001", 
+            "out_name": "n2oClim", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "co2massClim": {
+            "comment": "", 
+            "dimensions": "time2", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Total Atmospheric Mass of CO2", 
+            "standard_name": "atmosphere_mass_of_carbon_dioxide", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean within years time: mean over years", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "kg", 
+            "out_name": "co2massClim", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "cl": {
+            "comment": "Includes both large-scale and convective cloud.", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Cloud Area Fraction", 
+            "standard_name": "cloud_area_fraction_in_atmosphere_layer", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "-0.04479", 
+            "units": "%", 
+            "out_name": "cl", 
+            "type": "real", 
+            "valid_max": "105", 
+            "ok_max_mean_abs": "26.07"
+        }, 
+        "n2oglobalClim": {
+            "comment": "", 
+            "dimensions": "time2", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Global Mean Mole Fraction of N2O", 
+            "standard_name": "mole_fraction_of_nitrous_oxide_in_air", 
+            "modeling_realm": "atmos atmosChem", 
+            "cell_measures": "time: mean within years time: mean over years", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "0.000000001", 
+            "out_name": "n2oglobalClim", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "rlutcs": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "valid_min": "70.59", 
+            "long_name": "TOA Outgoing Clear-Sky Longwave Radiation", 
+            "standard_name": "toa_outgoing_longwave_flux_assuming_clear_sky", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "228.9", 
+            "units": "W m-2", 
+            "out_name": "rlutcs", 
+            "type": "real", 
+            "valid_max": "377.5", 
+            "ok_max_mean_abs": "260.4"
+        }, 
+        "href": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: href", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "hfls": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "valid_min": "-76.77", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "50.39", 
+            "units": "W m-2", 
+            "out_name": "hfls", 
+            "type": "real", 
+            "valid_max": "790.7", 
+            "ok_max_mean_abs": "73.2"
+        }, 
+        "co2mass": {
+            "comment": "", 
+            "dimensions": "time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Total Atmospheric Mass of CO2", 
+            "standard_name": "atmosphere_mass_of_carbon_dioxide", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "kg", 
+            "out_name": "co2mass", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "pr": {
+            "comment": "at surface; includes both liquid and solid phases from all types of clouds (both large-scale and convective)", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Precipitation", 
+            "standard_name": "precipitation_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "2.156e-05", 
+            "units": "kg m-2 s-1", 
+            "out_name": "pr", 
+            "type": "real", 
+            "valid_max": "0.001254", 
+            "ok_max_mean_abs": "3.215e-05"
+        }, 
+        "ps": {
+            "comment": "surface pressure, not mean sea level pressure", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "4.791e+04", 
+            "long_name": "Surface Air Pressure", 
+            "standard_name": "surface_air_pressure", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "9.165e+04", 
+            "units": "Pa", 
+            "out_name": "ps", 
+            "type": "real", 
+            "valid_max": "1.119e+05", 
+            "ok_max_mean_abs": "1.019e+05"
+        }, 
+        "rlus": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "valid_min": "43.75", 
+            "long_name": "Surface Upwelling Longwave Radiation", 
+            "standard_name": "surface_upwelling_longwave_flux_in_air", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "325.6", 
+            "units": "W m-2", 
+            "out_name": "rlus", 
+            "type": "real", 
+            "valid_max": "658", 
+            "ok_max_mean_abs": "376.3"
+        }, 
+        "z2": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: z2", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "vas": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "-18.04", 
+            "long_name": "Northward Near-Surface Wind", 
+            "standard_name": "northward_wind", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "1.065", 
+            "units": "m s-1", 
+            "out_name": "vas", 
+            "type": "real", 
+            "valid_max": "22.84", 
+            "ok_max_mean_abs": "2.678"
+        }, 
+        "wap": {
+            "comment": "commonly referred to as ''omega'', this represents the vertical component of velocity in pressure coordinates (positive down)", 
+            "dimensions": "longitude latitude plevs time", 
+            "positive": "", 
+            "valid_min": "-1.126", 
+            "long_name": "omega (=dp/dt)", 
+            "standard_name": "lagrangian_tendency_of_air_pressure", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "-0.005083", 
+            "units": "Pa s-1", 
+            "out_name": "wap", 
+            "type": "real", 
+            "valid_max": "2.319", 
+            "ok_max_mean_abs": "0.04256"
+        }, 
+        "a": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: a(k)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "zg": {
+            "comment": "", 
+            "dimensions": "longitude latitude plevs time", 
+            "positive": "", 
+            "valid_min": "-719.7", 
+            "long_name": "Geopotential Height", 
+            "standard_name": "geopotential_height", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "-113.4", 
+            "units": "m", 
+            "out_name": "zg", 
+            "type": "real", 
+            "valid_max": "3.437e+04", 
+            "ok_max_mean_abs": "3.299e+04"
+        }, 
+        "hurs": {
+            "comment": "This is the relative humidity with respect to liquid water for T> 0 C, and with respect to ice for T<0 C.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Near-Surface Relative Humidity", 
+            "standard_name": "relative_humidity", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "%", 
+            "out_name": "hurs", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "tsAdjust": {
+            "comment": "''skin'' temperature (i.e., SST for open ocean)", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Bias-Corrected Surface Temperature", 
+            "standard_name": "surface_temperature", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "K", 
+            "out_name": "tsAdjust", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "pfull": {
+            "comment": "", 
+            "dimensions": "longitude latitude alevel time2", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Pressure on Model Levels", 
+            "standard_name": "air_pressure", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean within years time: mean over years", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "Pa", 
+            "out_name": "pfull", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "ch4global": {
+            "comment": "", 
+            "dimensions": "time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Global Mean Mole Fraction of CH4", 
+            "standard_name": "mole_fraction_of_methane_in_air", 
+            "modeling_realm": "atmos atmosChem", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "0.000000001", 
+            "out_name": "ch4global", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "hur": {
+            "comment": "This is the relative humidity with respect to liquid water for T> 0 C, and with respect to ice for T<0 C.", 
+            "dimensions": "longitude latitude plevs time", 
+            "positive": "", 
+            "valid_min": "-2.642", 
+            "long_name": "Relative Humidity", 
+            "standard_name": "relative_humidity", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "-10.31", 
+            "units": "%", 
+            "out_name": "hur", 
+            "type": "real", 
+            "valid_max": "135.7", 
+            "ok_max_mean_abs": "97"
+        }, 
+        "hus": {
+            "comment": "", 
+            "dimensions": "longitude latitude plevs time", 
+            "positive": "", 
+            "valid_min": "-0.000299", 
+            "long_name": "Specific Humidity", 
+            "standard_name": "specific_humidity", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "-0.0003539", 
+            "units": "1", 
+            "out_name": "hus", 
+            "type": "real", 
+            "valid_max": "0.02841", 
+            "ok_max_mean_abs": "0.01041"
+        }, 
+        "p0": {
+            "units": "Pa", 
+            "long_name": "vertical coordinate formula term: reference pressure", 
+            "type": "", 
+            "dimensions": ""
+        }, 
+        "b": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: b(k)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "mc": {
+            "comment": "The net mass flux should represent the difference between the updraft and downdraft components.  The flux is computed as the mass divided by the area of the grid cell.", 
+            "dimensions": "longitude latitude alevhalf time", 
+            "positive": "up", 
+            "valid_min": "", 
+            "long_name": "Convective Mass Flux", 
+            "standard_name": "atmosphere_net_upward_convective_mass_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "mc", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "fco2antt": {
+            "comment": "This is requested only for the emission-driven coupled carbon climate model runs.  Does not include natural fire sources but, includes all anthropogenic sources, including fossil fuel use, cement production, agricultural burning, and sources associated with anthropogenic land use change excluding forest regrowth.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "valid_min": "", 
+            "long_name": "Carbon Mass Flux into Atmosphere Due to All Anthropogenic Emissions of CO2", 
+            "standard_name": "tendency_of_atmosphere_mass_content_of_carbon_dioxide_expressed_as_carbon_due_to_anthropogenic_emission", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg  m-2 s-1", 
+            "out_name": "fco2antt", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "ch4": {
+            "comment": "", 
+            "dimensions": "longitude latitude plevs time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Mole Fraction of CH4", 
+            "standard_name": "mole_fraction_of_methane_in_air", 
+            "modeling_realm": "atmos atmosChem", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "0.000000001", 
+            "out_name": "ch4", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "tasmin": {
+            "comment": "minimum near-surface (usually, 2 meter) air temperature (add cell_method attribute time: min)", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "182.8", 
+            "long_name": "Daily Minimum Near-Surface Air Temperature", 
+            "standard_name": "air_temperature", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: minimum within days time: mean over days", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "260.9", 
+            "units": "K", 
+            "out_name": "tasmin", 
+            "type": "real", 
+            "valid_max": "323", 
+            "ok_max_mean_abs": "290.6"
+        }, 
+        "tauu": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "down", 
+            "valid_min": "-2.729", 
+            "long_name": "Surface Downward Eastward Wind Stress", 
+            "standard_name": "surface_downward_eastward_stress", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "0.03979", 
+            "units": "Pa", 
+            "out_name": "tauu", 
+            "type": "real", 
+            "valid_max": "2.934", 
+            "ok_max_mean_abs": "0.1065"
+        }, 
+        "tasmax": {
+            "comment": "maximum near-surface (usually, 2 meter) air temperature (add cell_method attribute time: max)", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "181.9", 
+            "long_name": "Daily Maximum Near-Surface Air Temperature", 
+            "standard_name": "air_temperature", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: maximum within days time: mean over days", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "264.9", 
+            "units": "K", 
+            "out_name": "tasmax", 
+            "type": "real", 
+            "valid_max": "341.9", 
+            "ok_max_mean_abs": "294"
+        }, 
+        "pslAdjust": {
+            "comment": "not, in general, the same as surface pressure", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Bias-Corrected Sea Level Pressure", 
+            "standard_name": "air_pressure_at_sea_level", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "Pa", 
+            "out_name": "pslAdjust", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "k_c": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: k_c", 
+            "type": "integer", 
+            "dimensions": ""
+        }, 
+        "ua": {
+            "comment": "", 
+            "dimensions": "longitude latitude plevs time", 
+            "positive": "", 
+            "valid_min": "-68.65", 
+            "long_name": "Eastward Wind", 
+            "standard_name": "eastward_wind", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "1.101", 
+            "units": "m s-1", 
+            "out_name": "ua", 
+            "type": "real", 
+            "valid_max": "136.6", 
+            "ok_max_mean_abs": "22.42"
+        }, 
+        "orog": {
+            "comment": "height above the geoid; as defined here, ''the geoid'' is a surface of constant geopotential that, if the ocean were at rest, would coincide with mean sea level. Under this definition, the geoid changes as the mean volume of the ocean changes (e.g., due to glacial melt, or global warming of the ocean).  Report here the height above the present-day geoid.  Over ocean, report as 0.0", 
+            "dimensions": "longitude latitude", 
+            "positive": "", 
+            "valid_min": "-700", 
+            "long_name": "Surface Altitude", 
+            "standard_name": "surface_altitude", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "m", 
+            "out_name": "orog", 
+            "type": "real", 
+            "valid_max": "1.00E+04", 
+            "ok_max_mean_abs": ""
+        }, 
+        "va": {
+            "comment": "", 
+            "dimensions": "longitude latitude plevs time", 
+            "positive": "", 
+            "valid_min": "-71.1", 
+            "long_name": "Northward Wind", 
+            "standard_name": "northward_wind", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "0.9886", 
+            "units": "m s-1", 
+            "out_name": "va", 
+            "type": "real", 
+            "valid_max": "69.93", 
+            "ok_max_mean_abs": "4.679"
+        }, 
+        "n2o": {
+            "comment": "", 
+            "dimensions": "longitude latitude plevs time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Mole Fraction of N2O", 
+            "standard_name": "mole_fraction_of_nitrous_oxide_in_air", 
+            "modeling_realm": "atmos atmosChem", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "0.000000001", 
+            "out_name": "n2o", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "prc": {
+            "comment": "at surface; includes both liquid and solid phases.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Convective Precipitation", 
+            "standard_name": "convective_precipitation_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "-2.528e-06", 
+            "units": "kg m-2 s-1", 
+            "out_name": "prc", 
+            "type": "real", 
+            "valid_max": "0.0006323", 
+            "ok_max_mean_abs": "3.209e-05"
+        }, 
+        "tas": {
+            "deflate": "${DEFLATE_LEVEL}",
+            "shuffle": "${SHUFFLE}",
+            "deflate_level": "${DEFLATE_LEVEL}",
+            "comment": "near-surface (usually, 2 meter) air temperature", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "180.6", 
+            "long_name": "Near-Surface Air Temperature", 
+            "standard_name": "air_temperature", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "262.4", 
+            "units": "K", 
+            "out_name": "tas", 
+            "type": "real", 
+            "valid_max": "335.1", 
+            "ok_max_mean_abs": "293"
+        }, 
+        "rsuscs": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "valid_min": "-0.01446", 
+            "long_name": "Surface Upwelling Clear-Sky Shortwave Radiation", 
+            "standard_name": "surface_upwelling_shortwave_flux_in_air_assuming_clear_sky", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "31.65", 
+            "units": "W m-2", 
+            "out_name": "rsuscs", 
+            "type": "real", 
+            "valid_max": "462.2", 
+            "ok_max_mean_abs": "61.59"
+        }, 
+        "uas": {
+            "comment": "near-surface (usually, 10 meters) eastward component of wind.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "-19.01", 
+            "long_name": "Eastward Near-Surface Wind", 
+            "standard_name": "eastward_wind", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "1.668", 
+            "units": "m s-1", 
+            "out_name": "uas", 
+            "type": "real", 
+            "valid_max": "18.68", 
+            "ok_max_mean_abs": "4.106"
+        }, 
+        "hfss": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "valid_min": "-264.5", 
+            "long_name": "Surface Upward Sensible Heat Flux", 
+            "standard_name": "surface_upward_sensible_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "10.7", 
+            "units": "W m-2", 
+            "out_name": "hfss", 
+            "type": "real", 
+            "valid_max": "844.8", 
+            "ok_max_mean_abs": "34.84"
+        }, 
+        "ap_bnds": {
+            "units": "Pa", 
+            "long_name": "vertical coordinate formula term: ap(k+1/2)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "ap": {
+            "units": "Pa", 
+            "long_name": "vertical coordinate formula term: ap(k)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "prw": {
+            "comment": "vertically integrated through the atmospheric column", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "-0.0006775", 
+            "long_name": "Water Vapor Path", 
+            "standard_name": "atmosphere_water_vapor_content", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "12.75", 
+            "units": "kg m-2", 
+            "out_name": "prw", 
+            "type": "real", 
+            "valid_max": "78.04", 
+            "ok_max_mean_abs": "23.09"
+        }, 
+        "prsn": {
+            "comment": "at surface; includes precipitation of all forms of water in the solid phase", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Snowfall Flux", 
+            "standard_name": "snowfall_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "1.449e-06", 
+            "units": "kg m-2 s-1", 
+            "out_name": "prsn", 
+            "type": "real", 
+            "valid_max": "0.0002987", 
+            "ok_max_mean_abs": "6.11e-06"
+        }, 
+        "zlev": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: zlev(k)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "fco2nat": {
+            "comment": "This is what the atmosphere sees (on its own grid).  This field should be equivalent to the combined natural fluxes of carbon (requested in the L_mon and O_mon tables) that account for natural exchanges between the atmosphere and land or ocean reservoirs (i.e., ''net ecosystem biospheric productivity'', for land, and ''air to sea CO2 flux'', for ocean.)", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "valid_min": "", 
+            "long_name": "Surface Carbon Mass Flux into the Atmosphere Due to Natural Sources", 
+            "standard_name": "surface_upward_mass_flux_of_carbon_dioxide_expressed_as_carbon_due_to_emission_from_natural_sources", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "fco2nat", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "b_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: b(k+1/2)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "phalf": {
+            "comment": "", 
+            "dimensions": "longitude latitude alevhalf time2", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Pressure on Model Half-Levels", 
+            "standard_name": "air_pressure", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean within years time: mean over years", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "Pa", 
+            "out_name": "phalf", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "tasAdjust": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Bias-Corrected Near-Surface Air Temperature", 
+            "standard_name": "air_temperature", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "K", 
+            "out_name": "tasAdjust", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "fco2fos": {
+            "comment": "This is the prescribed anthropogenic CO2 flux from fossil fuel use, including cement production, and flaring (but not from land-use changes, agricultural burning, forest regrowth, etc.)", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "valid_min": "", 
+            "long_name": "Carbon Mass Flux into Atmosphere Due to Fossil Fuel Emissions of CO2", 
+            "standard_name": "tendency_of_atmosphere_mass_content_of_carbon_dioxide_expressed_as_carbon_due_to_emission_from_fossil_fuel_combustion", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "fco2fos", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "hcfc22global": {
+            "comment": "", 
+            "dimensions": "time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Global Mean Mole Fraction of HCFC22", 
+            "standard_name": "mole_fraction_of_hcfc22_in_air", 
+            "modeling_realm": "atmos atmosChem", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "1E-012", 
+            "out_name": "hcfc22global", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "tro3Clim": {
+            "comment": "", 
+            "dimensions": "longitude latitude plevs time2", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Mole Fraction of O3", 
+            "standard_name": "mole_fraction_of_ozone_in_air", 
+            "modeling_realm": "atmos atmosChem", 
+            "cell_measures": "time: mean within years time: mean over years", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "0.000000001", 
+            "out_name": "tro3Clim", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "zlev_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: zlev(k+1/2)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "clivi": {
+            "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", 
+            "positive": "", 
+            "valid_min": "-1.872e-06", 
+            "long_name": "Ice Water Path", 
+            "standard_name": "atmosphere_mass_content_of_cloud_ice", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "-0.0348", 
+            "units": "kg m-2", 
+            "out_name": "clivi", 
+            "type": "real", 
+            "valid_max": "1.535", 
+            "ok_max_mean_abs": "0.1187"
+        }, 
+        "prAdjust": {
+            "comment": "at surface; includes both liquid and solid phases from all types of clouds (both large-scale and convective)", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Bias-Corrected Precipitation", 
+            "standard_name": "precipitation_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "prAdjust", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "cct": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Air Pressure at Convective Cloud Top", 
+            "standard_name": "air_pressure_at_convective_cloud_top", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "Pa", 
+            "out_name": "cct", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "sigma": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: sigma(k)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "ccb": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Air Pressure at Convective Cloud Base", 
+            "standard_name": "air_pressure_at_convective_cloud_base", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "Pa", 
+            "out_name": "ccb", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }
+    }
+}
diff --git a/Test/test1.f90 b/Test/test1.f90
index a8483c7..1907fd4 100644
--- a/Test/test1.f90
+++ b/Test/test1.f90
@@ -198,7 +198,7 @@ PROGRAM mip_contribution
   !    files should not be overwritten, and instruct CMOR to error exit on 
   !    encountering errors of any severity.
   
-  error_flag = cmor_setup(inpath='Test',   &
+  error_flag = cmor_setup(inpath='Tables',   &
        netcdf_file_action='replace',                                       &
        set_verbosity=1,                                                    &
        exit_control=1)
@@ -209,27 +209,7 @@ PROGRAM mip_contribution
   !   all CF-netCDF files written as part of this dataset.
 
   print*, 'calling cmor_dataset'
-  error_flag = cmor_dataset(                                   &
-       outpath='Test',         &
-       experiment_id='abrupt 4XCO2',           &
-       institution=                                            &
-       'GICC (Generic International Climate Center, ' //       &
-       ' Geneva, Switzerland)',                                &
-       source='GICCM1  2002(giccm_0_brnchT_itea_2, T63L32)',    &
-       calendar='360_day',                                      &
-       realization=1,                                          &
-       history='Output from archive/giccm_03_std_2xCO2_2256.', &
-       comment='Equilibrium reached after 30-year spin-up ' // &
-       'after which data were output starting with nominal '// &
-       'date of January 2030',                                 &
-       references='Model described by Koder and Tolkien ' //   &
-       '(J. Geophys. Res., 2001, 576-591).  Also ' //          &
-       'see http://www.GICC.su/giccm/doc/index.html '  //      &
-       ' 2XCO2 simulation described in Dorkey et al. '//       &
-       '(Clim. Dyn., 2003, 323-357.)',model_id="GICCM1", &
-       forcing="Nat",contact="Barry Bonds",institute_id="PCMDI",&
-       parent_experiment_rip="N/A",parent_experiment_id="N/A",branch_time=bt)
-  
+  error_flag = cmor_dataset_json("Test/test1.json")
   print*, 'returned from cmor_dataset'
 
   !  Define axes for 3-d fields
@@ -237,42 +217,42 @@ PROGRAM mip_contribution
   print*, 'defining 3-d axes'
   
   axis2d_ids2(1) = cmor_axis(  &
-       table='Tables/CMIP5_Lmon',    &
+       table='CMIP6_Lmon.json',    &
        table_entry='latitude',       &
        units='degrees_north',        &  
        length=lat,                   &
        coord_vals=alats,             & 
        cell_bounds=bnds_lat)              
   axis2d_ids2(2) = cmor_axis(  &
-       table='Tables/CMIP5_Lmon',    &
+       table='CMIP6_Lmon.json',    &
        table_entry='longitude',      &
        length=lon,                   &
        units='degrees_east',         &
        coord_vals=alons,             &
        cell_bounds=bnds_lon)              
   axis2d_ids2(3) = cmor_axis(  &
-       table='Tables/CMIP5_Lmon',    &
+       table='CMIP6_Lmon.json',    &
        table_entry='time',           &
        units='days since 1979-1-1',  &
        length=ntimes,                &
        interval='1 month')
   axis3d_ids(3) = cmor_axis(  &
-       table='Tables/CMIP5_Amon',    &
+       table='CMIP6_Amon.json',    &
        table_entry='latitude',       &
        units='degrees_north',        &  
        length=lat,                   &
        coord_vals=alats,             & 
        cell_bounds=bnds_lat)              
   axis3d_ids(2) = cmor_axis(  &
-       table='Tables/CMIP5_Amon',    &
+       table='CMIP6_Amon.json',    &
        table_entry='longitude',      &
        length=lon,                   &
        units='degrees_east',         &
        coord_vals=alons,             &
        cell_bounds=bnds_lon)              
   axis3d_ids(1) = cmor_axis(  &
-       table='Tables/CMIP5_Amon',    &
-       table_entry='plevs',       &
+       table='CMIP6_Amon.json',    &
+       table_entry='plev17',       &
        units='Pa',                   &
        length=lev,                   &
        coord_vals=plevs)
@@ -281,7 +261,7 @@ PROGRAM mip_contribution
   !   cmor_write (below).
 print*, 'before time '
   axis3d_ids(4) = cmor_axis(  &
-       table='Tables/CMIP5_Amon',    &
+       table='CMIP6_Amon.json',    &
        table_entry='time',           &
        units='days since 1979-1-1',  &
        length=ntimes,                &
@@ -303,7 +283,7 @@ print*, 'finished defining 2-d axes'
   
   DO m=1,n3d
      var3d_ids(m) = cmor_variable(    &   
-          table='Tables/CMIP5_Amon',  &
+          table='CMIP6_Amon.json',  &
           table_entry=entry3d(m),     &
 !!$          file_suffix='1979-2001',    &
           units=units3d(m),           &
@@ -320,7 +300,7 @@ print*, 'finished defining 2-d axes'
      if (m.eq.3) then
         print*, 'ok our axes are: ',axis2d_ids2
         var2d_ids(m) = cmor_variable(    &
-             table='Tables/CMIP5_Lmon',  & 
+             table='CMIP6_Lmon.json',  & 
              table_entry=entry2d(m),     & 
 !!$          file_suffix='1979-2001',    &
              units=units2d(m),           & 
@@ -330,7 +310,7 @@ print*, 'finished defining 2-d axes'
              original_name=varin2d(m))  
      else 
         var2d_ids(m) = cmor_variable(    &
-             table='Tables/CMIP5_Amon',  & 
+             table='CMIP6_Amon.json',  & 
              table_entry=entry2d(m),     & 
 !!$          file_suffix='1979-2001',    &
              units=units2d(m),           & 
diff --git a/Test/test1.json b/Test/test1.json
new file mode 100644
index 0000000..c618eb2
--- /dev/null
+++ b/Test/test1.json
@@ -0,0 +1,62 @@
+{
+           "_control_vocabulary_file": "CMIP6_CV.json",
+           "_cmip6_option":           "CMIP6",
+
+    "activity_id":                  "CMIP",
+    "outpath":                      "CMIP6",
+    "experiment_id":                "piControl",
+    "calendar":                     "360_day",
+    "realization_index":            "1",
+    "initialization_index":         "1",
+    "physics_index":                "1",
+    "forcing_index":                "1",
+     "source_type":                      "AOGCM",
+     "sub_experiment":                      "none",
+     "sub_experiment_id":                      "none",
+     "parent_sub_experiment_id":                      "N/A",
+     "parent_mip_era":                      "N/A",
+     "mip_era":                      "CMIP6",
+    "contact ":                     "Python Coder (python at a.b.com) ",
+    "institution_id":                 "PCMDI",
+    "model_id":                     "GICCM1",
+    "history":                      "output from archivcl_A1.nce/giccm_03_std_2xCO2_2256.",
+    "comment":                      "equilibrium reached after 30-year spin-up ",
+    "references":                   "model described by Koder and Tolkien ",
+    "model_id":                     "pcmdi-10a", 
+    "parent_experiment_rip":        "r1i3p2",
+    "parent_experiment_id":         "lgm",
+    "parent_variant_label":            "r1i3p2",
+    "branch_time":                  "0",
+
+
+    "parent_activity_id":           "CMIP",
+    "parent_source_id":             "GFDL-CM2-1",
+    "parent_variant_label":            "r1i1p1f3",
+
+    "branch_method":                "standard",
+    "branch_time_in_child":         "00D0",
+    "branch_time_in_parent":        "3650.0D0",
+    "branch_time_units_in_parent":  "days since 1000-1-1",
+
+    "further_info_url":             "http://furtherinfo.es-doc.org/<mip_era><institution_id><source_id><experiment_id><sub_experiment_id><variant_label>",
+    "grid":                         "native atmosphere T63 gaussian grid (64x128 latxlon)",
+    "grid_label":                  "gn",
+    "grid_resolution":              "5 km",
+
+    "institution_id":               "CSIRO-BOM",
+    "institution":                  "Commonwealth Scientific and Industrial Research Organisation, Australia, and Bureau of Meteorology, Australia",
+
+    "references":                   "Model described by Koder and Tolkien (J. Geophys. Res.,2001, 576 - 591).  Also see http://www.GICC.su/giccm/doc/index.html  2XCO2 simulation described in Dorkey et al. '(Clim. Dyn., 2003, 323 - 357.)",
+    "run_variant":                  "forcing: black carbon aerosol only",
+    "source_id":                    "NICAM",
+    "source":                       "NICAM:",
+    "output_path_template":         "<activity_id><institution_id><source_id><experiment_id><variant_label><table><variable_id><grid_label><version>",
+    "output_file_template":         "<variable_id><table><experiment_id><source_id><variant_label><grid_label>",
+
+    "license":                      "One of 2 licenses: ----- CMIP6 model data produced by <Your CentreName> is licensed under a Creative Commons Attribution 'NonCommercial Share Alike' 4.0 International License (http://creativecommons.org/licenses/by/4.0/). Use of the data should be acknowledged following guidelines found at <what URL???> The data is hosted via the Earth System Grid Federation. Permissions beyond the scope of this license may be available at http://pcmdi.org/cmip5/terms [...]
+
+
+}
+
+
+
diff --git a/Test/test2.f90 b/Test/test2.f90
index 9ca8642..a85ad29 100644
--- a/Test/test2.f90
+++ b/Test/test2.f90
@@ -211,27 +211,7 @@ PROGRAM mip_contribution
   !   all CF-netCDF files written as part of this dataset.
 
   print*, 'calling cmor_dataset'
-  error_flag = cmor_dataset(                                   &
-       outpath='Test',                                         &
-       experiment_id='abrupt 4XCO2',                           &
-       institution=                                            &
-       'GICC (Generic International Climate Center, ' //       &
-       ' Geneva, Switzerland)',                                &
-       source='GICCM1  2002(giccm_0_brnchT_itea_2, T63L32)',    &
-       calendar='360_day',                                     &
-       realization=1,                                          &
-       history='Output from archive/giccm_03_std_2xCO2_2256.', &
-       comment='Equilibrium reached after 30-year spin-up ' // &
-       'after which data were output starting with nominal '// &
-       'date of January 2030',                                 &
-       references='Model described by Koder and Tolkien ' //   &
-       '(J. Geophys. Res., 2001, 576-591).  Also ' //          &
-       'see http://www.GICC.su/giccm/doc/index.html '  //      &
-       ' 2XCO2 simulation described in Dorkey et al. '//       &
-       '(Clim. Dyn., 2003, 323-357.)' ,                        &
-       model_id="GICCM1",forcing="SO",contact="Barry Bonds",&
-       parent_experiment_rip="N/A",parent_experiment_id="N/A",branch_time=bt,institute_id="PCMDI")
-  
+  error_flag = cmor_dataset_json("Test/test2.json");
   print*, 'returned from cmor_dataset'
 
   !  Define axes for 3-d fields
@@ -239,21 +219,21 @@ PROGRAM mip_contribution
   print*, 'defining 3-d axes'
   
   axis2d_ids2(1) = cmor_axis(  &
-       table='Tables/CMIP5_Lmon',    &
+       table='Tables/CMIP6_Lmon.json',    &
        table_entry='latitude',       &
        units='degrees_north',        &  
        length=lat,                   &
        coord_vals=alats,             & 
        cell_bounds=bnds_lat)              
   axis2d_ids2(2) = cmor_axis(  &
-       table='Tables/CMIP5_Lmon',    &
+       table='Tables/CMIP6_Lmon.json',    &
        table_entry='longitude',      &
        length=lon,                   &
        units='degrees_east',         &
        coord_vals=alons,             &
        cell_bounds=bnds_lon)              
   axis3d_ids(3) = cmor_axis(  &
-       table='Tables/CMIP5_Amon',    &
+       table='Tables/CMIP6_Amon.json',    &
        table_entry='latitude',       &
        units='degrees_north',        &  
        length=lat,                   &
@@ -262,15 +242,15 @@ PROGRAM mip_contribution
   print*, 'alons:',alons         
   print*, 'blons:',bnds_lon         
   axis3d_ids(2) = cmor_axis(  &
-       table='Tables/CMIP5_Amon',    &
+       table='Tables/CMIP6_Amon.json',    &
        table_entry='longitude',      &
        length=lon,                   &
        units='degrees_east',         &
        coord_vals=alons,             &
        cell_bounds=bnds_lon)              
   axis3d_ids(1) = cmor_axis(  &
-       table='Tables/CMIP5_Amon',    &
-       table_entry='plevs',       &
+       table='Tables/CMIP6_Amon.json',    &
+       table_entry='plev17',       &
        units='Pa',                   &
        length=lev,                   &
        coord_vals=plevs)
@@ -279,13 +259,13 @@ PROGRAM mip_contribution
   !   cmor_write (below).
 print*, 'before time '
   axis2d_ids2(3) = cmor_axis(  &
-       table='Tables/CMIP5_Lmon',    &
+       table='Tables/CMIP6_Lmon.json',    &
        table_entry='time',           &
        units='days since 1979-1-1',  &
        length=ntimes,                &
        interval='1 month')
   axis3d_ids(4) = cmor_axis(  &
-       table='Tables/CMIP5_Amon',    &
+       table='Tables/CMIP6_Amon.json',    &
        table_entry='time',           &
        units='days since 1979-1-1',  &
        length=ntimes,                &
@@ -307,7 +287,7 @@ print*, 'finished defining 2-d axes'
   
   DO m=1,n3d
      var3d_ids(m) = cmor_variable(    &   
-          table='Tables/CMIP5_Amon',  &
+          table='Tables/CMIP6_Amon.json',  &
           table_entry=entry3d(m),     &
           units=units3d(m),           &
           axis_ids=axis3d_ids,        &
@@ -322,7 +302,7 @@ print*, 'finished defining 2-d axes'
   DO m=1,n2d
      if (m.eq.3) then
         var2d_ids(m) = cmor_variable(    &
-             table='Tables/CMIP5_Lmon',  & 
+             table='Tables/CMIP6_Lmon.json',  & 
              table_entry=entry2d(m),     & 
 !!$          file_suffix='1979-2001',    &
              units=units2d(m),           & 
@@ -332,7 +312,7 @@ print*, 'finished defining 2-d axes'
              original_name=varin2d(m))  
      else 
      var2d_ids(m) = cmor_variable(    &
-          table='Tables/CMIP5_Amon',  & 
+          table='Tables/CMIP6_Amon.json',  & 
           table_entry=entry2d(m),     & 
           units=units2d(m),           & 
           axis_ids=axis2d_ids,        &
diff --git a/Test/test2.json b/Test/test2.json
new file mode 100644
index 0000000..872a46c
--- /dev/null
+++ b/Test/test2.json
@@ -0,0 +1,62 @@
+{
+           "_control_vocabulary_file": "CMIP6_CV.json",
+           "_cmip6_option":           "CMIP6",
+
+    "activity_id":                  "CMIP",
+    "outpath":                      "CMIP6",
+    "experiment_id":                "piControl",
+    "calendar":                     "360_day",
+    "realization_index":            "1",
+    "initialization_index":         "1",
+    "physics_index":                "1",
+    "forcing_index":                "1",
+    "source_type":                  "AOGCM",
+    "sub_experiment":               "none",
+    "sub_experiment_id":            "none",
+    "parent_sub_experiment_id":     "N/A",
+    "parent_mip_era":               "N/A",
+    "mip_era":                      "CMIP6",
+    "contact ":                     "Python Coder (python at a.b.com) ",
+    "institution_id":               "PCMDI",
+    "model_id":                     "GICCM1",
+    "history":                      "output from archivcl_A1.nce/giccm_03_std_2xCO2_2256.",
+    "comment":                      "equilibrium reached after 30-year spin-up ",
+    "references":                   "model described by Koder and Tolkien ",
+    "model_id":                     "pcmdi-10a", 
+    "parent_experiment_rip":        "r1i3p2",
+    "parent_experiment_id":         "lgm",
+    "parent_variant_label":            "r1i3p2",
+    "branch_time":                  "0",
+
+
+    "parent_activity_id":           "CMIP",
+    "parent_source_id":             "GFDL-CM2-1",
+    "parent_variant_label":            "r1i1p1f3",
+
+    "branch_method":                "standard",
+    "branch_time_in_child":         "00D0",
+    "branch_time_in_parent":        "3650.0D0",
+    "branch_time_units_in_parent":  "days since 1000-1-1",
+
+    "further_info_url":             "http://furtherinfo.es-doc.org/<mip_era><institution_id><source_id><experiment_id><sub_experiment_id><variant_label>",
+    "grid":                         "native atmosphere T63 gaussian grid (64x128 latxlon)",
+    "grid_label":                   "gn",
+    "grid_resolution":              "5 km",
+
+    "institution_id":               "CSIRO-BOM",
+    "institution":                  "Commonwealth Scientific and Industrial Research Organisation, Australia, and Bureau of Meteorology, Australia",
+
+    "references":                   "Model described by Koder and Tolkien (J. Geophys. Res.,2001, 576 - 591).  Also see http://www.GICC.su/giccm/doc/index.html  2XCO2 simulation described in Dorkey et al. '(Clim. Dyn., 2003, 323 - 357.)",
+    "run_variant":                  "forcing: black carbon aerosol only",
+    "source_id":                    "NICAM",
+    "source":                       "NICAM:",
+    "output_path_template":         "<activity_id><institution_id><source_id><experiment_id><variant_label><table><variable_id><grid_label><version>",
+    "output_file_template":         "<variable_id><table><experiment_id><source_id><variant_label><grid_label>",
+
+    "license":                      "One of 2 licenses: ----- CMIP6 model data produced by <Your CentreName> is licensed under a Creative Commons Attribution 'NonCommercial Share Alike' 4.0 International License (http://creativecommons.org/licenses/by/4.0/). Use of the data should be acknowledged following guidelines found at <what URL???> The data is hosted via the Earth System Grid Federation. Permissions beyond the scope of this license may be available at http://pcmdi.org/cmip5/terms [...]
+
+
+}
+
+
+
diff --git a/Test/test3.f90 b/Test/test3.f90
index da575cf..ba2c054 100644
--- a/Test/test3.f90
+++ b/Test/test3.f90
@@ -213,26 +213,28 @@ PROGRAM mip_contribution
   !   all CF-netCDF files written as part of this dataset.
 
   print*, 'calling cmor_dataset'
-  error_flag = cmor_dataset(                                   &
-       outpath='Test',         &
-       experiment_id='abrupt 4XCO2',           &
-       institution=                                            &
-       'GICC (Generic International Climate Center, ' //       &
-       ' Geneva, Switzerland)',                                &
-       source='GICCM1  2002(giccm_0_brnchT_itea_2, T63L32)',    &
-       calendar='360_day',                                      &
-       realization=1,                                          &
-       history='Output from archive/giccm_03_std_2xCO2_2256.', &
-       comment='Equilibrium reached after 30-year spin-up ' // &
-       'after which data were output starting with nominal '// &
-       'date of January 2030',                                 &
-       references='Model described by Koder and Tolkien ' //   &
-       '(J. Geophys. Res., 2001, 576-591).  Also ' //          &
-       'see http://www.GICC.su/giccm/doc/index.html '  //      &
-       ' 2XCO2 simulation described in Dorkey et al. '//       &
-       '(Clim. Dyn., 2003, 323-357.)' , &
-       model_id="GICCM1",forcing='TO',contact="Barry Bonds",&
-       parent_experiment_rip="N/A",parent_experiment_id="N/A",branch_time=bt,institute_id="PCMDI");
+  error_flag = cmor_dataset_json("Test/test2.json");
+
+!  error_flag = cmor_dataset(                                   &
+!       outpath='Test',         &
+!       experiment_id='abrupt 4XCO2',           &
+!       institution=                                            &
+!       'GICC (Generic International Climate Center, ' //       &
+!       ' Geneva, Switzerland)',                                &
+!       source='GICCM1  2002(giccm_0_brnchT_itea_2, T63L32)',    &
+!       calendar='360_day',                                      &
+!       realization=1,                                          &
+!       history='Output from archive/giccm_03_std_2xCO2_2256.', &
+!       comment='Equilibrium reached after 30-year spin-up ' // &
+!       'after which data were output starting with nominal '// &
+!       'date of January 2030',                                 &
+!       references='Model described by Koder and Tolkien ' //   &
+!       '(J. Geophys. Res., 2001, 576-591).  Also ' //          &
+!       'see http://www.GICC.su/giccm/doc/index.html '  //      &
+!       ' 2XCO2 simulation described in Dorkey et al. '//       &
+!       '(Clim. Dyn., 2003, 323-357.)' , &
+!       model_id="GICCM1",forcing='TO',contact="Barry Bonds",&
+!       parent_experiment_rip="N/A",parent_experiment_id="N/A",branch_time=bt,institute_id="PCMDI");
   
   print*, 'returned from cmor_dataset'
 
@@ -241,42 +243,42 @@ PROGRAM mip_contribution
   print*, 'defining 3-d axes'
   
   axis2d_ids2(1) = cmor_axis(  &
-       table='Tables/CMIP5_Lmon',    &
+       table='Tables/CMIP6_Lmon.json',    &
        table_entry='latitude',       &
        units='degrees_north',        &  
        length=lat,                   &
        coord_vals=alats,             & 
        cell_bounds=bnds_lat)              
   axis2d_ids2(2) = cmor_axis(  &
-       table='Tables/CMIP5_Lmon',    &
+       table='Tables/CMIP6_Lmon.json',    &
        table_entry='longitude',      &
        length=lon,                   &
        units='degrees_east',         &
        coord_vals=alons,             &
        cell_bounds=bnds_lon)              
   axis2d_ids2(3) = cmor_axis(  &
-       table='Tables/CMIP5_Lmon',    &
+       table='Tables/CMIP6_Lmon.json',    &
        table_entry='time',           &
        units='days since 1979-1-1',  &
        length=ntimes,                &
        interval='1 month')
   axis3d_ids(3) = cmor_axis(  &
-       table='Tables/CMIP5_Amon',    &
+       table='Tables/CMIP6_Amon.json',    &
        table_entry='latitude',       &
        units='degrees_north',        &  
        length=lat,                   &
        coord_vals=alats,             & 
        cell_bounds=bnds_lat)              
   axis3d_ids(2) = cmor_axis(  &
-       table='Tables/CMIP5_Amon',    &
+       table='Tables/CMIP6_Amon.json',    &
        table_entry='longitude',      &
        length=lon,                   &
        units='degrees_east',         &
        coord_vals=alons,             &
        cell_bounds=bnds_lon)           
   axis3d_ids(1) = cmor_axis(  &
-       table='Tables/CMIP5_Amon',    &
-       table_entry='plevs',       &
+       table='Tables/CMIP6_Amon.json',    &
+       table_entry='plev17',       &
        units='Pa',                   &
        length=lev,                   &
        coord_vals=plevs)
@@ -285,7 +287,7 @@ PROGRAM mip_contribution
   !   cmor_write (below).
 print*, 'before time '
   axis3d_ids(4) = cmor_axis(  &
-       table='Tables/CMIP5_Amon',    &
+       table='Tables/CMIP6_Amon.json',    &
        table_entry='time',           &
        units='days since 1979-1-1',  &
        length=ntimes,                &
@@ -307,7 +309,7 @@ print*, 'finished defining 2-d axes'
   
   DO m=1,n3d
      var3d_ids(m) = cmor_variable(    &   
-          table='Tables/CMIP5_Amon',  &
+          table='Tables/CMIP6_Amon.json',  &
           table_entry=entry3d(m),     &
           units=units3d(m),           &
           axis_ids=axis3d_ids,        &
@@ -322,7 +324,7 @@ print*, 'finished defining 2-d axes'
   DO m=1,n2d
      if (m.eq.3) then
         var2d_ids(m) = cmor_variable(    &
-             table='Tables/CMIP5_Lmon',  & 
+             table='Tables/CMIP6_Lmon.json',  & 
              table_entry=entry2d(m),     & 
 !!$          file_suffix='1979-2001',    &
              units=units2d(m),           & 
@@ -332,7 +334,7 @@ print*, 'finished defining 2-d axes'
              original_name=varin2d(m))  
      else 
      var2d_ids(m) = cmor_variable(    &
-          table='Tables/CMIP5_Amon',  & 
+          table='Tables/CMIP6_Amon.json',  & 
           table_entry=entry2d(m),     & 
           units=units2d(m),           & 
           axis_ids=axis2d_ids,        &
diff --git a/Test/test4.f90 b/Test/test4.f90
index 70aedb4..442e243 100644
--- a/Test/test4.f90
+++ b/Test/test4.f90
@@ -159,7 +159,7 @@ PROGRAM mip_contribution
   DOUBLE PRECISION, DIMENSION(lat) :: alats
   DOUBLE PRECISION, DIMENSION(lon) :: alons
   DOUBLE PRECISION, DIMENSION(lev) :: plevs
-  DOUBLE PRECISION, DIMENSION(lev*lon*lat) :: mydata
+  REAL, DIMENSION(lev*lon*lat) :: mydata
   DOUBLE PRECISION :: time,bt
   DOUBLE PRECISION, DIMENSION(2):: bnds_time
   DOUBLE PRECISION, DIMENSION(2,lat) :: bnds_lat
@@ -217,26 +217,7 @@ PROGRAM mip_contribution
   !   all CF-netCDF files written as part of this dataset.
 
   print*, 'calling cmor_dataset'
-  error_flag = cmor_dataset(                                   &
-       outpath='Test',         &
-       experiment_id='abrupt 4XCO2',           &
-       institution=                                            &
-       'GICC (Generic International Climate Center, ' //       &
-       'Geneva, Switzerland)',                                 &
-       source='GICCM1  2002(giccm_0_brnchT_itea_2, T63L32)',    &
-       calendar='360_day',                                      &
-       realization=1,                                          &
-       history='Output from archive/giccm_03_std_2xCO2_2256.', &
-       comment='Equilibrium reached after 30-year spin-up ' // &
-       'after which data were output starting with nominal '// &
-       'date of January 2030',                                 &
-       references='Model described by Koder and Tolkien ' //   &
-       '(J. Geophys. Res., 2001, 576-591).  Also ' //          &
-       'see http://www.GICC.su/giccm/doc/index.html '  //      &
-       ' 2XCO2 simulation described in Dorkey et al. '//       &
-       '(Clim. Dyn., 2003, 323-357.)' , model_id="GICCM1", &
-       forcing = 'TO',contact="Barry Bonds",&
-       parent_experiment_rip="N/A",parent_experiment_id="N/A",branch_time=bt,institute_id="PCMDI")
+  error_flag = cmor_dataset_json("Test/test2.json")
   
   print*, 'returned from cmor_dataset'
 
@@ -245,42 +226,42 @@ PROGRAM mip_contribution
   print*, 'defining 3-d axes'
   
   axis2d_ids2(1) = cmor_axis(  &
-       table='Tables/CMIP5_Lmon',    &
+       table='Tables/CMIP6_Lmon.json',    &
        table_entry='latitude',       &
        units='degrees_north',        &  
        length=lat,                   &
        coord_vals=alats,             & 
        cell_bounds=bnds_lat)              
   axis2d_ids2(2) = cmor_axis(  &
-       table='Tables/CMIP5_Lmon',    &
+       table='Tables/CMIP6_Lmon.json',    &
        table_entry='longitude',      &
        length=lon,                   &
        units='degrees_east',         &
        coord_vals=alons,             &
        cell_bounds=bnds_lon)              
   axis2d_ids2(3) = cmor_axis(  &
-       table='Tables/CMIP5_Lmon',    &
+       table='Tables/CMIP6_Lmon.json',    &
        table_entry='time',           &
        units='days since 1979-1-1',  &
        length=ntimes,                &
        interval='1 month')
   axis3d_ids(2) = cmor_axis(  &
-       table='Tables/CMIP5_Amon',    &
+       table='Tables/CMIP6_Amon.json',    &
        table_entry='latitude',       &
        units='degrees_north',        &  
        length=lat,                   &
        coord_vals=alats,             & 
        cell_bounds=bnds_lat)              
   axis3d_ids(1) = cmor_axis(  &
-       table='Tables/CMIP5_Amon',    &
+       table='Tables/CMIP6_Amon.json',    &
        table_entry='longitude',      &
        length=lon,                   &
        units='degrees_east',         &
        coord_vals=alons,             &
        cell_bounds=bnds_lon)              
   axis3d_ids(3) = cmor_axis(  &
-       table='Tables/CMIP5_Amon',    &
-       table_entry='plevs',       &
+       table='Tables/CMIP6_Amon.json',    &
+       table_entry='plev17',       &
        units='Pa',                   &
        length=lev,                   &
        coord_vals=plevs)
@@ -289,7 +270,7 @@ PROGRAM mip_contribution
   !   cmor_write (below).
 print*, 'before time '
   axis3d_ids(4) = cmor_axis(  &
-       table='Tables/CMIP5_Amon',    &
+       table='Tables/CMIP6_Amon.json',    &
        table_entry='time',           &
        units='days since 1979-1-1',  &
        length=ntimes,                &
@@ -311,7 +292,7 @@ print*, 'finished defining 2-d axes'
   
   DO m=1,n3d
      var3d_ids(m) = cmor_variable(    &   
-          table='Tables/CMIP5_Amon',  &
+          table='Tables/CMIP6_Amon.json',  &
           table_entry=entry3d(m),     &
           units=units3d(m),           &
           axis_ids=axis3d_ids,        &
@@ -327,7 +308,7 @@ print*, 'finished defining 2-d axes'
   DO m=1,n2d
      if (m.eq.3) then
         var2d_ids(m) = cmor_variable(    &
-             table='Tables/CMIP5_Lmon',  & 
+             table='Tables/CMIP6_Lmon.json',  & 
              table_entry=entry2d(m),     & 
 !!$          file_suffix='1979-2001',    &
              units=units2d(m),           & 
@@ -337,7 +318,7 @@ print*, 'finished defining 2-d axes'
              original_name=varin2d(m))  
      else 
         var2d_ids(m) = cmor_variable(    &
-             table='Tables/CMIP5_Amon',  & 
+             table='Tables/CMIP6_Amon.json',  & 
              table_entry=entry2d(m),     & 
              units=units2d(m),           & 
              axis_ids=axis2d_ids,        &
@@ -388,8 +369,8 @@ print*, 'completed everything up to writing output fields '
        
         ! append a single time sample of data for a single field to 
         ! the appropriate netCDF file.
-        call cmor_create_output_path(var3d_ids(m),outputpath)
-        print*, 'Test Code: we are dumping this varialbe ',var3d_ids(m),'to:',outputpath
+        !call cmor_create_output_path(var3d_ids(m),outputpath)
+        !print*, 'Test Code: we are dumping this varialbe ',var3d_ids(m),'to:',outputpath
         mydata = RESHAPE(data3d, (/ lat*lon*lev /))
         if (m.eq.2) then
            do i=1,lat*lon*lev
@@ -431,8 +412,8 @@ print*, '    error flag = ', error_flag
 
         ! append a single time sample of data for a single field to 
         ! the appropriate netCDF file.
-        call cmor_create_output_path(var2d_ids(m),outputpath)
-        print*, 'Test Code: we are dumping this varialbe ',var2d_ids(m),'to:',outputpath
+        !call cmor_create_output_path(var2d_ids(m),outputpath)
+        !print*, 'Test Code: we are dumping this varialbe ',var2d_ids(m),'to:',outputpath
 
         error_flag = cmor_write(var_id =        var2d_ids(m),   &
                                 data =          RESHAPE(data2d, (/ lat*lon /)),        &
diff --git a/Test/test_3h.f90 b/Test/test_3h.f90
index 732883b..e6a1066 100644
--- a/Test/test_3h.f90
+++ b/Test/test_3h.f90
@@ -213,34 +213,12 @@ PROGRAM ipcc_test_code
   !   experiment conditions, and provide information to be included as 
   !   attributes in all CF-netCDF files written as part of this dataset.
 
-  error_flag = cmor_dataset(                                   &
-       outpath='Test',                                         &
-       experiment_id='abrupt 4XCO2',           &
-       institution=                                            &
-       'GICC (Generic International Climate Center, ' //       &
-       'Geneva, Switzerland)',                                 &
-       source='GICCM1 (2002): ' //                             &
-       'atmosphere:  GICAM3 (gicam_0_brnchT_itea_2, T63L32); '// &
-       'ocean: MOM (mom3_ver_3.5.2, 2x3L15); '             //  &
-       'sea ice: GISIM4; land: GILSM2.5',                      &
-       calendar='360_day',                                      &
-       realization=1,                                          &
-       history='Output from archive/giccm_03_std_2xCO2_2256.', &
-       comment='Equilibrium reached after 30-year spin-up ' // &
-       'after which data were output starting with nominal '// &
-       'date of January 2030',                                 &
-       references='Model described by Koder and Tolkien ' //   &
-       '(J. Geophys. Res., 2001, 576-591).  Also '        //   &
-       'see http://www.GICC.su/giccm/doc/index.html '     //   &
-       ' 2XCO2 simulation described in Dorkey et al. '    //   &
-       '(Clim. Dyn., 2003, 323-357.)', model_id="GICCM1", &
-       forcing='TO',contact="Barry Bonds",institute_id="PCMDI",&
-       parent_experiment_rip="N/A",parent_experiment_id="N/A",branch_time=bt)
+  error_flag = cmor_dataset_json("Test/test2.json")
   
   !  Define all axes that will be needed
 
   ilat = cmor_axis(  &
-       table='Tables/CMIP5_3hr',    &
+       table='Tables/CMIP6_3hr.json',    &
        table_entry='latitude',       &
        units='degrees_north',        &  
        length=lat,                   &
@@ -248,7 +226,7 @@ PROGRAM ipcc_test_code
        cell_bounds=bnds_lat)        
       
   ilon = cmor_axis(  &
-       table='Tables/CMIP5_3hr',    &
+       table='Tables/CMIP6_3hr.json',    &
        table_entry='longitude',      &
        length=lon,                   &
        units='degrees_east',         &
@@ -256,7 +234,7 @@ PROGRAM ipcc_test_code
        cell_bounds=bnds_lon)      
         
 !!$  ipres = cmor_axis(  &
-!!$       table='Tables/CMIP5_3hr',    &
+!!$       table='Tables/CMIP6_3hr.json',    &
 !!$       table_entry='pressure',       &
 !!$       units='Pa',                   &
 !!$       length=lev,                   &
@@ -267,14 +245,14 @@ PROGRAM ipcc_test_code
   !   cmor_write (later, below).
 
   itim = cmor_axis(  &
-       table='Tables/CMIP5_3hr',    &
+       table='Tables/CMIP6_3hr.json',    &
        table_entry='time',           &
        units='hours since 2030-1-1',  &
        length=ntimes,                &
        interval='3 hours')
 
   itim1 = cmor_axis(  &
-       table='Tables/CMIP5_3hr',    &
+       table='Tables/CMIP6_3hr.json',    &
        table_entry='time1',           &
        units='hours since 2030-1-1',  &
        length=ntimes)
@@ -285,7 +263,7 @@ PROGRAM ipcc_test_code
 !!$  zlev_bnds=(/ 0.,.2, .42, .62, .8, 1. /)
 !!$
 !!$  ilev = cmor_axis(  &
-!!$       table='Tables/CMIP5_3hr',    &
+!!$       table='Tables/CMIP6_3hr.json',    &
 !!$       table_entry='standard_hybrid_sigma',       &
 !!$       length=lev,                   &
 !!$       coord_vals=zlevs,             &
@@ -329,7 +307,7 @@ PROGRAM ipcc_test_code
 !!$  !    (appearing in IPCC table A1c)
 !!$
 !!$  var3d_ids(1) = cmor_variable(    &
-!!$       table='Tables/CMIP5_3hr',  &
+!!$       table='Tables/CMIP6_3hr.json',  &
 !!$       table_entry=entry3d(1),     &
 !!$       units=units3d(1),           &
 !!$       axis_ids=(/ ilon, ilat, ilev, itim /),  &
@@ -341,7 +319,7 @@ PROGRAM ipcc_test_code
 !!$  
 !!$  DO m=2,n3d
 !!$     var3d_ids(m) = cmor_variable(    &
-!!$          table='Tables/CMIP5_3hr',  &
+!!$          table='Tables/CMIP6_3hr.json',  &
 !!$          table_entry=entry3d(m),     &
 !!$          units=units3d(m),           &
 !!$          axis_ids=(/ ilon, ilat, ipres, itim /), &
@@ -357,7 +335,7 @@ PROGRAM ipcc_test_code
      IF (m.ne.3) THEN
         print*, 'itim axis ids: ',ilon,ilat,itim
         var2d_ids(m) = cmor_variable(    &
-             table='Tables/CMIP5_3hr',  &
+             table='Tables/CMIP6_3hr.json',  &
              table_entry=entry2d(m),     & 
              units=units2d(m),           & 
              axis_ids=(/ ilon, ilat, itim /), &
@@ -368,7 +346,7 @@ PROGRAM ipcc_test_code
      ELSE
         print*, 'itim1 axis ids: ',ilon,ilat,itim1
         var2d_ids(m) = cmor_variable(    &
-             table='Tables/CMIP5_3hr',  &
+             table='Tables/CMIP6_3hr.json',  &
              table_entry=entry2d(m),     & 
              units=units2d(m),           & 
              axis_ids=(/ ilon, ilat, itim1 /), &
diff --git a/Test/test_any_from_asc.f90 b/Test/test_any_from_asc.f90
index 32ae8ef..89641d2 100644
--- a/Test/test_any_from_asc.f90
+++ b/Test/test_any_from_asc.f90
@@ -65,34 +65,14 @@ program main
   
   print*,'Test Code: CMOR SETUP'
 !!$  
-  ierr = cmor_setup(inpath='Test',   &
+  ierr = cmor_setup(inpath='Tables',   &
        netcdf_file_action='replace',                                       &
        set_verbosity=1,                                                    &
        exit_control=1)
     
   print*,'Test Code: CMOR DATASET'
   bt=0.
-  ierr = cmor_dataset(                                   &
-       outpath='Test',         &
-       experiment_id='abrupt 4XCO2',           &
-       institution=                                            &
-       'GICC (Generic International Climate Center, ' //       &
-       ' Geneva, Switzerland)',                                &
-       source='GICCM1  2002(giccm_0_brnchT_itea_2, T63L32)',    &
-       calendar='noleap',                                      &
-       realization=1,                                          &
-       history='Output from archive/giccm_03_std_2xCO2_2256.', &
-       comment='Equilibrium reached after 30-year spin-up ' // &
-       'after which data were output starting with nominal '// &
-       'date of January 2030',                                 &
-       references='Model described by Koder and Tolkien ' //   &
-       '(J. Geophys. Res., 2001, 576-591).  Also ' //          &
-       'see http://www.GICC.su/giccm/doc/index.html '  //      &
-       ' 2XCO2 simulation described in Dorkey et al. '//       &
-       '(Clim. Dyn., 2003, 323-357.)', &
-       model_id='GICCM1',forcing='Nat', &
-       parent_experiment_rip="N/A",parent_experiment_id="N/A",branch_time=bt,&
-       contact="Freddy Krueger",institute_id="PCMDI" )
+  ierr = cmor_dataset_json("Test/test_any_from_asc.json")
   
   current=>mydims
   do i = 0,ndim-1
@@ -101,7 +81,7 @@ program main
      if (trim(adjustl(current%name)).eq.'time') then
         print*, 'Test Code: time found'
         ptimes => current
-        myaxis(ndim-i)=cmor_axis('Tables/CMIP5_Amon', &
+        myaxis(ndim-i)=cmor_axis('CMIP6_Amon.json', &
              table_entry=current%name,&
              units=current%units,&
              length=current%n,&
@@ -109,7 +89,7 @@ program main
 !!$          cell_bounds=current%bounds, &
              interval='1 month')
      else
-        myaxis(ndim-i)=cmor_axis('Tables/CMIP5_Amon', &
+        myaxis(ndim-i)=cmor_axis('CMIP6_Amon.json', &
              table_entry=current%name,&
              units=current%units,&
              length=current%n,&
@@ -121,7 +101,7 @@ program main
   enddo
   
   print*,'Test Code: CMOR VAR'
-  myvar=cmor_variable('Tables/CMIP5_Amon',&
+  myvar=cmor_variable('CMIP6_Amon.json',&
        var,&
        units,&
        myaxis,&
diff --git a/Test/test_any_from_asc.json b/Test/test_any_from_asc.json
new file mode 100644
index 0000000..c618eb2
--- /dev/null
+++ b/Test/test_any_from_asc.json
@@ -0,0 +1,62 @@
+{
+           "_control_vocabulary_file": "CMIP6_CV.json",
+           "_cmip6_option":           "CMIP6",
+
+    "activity_id":                  "CMIP",
+    "outpath":                      "CMIP6",
+    "experiment_id":                "piControl",
+    "calendar":                     "360_day",
+    "realization_index":            "1",
+    "initialization_index":         "1",
+    "physics_index":                "1",
+    "forcing_index":                "1",
+     "source_type":                      "AOGCM",
+     "sub_experiment":                      "none",
+     "sub_experiment_id":                      "none",
+     "parent_sub_experiment_id":                      "N/A",
+     "parent_mip_era":                      "N/A",
+     "mip_era":                      "CMIP6",
+    "contact ":                     "Python Coder (python at a.b.com) ",
+    "institution_id":                 "PCMDI",
+    "model_id":                     "GICCM1",
+    "history":                      "output from archivcl_A1.nce/giccm_03_std_2xCO2_2256.",
+    "comment":                      "equilibrium reached after 30-year spin-up ",
+    "references":                   "model described by Koder and Tolkien ",
+    "model_id":                     "pcmdi-10a", 
+    "parent_experiment_rip":        "r1i3p2",
+    "parent_experiment_id":         "lgm",
+    "parent_variant_label":            "r1i3p2",
+    "branch_time":                  "0",
+
+
+    "parent_activity_id":           "CMIP",
+    "parent_source_id":             "GFDL-CM2-1",
+    "parent_variant_label":            "r1i1p1f3",
+
+    "branch_method":                "standard",
+    "branch_time_in_child":         "00D0",
+    "branch_time_in_parent":        "3650.0D0",
+    "branch_time_units_in_parent":  "days since 1000-1-1",
+
+    "further_info_url":             "http://furtherinfo.es-doc.org/<mip_era><institution_id><source_id><experiment_id><sub_experiment_id><variant_label>",
+    "grid":                         "native atmosphere T63 gaussian grid (64x128 latxlon)",
+    "grid_label":                  "gn",
+    "grid_resolution":              "5 km",
+
+    "institution_id":               "CSIRO-BOM",
+    "institution":                  "Commonwealth Scientific and Industrial Research Organisation, Australia, and Bureau of Meteorology, Australia",
+
+    "references":                   "Model described by Koder and Tolkien (J. Geophys. Res.,2001, 576 - 591).  Also see http://www.GICC.su/giccm/doc/index.html  2XCO2 simulation described in Dorkey et al. '(Clim. Dyn., 2003, 323 - 357.)",
+    "run_variant":                  "forcing: black carbon aerosol only",
+    "source_id":                    "NICAM",
+    "source":                       "NICAM:",
+    "output_path_template":         "<activity_id><institution_id><source_id><experiment_id><variant_label><table><variable_id><grid_label><version>",
+    "output_file_template":         "<variable_id><table><experiment_id><source_id><variant_label><grid_label>",
+
+    "license":                      "One of 2 licenses: ----- CMIP6 model data produced by <Your CentreName> is licensed under a Creative Commons Attribution 'NonCommercial Share Alike' 4.0 International License (http://creativecommons.org/licenses/by/4.0/). Use of the data should be acknowledged following guidelines found at <what URL???> The data is hosted via the Earth System Grid Federation. Permissions beyond the scope of this license may be available at http://pcmdi.org/cmip5/terms [...]
+
+
+}
+
+
+
diff --git a/Test/test_any_from_asc_d.f90 b/Test/test_any_from_asc_d.f90
index c5ff055..c895847 100644
--- a/Test/test_any_from_asc_d.f90
+++ b/Test/test_any_from_asc_d.f90
@@ -73,26 +73,7 @@ mymissing=1.e20;
        exit_control=1)
     
   print*,'Test Code: CMOR DATASET'
-  ierr = cmor_dataset(                                   &
-       outpath='Test',         &
-       experiment_id='abrupt 4XCO2',           &
-       institution=                                            &
-       'GICC (Generic International Climate Center, ' //       &
-       ' Geneva, Switzerland)',                                &
-       source='GICCM1  2002(giccm_0_brnchT_itea_2, T63L32)',    &
-       calendar='noleap',                                      &
-       realization=1,                                          &
-       history='Output from archive/giccm_03_std_2xCO2_2256.', &
-       comment='Equilibrium reached after 30-year spin-up ' // &
-       'after which data were output starting with nominal '// &
-       'date of January 2030',                                 &
-       references='Model described by Koder and Tolkien ' //   &
-       '(J. Geophys. Res., 2001, 576-591).  Also ' //          &
-       'see http://www.GICC.su/giccm/doc/index.html '  //      &
-       ' 2XCO2 simulation described in Dorkey et al. '//       &
-       '(Clim. Dyn., 2003, 323-357.)' ,   &
-       model_id = "GICCM1",forcing='TO',contact="Barry Bonds",&
-       parent_experiment_rip="N/A",parent_experiment_id="N/A",branch_time=bt,institute_id="PCMDI")
+  ierr = cmor_dataset_json("Test/test_any_from_asc_d.json")
   
   current=>mydims
   do i = 0,ndim-1
@@ -101,7 +82,7 @@ mymissing=1.e20;
      if (trim(adjustl(current%name)).eq.'time') then
         print*, 'Test Code: time found'
         ptimes => current
-        myaxis(ndim-i)=cmor_axis('Tables/CMIP5_Amon', &
+        myaxis(ndim-i)=cmor_axis('Tables/CMIP6_Amon.json', &
              table_entry=current%name,&
              units=current%units,&
              length=current%n,&
@@ -109,7 +90,7 @@ mymissing=1.e20;
 !!$          cell_bounds=current%bounds, &
              interval='1 month')
      else
-        myaxis(ndim-i)=cmor_axis('Tables/CMIP5_Amon', &
+        myaxis(ndim-i)=cmor_axis('Tables/CMIP6_Amon.json', &
              table_entry=current%name,&
              units=current%units,&
              length=current%n,&
@@ -121,7 +102,7 @@ mymissing=1.e20;
   enddo
   
   print*,'Test Code: CMOR VAR'
-  myvar=cmor_variable('Tables/CMIP5_Amon',&
+  myvar=cmor_variable('Tables/CMIP6_Amon.json',&
        var,&
        units,&
        myaxis,&
diff --git a/Test/test_any_from_asc_d.json b/Test/test_any_from_asc_d.json
new file mode 100644
index 0000000..c618eb2
--- /dev/null
+++ b/Test/test_any_from_asc_d.json
@@ -0,0 +1,62 @@
+{
+           "_control_vocabulary_file": "CMIP6_CV.json",
+           "_cmip6_option":           "CMIP6",
+
+    "activity_id":                  "CMIP",
+    "outpath":                      "CMIP6",
+    "experiment_id":                "piControl",
+    "calendar":                     "360_day",
+    "realization_index":            "1",
+    "initialization_index":         "1",
+    "physics_index":                "1",
+    "forcing_index":                "1",
+     "source_type":                      "AOGCM",
+     "sub_experiment":                      "none",
+     "sub_experiment_id":                      "none",
+     "parent_sub_experiment_id":                      "N/A",
+     "parent_mip_era":                      "N/A",
+     "mip_era":                      "CMIP6",
+    "contact ":                     "Python Coder (python at a.b.com) ",
+    "institution_id":                 "PCMDI",
+    "model_id":                     "GICCM1",
+    "history":                      "output from archivcl_A1.nce/giccm_03_std_2xCO2_2256.",
+    "comment":                      "equilibrium reached after 30-year spin-up ",
+    "references":                   "model described by Koder and Tolkien ",
+    "model_id":                     "pcmdi-10a", 
+    "parent_experiment_rip":        "r1i3p2",
+    "parent_experiment_id":         "lgm",
+    "parent_variant_label":            "r1i3p2",
+    "branch_time":                  "0",
+
+
+    "parent_activity_id":           "CMIP",
+    "parent_source_id":             "GFDL-CM2-1",
+    "parent_variant_label":            "r1i1p1f3",
+
+    "branch_method":                "standard",
+    "branch_time_in_child":         "00D0",
+    "branch_time_in_parent":        "3650.0D0",
+    "branch_time_units_in_parent":  "days since 1000-1-1",
+
+    "further_info_url":             "http://furtherinfo.es-doc.org/<mip_era><institution_id><source_id><experiment_id><sub_experiment_id><variant_label>",
+    "grid":                         "native atmosphere T63 gaussian grid (64x128 latxlon)",
+    "grid_label":                  "gn",
+    "grid_resolution":              "5 km",
+
+    "institution_id":               "CSIRO-BOM",
+    "institution":                  "Commonwealth Scientific and Industrial Research Organisation, Australia, and Bureau of Meteorology, Australia",
+
+    "references":                   "Model described by Koder and Tolkien (J. Geophys. Res.,2001, 576 - 591).  Also see http://www.GICC.su/giccm/doc/index.html  2XCO2 simulation described in Dorkey et al. '(Clim. Dyn., 2003, 323 - 357.)",
+    "run_variant":                  "forcing: black carbon aerosol only",
+    "source_id":                    "NICAM",
+    "source":                       "NICAM:",
+    "output_path_template":         "<activity_id><institution_id><source_id><experiment_id><variant_label><table><variable_id><grid_label><version>",
+    "output_file_template":         "<variable_id><table><experiment_id><source_id><variant_label><grid_label>",
+
+    "license":                      "One of 2 licenses: ----- CMIP6 model data produced by <Your CentreName> is licensed under a Creative Commons Attribution 'NonCommercial Share Alike' 4.0 International License (http://creativecommons.org/licenses/by/4.0/). Use of the data should be acknowledged following guidelines found at <what URL???> The data is hosted via the Earth System Grid Federation. Permissions beyond the scope of this license may be available at http://pcmdi.org/cmip5/terms [...]
+
+
+}
+
+
+
diff --git a/Test/test_any_from_asc_i.f90 b/Test/test_any_from_asc_i.f90
index 1539c1b..810e3fd 100644
--- a/Test/test_any_from_asc_i.f90
+++ b/Test/test_any_from_asc_i.f90
@@ -71,26 +71,7 @@ program main
        exit_control=1)
     
   print*,'Test Code: CMOR DATASET'
-  ierr = cmor_dataset(                                   &
-       outpath='Test',         &
-       experiment_id='abrupt 4XCO2',           &
-       institution=                                            &
-       'GICC (Generic International Climate Center, ' //       &
-       ' Geneva, Switzerland)',                                &
-       source='GICCM1  2002(giccm_0_brnchT_itea_2, T63L32)',    &
-       calendar='noleap',                                      &
-       realization=1,                                          &
-       history='Output from archive/giccm_03_std_2xCO2_2256.', &
-       comment='Equilibrium reached after 30-year spin-up ' // &
-       'after which data were output starting with nominal '// &
-       'date of January 2030',                                 &
-       references='Model described by Koder and Tolkien ' //   &
-       '(J. Geophys. Res., 2001, 576-591).  Also ' //          &
-       'see http://www.GICC.su/giccm/doc/index.html '  //      &
-       ' 2XCO2 simulation described in Dorkey et al. '//       &
-       '(Clim. Dyn., 2003, 323-357.)', &
-       model_id = "GICCM1", forcing='TO',contact="Barry Bonds",&
-       parent_experiment_rip="N/A",parent_experiment_id="N/A",branch_time=bt,institute_id="PCMDI")
+  ierr = cmor_dataset_json("Test/test2.json")
   
   current=>mydims
   do i = 0,ndim-1
@@ -99,7 +80,7 @@ program main
      if (trim(adjustl(current%name)).eq.'time') then
         print*, 'Test Code: time found'
         ptimes => current
-        myaxis(ndim-i)=cmor_axis('Tables/CMIP5_Amon', &
+        myaxis(ndim-i)=cmor_axis('Tables/CMIP6_Amon.json', &
              table_entry=current%name,&
              units=current%units,&
              length=current%n,&
@@ -107,7 +88,7 @@ program main
 !!$          cell_bounds=current%bounds, &
              interval='1 month')
      else
-        myaxis(ndim-i)=cmor_axis('Tables/CMIP5_Amon', &
+        myaxis(ndim-i)=cmor_axis('Tables/CMIP6_Amon.json', &
              table_entry=current%name,&
              units=current%units,&
              length=current%n,&
@@ -119,7 +100,7 @@ program main
   enddo
   
   print*,'Test Code: CMOR VAR',var,units
-  myvar=cmor_variable('Tables/CMIP5_Amon',&
+  myvar=cmor_variable('Tables/CMIP6_Amon.json',&
        var,&
        units,&
        myaxis,&
diff --git a/Test/test_checker_works.py b/Test/test_checker_works.py
index cf217ca..fcee767 100644
--- a/Test/test_checker_works.py
+++ b/Test/test_checker_works.py
@@ -19,7 +19,7 @@ if fo != sys.stdout:
 # First of all run the Test script that generates the "good" file
 #execfile("Test/test_python_joerg_3.py")
 
-file = 'Test/CMIP5/output/INSTITUTE_ID/pcmdi-10a/noVolc2000/6hr/atmos/hus/r1i1p1/hus_6hrLev_pcmdi-10a_noVolc2000_r1i1p1_2010010100-2010010218.nc'
+file = 'Test/CMIP5/output/INSTITUTE_ID/pcmdi-10a/DcppC2/6hr/atmos/hus/r1i1p1/hus_6hrLev_pcmdi-10a_DcppC2_r1i1p1_2010010100-2010010218.nc'
 
 
 cmor.checkCMOR(fo,file,"Tables/CMIP5_6hrLev")
@@ -29,7 +29,7 @@ cmor.checkCMOR(fo,file,"Tables/CMIP5_6hrLev")
 ## # Ok testing the DRS
 
 ## try:
-##     F="Test/CMIP5/output/INSTITUTE_ID/pcmdi-10a/noVolc2000/6hr/atmos/hus/hus_6hrLev_pcmdi-10a_noVolc2000_r1i1p1_2010010100-2010010218.nc"
+##     F="Test/CMIP5/output/INSTITUTE_ID/pcmdi-10a/DcppC2/6hr/atmos/hus/hus_6hrLev_pcmdi-10a_DcppC2_r1i1p1_2010010100-2010010218.nc"
 ##     shutil.copy(file,F)
 ##     print 'Testing DRS'
 ##     cmor.checkCMOR(fo,F,"Tables/CMIP5_6hrLev")
@@ -42,7 +42,7 @@ cmor.checkCMOR(fo,file,"Tables/CMIP5_6hrLev")
 ## os.remove(F)
 
 ## try:
-##     F="Test/CMIP5/output/INSTITUTE_ID/pcmdi-10a/noVolc2000/6hr/atmos/huhs/r1i1p1/hus_6hrLev_pcmdi-10a_noVolc2000_r1i1p1_2010010100-2010010218.nc"
+##     F="Test/CMIP5/output/INSTITUTE_ID/pcmdi-10a/DcppC2/6hr/atmos/huhs/r1i1p1/hus_6hrLev_pcmdi-10a_DcppC2_r1i1p1_2010010100-2010010218.nc"
 ##     try:
 ##         os.makedirs(os.path.split(F)[0])
 ##     except:
@@ -59,7 +59,7 @@ cmor.checkCMOR(fo,file,"Tables/CMIP5_6hrLev")
 ## os.remove(F)
 
 ## try:
-##     F="Test/CMIP5/output/INSTITUTE_ID/pcmdi-10a/noVolc2000/6hr/atmfos/hus/r1i1p1/hus_6hrLev_pcmdi-10a_noVolc2000_r1i1p1_2010010100-2010010218.nc"
+##     F="Test/CMIP5/output/INSTITUTE_ID/pcmdi-10a/DcppC2/6hr/atmfos/hus/r1i1p1/hus_6hrLev_pcmdi-10a_DcppC2_r1i1p1_2010010100-2010010218.nc"
 ##     try:
 ##         os.makedirs(os.path.split(F)[0])
 ##     except:
@@ -76,7 +76,7 @@ cmor.checkCMOR(fo,file,"Tables/CMIP5_6hrLev")
 ## os.remove(F)
 
 ## try:
-##     F="Test/CMIP5/output/INSTITUTE_ID/pcmdi-10a/noVolc2000/16hr/atmos/hus/r1i1p1/hus_6hrLev_pcmdi-10a_noVolc2000_r1i1p1_2010010100-2010010218.nc"
+##     F="Test/CMIP5/output/INSTITUTE_ID/pcmdi-10a/DcppC2/16hr/atmos/hus/r1i1p1/hus_6hrLev_pcmdi-10a_DcppC2_r1i1p1_2010010100-2010010218.nc"
 ##     try:
 ##         os.makedirs(os.path.split(F)[0])
 ##     except:
@@ -93,7 +93,7 @@ cmor.checkCMOR(fo,file,"Tables/CMIP5_6hrLev")
 ## os.remove(F)
 
 ## try:
-##     F="Test/CMIP5/output/INSTITUTE_ID/pcmdi-10a/noVolfdc2000/6hr/atmos/hus/r1i1p1/hus_6hrLev_pcmdi-10a_noVolc2000_r1i1p1_2010010100-2010010218.nc"
+##     F="Test/CMIP5/output/INSTITUTE_ID/pcmdi-10a/noVolfdc2000/6hr/atmos/hus/r1i1p1/hus_6hrLev_pcmdi-10a_DcppC2_r1i1p1_2010010100-2010010218.nc"
 ##     try:
 ##         os.makedirs(os.path.split(F)[0])
 ##     except:
@@ -110,7 +110,7 @@ cmor.checkCMOR(fo,file,"Tables/CMIP5_6hrLev")
 ## os.remove(F)
 
 ## try:
-##     F="Test/CMIP5/output/INSTITUTE_ID/pcmdi-10b/noVolc2000/6hr/atmos/hus/r1i1p1/hus_6hrLev_pcmdi-10a_noVolc2000_r1i1p1_2010010100-2010010218.nc"
+##     F="Test/CMIP5/output/INSTITUTE_ID/pcmdi-10b/DcppC2/6hr/atmos/hus/r1i1p1/hus_6hrLev_pcmdi-10a_DcppC2_r1i1p1_2010010100-2010010218.nc"
 ##     try:
 ##         os.makedirs(os.path.split(F)[0])
 ##     except:
@@ -127,7 +127,7 @@ cmor.checkCMOR(fo,file,"Tables/CMIP5_6hrLev")
 ## os.remove(F)
 
 ## try:
-##     F="Test/CMIP5/output/INSTITUTEd_ID/pcmdi-10a/noVolc2000/6hr/atmos/hus/r1i1p1/hus_6hrLev_pcmdi-10a_noVolc2000_r1i1p1_2010010100-2010010218.nc"
+##     F="Test/CMIP5/output/INSTITUTEd_ID/pcmdi-10a/DcppC2/6hr/atmos/hus/r1i1p1/hus_6hrLev_pcmdi-10a_DcppC2_r1i1p1_2010010100-2010010218.nc"
 ##     try:
 ##         os.makedirs(os.path.split(F)[0])
 ##     except:
@@ -144,7 +144,7 @@ cmor.checkCMOR(fo,file,"Tables/CMIP5_6hrLev")
 ## os.remove(F)
 
 ## try:
-##     F="Test/CMIP5/outputt/INSTITUTE_ID/pcmdi-10a/noVolc2000/6hr/atmos/hus/r1i1p1/hus_6hrLev_pcmdi-10a_noVolc2000_r1i1p1_2010010100-2010010218.nc"
+##     F="Test/CMIP5/outputt/INSTITUTE_ID/pcmdi-10a/DcppC2/6hr/atmos/hus/r1i1p1/hus_6hrLev_pcmdi-10a_DcppC2_r1i1p1_2010010100-2010010218.nc"
 ##     try:
 ##         os.makedirs(os.path.split(F)[0])
 ##     except:
@@ -161,7 +161,7 @@ cmor.checkCMOR(fo,file,"Tables/CMIP5_6hrLev")
 ## os.remove(F)
 
 ## try:
-##     F="Test/CMIpP5/output/INSTITUTE_ID/pcmdi-10a/noVolc2000/6hr/atmos/hus/r1i1p1/hus_6hrLev_pcmdi-10a_noVolc2000_r1i1p1_2010010100-2010010218.nc"
+##     F="Test/CMIpP5/output/INSTITUTE_ID/pcmdi-10a/DcppC2/6hr/atmos/hus/r1i1p1/hus_6hrLev_pcmdi-10a_DcppC2_r1i1p1_2010010100-2010010218.nc"
 ##     try:
 ##         os.makedirs(os.path.split(F)[0])
 ##     except:
@@ -179,7 +179,7 @@ cmor.checkCMOR(fo,file,"Tables/CMIP5_6hrLev")
 
 
 ## try:
-##     F="Test/hus_6hrLev_pcmdi-10a_noVolc2000_r1i1p1_2010010100-2010010218.nc"
+##     F="Test/hus_6hrLev_pcmdi-10a_DcppC2_r1i1p1_2010010100-2010010218.nc"
 ##     try:
 ##         os.makedirs(os.path.split(F)[0])
 ##     except:
@@ -196,7 +196,7 @@ cmor.checkCMOR(fo,file,"Tables/CMIP5_6hrLev")
 ## os.remove(F)
 
 ## try:
-##     F="hus_6hrLev_pcmdi-10a_noVolc2000_r1i1p1_2010010100-2010010218.nc"
+##     F="hus_6hrLev_pcmdi-10a_DcppC2_r1i1p1_2010010100-2010010218.nc"
 ##     try:
 ##         os.makedirs(os.path.split(F)[0])
 ##     except:
@@ -213,7 +213,7 @@ cmor.checkCMOR(fo,file,"Tables/CMIP5_6hrLev")
 ## os.remove(F)
 
 ## #The following should pass, DRS test turned off
-## F="hus_6hrLev_pcmdi-10a_noVolc2000_r1i1p1_2010010100-2010010218.nc"
+## F="hus_6hrLev_pcmdi-10a_DcppC2_r1i1p1_2010010100-2010010218.nc"
 ## try:
 ##     os.makedirs(os.path.split(F)[0])
 ## except:
@@ -224,7 +224,7 @@ cmor.checkCMOR(fo,file,"Tables/CMIP5_6hrLev")
 ## os.remove(F)
 
 ## try:
-##     F="Test/CMIP5/output/INSTITUTE_ID/pcmdi-10a/noVolc2000/6hr/atmos/hus/r1i1p1/hus_6hrLev_pcmdi-10a_noVolc2000_r1i1p1_20f10010100-2010010218.nc"
+##     F="Test/CMIP5/output/INSTITUTE_ID/pcmdi-10a/DcppC2/6hr/atmos/hus/r1i1p1/hus_6hrLev_pcmdi-10a_DcppC2_r1i1p1_20f10010100-2010010218.nc"
 ##     shutil.copy(file,F)
 ##     print 'Testing DRS wrong date'
 ##     cmor.checkCMOR(fo,F,"Tables/CMIP5_6hrLev")
@@ -236,7 +236,7 @@ cmor.checkCMOR(fo,file,"Tables/CMIP5_6hrLev")
 ##     raise Exception,err
 ## os.remove(F)
 ## try:
-##     F="Test/CMIP5/output/INSTITUTE_ID/pcmdi-10a/noVolc2000/6hr/atmos/hus/r1i1p1/hus_6hrLev_pcmdi-10a_noVolc2000_r1i1p1_20100g10100-2010010218.nc"
+##     F="Test/CMIP5/output/INSTITUTE_ID/pcmdi-10a/DcppC2/6hr/atmos/hus/r1i1p1/hus_6hrLev_pcmdi-10a_DcppC2_r1i1p1_20100g10100-2010010218.nc"
 ##     shutil.copy(file,F)
 ##     print 'Testing DRS wrong date'
 ##     cmor.checkCMOR(fo,F,"Tables/CMIP5_6hrLev")
@@ -248,7 +248,7 @@ cmor.checkCMOR(fo,file,"Tables/CMIP5_6hrLev")
 ##     raise Exception,err
 ## os.remove(F)
 ## try:
-##     F="Test/CMIP5/output/INSTITUTE_ID/pcmdi-10a/noVolc2000/6hr/atmos/hus/r1i1p1/hus_6hrLev_pcmdi-10a_noVolc2000_r1i1p1_2010010g100-2010010218.nc"
+##     F="Test/CMIP5/output/INSTITUTE_ID/pcmdi-10a/DcppC2/6hr/atmos/hus/r1i1p1/hus_6hrLev_pcmdi-10a_DcppC2_r1i1p1_2010010g100-2010010218.nc"
 ##     shutil.copy(file,F)
 ##     print 'Testing DRS wrong date'
 ##     cmor.checkCMOR(fo,F,"Tables/CMIP5_6hrLev")
@@ -260,7 +260,7 @@ cmor.checkCMOR(fo,file,"Tables/CMIP5_6hrLev")
 ##     raise Exception,err
 ## os.remove(F)
 ## try:
-##     F="Test/CMIP5/output/INSTITUTE_ID/pcmdi-10a/noVolc2000/6hr/atmos/hus/r1i1p1/hus_6hrLev_pcmdi-10a_noVolc2000_r1i1p1_201001010g0-2010010218.nc"
+##     F="Test/CMIP5/output/INSTITUTE_ID/pcmdi-10a/DcppC2/6hr/atmos/hus/r1i1p1/hus_6hrLev_pcmdi-10a_DcppC2_r1i1p1_201001010g0-2010010218.nc"
 ##     shutil.copy(file,F)
 ##     print 'Testing DRS wrong date'
 ##     cmor.checkCMOR(fo,F,"Tables/CMIP5_6hrLev")
@@ -272,7 +272,7 @@ cmor.checkCMOR(fo,file,"Tables/CMIP5_6hrLev")
 ##     raise Exception,err
 ## os.remove(F)
 ## try:
-##     F="Test/CMIP5/output/INSTITUTE_ID/pcmdi-10a/noVolc2000/6hr/atmos/hus/r1i1p1/hus_6hrLev_pcmdi-10a_noVolc2000_r1i1p1_2010010100-2f01001041 8.nc"
+##     F="Test/CMIP5/output/INSTITUTE_ID/pcmdi-10a/DcppC2/6hr/atmos/hus/r1i1p1/hus_6hrLev_pcmdi-10a_DcppC2_r1i1p1_2010010100-2f01001041 8.nc"
 ##     shutil.copy(file,F)
 ##     print 'Testing DRS wrong date'
 ##     cmor.checkCMOR(fo,F,"Tables/CMIP5_6hrLev")
@@ -284,7 +284,7 @@ cmor.checkCMOR(fo,file,"Tables/CMIP5_6hrLev")
 ##     raise Exception,err
 ## os.remove(F)
 ## try:
-##     F="Test/CMIP5/output/INSTITUTE_ID/pcmdi-10a/noVolc2000/6hr/atmos/hus/r1i1p1/hus_6hrLev_pcmdi-10a_noVolc2000_r1i1p1_2010010100-2010h010218.nc"
+##     F="Test/CMIP5/output/INSTITUTE_ID/pcmdi-10a/DcppC2/6hr/atmos/hus/r1i1p1/hus_6hrLev_pcmdi-10a_DcppC2_r1i1p1_2010010100-2010h010218.nc"
 ##     shutil.copy(file,F)
 ##     print 'Testing DRS wrong date'
 ##     cmor.checkCMOR(fo,F,"Tables/CMIP5_6hrLev")
@@ -296,7 +296,7 @@ cmor.checkCMOR(fo,file,"Tables/CMIP5_6hrLev")
 ##     raise Exception,err
 ## os.remove(F)
 ## try:
-##     F="Test/CMIP5/output/INSTITUTE_ID/pcmdi-10a/noVolc2000/6hr/atmos/hus/r1i1p1/hus_6hrLev_pcmdi-10a_noVolc2000_r1i1p1_2010010100-2010010h418.nc"
+##     F="Test/CMIP5/output/INSTITUTE_ID/pcmdi-10a/DcppC2/6hr/atmos/hus/r1i1p1/hus_6hrLev_pcmdi-10a_DcppC2_r1i1p1_2010010100-2010010h418.nc"
 ##     shutil.copy(file,F)
 ##     print 'Testing DRS wrong date'
 ##     cmor.checkCMOR(fo,F,"Tables/CMIP5_6hrLev")
@@ -308,7 +308,7 @@ cmor.checkCMOR(fo,file,"Tables/CMIP5_6hrLev")
 ##     raise Exception,err
 ## os.remove(F)
 ## try:
-##     F="Test/CMIP5/output/INSTITUTE_ID/pcmdi-10a/noVolc2000/6hr/atmos/hus/r1i1p1/hus_6hrLev_pcmdi-10a_noVolc2000_r1i1p1_2010010100-201001041g8.nc"
+##     F="Test/CMIP5/output/INSTITUTE_ID/pcmdi-10a/DcppC2/6hr/atmos/hus/r1i1p1/hus_6hrLev_pcmdi-10a_DcppC2_r1i1p1_2010010100-201001041g8.nc"
 ##     shutil.copy(file,F)
 ##     print 'Testing DRS wrong date'
 ##     cmor.checkCMOR(fo,F,"Tables/CMIP5_6hrLev")
@@ -321,7 +321,7 @@ cmor.checkCMOR(fo,file,"Tables/CMIP5_6hrLev")
 ## os.remove(F)
 
 ## try:
-##     F="hus_6hrLev_pcmdi-10a_noVolc2000_r1i1p1_2010010100-2010010218.nc"
+##     F="hus_6hrLev_pcmdi-10a_DcppC2_r1i1p1_2010010100-2010010218.nc"
 ##     shutil.copy(file,F)
 ##     f=cdms2.open(F,"a")
 ##     h=f("hus")
@@ -341,7 +341,7 @@ cmor.checkCMOR(fo,file,"Tables/CMIP5_6hrLev")
 ## for gatt in gbl:
 ##     try:
 ##         print 'Testing no %s global att' % (gatt)
-##         F="hus_6hrLev_pcmdi-10a_noVolc2000_r1i1p1_2010010100-2010010218.nc"
+##         F="hus_6hrLev_pcmdi-10a_DcppC2_r1i1p1_2010010100-2010010218.nc"
 ##         shutil.copy(file,F)
 ##         os.popen("ncdump %s > crap.txt"%F).readlines()
 ##         fi=open("crap.txt")
@@ -376,7 +376,7 @@ cmor.checkCMOR(fo,file,"Tables/CMIP5_6hrLev")
 ## try:
 ##     gatt = "creation_date"
 ##     print 'Testing Validity of %s' % (gatt)
-##     F="hus_6hrLev_pcmdi-10a_noVolc2000_r1i1p1_2010010100-2010010218.nc"
+##     F="hus_6hrLev_pcmdi-10a_DcppC2_r1i1p1_2010010100-2010010218.nc"
 ##     shutil.copy(file,F)
 ##     os.popen("ncdump %s > crap.txt"%F).readlines()
 ##     fi=open("crap.txt")
@@ -412,7 +412,7 @@ cmor.checkCMOR(fo,file,"Tables/CMIP5_6hrLev")
 ## try:
 ##     gatt = "branch_time"
 ##     print 'Testing Validity of %s' % (gatt)
-##     F="hus_6hrLev_pcmdi-10a_noVolc2000_r1i1p1_2010010100-2010010218.nc"
+##     F="hus_6hrLev_pcmdi-10a_DcppC2_r1i1p1_2010010100-2010010218.nc"
 ##     shutil.copy(file,F)
 ##     os.popen("ncdump %s > crap.txt"%F).readlines()
 ##     fi=open("crap.txt")
@@ -447,7 +447,7 @@ cmor.checkCMOR(fo,file,"Tables/CMIP5_6hrLev")
 ## try:
 ##     gatt = "branch_time"
 ##     print 'Testing Validity of %s' % (gatt)
-##     F="hus_6hrLev_pcmdi-10a_noVolc2000_r1i1p1_2010010100-2010010218.nc"
+##     F="hus_6hrLev_pcmdi-10a_DcppC2_r1i1p1_2010010100-2010010218.nc"
 ##     shutil.copy(file,F)
 ##     os.popen("ncdump %s > crap.txt"%F).readlines()
 ##     fi=open("crap.txt")
@@ -482,7 +482,7 @@ cmor.checkCMOR(fo,file,"Tables/CMIP5_6hrLev")
 ## try:
 ##     gatt = "experiment_id"
 ##     print 'Testing Validity of %s' % (gatt)
-##     F="hus_6hrLev_pcmdi-10a_noVolc2000_r1i1p1_2010010100-2010010218.nc"
+##     F="hus_6hrLev_pcmdi-10a_DcppC2_r1i1p1_2010010100-2010010218.nc"
 ##     shutil.copy(file,F)
 ##     os.popen("ncdump %s > crap.txt"%F).readlines()
 ##     fi=open("crap.txt")
@@ -517,7 +517,7 @@ cmor.checkCMOR(fo,file,"Tables/CMIP5_6hrLev")
 ## try:
 ##     gatt = "experiment"
 ##     print 'Testing Validity of %s' % (gatt)
-##     F="hus_6hrLev_pcmdi-10a_noVolc2000_r1i1p1_2010010100-2010010218.nc"
+##     F="hus_6hrLev_pcmdi-10a_DcppC2_r1i1p1_2010010100-2010010218.nc"
 ##     shutil.copy(file,F)
 ##     os.popen("ncdump %s > crap.txt"%F).readlines()
 ##     fi=open("crap.txt")
@@ -552,7 +552,7 @@ cmor.checkCMOR(fo,file,"Tables/CMIP5_6hrLev")
 ## try:
 ##     gatt = "forcing"
 ##     print 'Testing Validity of %s' % (gatt)
-##     F="hus_6hrLev_pcmdi-10a_noVolc2000_r1i1p1_2010010100-2010010218.nc"
+##     F="hus_6hrLev_pcmdi-10a_DcppC2_r1i1p1_2010010100-2010010218.nc"
 ##     shutil.copy(file,F)
 ##     os.popen("ncdump %s > crap.txt"%F).readlines()
 ##     fi=open("crap.txt")
@@ -587,7 +587,7 @@ cmor.checkCMOR(fo,file,"Tables/CMIP5_6hrLev")
 ## try:
 ##     gatt = "frequency"
 ##     print 'Testing Validity of %s' % (gatt)
-##     F="hus_6hrLev_pcmdi-10a_noVolc2000_r1i1p1_2010010100-2010010218.nc"
+##     F="hus_6hrLev_pcmdi-10a_DcppC2_r1i1p1_2010010100-2010010218.nc"
 ##     shutil.copy(file,F)
 ##     os.popen("ncdump %s > crap.txt"%F).readlines()
 ##     fi=open("crap.txt")
@@ -622,7 +622,7 @@ cmor.checkCMOR(fo,file,"Tables/CMIP5_6hrLev")
 ## try:
 ##     gatt = "frequency"
 ##     print 'Testing Validity of %s' % (gatt)
-##     F="hus_6hrLev_pcmdi-10a_noVolc2000_r1i1p1_2010010100-2010010218.nc"
+##     F="hus_6hrLev_pcmdi-10a_DcppC2_r1i1p1_2010010100-2010010218.nc"
 ##     shutil.copy(file,F)
 ##     os.popen("ncdump %s > crap.txt"%F).readlines()
 ##     fi=open("crap.txt")
@@ -657,7 +657,7 @@ cmor.checkCMOR(fo,file,"Tables/CMIP5_6hrLev")
 ## try:
 ##     gatt = "parent_experiment_id"
 ##     print 'Testing Validity of %s' % (gatt)
-##     F="hus_6hrLev_pcmdi-10a_noVolc2000_r1i1p1_2010010100-2010010218.nc"
+##     F="hus_6hrLev_pcmdi-10a_DcppC2_r1i1p1_2010010100-2010010218.nc"
 ##     shutil.copy(file,F)
 ##     os.popen("ncdump %s > crap.txt"%F).readlines()
 ##     fi=open("crap.txt")
@@ -692,7 +692,7 @@ cmor.checkCMOR(fo,file,"Tables/CMIP5_6hrLev")
 ## try:
 ##     gatt = "parent_experiment_id"
 ##     print 'Testing Validity of %s' % (gatt)
-##     F="hus_6hrLev_pcmdi-10a_noVolc2000_r1i1p1_2010010100-2010010218.nc"
+##     F="hus_6hrLev_pcmdi-10a_DcppC2_r1i1p1_2010010100-2010010218.nc"
 ##     shutil.copy(file,F)
 ##     os.popen("ncdump %s > crap.txt"%F).readlines()
 ##     fi=open("crap.txt")
@@ -706,7 +706,7 @@ cmor.checkCMOR(fo,file,"Tables/CMIP5_6hrLev")
 ##         elif l.find(":%s" % gatt)==-1:
 ##             f.write(l)
 ##         else:
-##             f.write(l.strip()[:-6]+'noVolc2000" ;\n')
+##             f.write(l.strip()[:-6]+'DcppC2" ;\n')
 ##     f.close()
 ##     fi.close()
 ##     os.remove(F)
@@ -727,7 +727,7 @@ cmor.checkCMOR(fo,file,"Tables/CMIP5_6hrLev")
 ## try:
 ##     gatt = "project_id"
 ##     print 'Testing Validity of %s' % (gatt)
-##     F="hus_6hrLev_pcmdi-10a_noVolc2000_r1i1p1_2010010100-2010010218.nc"
+##     F="hus_6hrLev_pcmdi-10a_DcppC2_r1i1p1_2010010100-2010010218.nc"
 ##     shutil.copy(file,F)
 ##     os.popen("ncdump %s > crap.txt"%F).readlines()
 ##     fi=open("crap.txt")
@@ -762,7 +762,7 @@ cmor.checkCMOR(fo,file,"Tables/CMIP5_6hrLev")
 
 ## try:
 ##     print 'Testing Validity of variable type'
-##     F="hus_6hrLev_pcmdi-10a_noVolc2000_r1i1p1_2010010100-2010010218.nc"
+##     F="hus_6hrLev_pcmdi-10a_DcppC2_r1i1p1_2010010100-2010010218.nc"
 ##     shutil.copy(file,F)
 ##     os.popen("ncdump %s > crap.txt"%F).readlines()
 ##     fi=open("crap.txt")
@@ -792,7 +792,7 @@ cmor.checkCMOR(fo,file,"Tables/CMIP5_6hrLev")
 ## os.remove(F)
 ## try:
 ##     print 'Testing Validity of coordinate type'
-##     F="hus_6hrLev_pcmdi-10a_noVolc2000_r1i1p1_2010010100-2010010218.nc"
+##     F="hus_6hrLev_pcmdi-10a_DcppC2_r1i1p1_2010010100-2010010218.nc"
 ##     shutil.copy(file,F)
 ##     os.popen("ncdump %s > crap.txt"%F).readlines()
 ##     fi=open("crap.txt")
@@ -822,7 +822,7 @@ cmor.checkCMOR(fo,file,"Tables/CMIP5_6hrLev")
 ## os.remove(F)
 ## try:
 ##     print 'Testing Validity of coordinate type'
-##     F="hus_6hrLev_pcmdi-10a_noVolc2000_r1i1p1_2010010100-2010010218.nc"
+##     F="hus_6hrLev_pcmdi-10a_DcppC2_r1i1p1_2010010100-2010010218.nc"
 ##     shutil.copy(file,F)
 ##     os.popen("ncdump %s > crap.txt"%F).readlines()
 ##     fi=open("crap.txt")
@@ -852,7 +852,7 @@ cmor.checkCMOR(fo,file,"Tables/CMIP5_6hrLev")
 ## os.remove(F)
 ## try:
 ##     print 'Testing Validity of coordinate name'
-##     F="hus_6hrLev_pcmdi-10a_noVolc2000_r1i1p1_2010010100-2010010218.nc"
+##     F="hus_6hrLev_pcmdi-10a_DcppC2_r1i1p1_2010010100-2010010218.nc"
 ##     shutil.copy(file,F)
 ##     os.popen("ncdump %s > crap.txt"%F).readlines()
 ##     fi=open("crap.txt")
@@ -884,7 +884,7 @@ cmor.checkCMOR(fo,file,"Tables/CMIP5_6hrLev")
 ## os.remove(F)
 ## try:
 ##     print 'Testing Validity of coordinate units'
-##     F="hus_6hrLev_pcmdi-10a_noVolc2000_r1i1p1_2010010100-2010010218.nc"
+##     F="hus_6hrLev_pcmdi-10a_DcppC2_r1i1p1_2010010100-2010010218.nc"
 ##     shutil.copy(file,F)
 ##     os.popen("ncdump %s > crap.txt"%F).readlines()
 ##     fi=open("crap.txt")
@@ -914,7 +914,7 @@ cmor.checkCMOR(fo,file,"Tables/CMIP5_6hrLev")
 ## try:
 ##     import cdms2
 ##     print 'Testing Validity of time units'
-##     F="hus_6hrLev_pcmdi-10a_noVolc2000_r1i1p1_2010010100-2010010218.nc"
+##     F="hus_6hrLev_pcmdi-10a_DcppC2_r1i1p1_2010010100-2010010218.nc"
 ##     shutil.copy(file,F)
 ##     f=cdms2.open(F,"r+")
 ##     t=f['hus'].getTime()
@@ -963,7 +963,7 @@ cmor.checkCMOR(fo,file,"Tables/CMIP5_6hrLev")
 ## try:
 ##     import cdms2
 ##     print 'Testing time is mean of bounds'
-##     F="hus_6hrLev_pcmdi-10a_noVolc2000_r1i1p1_2010010100-2010010218.nc"
+##     F="hus_6hrLev_pcmdi-10a_DcppC2_r1i1p1_2010010100-2010010218.nc"
 ##     shutil.copy(file,F)
 ##     os.popen("ncdump %s > crap.txt"%F).readlines()
 ##     fi=open("crap.txt")
@@ -999,7 +999,7 @@ cmor.checkCMOR(fo,file,"Tables/CMIP5_6hrLev")
 ## try:
 ##     import cdms2
 ##     print 'Testing lack of bounds'
-##     F="hus_6hrLev_pcmdi-10a_noVolc2000_r1i1p1_2010010100-2010010218.nc"
+##     F="hus_6hrLev_pcmdi-10a_DcppC2_r1i1p1_2010010100-2010010218.nc"
 ##     shutil.copy(file,F)
 ##     os.popen("ncdump %s > crap.txt"%F).readlines()
 ##     fi=open("crap.txt")
@@ -1045,7 +1045,7 @@ cmor.checkCMOR(fo,file,"Tables/CMIP5_6hrLev")
 ## try:
 ##     import cdms2
 ##     print 'Testing lack of bounds'
-##     F="hus_6hrLev_pcmdi-10a_noVolc2000_r1i1p1_2010010100-2010010218.nc"
+##     F="hus_6hrLev_pcmdi-10a_DcppC2_r1i1p1_2010010100-2010010218.nc"
 ##     shutil.copy(file,F)
 ##     os.popen("ncdump %s > crap.txt"%F).readlines()
 ##     fi=open("crap.txt")
@@ -1105,7 +1105,7 @@ cmor.checkCMOR(fo,file,"Tables/CMIP5_6hrLev")
 ## try:
 ##     import cdms2
 ##     print 'Testing lack of formulaterms'
-##     F="hus_6hrLev_pcmdi-10a_noVolc2000_r1i1p1_2010010100-2010010218.nc"
+##     F="hus_6hrLev_pcmdi-10a_DcppC2_r1i1p1_2010010100-2010010218.nc"
 ##     shutil.copy(file,F)
 ##     os.popen("ncdump %s > crap.txt"%F).readlines()
 ##     fi=open("crap.txt")
@@ -1148,7 +1148,7 @@ cmor.checkCMOR(fo,file,"Tables/CMIP5_6hrLev")
 ## os.remove(F)
 ## try:
 ##     print 'Testing wrong names on zfactors axis for hybrid'
-##     F="hus_6hrLev_pcmdi-10a_noVolc2000_r1i1p1_2010010100-2010010218.nc"
+##     F="hus_6hrLev_pcmdi-10a_DcppC2_r1i1p1_2010010100-2010010218.nc"
 ##     shutil.copy(file,F)
 ##     os.popen("ncdump %s > crap.txt"%F).readlines()
 ##     fi=open("crap.txt")
@@ -1180,7 +1180,7 @@ cmor.checkCMOR(fo,file,"Tables/CMIP5_6hrLev")
 ## os.remove(F)
 ## try:
 ##     print 'Testing wrong names on stabdard_name axis for hybrid'
-##     F="hus_6hrLev_pcmdi-10a_noVolc2000_r1i1p1_2010010100-2010010218.nc"
+##     F="hus_6hrLev_pcmdi-10a_DcppC2_r1i1p1_2010010100-2010010218.nc"
 ##     shutil.copy(file,F)
 ##     os.popen("ncdump %s > crap.txt"%F).readlines()
 ##     fi=open("crap.txt")
@@ -1208,7 +1208,7 @@ cmor.checkCMOR(fo,file,"Tables/CMIP5_6hrLev")
 ## for anm in ['lon','lat','lev','time']:
     ## try:
     ##     print 'Testing axis attribute'
-    ##     F="hus_6hrLev_pcmdi-10a_noVolc2000_r1i1p1_2010010100-2010010218.nc"
+    ##     F="hus_6hrLev_pcmdi-10a_DcppC2_r1i1p1_2010010100-2010010218.nc"
     ##     shutil.copy(file,F)
     ##     os.popen("ncdump %s > crap.txt"%F).readlines()
     ##     fi=open("crap.txt")
@@ -1236,7 +1236,7 @@ cmor.checkCMOR(fo,file,"Tables/CMIP5_6hrLev")
     ## os.remove(F)
 ## try:
 ##     print 'Testing calendar attribute'
-##     F="hus_6hrLev_pcmdi-10a_noVolc2000_r1i1p1_2010010100-2010010218.nc"
+##     F="hus_6hrLev_pcmdi-10a_DcppC2_r1i1p1_2010010100-2010010218.nc"
 ##     shutil.copy(file,F)
 ##     os.popen("ncdump %s > crap.txt"%F).readlines()
 ##     fi=open("crap.txt")
@@ -1264,7 +1264,7 @@ cmor.checkCMOR(fo,file,"Tables/CMIP5_6hrLev")
 ## os.remove(F)
 ## try:
 ##     print 'Testing wrong calendar attribute'
-##     F="hus_6hrLev_pcmdi-10a_noVolc2000_r1i1p1_2010010100-2010010218.nc"
+##     F="hus_6hrLev_pcmdi-10a_DcppC2_r1i1p1_2010010100-2010010218.nc"
 ##     shutil.copy(file,F)
 ##     os.popen("ncdump %s > crap.txt"%F).readlines()
 ##     fi=open("crap.txt")
@@ -1293,7 +1293,7 @@ cmor.checkCMOR(fo,file,"Tables/CMIP5_6hrLev")
 ## os.remove(F)
 ## try:
 ##     print 'Testing wrong variable datatype'
-##     F="hus_6hrLev_pcmdi-10a_noVolc2000_r1i1p1_2010010100-2010010218.nc"
+##     F="hus_6hrLev_pcmdi-10a_DcppC2_r1i1p1_2010010100-2010010218.nc"
 ##     shutil.copy(file,F)
 ##     os.popen("ncdump %s > crap.txt"%F).readlines()
 ##     fi=open("crap.txt")
@@ -1322,7 +1322,7 @@ cmor.checkCMOR(fo,file,"Tables/CMIP5_6hrLev")
 ## os.remove(F)
 ## try:
 ##     print 'Testing wrong variable name'
-##     F="HUS_6hrLev_pcmdi-10a_noVolc2000_r1i1p1_2010010100-2010010218.nc"
+##     F="HUS_6hrLev_pcmdi-10a_DcppC2_r1i1p1_2010010100-2010010218.nc"
 ##     shutil.copy(file,F)
 ##     os.popen("ncdump %s > crap.txt"%F).readlines()
 ##     fi=open("crap.txt")
@@ -1351,7 +1351,7 @@ cmor.checkCMOR(fo,file,"Tables/CMIP5_6hrLev")
 ## os.remove(F)
 ## try:
 ##     print 'Testing wrong variable name'
-##     F="hus_6hrLev_pcmdi-10a_noVolc2000_r1i1p1_2010010100-2010010218.nc"
+##     F="hus_6hrLev_pcmdi-10a_DcppC2_r1i1p1_2010010100-2010010218.nc"
 ##     shutil.copy(file,F)
 ##     os.popen("ncdump %s > crap.txt"%F).readlines()
 ##     fi=open("crap.txt")
@@ -1380,7 +1380,7 @@ cmor.checkCMOR(fo,file,"Tables/CMIP5_6hrLev")
 ## os.remove(F)
 ## try:
 ##     print 'Testing wrong variable units'
-##     F="hus_6hrLev_pcmdi-10a_noVolc2000_r1i1p1_2010010100-2010010218.nc"
+##     F="hus_6hrLev_pcmdi-10a_DcppC2_r1i1p1_2010010100-2010010218.nc"
 ##     shutil.copy(file,F)
 ##     os.popen("ncdump %s > crap.txt"%F).readlines()
 ##     fi=open("crap.txt")
@@ -1409,7 +1409,7 @@ cmor.checkCMOR(fo,file,"Tables/CMIP5_6hrLev")
 ## os.remove(F)
 ## try:
 ##     print 'Testing wrong dim ordering'
-##     F="hus_6hrLev_pcmdi-10a_noVolc2000_r1i1p1_2010010100-2010010218.nc"
+##     F="hus_6hrLev_pcmdi-10a_DcppC2_r1i1p1_2010010100-2010010218.nc"
 ##     shutil.copy(file,F)
 ##     os.popen("ncdump %s > crap.txt"%F).readlines()
 ##     fi=open("crap.txt")
@@ -1446,7 +1446,7 @@ cmor.checkCMOR(fo,file,"Tables/CMIP5_6hrLev")
 ## datanew = """ lon = """+"""358, 354, 350, 346, 342, 338, 334, 330, 326, 322, 318, 314, 310, 306, 302, 298, 294, 290, 286, 282, 278, 274, 270, 266, 262, 258, 254, 250, 246, 242, 238, 234, 230, 226, 222, 218, 214, 210, 206, 202, 198, 194, 190, 186, 182, 178, 174, 170, 166, 162, 158, 154, 150, 146, 142, 138, 134, 130, 126, 122, 118, 114, 110, 106, 102, 98, 94, 90, 86, 82, 78, 74, 70, 66, 62, 58, 54, 50, 46, 42, 38, 34, 30, 26, 22, 18, 14, 10, 6, 2 ;"""
 ## try:
 ##     print 'Testing wrong dim ordering'
-##     F="hus_6hrLev_pcmdi-10a_noVolc2000_r1i1p1_2010010100-2010010218.nc"
+##     F="hus_6hrLev_pcmdi-10a_DcppC2_r1i1p1_2010010100-2010010218.nc"
 ##     shutil.copy(file,F)
 ##     os.popen("ncdump %s > crap.txt"%F).readlines()
 ##     fi=open("crap.txt")
@@ -1478,7 +1478,7 @@ cmor.checkCMOR(fo,file,"Tables/CMIP5_6hrLev")
 ## os.remove(F)
 ## try:
 ##     print 'Testing wrong dim ordering'
-##     F="hus_6hrLev_pcmdi-10a_noVolc2000_r1i1p1_2010010100-2010010218.nc"
+##     F="hus_6hrLev_pcmdi-10a_DcppC2_r1i1p1_2010010100-2010010218.nc"
 ##     shutil.copy(file,F)
 ##     os.popen("ncdump %s > crap.txt"%F).readlines()
 ##     fi=open("crap.txt")
@@ -1513,7 +1513,7 @@ cmor.checkCMOR(fo,file,"Tables/CMIP5_6hrLev")
 ##     -36, -40, -44, -48, -52, -56, -60, -64, -68, -72, -76, -80, -84, -88 ;"""
 ## try:
 ##     print 'Testing wrong dim ordering'
-##     F="hus_6hrLev_pcmdi-10a_noVolc2000_r1i1p1_2010010100-2010010218.nc"
+##     F="hus_6hrLev_pcmdi-10a_DcppC2_r1i1p1_2010010100-2010010218.nc"
 ##     shutil.copy(file,F)
 ##     os.popen("ncdump %s > crap.txt"%F).readlines()
 ##     fi=open("crap.txt")
@@ -1548,7 +1548,7 @@ cmor.checkCMOR(fo,file,"Tables/CMIP5_6hrLev")
 
 ## try:
 ##     print 'Testing wrong dim ordering'
-##     F="hus_6hrLev_pcmdi-10a_noVolc2000_r1i1p1_2010010100-2009123018.nc"
+##     F="hus_6hrLev_pcmdi-10a_DcppC2_r1i1p1_2010010100-2009123018.nc"
 ##     shutil.copy(file,F)
 ##     os.popen("ncdump %s > crap.txt"%F).readlines()
 ##     fi=open("crap.txt")
@@ -1580,7 +1580,7 @@ cmor.checkCMOR(fo,file,"Tables/CMIP5_6hrLev")
 ## os.remove(F)
 ## try:
 ##     print 'Testing fill and miss values different ordering'
-##     F="hus_6hrLev_pcmdi-10a_noVolc2000_r1i1p1_2010010100-2010010218.nc"
+##     F="hus_6hrLev_pcmdi-10a_DcppC2_r1i1p1_2010010100-2010010218.nc"
 ##     shutil.copy(file,F)
 ##     os.popen("ncdump %s > crap.txt"%F).readlines()
 ##     fi=open("crap.txt")
@@ -1612,7 +1612,7 @@ cmor.checkCMOR(fo,file,"Tables/CMIP5_6hrLev")
 ## os.remove(F)
 ## try:
 ##     print 'Testing fill and miss values different ordering'
-##     F="hus_6hrLev_pcmdi-10a_noVolc2000_r1i1p1_2010010100-2010010218.nc"
+##     F="hus_6hrLev_pcmdi-10a_DcppC2_r1i1p1_2010010100-2010010218.nc"
 ##     shutil.copy(file,F)
 ##     os.popen("ncdump %s > crap.txt"%F).readlines()
 ##     fi=open("crap.txt")
@@ -1645,7 +1645,7 @@ cmor.checkCMOR(fo,file,"Tables/CMIP5_6hrLev")
 ## for att in ['associated_files','cell_measures','long_name','standard_name','units']:
 ##     try:
 ##         print 'Testing required var att %s' % att
-##         F="hus_6hrLev_pcmdi-10a_noVolc2000_r1i1p1_2010010100-2010010218.nc"
+##         F="hus_6hrLev_pcmdi-10a_DcppC2_r1i1p1_2010010100-2010010218.nc"
 ##         shutil.copy(file,F)
 ##         os.popen("ncdump %s > crap.txt"%F).readlines()
 ##         fi=open("crap.txt")
@@ -1674,7 +1674,7 @@ cmor.checkCMOR(fo,file,"Tables/CMIP5_6hrLev")
 ## att = 'associated_files'
 ## try:
 ##     print 'Testing wrong var att %s' % att
-##     F="hus_6hrLev_pcmdi-10a_noVolc2000_r1i1p1_2010010100-2010010218.nc"
+##     F="hus_6hrLev_pcmdi-10a_DcppC2_r1i1p1_2010010100-2010010218.nc"
 ##     shutil.copy(file,F)
 ##     os.popen("ncdump %s > crap.txt"%F).readlines()
 ##     fi=open("crap.txt")
@@ -1703,14 +1703,14 @@ cmor.checkCMOR(fo,file,"Tables/CMIP5_6hrLev")
 ## os.remove(F)
 ## try:
 ##     print 'Testing wrong var att %s' % att
-##     F="hus_6hrLev_pcmdi-10a_noVolc2000_r1i1p1_2010010100-2010010218.nc"
+##     F="hus_6hrLev_pcmdi-10a_DcppC2_r1i1p1_2010010100-2010010218.nc"
 ##     shutil.copy(file,F)
 ##     os.popen("ncdump %s > crap.txt"%F).readlines()
 ##     fi=open("crap.txt")
 ##     f=open("crapo.txt","w")
 ##     for ln in fi.xreadlines():
 ##         if ln.find("hus:%s"%att)>-1:
-##             f.write(' hus:associated_files = "baseURL: http://cmip-pcmdi.llnl.gov/CMIP5/dataLocation gridspecFile: gridspec_fx_pcmdi-10a_noVolc2000_r0i0p0.nc cellAreaFile: areacellla_fx_pcmdi-10a_noVolc2000_r0i0p0.nc" ;')
+##             f.write(' hus:associated_files = "baseURL: http://cmip-pcmdi.llnl.gov/CMIP5/dataLocation gridspecFile: gridspec_fx_pcmdi-10a_DcppC2_r0i0p0.nc cellAreaFile: areacellla_fx_pcmdi-10a_DcppC2_r0i0p0.nc" ;')
 ##             continue
 ##         f.write(ln)
 ##     f.close()
@@ -1733,7 +1733,7 @@ cmor.checkCMOR(fo,file,"Tables/CMIP5_6hrLev")
 att="cell_measures"
 try:
     print 'Testing wrong var att %s' % att
-    F="hus_6hrLev_pcmdi-10a_noVolc2000_r1i1p1_2010010100-2010010218.nc"
+    F="hus_6hrLev_pcmdi-10a_DcppC2_r1i1p1_2010010100-2010010218.nc"
     shutil.copy(file,F)
     os.popen("ncdump %s > crap.txt"%F).readlines()
     fi=open("crap.txt")
diff --git a/Test/test_cmor_grid_alejandro.f90 b/Test/test_cmor_grid_alejandro.f90
index 600261b..98d3202 100644
--- a/Test/test_cmor_grid_alejandro.f90
+++ b/Test/test_cmor_grid_alejandro.f90
@@ -86,11 +86,7 @@ PROGRAM test_cmor_grid
    !+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    ! Define dataset as output from COSP, and other model details
    !+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-   error_flag = cmor_dataset(outpath='Test/',experiment_id='AMIP',institution='Met Office', &
-                    source='GICCM1 2002 source',calendar='360_day',realization=1,contact='alejandro.bodas at metoffice.gov.uk', &
-                    history='history',comment='En un lugar de la Mancha de cuyo nombre no quiero acordarme', &
-                    references='references',forcing="CH4",&
-                    institute_id="PCMDI",model_id="GICCM1")
+   error_flag = cmor_dataset_json("Test/test2.json")
    
    print *, '---------------Define axis'
    !+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
diff --git a/Test/test_compression.json b/Test/test_compression.json
new file mode 100644
index 0000000..c618eb2
--- /dev/null
+++ b/Test/test_compression.json
@@ -0,0 +1,62 @@
+{
+           "_control_vocabulary_file": "CMIP6_CV.json",
+           "_cmip6_option":           "CMIP6",
+
+    "activity_id":                  "CMIP",
+    "outpath":                      "CMIP6",
+    "experiment_id":                "piControl",
+    "calendar":                     "360_day",
+    "realization_index":            "1",
+    "initialization_index":         "1",
+    "physics_index":                "1",
+    "forcing_index":                "1",
+     "source_type":                      "AOGCM",
+     "sub_experiment":                      "none",
+     "sub_experiment_id":                      "none",
+     "parent_sub_experiment_id":                      "N/A",
+     "parent_mip_era":                      "N/A",
+     "mip_era":                      "CMIP6",
+    "contact ":                     "Python Coder (python at a.b.com) ",
+    "institution_id":                 "PCMDI",
+    "model_id":                     "GICCM1",
+    "history":                      "output from archivcl_A1.nce/giccm_03_std_2xCO2_2256.",
+    "comment":                      "equilibrium reached after 30-year spin-up ",
+    "references":                   "model described by Koder and Tolkien ",
+    "model_id":                     "pcmdi-10a", 
+    "parent_experiment_rip":        "r1i3p2",
+    "parent_experiment_id":         "lgm",
+    "parent_variant_label":            "r1i3p2",
+    "branch_time":                  "0",
+
+
+    "parent_activity_id":           "CMIP",
+    "parent_source_id":             "GFDL-CM2-1",
+    "parent_variant_label":            "r1i1p1f3",
+
+    "branch_method":                "standard",
+    "branch_time_in_child":         "00D0",
+    "branch_time_in_parent":        "3650.0D0",
+    "branch_time_units_in_parent":  "days since 1000-1-1",
+
+    "further_info_url":             "http://furtherinfo.es-doc.org/<mip_era><institution_id><source_id><experiment_id><sub_experiment_id><variant_label>",
+    "grid":                         "native atmosphere T63 gaussian grid (64x128 latxlon)",
+    "grid_label":                  "gn",
+    "grid_resolution":              "5 km",
+
+    "institution_id":               "CSIRO-BOM",
+    "institution":                  "Commonwealth Scientific and Industrial Research Organisation, Australia, and Bureau of Meteorology, Australia",
+
+    "references":                   "Model described by Koder and Tolkien (J. Geophys. Res.,2001, 576 - 591).  Also see http://www.GICC.su/giccm/doc/index.html  2XCO2 simulation described in Dorkey et al. '(Clim. Dyn., 2003, 323 - 357.)",
+    "run_variant":                  "forcing: black carbon aerosol only",
+    "source_id":                    "NICAM",
+    "source":                       "NICAM:",
+    "output_path_template":         "<activity_id><institution_id><source_id><experiment_id><variant_label><table><variable_id><grid_label><version>",
+    "output_file_template":         "<variable_id><table><experiment_id><source_id><variant_label><grid_label>",
+
+    "license":                      "One of 2 licenses: ----- CMIP6 model data produced by <Your CentreName> is licensed under a Creative Commons Attribution 'NonCommercial Share Alike' 4.0 International License (http://creativecommons.org/licenses/by/4.0/). Use of the data should be acknowledged following guidelines found at <what URL???> The data is hosted via the Earth System Grid Federation. Permissions beyond the scope of this license may be available at http://pcmdi.org/cmip5/terms [...]
+
+
+}
+
+
+
diff --git a/Test/test_compression.py b/Test/test_compression.py
index 5d2287b..81d183a 100644
--- a/Test/test_compression.py
+++ b/Test/test_compression.py
@@ -7,7 +7,8 @@ except:
     
 import cmor,numpy
 
-f=cdms2.open(os.path.join(sys.prefix,'sample_data/clt.nc'))
+f=cdms2.open(os.path.join('data/clt.nc'))
+
 
 pth = os.path.split(os.path.realpath(os.curdir))
 if pth[-1]=='Test':
@@ -18,20 +19,9 @@ cmor.setup(inpath=ipth,
            set_verbosity=cmor.CMOR_NORMAL,
            netcdf_file_action = cmor.CMOR_REPLACE)
 
-cmor.dataset(
-    outpath = opth,
-    experiment_id = "historical",
-    institution = "PCMDI",
-    source = "GICCM1 2002",
-    calendar = "standard",
-    contact="Tim Lincecum",
-    institute_id="PCMDI",
-    model_id="GICCM1",forcing="Nat",
-    parent_experiment_id="N/A",
-    parent_experiment_rip="N/A",
-    branch_time=0.)
+cmor.dataset_json("test_compression.json")
 
-cmor.load_table("Tables/CMIP5_Amon")
+cmor.load_table("Tables/CMIP6_Amon.json")
 
 s=f("clt",slice(14))
 Saxes = s.getAxisList()
@@ -57,7 +47,7 @@ sh=list(s.shape)
 sh[0]=nt
 s=numpy.resize(s,sh)
 #s=numpy.where(numpy.greater(s,100.),100,s)
-s=numpy.random.random(s.shape)*100.
+s=numpy.random.random(s.shape)*10000.
 print s.shape
 cmor.write(var_id1,s)
 cmor.close(var_id1)
diff --git a/Test/test_dimensionless.f90 b/Test/test_dimensionless.f90
index 472bcc6..39fdef2 100644
--- a/Test/test_dimensionless.f90
+++ b/Test/test_dimensionless.f90
@@ -214,34 +214,12 @@ PROGRAM ipcc_test_code
   !   experiment conditions, and provide information to be included as 
   !   attributes in all CF-netCDF files written as part of this dataset.
 
-  error_flag = cmor_dataset(                                   &
-       outpath='Test',                                         &
-       experiment_id='abrupt 4XCO2',           &
-       institution=                                            &
-       'GICC (Generic International Climate Center, ' //       &
-       'Geneva, Switzerland)',                                 &
-       source='GICCM1 (2002): ' //                             &
-       'atmosphere:  GICAM3 (gicam_0_brnchT_itea_2, T63L32); '// &
-       'ocean: MOM (mom3_ver_3.5.2, 2x3L15); '             //  &
-       'sea ice: GISIM4; land: GILSM2.5',                      &
-       calendar='360_day',                                      &
-       realization=1,                                          &
-       history='Output from archive/giccm_03_std_2xCO2_2256.', &
-       comment='Equilibrium reached after 30-year spin-up ' // &
-       'after which data were output starting with nominal '// &
-       'date of January 2030',                                 &
-       references='Model described by Koder and Tolkien ' //   &
-       '(J. Geophys. Res., 2001, 576-591).  Also '        //   &
-       'see http://www.GICC.su/giccm/doc/index.html '     //   &
-       ' 2XCO2 simulation described in Dorkey et al. '    //   &
-       '(Clim. Dyn., 2003, 323-357.)', model_id="GICCM1", &
-       forcing='TO',contact="Barry Bonds",institute_id="PCMDI",&
-       parent_experiment_rip="N/A",parent_experiment_id="N/A",branch_time=bt)
+  error_flag = cmor_dataset_json("Test/test2.json")
   
   !  Define all axes that will be needed
   
   ilat = cmor_axis(  &
-       table='Tables/CMIP5_Amon',        &
+       table='Tables/CMIP6_Amon.json',        &
        table_entry='latitude',       &
        units='degrees_north',        &  
        length=lat,                   &
@@ -249,7 +227,7 @@ PROGRAM ipcc_test_code
        cell_bounds=bnds_lat)        
       
   ilon = cmor_axis(  &
-       table='Tables/CMIP5_Amon',        &
+       table='Tables/CMIP6_Amon.json',        &
        table_entry='longitude',      &
        length=lon,                   &
        units='degrees_east',         &
@@ -257,7 +235,7 @@ PROGRAM ipcc_test_code
        cell_bounds=bnds_lon)      
         
   ilat2 = cmor_axis(  &
-       table='Tables/CMIP5_Lmon',        &
+       table='Tables/CMIP6_Lmon.json',        &
        table_entry='latitude',       &
        units='degrees_north',        &  
        length=lat,                   &
@@ -265,7 +243,7 @@ PROGRAM ipcc_test_code
        cell_bounds=bnds_lat)        
       
   ilon2 = cmor_axis(  &
-       table='Tables/CMIP5_Lmon',        &
+       table='Tables/CMIP6_Lmon.json',        &
        table_entry='longitude',      &
        length=lon,                   &
        units='degrees_east',         &
@@ -275,8 +253,8 @@ PROGRAM ipcc_test_code
 
 print*, 'Test Code:',lev,':',plevs
   ipres = cmor_axis(  &
-       table='Tables/CMIP5_Amon',        &
-       table_entry='plevs',       &
+       table='Tables/CMIP6_Amon.json',        &
+       table_entry='plev17',       &
        units='Pa',                   &
        length=lev2,                   &
        coord_vals=plevs)
@@ -285,14 +263,14 @@ print*, 'Test Code:',lev,':',plevs
   !   cmor_write (later, below).
 
   itim = cmor_axis(  &
-       table='Tables/CMIP5_Amon',        &
+       table='Tables/CMIP6_Amon.json',        &
        table_entry='time',           &
        units='days since 2030-1-1',  &
        length=ntimes,                &
        interval='1 month')
   
   itim2 = cmor_axis(  &
-       table='Tables/CMIP5_Lmon',        &
+       table='Tables/CMIP6_Lmon.json',        &
        table_entry='time',           &
        units='days since 2030-1-1',  &
        length=ntimes,                &
@@ -303,7 +281,7 @@ print*, 'Test Code:',lev,':',plevs
   zlev_bnds=(/ 0.,.2, .42, .62, .8, 1. /)
 
   ilev = cmor_axis(  &
-       table='Tables/CMIP5_Amon',        &
+       table='Tables/CMIP6_Amon.json',        &
        table_entry='standard_hybrid_sigma',       &
        units='1',  &
        length=lev,                   &
@@ -348,7 +326,7 @@ print*, 'Test Code:',lev,':',plevs
   !    (appearing in IPCC table A1c)
 
   var3d_ids(1) = cmor_variable(    &
-       table='Tables/CMIP5_Amon',      &
+       table='Tables/CMIP6_Amon.json',      &
        table_entry=entry3d(1),     &
        units=units3d(1),           &
        axis_ids=(/ ilev, ilon, ilat, itim /),  &
@@ -360,7 +338,7 @@ print*, 'Test Code:',lev,':',plevs
   
   DO m=2,n3d
      var3d_ids(m) = cmor_variable(    &
-          table='Tables/CMIP5_Amon',      &
+          table='Tables/CMIP6_Amon.json',      &
           table_entry=entry3d(m),     &
           units=units3d(m),           &
           axis_ids=(/ ipres, ilon, ilat, itim /), &
@@ -375,7 +353,7 @@ print*, 'Test Code:',lev,':',plevs
      print*, m, entry2d(m)
      if (m.ne.3) then
      var2d_ids(m) = cmor_variable(    &
-          table='Tables/CMIP5_Amon',      &
+          table='Tables/CMIP6_Amon.json',      &
           table_entry=entry2d(m),     & 
           units=units2d(m),           & 
           axis_ids=(/ ilon, ilat, itim /), &
@@ -384,7 +362,7 @@ print*, 'Test Code:',lev,':',plevs
           original_name=varin2d(m))   
   else
      var2d_ids(m) = cmor_variable(    &
-          table='Tables/CMIP5_Lmon',      &
+          table='Tables/CMIP6_Lmon.json',      &
           table_entry=entry2d(m),     & 
           units=units2d(m),           & 
           axis_ids=(/ ilon2, ilat2, itim2 /), &
diff --git a/Test/test_doc.json b/Test/test_doc.json
new file mode 100644
index 0000000..8661301
--- /dev/null
+++ b/Test/test_doc.json
@@ -0,0 +1,41 @@
+{
+    "_control_vocabulary_file":     "CMIP6_CV.json",
+    "_cmip6_option":                "CMIP6",
+
+    "activity_id":                  "CMIP",
+    "outpath":                      "CMIP6",
+    "experiment_id":                "piControl",
+    "calendar":                     "360_day",
+    "realization_index":            "1",
+    "initialization_index":         "1",
+    "physics_index":                "1",
+    "forcing_index":                "1",
+    "source_type":                  "AOGCM",
+    "sub_experiment":               "none",
+    "sub_experiment_id":            "none",
+    "contact ":                     "Python Coder (python at a.b.com) ",
+    "branch_time":                  "0",
+    "branch_method":                "standard",
+
+    "further_info_url":             "http://furtherinfo.es-doc.org/<mip_era><institution_id><source_id><experiment_id><sub_experiment_id><variant_label>",
+    "grid":                         "native atmosphere T63 gaussian grid (64x128 latxlon)",
+    "grid_label":                  "gn",
+    "grid_resolution":              "5 km",
+
+    "institution_id":               "CSIRO-BOM",
+    "institution":                  "Commonwealth Scientific and Industrial Research Organisation, Australia, and Bureau of Meteorology, Australia",
+
+    "references":                   "Model described by Koder and Tolkien (J. Geophys. Res.,2001, 576 - 591).  Also see http://www.GICC.su/giccm/doc/index.html  2XCO2 simulation described in Dorkey et al. '(Clim. Dyn., 2003, 323 - 357.)",
+    "run_variant":                  "forcing: black carbon aerosol only",
+    "source_id":                    "NICAM",
+    "source":                       "NICAM:",
+    "output_path_template":         "<activity_id><institution_id><source_id><experiment_id><variant_label><table><variable_id><grid_label><version>",
+    "output_file_template":         "<variable_id><table><experiment_id><source_id><variant_label><grid_label>",
+
+    "license":                      "CMIP6 model data produced by <Your CentreName> is licensed under a Creative Commons Attribution 'NonCommercial Share Alike' 4.0 International License (http://creativecommons.org/licenses/by/4.0/). Use of the data should be acknowledged following guidelines found at <what URL???> The data is hosted via the Earth System Grid Federation. Permissions beyond the scope of this license may be available at http://pcmdi.org/cmip5/terms-of-use.   Individuals us [...]
+
+
+}
+
+
+
diff --git a/Test/test_doc.py b/Test/test_doc.py
new file mode 100644
index 0000000..4f290a3
--- /dev/null
+++ b/Test/test_doc.py
@@ -0,0 +1,31 @@
+import cmor
+
+cmor.setup(inpath='Tables',netcdf_file_action=cmor.CMOR_REPLACE_4)
+
+cmor.dataset_json("Test/test_doc.json")
+    
+table='CMIP6_Amon.json'
+cmor.load_table(table)
+
+itime = cmor.axis(table_entry= 'time',
+                  units= 'days since 2000-01-01 00:00:00',
+                  coord_vals= [15,],
+                  cell_bounds= [0, 30])
+ilat = cmor.axis(table_entry= 'latitude',
+                 units= 'degrees_north',
+                 coord_vals= [0],
+                 cell_bounds= [-1, 1])
+ilon = cmor.axis(table_entry= 'longitude',
+                 units= 'degrees_east',
+                 coord_vals= [90],
+                 cell_bounds= [89, 91])
+
+axis_ids = [itime,ilat,ilon]
+              
+varid = cmor.variable('ts', 'K', axis_ids)
+cmor.write(varid, [273])
+outfile=cmor.close(varid, file_name=True)
+print "File written: ",outfile
+cmor.close()
+
+
diff --git a/Test/test_fortran_example_00.f90 b/Test/test_fortran_example_00.f90
index 59f4675..b490cd4 100644
--- a/Test/test_fortran_example_00.f90
+++ b/Test/test_fortran_example_00.f90
@@ -137,36 +137,14 @@ program testing
   error_flag = cmor_setup(inpath='Test', netcdf_file_action=j,&
        exit_control=k)
   print*,'Test code: done'
-  error_flag = cmor_dataset(                                   &
-       outpath='Test',                                         &
-       experiment_id='abrupt 4XCO2',           &
-       institution=                                            &
-       'GICC (Generic International Climate Center, ' //       &
-       'Geneva, Switzerland)',                                 &
-       source='GICCM1 (2002): ' //                             &
-       'atmosphere:  GICAM3 (gicam_0_brnchT_itea_2, T63L32); '// &
-       'ocean: MOM (mom3_ver_3.5.2, 2x3L15); '             //  &
-       'sea ice: GISIM4; land: GILSM2.5',                      &
-       calendar='360_day',                                      &
-       realization=1,                                          &
-       history='Output from archive/giccm_03_std_2xCO2_2256.', &
-       comment='Equilibrium reached after 30-year spin-up ' // &
-       'after which data were output starting with nominal '// &
-       'date of January 2030',                                 &
-       references='Model described by Koder and Tolkien ' //   &
-       '(J. Geophys. Res., 2001, 576-591).  Also '        //   &
-       'see http://www.GICC.su/giccm/doc/index.html '     //   &
-       ' 2XCO2 simulation described in Dorkey et al. '    //   &
-       '(Clim. Dyn., 2003, 323-357.)', model_id="GICCM1", &
-       forcing='TO',contact="Barry Bonds",institute_id="PCMDI",&
-       parent_experiment_rip="N/A",parent_experiment_id="N/A",branch_time=bt)
+  error_flag = cmor_dataset_json("Test/test2.json")
   print*, 'Test code: done 2 lalala'
   
   call read_coords(alats, alons, plevs, bnds_lat, bnds_lon)
   
 
   ilat2 = cmor_axis(  &
-       table='Tables/CMIP5_Lmon',        &
+       table='Tables/CMIP6_Lmon.json',        &
        table_entry='latitude',       &
        units='degrees_north',        &  
        length=lat,                   &
@@ -174,7 +152,7 @@ program testing
        cell_bounds=bnds_lat)        
       
   ilon2 = cmor_axis(  &
-       table='Tables/CMIP5_Lmon',        &
+       table='Tables/CMIP6_Lmon.json',        &
        table_entry='longitude',      &
        length=lon,                   &
        units='degrees_east',         &
@@ -182,7 +160,7 @@ program testing
        cell_bounds=bnds_lon)      
         
   itim2 = cmor_axis(  &
-       table='Tables/CMIP5_Lmon',        &
+       table='Tables/CMIP6_Lmon.json',        &
        table_entry='time',           &
        units='days since 2030-1-1',  &
        length=ntimes,                &
@@ -190,7 +168,7 @@ program testing
 
   print*, 'Test code: ok calling axis stuff lat'
   ilat = cmor_axis(  &
-       table='Tables/CMIP5_Amon',    &
+       table='Tables/CMIP6_Amon.json',    &
        table_entry='latitude',       &
        units='degrees_north',        &  
        length=lat,                   &
@@ -199,7 +177,7 @@ program testing
       
   print*, 'Test code: ok calling axis stuff lon',ilat
   ilon = cmor_axis(  &
-       table='Tables/CMIP5_Amon',    &
+       table='Tables/CMIP6_Amon.json',    &
        table_entry='longitude',      &
        length=lon,                   &
        units='degrees_east',         &
@@ -208,8 +186,8 @@ program testing
         
   print*, 'Test code: ok calling axis stuff pressure',ilon
   ipres = cmor_axis(  &
-       table='Tables/CMIP5_Amon',    &
-       table_entry='plevs',       &
+       table='Tables/CMIP6_Amon.json',    &
+       table_entry='plev17',       &
        units='Pa',                   &
        length=lev2,                   &
        coord_vals=plevs)
@@ -220,7 +198,7 @@ program testing
 
   print*, 'Test code: ok calling axis stuff time',ipres
   itim = cmor_axis(  &
-       table='Tables/CMIP5_Amon',    &
+       table='Tables/CMIP6_Amon.json',    &
        table_entry='time',           &
        units='days since 2030-1-1',  &
        length=ntimes,                &
@@ -233,7 +211,7 @@ program testing
 
   print*, 'Test code: ok calling axis stuff lev2',itim
   ilev = cmor_axis(  &
-       table='Tables/CMIP5_Amon',    &
+       table='Tables/CMIP6_Amon.json',    &
        table_entry='standard_hybrid_sigma',       &
        units="1",   &
        length=lev,                   &
@@ -287,7 +265,7 @@ program testing
   print*, 'Test code: var3d'
   missing = 1.e28
   var3d_ids(1) = cmor_variable(    &
-       table='Tables/CMIP5_Amon',  &
+       table='Tables/CMIP6_Amon.json',  &
        table_entry=entry3d(1),     &
        units=units3d(1),           &
        axis_ids=(/ ilon, ilat, ilev, itim /),  &
@@ -301,7 +279,7 @@ program testing
   DO m=2,n3d
      print*, 'Test code: var: ',entry3d(m)
      var3d_ids(m) = cmor_variable(    &
-          table='Tables/CMIP5_Amon',  &
+          table='Tables/CMIP6_Amon.json',  &
           table_entry=entry3d(m),     &
           units=units3d(m),           &
           axis_ids=(/ ilon, ilat, ipres, itim /), &
@@ -317,7 +295,7 @@ program testing
      print*, 'Test code: var: ',entry2d(m)
      if (m.ne.3) then
      var2d_ids(m) = cmor_variable(    &
-          table='Tables/CMIP5_Amon',      &
+          table='Tables/CMIP6_Amon.json',      &
           table_entry=entry2d(m),     & 
           units=units2d(m),           & 
           axis_ids=(/ ilon, ilat, itim /), &
@@ -326,7 +304,7 @@ program testing
           original_name=varin2d(m))   
   else
      var2d_ids(m) = cmor_variable(    &
-          table='Tables/CMIP5_Lmon',      &
+          table='Tables/CMIP6_Lmon.json',      &
           table_entry=entry2d(m),     & 
           units=units2d(m),           & 
           axis_ids=(/ ilon2, ilat2, itim2 /), &
diff --git a/Test/test_fortran_example_01.f90 b/Test/test_fortran_example_01.f90
index af10e67..1c85f14 100644
--- a/Test/test_fortran_example_01.f90
+++ b/Test/test_fortran_example_01.f90
@@ -180,32 +180,10 @@ program testing
   error_flag = cmor_setup(inpath='Test', netcdf_file_action=j,&
        exit_control=k)
   
-    error_flag = cmor_dataset(                                   &
-       outpath='Test',                                         &
-       experiment_id='abrupt 4XCO2',           &
-       institution=                                            &
-       'GICC (Generic International Climate Center, ' //       &
-       'Geneva, Switzerland)',                                 &
-       source='GICCM1 (2002): ' //                             &
-       'atmosphere:  GICAM3 (gicam_0_brnchT_itea_2, T63L32); '// &
-       'ocean: MOM (mom3_ver_3.5.2, 2x3L15); '             //  &
-       'sea ice: GISIM4; land: GILSM2.5',                      &
-       calendar='360_day',                                      &
-       realization=1,                                          &
-       history='Output from archive/giccm_03_std_2xCO2_2256.', &
-       comment='Equilibrium reached after 30-year spin-up ' // &
-       'after which data were output starting with nominal '// &
-       'date of January 2030',                                 &
-       references='Model described by Koder and Tolkien ' //   &
-       '(J. Geophys. Res., 2001, 576-591).  Also '        //   &
-       'see http://www.GICC.su/giccm/doc/index.html '     //   &
-       ' 2XCO2 simulation described in Dorkey et al. '    //   &
-       '(Clim. Dyn., 2003, 323-357.)',model_id="GICCM1", &
-       forcing='TO',contact="Barry Bonds",institute_id="PCMDI",&
-       parent_experiment_rip="N/A",parent_experiment_id="N/A",branch_time=bt)
+    error_flag = cmor_dataset_json("Test/test2.json")
 
-    tables(1) = cmor_load_table('Tables/CMIP5_Amon')
-    tables(2) = cmor_load_table('Tables/CMIP5_grids')
+    tables(1) = cmor_load_table('Tables/CMIP6_Amon.json')
+    tables(2) = cmor_load_table('Tables/CMIP6_grids.json')
 
     axes(1) = cmor_axis(table_entry = 'x', &
                         units = 'm', &
@@ -230,7 +208,7 @@ program testing
     call cmor_set_table(table_id=tables(2))
 
      
-    axes(3) = cmor_axis(table = 'Tables/CMIP5_Amon',&
+    axes(3) = cmor_axis(table = 'Tables/CMIP6_Amon.json',&
                         table_entry = 'time',&
                         units = 'days since 1980',&
                         length = 2 &
@@ -240,7 +218,7 @@ program testing
     pass_axes(2) = axes(3)
     pass_axes(1) = grid_id
     
-    vars(1) = cmor_variable(table = 'Tables/CMIP5_Amon',&
+    vars(1) = cmor_variable(table = 'Tables/CMIP6_Amon.json',&
                             table_entry = 'hfls',&
                             units = 'W m-2',&
                             axis_ids = pass_axes,&
diff --git a/Test/test_grid.c b/Test/test_grid.c
index fabf28c..95a31be 100644
--- a/Test/test_grid.c
+++ b/Test/test_grid.c
@@ -111,26 +111,12 @@ int main()
   ierr = cmor_setup(NULL,&j,NULL,&exit_mode,NULL,NULL);
   printf("Test code: ok init cmor\n");
   int tmpmo[12];
-  ierr = cmor_dataset(
-       "Test",
-       "amip",
-       "GICC (Generic International Climate Center, Geneva, Switzerland)",
-       "GICCM1 (2002): atmosphere:  GICAM3 (gicam_0_brnchT_itea_2, T63L32); ocean: MOM (mom3_ver_3.5.2, 2x3L15); sea ice: GISIM4; land: GILSM2.5",
-       "standard",
-       1,
-       "Rusty Koder (koder at middle_earth.net)",
-       "Output from archive/giccm_03_std_2xCO2_2256.",
-       "Equilibrium reached after 30-year spin-up after which data were output starting with nominal date of January 2030",
-       "Model described by Koder and Tolkien (J. Geophys. Res., 2001, 576-591).  Also see http://www.GICC.su/giccm/doc/index.html  2XCO2 simulation described in Dorkey et al. '(Clim. Dyn., 2003, 323-357.)",
-       0,
-       0,
-       tmpmo,
-       "GICCM1\0","N/A",0,0,"GICC","N/A",&tmpf,"r1i1p1");
+  ierr = cmor_dataset_json("Test/test_grid.json");
   printf("Test code: ok load cmor table(s)\n");
-  ierr = cmor_load_table("Tables/CMIP5_Amon",&tables[1]);
+  ierr = cmor_load_table("Tables/CMIP6_Amon.json",&tables[1]);
   printf("Test code: ok load cmor table(s)\n");
   //ierr = cmor_load_table("Test/IPCC_test_table_Grids",&tables[0]);
-  ierr = cmor_load_table("Tables/CMIP5_grids",&tables[0]);
+  ierr = cmor_load_table("Tables/CMIP6_grids.json",&tables[0]);
   printf("Test code: ok load cmor table(s)\n");
   ierr = cmor_set_table(tables[0]);
 
@@ -186,7 +172,7 @@ int main()
     read_2d_input_files(i, "LATENT", &data2d[0],lat,lon);
     //for(j=0;j<10;j++) printf("Test code: %i out of %i : %lf\n",j,9,data2d[j]);
     printf("var id: %i\n",myvars[0]);
-    ierr = cmor_write(myvars[0],&data2d,'d',NULL,1,NULL,NULL,NULL);
+    ierr = cmor_write(myvars[0],&data2d,'d',1,NULL,NULL,NULL);
   }
   printf("ok loop done\n");
   ierr = cmor_close();
diff --git a/Test/test_grid.json b/Test/test_grid.json
new file mode 100644
index 0000000..c618eb2
--- /dev/null
+++ b/Test/test_grid.json
@@ -0,0 +1,62 @@
+{
+           "_control_vocabulary_file": "CMIP6_CV.json",
+           "_cmip6_option":           "CMIP6",
+
+    "activity_id":                  "CMIP",
+    "outpath":                      "CMIP6",
+    "experiment_id":                "piControl",
+    "calendar":                     "360_day",
+    "realization_index":            "1",
+    "initialization_index":         "1",
+    "physics_index":                "1",
+    "forcing_index":                "1",
+     "source_type":                      "AOGCM",
+     "sub_experiment":                      "none",
+     "sub_experiment_id":                      "none",
+     "parent_sub_experiment_id":                      "N/A",
+     "parent_mip_era":                      "N/A",
+     "mip_era":                      "CMIP6",
+    "contact ":                     "Python Coder (python at a.b.com) ",
+    "institution_id":                 "PCMDI",
+    "model_id":                     "GICCM1",
+    "history":                      "output from archivcl_A1.nce/giccm_03_std_2xCO2_2256.",
+    "comment":                      "equilibrium reached after 30-year spin-up ",
+    "references":                   "model described by Koder and Tolkien ",
+    "model_id":                     "pcmdi-10a", 
+    "parent_experiment_rip":        "r1i3p2",
+    "parent_experiment_id":         "lgm",
+    "parent_variant_label":            "r1i3p2",
+    "branch_time":                  "0",
+
+
+    "parent_activity_id":           "CMIP",
+    "parent_source_id":             "GFDL-CM2-1",
+    "parent_variant_label":            "r1i1p1f3",
+
+    "branch_method":                "standard",
+    "branch_time_in_child":         "00D0",
+    "branch_time_in_parent":        "3650.0D0",
+    "branch_time_units_in_parent":  "days since 1000-1-1",
+
+    "further_info_url":             "http://furtherinfo.es-doc.org/<mip_era><institution_id><source_id><experiment_id><sub_experiment_id><variant_label>",
+    "grid":                         "native atmosphere T63 gaussian grid (64x128 latxlon)",
+    "grid_label":                  "gn",
+    "grid_resolution":              "5 km",
+
+    "institution_id":               "CSIRO-BOM",
+    "institution":                  "Commonwealth Scientific and Industrial Research Organisation, Australia, and Bureau of Meteorology, Australia",
+
+    "references":                   "Model described by Koder and Tolkien (J. Geophys. Res.,2001, 576 - 591).  Also see http://www.GICC.su/giccm/doc/index.html  2XCO2 simulation described in Dorkey et al. '(Clim. Dyn., 2003, 323 - 357.)",
+    "run_variant":                  "forcing: black carbon aerosol only",
+    "source_id":                    "NICAM",
+    "source":                       "NICAM:",
+    "output_path_template":         "<activity_id><institution_id><source_id><experiment_id><variant_label><table><variable_id><grid_label><version>",
+    "output_file_template":         "<variable_id><table><experiment_id><source_id><variant_label><grid_label>",
+
+    "license":                      "One of 2 licenses: ----- CMIP6 model data produced by <Your CentreName> is licensed under a Creative Commons Attribution 'NonCommercial Share Alike' 4.0 International License (http://creativecommons.org/licenses/by/4.0/). Use of the data should be acknowledged following guidelines found at <what URL???> The data is hosted via the Earth System Grid Federation. Permissions beyond the scope of this license may be available at http://pcmdi.org/cmip5/terms [...]
+
+
+}
+
+
+
diff --git a/Test/test_lon_gt_360.json b/Test/test_lon_gt_360.json
new file mode 100644
index 0000000..c618eb2
--- /dev/null
+++ b/Test/test_lon_gt_360.json
@@ -0,0 +1,62 @@
+{
+           "_control_vocabulary_file": "CMIP6_CV.json",
+           "_cmip6_option":           "CMIP6",
+
+    "activity_id":                  "CMIP",
+    "outpath":                      "CMIP6",
+    "experiment_id":                "piControl",
+    "calendar":                     "360_day",
+    "realization_index":            "1",
+    "initialization_index":         "1",
+    "physics_index":                "1",
+    "forcing_index":                "1",
+     "source_type":                      "AOGCM",
+     "sub_experiment":                      "none",
+     "sub_experiment_id":                      "none",
+     "parent_sub_experiment_id":                      "N/A",
+     "parent_mip_era":                      "N/A",
+     "mip_era":                      "CMIP6",
+    "contact ":                     "Python Coder (python at a.b.com) ",
+    "institution_id":                 "PCMDI",
+    "model_id":                     "GICCM1",
+    "history":                      "output from archivcl_A1.nce/giccm_03_std_2xCO2_2256.",
+    "comment":                      "equilibrium reached after 30-year spin-up ",
+    "references":                   "model described by Koder and Tolkien ",
+    "model_id":                     "pcmdi-10a", 
+    "parent_experiment_rip":        "r1i3p2",
+    "parent_experiment_id":         "lgm",
+    "parent_variant_label":            "r1i3p2",
+    "branch_time":                  "0",
+
+
+    "parent_activity_id":           "CMIP",
+    "parent_source_id":             "GFDL-CM2-1",
+    "parent_variant_label":            "r1i1p1f3",
+
+    "branch_method":                "standard",
+    "branch_time_in_child":         "00D0",
+    "branch_time_in_parent":        "3650.0D0",
+    "branch_time_units_in_parent":  "days since 1000-1-1",
+
+    "further_info_url":             "http://furtherinfo.es-doc.org/<mip_era><institution_id><source_id><experiment_id><sub_experiment_id><variant_label>",
+    "grid":                         "native atmosphere T63 gaussian grid (64x128 latxlon)",
+    "grid_label":                  "gn",
+    "grid_resolution":              "5 km",
+
+    "institution_id":               "CSIRO-BOM",
+    "institution":                  "Commonwealth Scientific and Industrial Research Organisation, Australia, and Bureau of Meteorology, Australia",
+
+    "references":                   "Model described by Koder and Tolkien (J. Geophys. Res.,2001, 576 - 591).  Also see http://www.GICC.su/giccm/doc/index.html  2XCO2 simulation described in Dorkey et al. '(Clim. Dyn., 2003, 323 - 357.)",
+    "run_variant":                  "forcing: black carbon aerosol only",
+    "source_id":                    "NICAM",
+    "source":                       "NICAM:",
+    "output_path_template":         "<activity_id><institution_id><source_id><experiment_id><variant_label><table><variable_id><grid_label><version>",
+    "output_file_template":         "<variable_id><table><experiment_id><source_id><variant_label><grid_label>",
+
+    "license":                      "One of 2 licenses: ----- CMIP6 model data produced by <Your CentreName> is licensed under a Creative Commons Attribution 'NonCommercial Share Alike' 4.0 International License (http://creativecommons.org/licenses/by/4.0/). Use of the data should be acknowledged following guidelines found at <what URL???> The data is hosted via the Earth System Grid Federation. Permissions beyond the scope of this license may be available at http://pcmdi.org/cmip5/terms [...]
+
+
+}
+
+
+
diff --git a/Test/test_lon_gt_360.py b/Test/test_lon_gt_360.py
index a1ef39d..7a588af 100644
--- a/Test/test_lon_gt_360.py
+++ b/Test/test_lon_gt_360.py
@@ -2,19 +2,10 @@ import cmor
 import numpy
 
 def cmor_initialisation():
-    cmor.setup(inpath='/git/cmip5-cmor-tables/Tables',
+    cmor.setup(inpath='Tables',
                netcdf_file_action = cmor.CMOR_REPLACE_3,
                create_subdirectories = 0)
-    cmor.dataset('pre-industrial control', 'ukmo', 'HadCM3', '360_day',
-                 institute_id = 'ukmo',
-                 model_id = 'HadCM3',
-                 history = 'some global history',
-                 forcing = 'N/A',
-                 parent_experiment_id = 'N/A',
-                 parent_experiment_rip = 'N/A',
-                 branch_time = 0.,
-                 contact = 'bob',
-                 outpath = 'test_output')
+    cmor.dataset_json("Test/test_lon_gt_360.json")
 
 def setup_data():
     axes = [ {'table_entry': 'time',
@@ -34,14 +25,14 @@ def setup_data():
     return values, axes
 
 def cmor_define_and_write(values, axes):
-    table = 'CMIP5_Amon'
+    table = 'CMIP6_Amon.json'
     cmor.load_table(table)
 
     axis_ids = list()
     for axis in axes:
        axis_ids.append(cmor.axis(**axis))
                     
-    table = 'CMIP5_Amon'
+    table = 'CMIP6_Amon.json'
     cmor.load_table(table)
 
     varid = cmor.variable('rlut',
@@ -60,7 +51,7 @@ def version(cmor):
                         cmor.CMOR_VERSION_PATCH)
 
 def main():
-    assert version(cmor) == '2.8.3'
+    assert version(cmor) >= '3.0.0'
     cmor_initialisation()
     values, axes = setup_data()
     cmor_define_and_write(values, axes)
diff --git a/Test/test_lon_thro_360.json b/Test/test_lon_thro_360.json
new file mode 100644
index 0000000..c618eb2
--- /dev/null
+++ b/Test/test_lon_thro_360.json
@@ -0,0 +1,62 @@
+{
+           "_control_vocabulary_file": "CMIP6_CV.json",
+           "_cmip6_option":           "CMIP6",
+
+    "activity_id":                  "CMIP",
+    "outpath":                      "CMIP6",
+    "experiment_id":                "piControl",
+    "calendar":                     "360_day",
+    "realization_index":            "1",
+    "initialization_index":         "1",
+    "physics_index":                "1",
+    "forcing_index":                "1",
+     "source_type":                      "AOGCM",
+     "sub_experiment":                      "none",
+     "sub_experiment_id":                      "none",
+     "parent_sub_experiment_id":                      "N/A",
+     "parent_mip_era":                      "N/A",
+     "mip_era":                      "CMIP6",
+    "contact ":                     "Python Coder (python at a.b.com) ",
+    "institution_id":                 "PCMDI",
+    "model_id":                     "GICCM1",
+    "history":                      "output from archivcl_A1.nce/giccm_03_std_2xCO2_2256.",
+    "comment":                      "equilibrium reached after 30-year spin-up ",
+    "references":                   "model described by Koder and Tolkien ",
+    "model_id":                     "pcmdi-10a", 
+    "parent_experiment_rip":        "r1i3p2",
+    "parent_experiment_id":         "lgm",
+    "parent_variant_label":            "r1i3p2",
+    "branch_time":                  "0",
+
+
+    "parent_activity_id":           "CMIP",
+    "parent_source_id":             "GFDL-CM2-1",
+    "parent_variant_label":            "r1i1p1f3",
+
+    "branch_method":                "standard",
+    "branch_time_in_child":         "00D0",
+    "branch_time_in_parent":        "3650.0D0",
+    "branch_time_units_in_parent":  "days since 1000-1-1",
+
+    "further_info_url":             "http://furtherinfo.es-doc.org/<mip_era><institution_id><source_id><experiment_id><sub_experiment_id><variant_label>",
+    "grid":                         "native atmosphere T63 gaussian grid (64x128 latxlon)",
+    "grid_label":                  "gn",
+    "grid_resolution":              "5 km",
+
+    "institution_id":               "CSIRO-BOM",
+    "institution":                  "Commonwealth Scientific and Industrial Research Organisation, Australia, and Bureau of Meteorology, Australia",
+
+    "references":                   "Model described by Koder and Tolkien (J. Geophys. Res.,2001, 576 - 591).  Also see http://www.GICC.su/giccm/doc/index.html  2XCO2 simulation described in Dorkey et al. '(Clim. Dyn., 2003, 323 - 357.)",
+    "run_variant":                  "forcing: black carbon aerosol only",
+    "source_id":                    "NICAM",
+    "source":                       "NICAM:",
+    "output_path_template":         "<activity_id><institution_id><source_id><experiment_id><variant_label><table><variable_id><grid_label><version>",
+    "output_file_template":         "<variable_id><table><experiment_id><source_id><variant_label><grid_label>",
+
+    "license":                      "One of 2 licenses: ----- CMIP6 model data produced by <Your CentreName> is licensed under a Creative Commons Attribution 'NonCommercial Share Alike' 4.0 International License (http://creativecommons.org/licenses/by/4.0/). Use of the data should be acknowledged following guidelines found at <what URL???> The data is hosted via the Earth System Grid Federation. Permissions beyond the scope of this license may be available at http://pcmdi.org/cmip5/terms [...]
+
+
+}
+
+
+
diff --git a/Test/test_lon_thro_360.py b/Test/test_lon_thro_360.py
index 664c84d..e5c1f65 100644
--- a/Test/test_lon_thro_360.py
+++ b/Test/test_lon_thro_360.py
@@ -2,19 +2,10 @@ import cmor
 import numpy
 
 def cmor_initialisation():
-    cmor.setup(inpath='/git/cmip5-cmor-tables/Tables',
+    cmor.setup(inpath='Tables',
                netcdf_file_action = cmor.CMOR_REPLACE_3,
                create_subdirectories = 0)
-    cmor.dataset('pre-industrial control', 'ukmo', 'HadCM3', '360_day',
-                 institute_id = 'ukmo',
-                 model_id = 'HadCM3',
-                 history = 'some global history',
-                 forcing = 'N/A',
-                 parent_experiment_id = 'N/A',
-                 parent_experiment_rip = 'N/A',
-                 branch_time = 0.,
-                 contact = 'bob',
-                 outpath = 'test_ltd')
+    cmor.dataset_json("Test/test_lon_thro_360.json")
 
 def setup_data():
     axes = [ {'table_entry': 'time',
@@ -36,14 +27,14 @@ def setup_data():
     return values, axes
 
 def cmor_define_and_write(values, axes):
-    table = 'CMIP5_Amon'
+    table = 'CMIP6_Amon.json'
     cmor.load_table(table)
 
     axis_ids = list()
     for axis in axes:
        axis_ids.append(cmor.axis(**axis))
                     
-    table = 'CMIP5_Amon'
+    table = 'CMIP6_Amon.json'
     cmor.load_table(table)
 
     varid = cmor.variable('rlut',
diff --git a/Test/test_lots_of_variables.c b/Test/test_lots_of_variables.c
index fe9c5cb..408f253 100644
--- a/Test/test_lots_of_variables.c
+++ b/Test/test_lots_of_variables.c
@@ -274,26 +274,11 @@ int main()
 
 
   printf("yep: %s, %s\n",c1,c2);
-  ierr = cmor_dataset(
-       "Test",
-       "abrupt 4XCO2",
-       "GICC (Generic International Climate Center, Geneva, Switzerland)",
-       "GICCM1 (2002): atmosphere:  GICAM3 (gicam_0_brnchT_itea_2, T63L32); ocean: MOM (mom3_ver_3.5.2, 2x3L15); sea ice: GISIM4; land: GILSM2.5",
-       "standard",
-       1,
-       "Rusty Koder (koder at middle_earth.net)",
-       "Output from archive/giccm_03_std_2xCO2_2256.",
-       "Equilibrium reached after 30-year spin-up after which data were output starting with nominal date of January 2030",
-       "Model described by Koder and Tolkien (J. Geophys. Res., 2001, 576-591).  Also see http://www.GICC.su/giccm/doc/index.html  2XCO2 simulation described in Dorkey et al. '(Clim. Dyn., 2003, 323-357.)",
-       0,
-       0,
-       &tmpmo[0],&c1[0],&c2[0],3,0,"GICC","N/A",&bt,"r1i1p1");
-
-
-/*   cmor_set_cur_dataset_attribute("initialization_method","3",1); */
-/*  cmor_set_cur_dataset_attribute("physics_version","5",1); */
+  ierr = cmor_dataset_json("Test/test_lots_of_variables.json");
+
+
   printf("Test code: ok load cmor table(s)\n");
-  ierr = cmor_load_table("Test/CMIP5_Amons",&tables[0]);
+  ierr = cmor_load_table("Tables/CMIP6_Amon_json_hfls",&tables[0]);
   strcpy(id,"time");
   strcpy(units,"months since 1980");
   strcpy(interval,"1 month");
@@ -341,10 +326,10 @@ int main()
       /*     read_2d_input_files(i, varin2d[3], &data2d,lat,lon); */
       /*     ierr = cmor_write(myvars[3],&data2d,'d',id,1,&time,&bnds_time,&myvars[2]); */
       printf("ok writing time %i for variable %i\n",i,m);
-      ierr = cmor_write(myvars[m],&data2d,'d',"",1,NULL,NULL,NULL);
+      ierr = cmor_write(myvars[m],&data2d,'d',1,NULL,NULL,NULL);
     }
     ierr = cmor_close_variable(myvars[m],NULL,NULL);
   }
   ierr = cmor_close();
-  return 0;
+  return( 0 );
 }
diff --git a/Test/test_lots_of_variables.f90 b/Test/test_lots_of_variables.f90
index 427c81a..63cb5ed 100644
--- a/Test/test_lots_of_variables.f90
+++ b/Test/test_lots_of_variables.f90
@@ -177,7 +177,7 @@ PROGRAM mip_contribution
   !    files should not be overwritten, and instruct CMOR to error exit on 
   !    encountering errors of any severity.
   
-  error_flag = cmor_setup(inpath='Test',   &
+  error_flag = cmor_setup(inpath='Tables',   &
        netcdf_file_action='replace',                                       &
        set_verbosity=1,                                                    &
        exit_control=1)
@@ -188,26 +188,7 @@ PROGRAM mip_contribution
   !   all CF-netCDF files written as part of this dataset.
 
   print*, 'calling cmor_dataset'
-  error_flag = cmor_dataset(                                   &
-       outpath='Test',         &
-       experiment_id='abrupt 4XCO2',           &
-       institution=                                            &
-       'GICC (Generic International Climate Center, ' //       &
-       ' Geneva, Switzerland)',                                &
-       source='GICCM1  2002(giccm_0_brnchT_itea_2, T63L32)',    &
-       calendar='360_day',                                      &
-       realization=1,                                          &
-       history='Output from archive/giccm_03_std_2xCO2_2256.', &
-       comment='Equilibrium reached after 30-year spin-up ' // &
-       'after which data were output starting with nominal '// &
-       'date of January 2030',                                 &
-       references='Model described by Koder and Tolkien ' //   &
-       '(J. Geophys. Res., 2001, 576-591).  Also ' //          &
-       'see http://www.GICC.su/giccm/doc/index.html '  //      &
-       ' 2XCO2 simulation described in Dorkey et al. '//       &
-       '(Clim. Dyn., 2003, 323-357.)',model_id="GICCM1", &
-       forcing='TO',contact="Barry Bonds",institute_id="PCMDI",&
-       parent_experiment_rip="N/A",parent_experiment_id="N/A",branch_time=bt)
+  error_flag = cmor_dataset_json("Test/test2.json")
 
   !error_flag  = cmor_set_cur_dataset_attribute("initialization_method","4")
   !error_flag  = cmor_set_cur_dataset_attribute("physics_version","6")
@@ -219,14 +200,14 @@ PROGRAM mip_contribution
   print*, 'defining axes'
   
   axis2d_ids(1) = cmor_axis(  &
-       table='CMIP5_Amons',    &
+       table='CMIP6_Amon_json_hfls',    &
        table_entry='latitude',       &
        units='degrees_north',        &  
        length=lat,                   &
        coord_vals=alats,             & 
        cell_bounds=bnds_lat)              
   axis2d_ids(2) = cmor_axis(  &
-       table='CMIP5_Amons',    &
+       table='CMIP6_Amon_json_hfls',    &
        table_entry='longitude',      &
        length=lon,                   &
        units='degrees_east',         &
@@ -237,7 +218,7 @@ PROGRAM mip_contribution
   !   cmor_write (below).
 print*, 'before time '
   axis2d_ids(3) = cmor_axis(  &
-       table='CMIP5_Amons',    &
+       table='CMIP6_Amon_json_hfls',    &
        table_entry='time',           &
        units='days since 1979-1-1',  &
        length=ntimes,                &
@@ -254,7 +235,7 @@ print*, 'before time '
      msg2 = trim(entry2d(1)(1:4)//adjustl(msg))
      print*,'Test Code: defining variable: :',msg2
      var2d_ids(m) = cmor_variable(    &
-          table='CMIP5_Amons',  & 
+          table='CMIP6_Amon_json_hfls',  & 
           table_entry=msg2,     & 
 !!$          file_suffix='1979-2001',    &
           units=units2d(1),           & 
diff --git a/Test/test_lots_of_variables.json b/Test/test_lots_of_variables.json
new file mode 100644
index 0000000..48e6fde
--- /dev/null
+++ b/Test/test_lots_of_variables.json
@@ -0,0 +1,60 @@
+{
+    "_control_vocabulary_file":     "CMIP6_CV.json",
+    "_cmip6_option":                "CMIP6",
+    "activity_id":                  "CMIP",
+    "outpath":                      "CMIP6",
+    "experiment_id":                "piControl",
+    "calendar":                     "360_day",
+    "realization_index":            "1",
+    "initialization_index":         "1",
+    "physics_index":                "1",
+    "forcing_index":                "1",
+    "source_type":                  "AOGCM",
+    "sub_experiment":               "none",
+    "sub_experiment_id":            "none",
+    "parent_sub_experiment_id":     "N/A",
+    "parent_mip_era":               "N/A",
+    "mip_era":                      "CMIP6",
+    "contact ":                     "Python Coder (python at a.b.com) ",
+    "institution_id":                "PCMDI",
+    "model_id":                     "GICCM1",
+    "history":                      "output from archivcl_A1.nce/giccm_03_std_2xCO2_2256.",
+    "comment":                      "equilibrium reached after 30-year spin-up ",
+    "references":                   "model described by Koder and Tolkien ",
+    "model_id":                     "pcmdi-10a", 
+    "parent_experiment_rip":        "r1i3p2",
+    "parent_experiment_id":         "lgm",
+    "parent_variant_label":            "r1i3p2",
+    "branch_time":                  "0",
+
+    "parent_activity_id":           "CMIP",
+    "parent_source_id":             "GFDL-CM2-1",
+    "parent_variant_label":            "r1i1p1f3",
+
+    "branch_method":                "standard",
+    "branch_time_in_child":         "00D0",
+    "branch_time_in_parent":        "3650.0D0",
+    "branch_time_units_in_parent":  "days since 1000-1-1",
+
+    "further_info_url":             "http://furtherinfo.es-doc.org/<mip_era><institution_id><source_id><experiment_id><sub_experiment_id><variant_label>",
+    "grid":                         "native atmosphere T63 gaussian grid (64x128 latxlon)",
+    "grid_label":                  "gn",
+    "grid_resolution":              "5 km",
+
+    "institution_id":               "CSIRO-BOM",
+    "institution":                  "Commonwealth Scientific and Industrial Research Organisation, Australia, and Bureau of Meteorology, Australia",
+
+    "references":                   "Model described by Koder and Tolkien (J. Geophys. Res.,2001, 576 - 591).  Also see http://www.GICC.su/giccm/doc/index.html  2XCO2 simulation described in Dorkey et al. '(Clim. Dyn., 2003, 323 - 357.)",
+    "run_variant":                  "forcing: black carbon aerosol only",
+    "source_id":                    "NICAM",
+    "source":                       "NICAM:",
+    "output_path_template":         "<activity_id><institution_id><source_id><experiment_id><variant_label><table><variable_id><grid_label><version>",
+    "output_file_template":         "<variable_id><table><experiment_id><source_id><variant_label><grid_label>",
+
+    "license":                      "One of 2 licenses: ----- CMIP6 model data produced by <Your CentreName> is licensed under a Creative Commons Attribution 'NonCommercial Share Alike' 4.0 International License (http://creativecommons.org/licenses/by/4.0/). Use of the data should be acknowledged following guidelines found at <what URL???> The data is hosted via the Earth System Grid Federation. Permissions beyond the scope of this license may be available at http://pcmdi.org/cmip5/terms [...]
+
+
+}
+
+
+
diff --git a/Test/test_non_monotonic_climo_bonds_ok.py b/Test/test_non_monotonic_climo_bonds_ok.py
index 2cd0ad8..16b8bce 100644
--- a/Test/test_non_monotonic_climo_bonds_ok.py
+++ b/Test/test_non_monotonic_climo_bonds_ok.py
@@ -15,7 +15,7 @@ def path_test():
                  parent_experiment_rip="N/A",
                  branch_time=0)
     
-    table='CMIP5_Amon'
+    table='CMIP6_Amon.json'
     cmor.load_table(table)
     axes = [ {'table_entry': 'time2',
               'units': 'months since 2000-01-01 00:00:00',
diff --git a/Test/test_python_1D_var.json b/Test/test_python_1D_var.json
new file mode 100644
index 0000000..c618eb2
--- /dev/null
+++ b/Test/test_python_1D_var.json
@@ -0,0 +1,62 @@
+{
+           "_control_vocabulary_file": "CMIP6_CV.json",
+           "_cmip6_option":           "CMIP6",
+
+    "activity_id":                  "CMIP",
+    "outpath":                      "CMIP6",
+    "experiment_id":                "piControl",
+    "calendar":                     "360_day",
+    "realization_index":            "1",
+    "initialization_index":         "1",
+    "physics_index":                "1",
+    "forcing_index":                "1",
+     "source_type":                      "AOGCM",
+     "sub_experiment":                      "none",
+     "sub_experiment_id":                      "none",
+     "parent_sub_experiment_id":                      "N/A",
+     "parent_mip_era":                      "N/A",
+     "mip_era":                      "CMIP6",
+    "contact ":                     "Python Coder (python at a.b.com) ",
+    "institution_id":                 "PCMDI",
+    "model_id":                     "GICCM1",
+    "history":                      "output from archivcl_A1.nce/giccm_03_std_2xCO2_2256.",
+    "comment":                      "equilibrium reached after 30-year spin-up ",
+    "references":                   "model described by Koder and Tolkien ",
+    "model_id":                     "pcmdi-10a", 
+    "parent_experiment_rip":        "r1i3p2",
+    "parent_experiment_id":         "lgm",
+    "parent_variant_label":            "r1i3p2",
+    "branch_time":                  "0",
+
+
+    "parent_activity_id":           "CMIP",
+    "parent_source_id":             "GFDL-CM2-1",
+    "parent_variant_label":            "r1i1p1f3",
+
+    "branch_method":                "standard",
+    "branch_time_in_child":         "00D0",
+    "branch_time_in_parent":        "3650.0D0",
+    "branch_time_units_in_parent":  "days since 1000-1-1",
+
+    "further_info_url":             "http://furtherinfo.es-doc.org/<mip_era><institution_id><source_id><experiment_id><sub_experiment_id><variant_label>",
+    "grid":                         "native atmosphere T63 gaussian grid (64x128 latxlon)",
+    "grid_label":                  "gn",
+    "grid_resolution":              "5 km",
+
+    "institution_id":               "CSIRO-BOM",
+    "institution":                  "Commonwealth Scientific and Industrial Research Organisation, Australia, and Bureau of Meteorology, Australia",
+
+    "references":                   "Model described by Koder and Tolkien (J. Geophys. Res.,2001, 576 - 591).  Also see http://www.GICC.su/giccm/doc/index.html  2XCO2 simulation described in Dorkey et al. '(Clim. Dyn., 2003, 323 - 357.)",
+    "run_variant":                  "forcing: black carbon aerosol only",
+    "source_id":                    "NICAM",
+    "source":                       "NICAM:",
+    "output_path_template":         "<activity_id><institution_id><source_id><experiment_id><variant_label><table><variable_id><grid_label><version>",
+    "output_file_template":         "<variable_id><table><experiment_id><source_id><variant_label><grid_label>",
+
+    "license":                      "One of 2 licenses: ----- CMIP6 model data produced by <Your CentreName> is licensed under a Creative Commons Attribution 'NonCommercial Share Alike' 4.0 International License (http://creativecommons.org/licenses/by/4.0/). Use of the data should be acknowledged following guidelines found at <what URL???> The data is hosted via the Earth System Grid Federation. Permissions beyond the scope of this license may be available at http://pcmdi.org/cmip5/terms [...]
+
+
+}
+
+
+
diff --git a/Test/test_python_1D_var.py b/Test/test_python_1D_var.py
index 4674bd1..7418252 100644
--- a/Test/test_python_1D_var.py
+++ b/Test/test_python_1D_var.py
@@ -1,35 +1,17 @@
 import cmor
 
-error_flag = cmor.setup(inpath='Test', netcdf_file_action=cmor.CMOR_REPLACE)
+error_flag = cmor.setup(inpath='Tables', netcdf_file_action=cmor.CMOR_REPLACE)
 
-error_flag = cmor.dataset(                                   
-       outpath='Test',                                         
-       experiment_id='noVolc2000',
-       institution= 'GICC (Generic International Climate Center, Geneva, Switzerland)',                                 
-       source='pcmdi-10a GICCM1 (2002): ',
-       calendar='standard',                                      
-       realization=1,                                          
-       contact = 'Rusty Koder (koder at middle_earth.net) ',      
-       history='Output from archivcl_A1.nce/giccm_03_std_2xCO2_2256.', 
-       comment='Equilibrium reached after 30-year spin-up ',                                 
-       references='Model described by Koder and Tolkien ',
-       model_id="pcmdi-10a", 
-       institute_id="pcmdi-10a", 
-       forcing="TO, SO, Nat",
-       ## month_lengths=[30,28,30,30,30,30,30,31,30,31,30,30],
-       ## leap_year=3,
-       ## leap_month=1,
-       parent_experiment_id="N/A",branch_time=0,
-       parent_experiment_rip="N/A")
+error_flag = cmor.dataset_json("Test/test_python_1D_var.json")
 
-cmor.load_table("Tables/CMIP5_Omon")
+cmor.load_table("CMIP6_Omon.json")
 itim = cmor.axis(  
     table_entry='time',           
     units='months since 2010-1-1',
     coord_vals=[0,1,2,3,4,5,6,7,8,9,10,11],
     cell_bounds=[0,1,2,3,4,5,6,7,8,9,10,11,12])
 
-ivar = cmor.variable('thetaoga',units='K',axis_ids=[itim,])
+ivar = cmor.variable('thetaoga',units='deg_C',axis_ids=[itim,])
 
 data=[280.,]*12 # 12 months worth of data
 
diff --git a/Test/test_python_2Gb_file.json b/Test/test_python_2Gb_file.json
new file mode 100644
index 0000000..c618eb2
--- /dev/null
+++ b/Test/test_python_2Gb_file.json
@@ -0,0 +1,62 @@
+{
+           "_control_vocabulary_file": "CMIP6_CV.json",
+           "_cmip6_option":           "CMIP6",
+
+    "activity_id":                  "CMIP",
+    "outpath":                      "CMIP6",
+    "experiment_id":                "piControl",
+    "calendar":                     "360_day",
+    "realization_index":            "1",
+    "initialization_index":         "1",
+    "physics_index":                "1",
+    "forcing_index":                "1",
+     "source_type":                      "AOGCM",
+     "sub_experiment":                      "none",
+     "sub_experiment_id":                      "none",
+     "parent_sub_experiment_id":                      "N/A",
+     "parent_mip_era":                      "N/A",
+     "mip_era":                      "CMIP6",
+    "contact ":                     "Python Coder (python at a.b.com) ",
+    "institution_id":                 "PCMDI",
+    "model_id":                     "GICCM1",
+    "history":                      "output from archivcl_A1.nce/giccm_03_std_2xCO2_2256.",
+    "comment":                      "equilibrium reached after 30-year spin-up ",
+    "references":                   "model described by Koder and Tolkien ",
+    "model_id":                     "pcmdi-10a", 
+    "parent_experiment_rip":        "r1i3p2",
+    "parent_experiment_id":         "lgm",
+    "parent_variant_label":            "r1i3p2",
+    "branch_time":                  "0",
+
+
+    "parent_activity_id":           "CMIP",
+    "parent_source_id":             "GFDL-CM2-1",
+    "parent_variant_label":            "r1i1p1f3",
+
+    "branch_method":                "standard",
+    "branch_time_in_child":         "00D0",
+    "branch_time_in_parent":        "3650.0D0",
+    "branch_time_units_in_parent":  "days since 1000-1-1",
+
+    "further_info_url":             "http://furtherinfo.es-doc.org/<mip_era><institution_id><source_id><experiment_id><sub_experiment_id><variant_label>",
+    "grid":                         "native atmosphere T63 gaussian grid (64x128 latxlon)",
+    "grid_label":                  "gn",
+    "grid_resolution":              "5 km",
+
+    "institution_id":               "CSIRO-BOM",
+    "institution":                  "Commonwealth Scientific and Industrial Research Organisation, Australia, and Bureau of Meteorology, Australia",
+
+    "references":                   "Model described by Koder and Tolkien (J. Geophys. Res.,2001, 576 - 591).  Also see http://www.GICC.su/giccm/doc/index.html  2XCO2 simulation described in Dorkey et al. '(Clim. Dyn., 2003, 323 - 357.)",
+    "run_variant":                  "forcing: black carbon aerosol only",
+    "source_id":                    "NICAM",
+    "source":                       "NICAM:",
+    "output_path_template":         "<activity_id><institution_id><source_id><experiment_id><variant_label><table><variable_id><grid_label><version>",
+    "output_file_template":         "<variable_id><table><experiment_id><source_id><variant_label><grid_label>",
+
+    "license":                      "One of 2 licenses: ----- CMIP6 model data produced by <Your CentreName> is licensed under a Creative Commons Attribution 'NonCommercial Share Alike' 4.0 International License (http://creativecommons.org/licenses/by/4.0/). Use of the data should be acknowledged following guidelines found at <what URL???> The data is hosted via the Earth System Grid Federation. Permissions beyond the scope of this license may be available at http://pcmdi.org/cmip5/terms [...]
+
+
+}
+
+
+
diff --git a/Test/test_python_2Gb_file.py b/Test/test_python_2Gb_file.py
index d75d4c2..1944c8c 100644
--- a/Test/test_python_2Gb_file.py
+++ b/Test/test_python_2Gb_file.py
@@ -4,7 +4,6 @@ import cmor,numpy
 
 
 
-
 nlat = 360
 dlat = 180./nlat
 nlon = 720
@@ -18,16 +17,16 @@ lons = numpy.arange(0+dlon/2.,360.,dlon)
 blons = numpy.arange(0,360.+dlon,dlon)
 
 
-cmor.setup(inpath='.',netcdf_file_action=cmor.CMOR_REPLACE)
-cmor.dataset('historical', 'ukmo', 'HadCM3', 'gregorian',model_id='HadCM3',outpath='Test',forcing='N/A', parent_experiment_id="lgm", parent_experiment_rip="r1i1p1",branch_time=0,contact="Juan Uribe",institute_id="myinst")
-table='Tables/CMIP5_Amon'
+cmor.setup(inpath='Tables',netcdf_file_action=cmor.CMOR_REPLACE)
+cmor.dataset_json("Test/test_python_2Gb_file.json")
+table='CMIP6_Amon.json'
 cmor.load_table(table)
 
 
 ilat = cmor.axis(table_entry='latitude',coord_vals=lats,cell_bounds=blats,units='degrees_north')
 ilon = cmor.axis(table_entry='longitude',coord_vals=lons,cell_bounds=blons,units='degrees_east')
 itim = cmor.axis(table_entry='time',units='months since 2010')#,coord_vals=numpy.arange(ntimes,dtype=numpy.float),cell_bounds=numpy.arange(ntimes+1,dtype=float),units='months since 2000')
-ilev = cmor.axis(table_entry='plevs',coord_vals=numpy.array([1000.,925,850,700,600,500,400,300,250,200,150,100,70,50,30,20,10]),units='hPa')
+ilev = cmor.axis(table_entry='plev17',coord_vals=numpy.array([1000.,925,850,700,600,500,400,300,250,200,150,100,70,50,30,20,10]),units='hPa')
     
 axes=[itim,ilev,ilat,ilon]
 
diff --git a/Test/test_python_2Gb_slice.json b/Test/test_python_2Gb_slice.json
new file mode 100644
index 0000000..c618eb2
--- /dev/null
+++ b/Test/test_python_2Gb_slice.json
@@ -0,0 +1,62 @@
+{
+           "_control_vocabulary_file": "CMIP6_CV.json",
+           "_cmip6_option":           "CMIP6",
+
+    "activity_id":                  "CMIP",
+    "outpath":                      "CMIP6",
+    "experiment_id":                "piControl",
+    "calendar":                     "360_day",
+    "realization_index":            "1",
+    "initialization_index":         "1",
+    "physics_index":                "1",
+    "forcing_index":                "1",
+     "source_type":                      "AOGCM",
+     "sub_experiment":                      "none",
+     "sub_experiment_id":                      "none",
+     "parent_sub_experiment_id":                      "N/A",
+     "parent_mip_era":                      "N/A",
+     "mip_era":                      "CMIP6",
+    "contact ":                     "Python Coder (python at a.b.com) ",
+    "institution_id":                 "PCMDI",
+    "model_id":                     "GICCM1",
+    "history":                      "output from archivcl_A1.nce/giccm_03_std_2xCO2_2256.",
+    "comment":                      "equilibrium reached after 30-year spin-up ",
+    "references":                   "model described by Koder and Tolkien ",
+    "model_id":                     "pcmdi-10a", 
+    "parent_experiment_rip":        "r1i3p2",
+    "parent_experiment_id":         "lgm",
+    "parent_variant_label":            "r1i3p2",
+    "branch_time":                  "0",
+
+
+    "parent_activity_id":           "CMIP",
+    "parent_source_id":             "GFDL-CM2-1",
+    "parent_variant_label":            "r1i1p1f3",
+
+    "branch_method":                "standard",
+    "branch_time_in_child":         "00D0",
+    "branch_time_in_parent":        "3650.0D0",
+    "branch_time_units_in_parent":  "days since 1000-1-1",
+
+    "further_info_url":             "http://furtherinfo.es-doc.org/<mip_era><institution_id><source_id><experiment_id><sub_experiment_id><variant_label>",
+    "grid":                         "native atmosphere T63 gaussian grid (64x128 latxlon)",
+    "grid_label":                  "gn",
+    "grid_resolution":              "5 km",
+
+    "institution_id":               "CSIRO-BOM",
+    "institution":                  "Commonwealth Scientific and Industrial Research Organisation, Australia, and Bureau of Meteorology, Australia",
+
+    "references":                   "Model described by Koder and Tolkien (J. Geophys. Res.,2001, 576 - 591).  Also see http://www.GICC.su/giccm/doc/index.html  2XCO2 simulation described in Dorkey et al. '(Clim. Dyn., 2003, 323 - 357.)",
+    "run_variant":                  "forcing: black carbon aerosol only",
+    "source_id":                    "NICAM",
+    "source":                       "NICAM:",
+    "output_path_template":         "<activity_id><institution_id><source_id><experiment_id><variant_label><table><variable_id><grid_label><version>",
+    "output_file_template":         "<variable_id><table><experiment_id><source_id><variant_label><grid_label>",
+
+    "license":                      "One of 2 licenses: ----- CMIP6 model data produced by <Your CentreName> is licensed under a Creative Commons Attribution 'NonCommercial Share Alike' 4.0 International License (http://creativecommons.org/licenses/by/4.0/). Use of the data should be acknowledged following guidelines found at <what URL???> The data is hosted via the Earth System Grid Federation. Permissions beyond the scope of this license may be available at http://pcmdi.org/cmip5/terms [...]
+
+
+}
+
+
+
diff --git a/Test/test_python_2Gb_slice.py b/Test/test_python_2Gb_slice.py
index d17facc..6ab2f4b 100644
--- a/Test/test_python_2Gb_slice.py
+++ b/Test/test_python_2Gb_slice.py
@@ -22,16 +22,16 @@ levs = numpy.array([1000.,925,900,850,800,700,600,500,400,300,250,200,150,100,75
 alllevs = numpy.arange(1000,0,-dlev).tolist()
 print len(alllevs)
 
-cmor.setup(inpath='.',netcdf_file_action=cmor.CMOR_REPLACE)
-cmor.dataset('historical', 'ukmo', 'pcmdi-10b HadCM3', 'gregorian',model_id='pcmdi-10b',outpath='Test',forcing='N/A', parent_experiment_id="lgm", parent_experiment_rip="r1i1p1",contact="Bruce Bochy",branch_time=0,institute_id="yep")
-table='Tables/CMIP5_Amon'
+cmor.setup(inpath='Tables', netcdf_file_action=cmor.CMOR_REPLACE)
+cmor.dataset_json("Test/test_python_2Gb_slice.json")
+table='CMIP6_Amon.json'
 cmor.load_table(table)
 
 
 ilat = cmor.axis(table_entry='latitude',coord_vals=lats,cell_bounds=blats,units='degrees_north')
 ilon = cmor.axis(table_entry='longitude',coord_vals=lons,cell_bounds=blons,units='degrees_east')
 itim = cmor.axis(table_entry='time',units='months since 2010')#,coord_vals=numpy.arange(ntimes,dtype=numpy.float),cell_bounds=numpy.arange(ntimes+1,dtype=float),units='months since 2000')
-ilev = cmor.axis(table_entry='plevs',coord_vals=levs,units='hPa')
+ilev = cmor.axis(table_entry='plev17',coord_vals=levs,units='hPa')
     
 axes=[itim,ilev,ilat,ilon]
 
diff --git a/Test/test_python_3hr.json b/Test/test_python_3hr.json
new file mode 100644
index 0000000..c618eb2
--- /dev/null
+++ b/Test/test_python_3hr.json
@@ -0,0 +1,62 @@
+{
+           "_control_vocabulary_file": "CMIP6_CV.json",
+           "_cmip6_option":           "CMIP6",
+
+    "activity_id":                  "CMIP",
+    "outpath":                      "CMIP6",
+    "experiment_id":                "piControl",
+    "calendar":                     "360_day",
+    "realization_index":            "1",
+    "initialization_index":         "1",
+    "physics_index":                "1",
+    "forcing_index":                "1",
+     "source_type":                      "AOGCM",
+     "sub_experiment":                      "none",
+     "sub_experiment_id":                      "none",
+     "parent_sub_experiment_id":                      "N/A",
+     "parent_mip_era":                      "N/A",
+     "mip_era":                      "CMIP6",
+    "contact ":                     "Python Coder (python at a.b.com) ",
+    "institution_id":                 "PCMDI",
+    "model_id":                     "GICCM1",
+    "history":                      "output from archivcl_A1.nce/giccm_03_std_2xCO2_2256.",
+    "comment":                      "equilibrium reached after 30-year spin-up ",
+    "references":                   "model described by Koder and Tolkien ",
+    "model_id":                     "pcmdi-10a", 
+    "parent_experiment_rip":        "r1i3p2",
+    "parent_experiment_id":         "lgm",
+    "parent_variant_label":            "r1i3p2",
+    "branch_time":                  "0",
+
+
+    "parent_activity_id":           "CMIP",
+    "parent_source_id":             "GFDL-CM2-1",
+    "parent_variant_label":            "r1i1p1f3",
+
+    "branch_method":                "standard",
+    "branch_time_in_child":         "00D0",
+    "branch_time_in_parent":        "3650.0D0",
+    "branch_time_units_in_parent":  "days since 1000-1-1",
+
+    "further_info_url":             "http://furtherinfo.es-doc.org/<mip_era><institution_id><source_id><experiment_id><sub_experiment_id><variant_label>",
+    "grid":                         "native atmosphere T63 gaussian grid (64x128 latxlon)",
+    "grid_label":                  "gn",
+    "grid_resolution":              "5 km",
+
+    "institution_id":               "CSIRO-BOM",
+    "institution":                  "Commonwealth Scientific and Industrial Research Organisation, Australia, and Bureau of Meteorology, Australia",
+
+    "references":                   "Model described by Koder and Tolkien (J. Geophys. Res.,2001, 576 - 591).  Also see http://www.GICC.su/giccm/doc/index.html  2XCO2 simulation described in Dorkey et al. '(Clim. Dyn., 2003, 323 - 357.)",
+    "run_variant":                  "forcing: black carbon aerosol only",
+    "source_id":                    "NICAM",
+    "source":                       "NICAM:",
+    "output_path_template":         "<activity_id><institution_id><source_id><experiment_id><variant_label><table><variable_id><grid_label><version>",
+    "output_file_template":         "<variable_id><table><experiment_id><source_id><variant_label><grid_label>",
+
+    "license":                      "One of 2 licenses: ----- CMIP6 model data produced by <Your CentreName> is licensed under a Creative Commons Attribution 'NonCommercial Share Alike' 4.0 International License (http://creativecommons.org/licenses/by/4.0/). Use of the data should be acknowledged following guidelines found at <what URL???> The data is hosted via the Earth System Grid Federation. Permissions beyond the scope of this license may be available at http://pcmdi.org/cmip5/terms [...]
+
+
+}
+
+
+
diff --git a/Test/test_python_3hr.py b/Test/test_python_3hr.py
index 9b94570..b938cf1 100644
--- a/Test/test_python_3hr.py
+++ b/Test/test_python_3hr.py
@@ -1,25 +1,8 @@
 import cmor,numpy
 
-error_flag = cmor.setup(inpath='Test', netcdf_file_action=cmor.CMOR_REPLACE)
-  
-error_flag = cmor.dataset(                                   
-       outpath='Test',                                         
-       experiment_id='noVolc2000',
-       institution= 'GICC (Generic International Climate Center, Geneva, Switzerland)',                                 
-       source='GICCM1 (2002): ',
-       calendar='360_day',                                      
-       realization=1,                                          
-       contact = 'Rusty Koder (koder at middle_earth.net) ',      
-       history='Output from archivcl_A1.nce/giccm_03_std_2xCO2_2256.', 
-       comment='Equilibrium reached after 30-year spin-up ',                                 
-       references='Model described by Koder and Tolkien ',
-       model_id="GICCM1", 
-       institute_id="PCMDI",
-       forcing="Nat, SO",
-       parent_experiment_id="lgm",
-       parent_experiment_rip="r1i1p1",
-       branch_time=3.14159)
+error_flag = cmor.setup(inpath='Tables', netcdf_file_action=cmor.CMOR_REPLACE)
   
+error_flag = cmor.dataset_json("Test/test_python_3hr.json")
 
 n_lev = 40
 zlevs = 480.*numpy.arange(0,n_lev)+240.
@@ -29,7 +12,7 @@ zbnds[:,0]=zlevs-240.
 zbnds[:,1]=zlevs+240.
 
 # creates 1 degree grid
-cmor.load_table("Tables/CMIP5_cf3hr")
+cmor.load_table("CMIP6_cf3hr.json")
 
 
 ialt40 = cmor.axis("alt40",units="m",coord_vals=zlevs,cell_bounds=zbnds)
@@ -44,7 +27,7 @@ print igrid
 ilat = cmor.time_varying_grid_coordinate(igrid,table_entry='latitude',units='degrees_north')
 ilon = cmor.time_varying_grid_coordinate(igrid,table_entry='longitude',units='degrees_east')
 
-cmor.load_table("Tables/CMIP5_cf3hr")
+#cmor.load_table("Tables/CMIP6_cf3hr.json")
 ivar = cmor.variable("clcalipso",axis_ids=[igrid,ialt40],units="%")
 
 ierr =cmor.write(ivar,numpy.ones((2,3,n_lev)),time_vals=numpy.arange(3))
diff --git a/Test/test_python_CMIP6_CV_HISTORY.json b/Test/test_python_CMIP6_CV_HISTORY.json
new file mode 100644
index 0000000..09019f5
--- /dev/null
+++ b/Test/test_python_CMIP6_CV_HISTORY.json
@@ -0,0 +1,82 @@
+{
+           "_control_vocabulary_file": "CMIP6_CV.json",
+           "_cmip6_option":           "CMIP6",
+           "mip_era":                "CMIP6",
+           "further_info_url":       "http://furtherinfo.es-doc.org/<mip_era><institution_id><source_id><experiment_id><sub_experiment_id><variant_label>",
+
+           "#activity_id":           "Specify an activity PMIP, GeoMIP, (default in Control Vocabulary File)",
+
+           "#outpath":                "Output Path where files are written",
+           "outpath":                "unittest",
+
+           "#experiment_id":         "Correspond to id found in Control Vocabulary File",
+           "experiment_id":          "piControl-withism",
+           "source_id":              "MIROC-ESM",
+           "source_type":            "AOGCM ISM",
+           "#source":                "Defined int Control Vocabulary File",
+
+           "#calendar":              "",
+           "calendar":               "gregorian",
+
+           "#realization_index":     "",
+           "realization_index":      "1",
+
+           "#initialization_index":  "",
+           "initialization_index":   "1",
+
+           "#physics_index":         "",
+           "physics_index":          "1",
+
+           "#forcing_index":         "",
+           "forcing_index":          "1",
+
+           "#contact ":              "",
+           "contact ":               "Python Coder (python at a.b.com) ",
+
+           "#history":               "",
+           "history":                "Output from archivcl_A1.nce/giccm_03_std_2xCO2_2256.",
+
+           "#comment":               "",
+           "comment":                "Equilibrium reached after 30-year spin-up ",
+
+           "#references":            "",
+           "references":             "Model described by Koder and Tolkien ",
+
+           "#institution_id":         "",
+           "institution_id":          "NCC",
+
+           "#institution":           "Defined in Controlled Vocabulary File",
+            
+           "#forcing":               "",
+           "forcing":                "TO, SO, Nat",
+
+           "#parent_experiment_rip": "",
+           "parent_variant_label":  "r1i3p2",
+
+           "#parent_experiment_id":  "",
+           "parent_experiment_id":   "N/A",
+
+           "#branch_time":            "",
+           "branch_time":             "1",
+
+           "branch_method":           "standard",
+           "sub_experiment":     "none",
+
+           "grid":                   "native atmosphere T63 gaussian grid (64x128 latxlon)",
+           "grid_label":             "gn",
+           "grid_resolution":        "5 km",
+           "references":             "Model described by Koder and Tolkien (J. Geophys. Res.,2001, 576 - 591).  Also see http://www.GICC.su/giccm/doc/index.html  2XCO2 simulation described in Dorkey et al. '(Clim. Dyn., 2003, 323 - 357.)",
+           "run_variant":            "forcing: black carbon aerosol only",
+
+           "#output_path_template":   "Template for output path directory using tables keys or global attributes",
+           "output_path_template":    "<activity_id><institution_id><source_id><experiment_id><variant_label><table><variable_id><grid_label><version>",
+
+           "#output_file_template":   "Template for output filename using table keys or global attributes",
+           "output_file_template":    "<variable_id><table><experiment_id><source_id><variant_label><grid_label>",
+
+           "license":                "One of 2 licenses: ----- CMIP6 model data produced by <Your CentreName> is licensed under a Creative Commons Attribution 'NonCommercial Share Alike' 4.0 International License (http://creativecommons.org/licenses/by/4.0/). Use of the data should be acknowledged following guidelines found at <what URL???> The data is hosted via the Earth System Grid Federation. Permissions beyond the scope of this license may be available at http://pcmdi.org/cmip5/term [...]
+
+
+}
+
+
diff --git a/Test/test_python_CMIP6_CV_HISTORY.py b/Test/test_python_CMIP6_CV_HISTORY.py
new file mode 100644
index 0000000..03c87d2
--- /dev/null
+++ b/Test/test_python_CMIP6_CV_HISTORY.py
@@ -0,0 +1,102 @@
+from threading import Thread
+import time
+import cmor,numpy
+import contextlib
+import unittest
+import signal
+import sys,os
+import tempfile
+import atexit
+import cdms2
+import pdb
+
+
+# ------------------------------------------------------
+# Copy stdout and stderr file descriptor for cmor output
+# ------------------------------------------------------
+newstdout = os.dup(1)
+newstderr = os.dup(2)
+# --------------
+# Create tmpfile
+# --------------
+tmpfile = tempfile.mkstemp() #tempfile[0] = File number, tempfile[1] = File name.
+os.dup2(tmpfile[0], 1)
+os.dup2(tmpfile[0], 2)
+os.close(tmpfile[0])
+
+global testOK 
+testOK = []
+
+# ==============================
+# Handle SIGINT receive by CMOR
+# ==============================
+def sig_handler(signum, frame):
+    global testOK
+
+    f=open(tmpfile[1],'r')
+    lines=f.readlines()
+    for line in lines:
+        if line.find('Error:') != -1:
+            testOK = line.strip()
+            break
+    f.close()
+    os.unlink(tmpfile[1])
+
+
+# ==============================
+#  main thread
+# ==============================
+def run():
+    unittest.main()
+
+
+# ---------------------
+# Hook up SIGTEM signal 
+# ---------------------
+signal.signal(signal.SIGINT, sig_handler)
+
+
+class TestInstitutionMethods(unittest.TestCase):
+
+    def testCMIP6(self):
+        ''' This test will not fail we veirfy the attribute further_info_url'''
+
+        # -------------------------------------------
+        # Try to call cmor with a bad institution_ID
+        # -------------------------------------------
+        global testOK
+        error_flag = cmor.setup(inpath='Tables', netcdf_file_action=cmor.CMOR_REPLACE)
+        error_flag = cmor.dataset_json("Test/test_python_CMIP6_CV_HISTORY.json")
+        cmor.set_cur_dataset_attribute("history", "set for CMIP6 unittest")
+  
+        # ------------------------------------------
+        # load Omon table and create masso variable
+        # ------------------------------------------
+        cmor.load_table("CMIP6_Omon.json")
+        itime = cmor.axis(table_entry="time",units='months since 2010',
+                          coord_vals=numpy.array([0,1,2,3,4.]),
+                          cell_bounds=numpy.array([0,1,2,3,4,5.]))
+        ivar = cmor.variable(table_entry="masso",axis_ids=[itime],units='kg')
+
+        data=numpy.random.random(5)
+        for i in range(0,5):
+            a = cmor.write(ivar,data[i:i])
+        file = cmor.close()
+        print file
+        os.dup2(newstdout,1)
+        os.dup2(newstderr,2)
+        sys.stdout = os.fdopen(newstdout, 'w', 0)
+        sys.stderr = os.fdopen(newstderr, 'w', 0)
+        f=cdms2.open(cmor.get_final_filename(),"r")
+        a=f.getglobal("history")
+        self.assertIn("set for CMIP6 unittest", a)
+
+
+
+if __name__ == '__main__':
+    t = Thread(target=run)
+    t.start()
+    while t.is_alive():
+        t.join(1)
+
+
diff --git a/Test/test_python_CMIP6_CV_badgridgr.json b/Test/test_python_CMIP6_CV_badgridgr.json
new file mode 100644
index 0000000..40b9c10
--- /dev/null
+++ b/Test/test_python_CMIP6_CV_badgridgr.json
@@ -0,0 +1,92 @@
+{
+           "_control_vocabulary_file": "CMIP6_CV.json",
+           "_cmip6_option":           "CMIP6",
+
+           "activity_id":            "AerChemMIP",
+
+           "branch_method":          "standard",
+           "branch_time_in_child":   "365.0",
+           "#output":                "Output Path where files are written",
+           "outpath":                "CMIP6",
+
+           "#experiment_id":         "Correspond to id found in CV json file",
+           "#experiment_id":          "piClim-aer",
+           "experiment_id":          "piControl-withism",
+           "#experiment_id":          "land-hist",
+
+           "source_type":            "AGCM AER CHEM DENIS",
+           "source_type":            "AGCM AER DENIS",
+           "source_type":            "AOGCM ISM AER",
+           "#source_type":            "LND",
+           "sub_experiment":         "none",
+           "sub_experiment_id":      "none",
+           "#parent_sub_experiment_id": "N/A",
+           "parent_mip_era":         "N/A",
+           "mip_era":                "CMIP6",
+           "#calendar":              "",
+           "calendar":               "360_day",
+           "branch_time":            "1.34",
+
+           "#realization_index":     "",
+           "realization_index":      "1",
+
+           "#initialization_index":  "",
+           "initialization_index":   "1",
+
+           "#physics_index":         "",
+           "physics_index":          "1",
+
+           "#forcing_index":         "",
+           "forcing_index":          "1",
+
+           "#contact ":              "Not required",
+           "#contact ":              "Rusty Koder (koder at middle_earth.net)",
+
+           "#history":               "not required, supplemented by CMOR",
+           "history":                "Output from archivcl_A1.nce/giccm_03_std_2xCO2_2256.",
+
+           "#comment":               "Not required",
+           "comment":                "Equilibrium reached after 30-year spin-up after which data were output starting with nominal date of January 2030",
+
+           "#references":            "Not required",
+           "references":             "Model described by Koder and Tolkien (J. Geophys. Res., 2001, 576-591).  Also see http://www.GICC.su/giccm/doc/index.html  2XCO2 simulation described in Dorkey et al. '(Clim. Dyn., 2003, 323-357.)'",
+
+
+           "#driving_variant_label":     "no-driver",
+
+           "further_info_url":       "http://furtherinfo.es-doc.org/<mip_era><institution_id><source_id><experiment_id><sub_experiment_id><variant_label>",
+
+           "grid":                   "gs1x1",
+           "grid_label":             "gr-0",
+           "grid_resolution":        "5 km",
+
+           "institution_id":         "BNU",
+
+           "parent_activity_id":     "CMIP",
+           "parent_experiment_id":   "histALL",
+           "parent_source_id":       "GFDL-CM2-1",
+           "parent_variant_label":      "r1i1p1f3",
+
+
+           "#run_variant":           "Description of run variant (Recommended).",
+           "run_variant":            "forcing: black carbon aerosol only",
+
+           "#source_id":              "Model Source",
+           "source_id":               "CESM1-CAM5",
+
+           "#source":                "source title, first part is source_id",
+           "source":                 "CESM1 (CAM5): model version ca. 2009",
+
+
+           "#output_path_template":   "Template for output path directory using tables keys or global attributes",
+           "output_path_template":    "<activity_id><institution_id><source_id><experiment_id><variant_label><table><variable_id><grid_label><version>",
+
+
+           "output_file_template":    "<variable_id><table><experiment_id><source_id><variant_label><grid_label>",
+
+           "license":                "One of 2 licenses: ----- CMIP6 model data produced by <Your CentreName> is licensed under a Creative Commons Attribution 'NonCommercial Share Alike' 4.0 International License (http://creativecommons.org/licenses/by/4.0/). Use of the data should be acknowledged following guidelines found at <what URL???> The data is hosted via the Earth System Grid Federation. Permissions beyond the scope of this license may be available at http://pcmdi.org/cmip5/term [...]
+
+
+
+}
+
diff --git a/Test/test_python_CMIP6_CV_badgridgr.py b/Test/test_python_CMIP6_CV_badgridgr.py
new file mode 100644
index 0000000..09e0050
--- /dev/null
+++ b/Test/test_python_CMIP6_CV_badgridgr.py
@@ -0,0 +1,98 @@
+from threading import Thread
+import time
+import cmor,numpy
+import contextlib
+import unittest
+import signal
+import sys,os
+import tempfile
+import pdb
+import atexit
+
+
+# ------------------------------------------------------
+# Copy stdout and stderr file descriptor for cmor output
+# ------------------------------------------------------
+newstdout = os.dup(1)
+newstderr = os.dup(2)
+# --------------
+# Create tmpfile
+# --------------
+tmpfile = tempfile.mkstemp() #tempfile[0] = File number, tempfile[1] = File name.
+os.dup2(tmpfile[0], 1)
+os.dup2(tmpfile[0], 2)
+os.close(tmpfile[0])
+
+global testOK 
+testOK = []
+
+# ==============================
+# Handle SIGINT receive by CMOR
+# ==============================
+def sig_handler(signum, frame):
+    global testOK
+
+    f=open(tmpfile[1],'r')
+    lines=f.readlines()
+    for line in lines:
+        if line.find('Error:') != -1:
+            testOK = line.strip()
+            break
+    f.close()
+    os.unlink(tmpfile[1])
+
+
+# ==============================
+#  main thread
+# ==============================
+def run():
+    unittest.main()
+
+
+# ---------------------
+# Hook up SIGTEM signal 
+# ---------------------
+signal.signal(signal.SIGINT, sig_handler)
+
+
+class TestInstitutionMethods(unittest.TestCase):
+
+    def testCMIP6(self):
+
+        # -------------------------------------------
+        # Try to call cmor with a bad institution_ID
+        # -------------------------------------------
+        global testOK
+        error_flag = cmor.setup(inpath='Tables', netcdf_file_action=cmor.CMOR_REPLACE)
+        error_flag = cmor.dataset_json("Test/test_python_CMIP6_CV_badgridgr.json")
+  
+        # ------------------------------------------
+        # load Omon table and create masso variable
+        # ------------------------------------------
+        cmor.load_table("CMIP6_Omon.json")
+        itime = cmor.axis(table_entry="time",units='months since 2010',
+                          coord_vals=numpy.array([0,1,2,3,4.]),
+                          cell_bounds=numpy.array([0,1,2,3,4,5.]))
+        ivar = cmor.variable(table_entry="masso",axis_ids=[itime],units='kg')
+
+        data=numpy.random.random(5)
+        for i in range(0,5):
+            a = cmor.write(ivar,data[i:i])
+        os.dup2(newstdout,1)
+        os.dup2(newstderr,2)
+        sys.stdout = os.fdopen(newstdout, 'w', 0)
+        sys.stderr = os.fdopen(newstderr, 'w', 0)
+        time.sleep(.1)
+        # ------------------------------------------
+        # Check error after signal handler is back
+        # ------------------------------------------
+        self.assertIn("\"gr-0\"", testOK)
+
+
+if __name__ == '__main__':
+    t = Thread(target=run)
+    t.start()
+    while t.is_alive():
+        t.join(1)
+
+
diff --git a/Test/test_python_CMIP6_CV_badgridlabel.json b/Test/test_python_CMIP6_CV_badgridlabel.json
new file mode 100644
index 0000000..2d6d155
--- /dev/null
+++ b/Test/test_python_CMIP6_CV_badgridlabel.json
@@ -0,0 +1,92 @@
+{
+           "_control_vocabulary_file": "CMIP6_CV.json",
+           "_cmip6_option":           "CMIP6",
+
+           "activity_id":            "AerChemMIP",
+
+           "branch_method":          "standard",
+           "branch_time_in_child":   "365.0",
+           "#output":                "Output Path where files are written",
+           "outpath":                "CMIP6",
+
+           "#experiment_id":         "Correspond to id found in CV json file",
+           "#experiment_id":          "piClim-aer",
+           "experiment_id":          "piControl-withism",
+           "#experiment_id":          "land-hist",
+
+           "source_type":            "AGCM AER CHEM DENIS",
+           "source_type":            "AGCM AER DENIS",
+           "source_type":            "AOGCM ISM AER",
+           "#source_type":            "LND",
+           "sub_experiment":         "none",
+           "sub_experiment_id":      "none",
+           "#parent_sub_experiment_id": "N/A",
+           "parent_mip_era":         "N/A",
+           "mip_era":                "CMIP6",
+           "#calendar":              "",
+           "calendar":               "360_day",
+           "branch_time":            "1.34",
+
+           "#realization_index":     "",
+           "realization_index":      "1",
+
+           "#initialization_index":  "",
+           "initialization_index":   "1",
+
+           "#physics_index":         "",
+           "physics_index":          "1",
+
+           "#forcing_index":         "",
+           "forcing_index":          "1",
+
+           "#contact ":              "Not required",
+           "#contact ":              "Rusty Koder (koder at middle_earth.net)",
+
+           "#history":               "not required, supplemented by CMOR",
+           "history":                "Output from archivcl_A1.nce/giccm_03_std_2xCO2_2256.",
+
+           "#comment":               "Not required",
+           "comment":                "Equilibrium reached after 30-year spin-up after which data were output starting with nominal date of January 2030",
+
+           "#references":            "Not required",
+           "references":             "Model described by Koder and Tolkien (J. Geophys. Res., 2001, 576-591).  Also see http://www.GICC.su/giccm/doc/index.html  2XCO2 simulation described in Dorkey et al. '(Clim. Dyn., 2003, 323-357.)'",
+
+
+           "#driving_variant_label":     "no-driver",
+
+           "further_info_url":       "http://furtherinfo.es-doc.org/<mip_era><institution_id><source_id><experiment_id><sub_experiment_id><variant_label>",
+
+           "grid":                   "gs1x1",
+           "grid_label":             "gs1n",
+           "grid_resolution":        "5 km",
+
+           "institution_id":         "BNU",
+
+           "parent_activity_id":     "CMIP",
+           "parent_experiment_id":   "histALL",
+           "parent_source_id":       "GFDL-CM2-1",
+           "parent_variant_label":      "r1i1p1f3",
+
+
+           "#run_variant":           "Description of run variant (Recommended).",
+           "run_variant":            "forcing: black carbon aerosol only",
+
+           "#source_id":              "Model Source",
+           "source_id":               "CESM1-CAM5",
+
+           "#source":                "source title, first part is source_id",
+           "source":                 "CESM1 (CAM5): model version ca. 2009",
+
+
+           "#output_path_template":   "Template for output path directory using tables keys or global attributes",
+           "output_path_template":    "<activity_id><institution_id><source_id><experiment_id><variant_label><table><variable_id><grid_label><version>",
+
+
+           "output_file_template":    "<variable_id><table><experiment_id><source_id><variant_label><grid_label>",
+
+           "license":                "One of 2 licenses: ----- CMIP6 model data produced by <Your CentreName> is licensed under a Creative Commons Attribution 'NonCommercial Share Alike' 4.0 International License (http://creativecommons.org/licenses/by/4.0/). Use of the data should be acknowledged following guidelines found at <what URL???> The data is hosted via the Earth System Grid Federation. Permissions beyond the scope of this license may be available at http://pcmdi.org/cmip5/term [...]
+
+
+
+}
+
diff --git a/Test/test_python_CMIP6_CV_badgridlabel.py b/Test/test_python_CMIP6_CV_badgridlabel.py
new file mode 100644
index 0000000..c88b9e6
--- /dev/null
+++ b/Test/test_python_CMIP6_CV_badgridlabel.py
@@ -0,0 +1,98 @@
+from threading import Thread
+import time
+import cmor,numpy
+import contextlib
+import unittest
+import signal
+import sys,os
+import tempfile
+import pdb
+import atexit
+
+
+# ------------------------------------------------------
+# Copy stdout and stderr file descriptor for cmor output
+# ------------------------------------------------------
+newstdout = os.dup(1)
+newstderr = os.dup(2)
+# --------------
+# Create tmpfile
+# --------------
+tmpfile = tempfile.mkstemp() #tempfile[0] = File number, tempfile[1] = File name.
+os.dup2(tmpfile[0], 1)
+os.dup2(tmpfile[0], 2)
+os.close(tmpfile[0])
+
+global testOK 
+testOK = []
+
+# ==============================
+# Handle SIGINT receive by CMOR
+# ==============================
+def sig_handler(signum, frame):
+    global testOK
+
+    f=open(tmpfile[1],'r')
+    lines=f.readlines()
+    for line in lines:
+        if line.find('Error:') != -1:
+            testOK = line.strip()
+            break
+    f.close()
+    os.unlink(tmpfile[1])
+
+
+# ==============================
+#  main thread
+# ==============================
+def run():
+    unittest.main()
+
+
+# ---------------------
+# Hook up SIGTEM signal 
+# ---------------------
+signal.signal(signal.SIGINT, sig_handler)
+
+
+class TestInstitutionMethods(unittest.TestCase):
+
+    def testCMIP6(self):
+
+        # -------------------------------------------
+        # Try to call cmor with a bad institution_ID
+        # -------------------------------------------
+        global testOK
+        error_flag = cmor.setup(inpath='Tables', netcdf_file_action=cmor.CMOR_REPLACE)
+        error_flag = cmor.dataset_json("Test/test_python_CMIP6_CV_badgridlabel.json")
+  
+        # ------------------------------------------
+        # load Omon table and create masso variable
+        # ------------------------------------------
+        cmor.load_table("CMIP6_Omon.json")
+        itime = cmor.axis(table_entry="time",units='months since 2010',
+                          coord_vals=numpy.array([0,1,2,3,4.]),
+                          cell_bounds=numpy.array([0,1,2,3,4,5.]))
+        ivar = cmor.variable(table_entry="masso",axis_ids=[itime],units='kg')
+
+        data=numpy.random.random(5)
+        for i in range(0,5):
+            a = cmor.write(ivar,data[i:i])
+        os.dup2(newstdout,1)
+        os.dup2(newstderr,2)
+        sys.stdout = os.fdopen(newstdout, 'w', 0)
+        sys.stderr = os.fdopen(newstderr, 'w', 0)
+        time.sleep(.1)
+        # ------------------------------------------
+        # Check error after signal handler is back
+        # ------------------------------------------
+        self.assertIn("\"gs1n\"", testOK)
+
+
+if __name__ == '__main__':
+    t = Thread(target=run)
+    t.start()
+    while t.is_alive():
+        t.join(1)
+
+
diff --git a/Test/test_python_CMIP6_CV_badgridresolution.json b/Test/test_python_CMIP6_CV_badgridresolution.json
new file mode 100644
index 0000000..fbdd757
--- /dev/null
+++ b/Test/test_python_CMIP6_CV_badgridresolution.json
@@ -0,0 +1,92 @@
+{
+           "_control_vocabulary_file": "CMIP6_CV.json",
+           "_cmip6_option":           "CMIP6",
+
+           "activity_id":            "AerChemMIP",
+
+           "branch_method":          "standard",
+           "branch_time_in_child":   "365.0",
+           "#output":                "Output Path where files are written",
+           "outpath":                "CMIP6",
+
+           "#experiment_id":         "Correspond to id found in CV json file",
+           "#experiment_id":          "piClim-aer",
+           "experiment_id":          "piControl-withism",
+           "#experiment_id":          "land-hist",
+
+           "source_type":            "AGCM AER CHEM DENIS",
+           "source_type":            "AGCM AER DENIS",
+           "source_type":            "AOGCM ISM AER",
+           "#source_type":            "LND",
+           "sub_experiment":         "none",
+           "sub_experiment_id":      "none",
+           "#parent_sub_experiment_id": "N/A",
+           "parent_mip_era":         "N/A",
+           "mip_era":                "CMIP6",
+           "#calendar":              "",
+           "calendar":               "360_day",
+           "branch_time":            "1.34",
+
+           "#realization_index":     "",
+           "realization_index":      "1",
+
+           "#initialization_index":  "",
+           "initialization_index":   "1",
+
+           "#physics_index":         "",
+           "physics_index":          "1",
+
+           "#forcing_index":         "",
+           "forcing_index":          "1",
+
+           "#contact ":              "Not required",
+           "#contact ":              "Rusty Koder (koder at middle_earth.net)",
+
+           "#history":               "not required, supplemented by CMOR",
+           "history":                "Output from archivcl_A1.nce/giccm_03_std_2xCO2_2256.",
+
+           "#comment":               "Not required",
+           "comment":                "Equilibrium reached after 30-year spin-up after which data were output starting with nominal date of January 2030",
+
+           "#references":            "Not required",
+           "references":             "Model described by Koder and Tolkien (J. Geophys. Res., 2001, 576-591).  Also see http://www.GICC.su/giccm/doc/index.html  2XCO2 simulation described in Dorkey et al. '(Clim. Dyn., 2003, 323-357.)'",
+
+
+           "#driving_variant_label":     "no-driver",
+
+           "further_info_url":       "http://furtherinfo.es-doc.org/<mip_era><institution_id><source_id><experiment_id><sub_experiment_id><variant_label>",
+
+           "grid":                   "gs1x1",
+           "grid_label":             "gn",
+           "grid_resolution":        "335 km",
+
+           "institution_id":         "BNU",
+
+           "parent_activity_id":     "CMIP",
+           "parent_experiment_id":   "histALL",
+           "parent_source_id":       "GFDL-CM2-1",
+           "parent_variant_label":      "r1i1p1f3",
+
+
+           "#run_variant":           "Description of run variant (Recommended).",
+           "run_variant":            "forcing: black carbon aerosol only",
+
+           "#source_id":              "Model Source",
+           "source_id":               "CESM1-CAM5",
+
+           "#source":                "source title, first part is source_id",
+           "source":                 "CESM1 (CAM5): model version ca. 2009",
+
+
+           "#output_path_template":   "Template for output path directory using tables keys or global attributes",
+           "output_path_template":    "<activity_id><institution_id><source_id><experiment_id><variant_label><table><variable_id><grid_label><version>",
+
+
+           "output_file_template":    "<variable_id><table><experiment_id><source_id><variant_label><grid_label>",
+
+           "license":                "One of 2 licenses: ----- CMIP6 model data produced by <Your CentreName> is licensed under a Creative Commons Attribution 'NonCommercial Share Alike' 4.0 International License (http://creativecommons.org/licenses/by/4.0/). Use of the data should be acknowledged following guidelines found at <what URL???> The data is hosted via the Earth System Grid Federation. Permissions beyond the scope of this license may be available at http://pcmdi.org/cmip5/term [...]
+
+
+
+}
+
diff --git a/Test/test_python_CMIP6_CV_badgridresolution.py b/Test/test_python_CMIP6_CV_badgridresolution.py
new file mode 100644
index 0000000..310def0
--- /dev/null
+++ b/Test/test_python_CMIP6_CV_badgridresolution.py
@@ -0,0 +1,98 @@
+from threading import Thread
+import time
+import cmor,numpy
+import contextlib
+import unittest
+import signal
+import sys,os
+import tempfile
+import pdb
+import atexit
+
+
+# ------------------------------------------------------
+# Copy stdout and stderr file descriptor for cmor output
+# ------------------------------------------------------
+newstdout = os.dup(1)
+newstderr = os.dup(2)
+# --------------
+# Create tmpfile
+# --------------
+tmpfile = tempfile.mkstemp() #tempfile[0] = File number, tempfile[1] = File name.
+os.dup2(tmpfile[0], 1)
+os.dup2(tmpfile[0], 2)
+os.close(tmpfile[0])
+
+global testOK 
+testOK = []
+
+# ==============================
+# Handle SIGINT receive by CMOR
+# ==============================
+def sig_handler(signum, frame):
+    global testOK
+
+    f=open(tmpfile[1],'r')
+    lines=f.readlines()
+    for line in lines:
+        if line.find('Error:') != -1:
+            testOK = line.strip()
+            break
+    f.close()
+    os.unlink(tmpfile[1])
+
+
+# ==============================
+#  main thread
+# ==============================
+def run():
+    unittest.main()
+
+
+# ---------------------
+# Hook up SIGTEM signal 
+# ---------------------
+signal.signal(signal.SIGINT, sig_handler)
+
+
+class TestInstitutionMethods(unittest.TestCase):
+
+    def testCMIP6(self):
+
+        # -------------------------------------------
+        # Try to call cmor with a bad institution_ID
+        # -------------------------------------------
+        global testOK
+        error_flag = cmor.setup(inpath='Tables', netcdf_file_action=cmor.CMOR_REPLACE)
+        error_flag = cmor.dataset_json("Test/test_python_CMIP6_CV_badgridresolution.json")
+  
+        # ------------------------------------------
+        # load Omon table and create masso variable
+        # ------------------------------------------
+        cmor.load_table("CMIP6_Omon.json")
+        itime = cmor.axis(table_entry="time",units='months since 2010',
+                          coord_vals=numpy.array([0,1,2,3,4.]),
+                          cell_bounds=numpy.array([0,1,2,3,4,5.]))
+        ivar = cmor.variable(table_entry="masso",axis_ids=[itime],units='kg')
+
+        data=numpy.random.random(5)
+        for i in range(0,5):
+            a = cmor.write(ivar,data[i:i])
+        os.dup2(newstdout,1)
+        os.dup2(newstderr,2)
+        sys.stdout = os.fdopen(newstdout, 'w', 0)
+        sys.stderr = os.fdopen(newstderr, 'w', 0)
+        time.sleep(.1)
+        # ------------------------------------------
+        # Check error after signal handler is back
+        # ------------------------------------------
+        self.assertIn("\"335 km\"", testOK)
+
+
+if __name__ == '__main__':
+    t = Thread(target=run)
+    t.start()
+    while t.is_alive():
+        t.join(1)
+
+
diff --git a/Test/test_python_CMIP6_CV_badgridresolution2.json b/Test/test_python_CMIP6_CV_badgridresolution2.json
new file mode 100644
index 0000000..af0e4ff
--- /dev/null
+++ b/Test/test_python_CMIP6_CV_badgridresolution2.json
@@ -0,0 +1,92 @@
+{
+           "_control_vocabulary_file": "CMIP6_CV.json",
+           "_cmip6_option":           "CMIP6",
+
+           "activity_id":            "AerChemMIP",
+
+           "branch_method":          "standard",
+           "branch_time_in_child":   "365.0",
+           "#output":                "Output Path where files are written",
+           "outpath":                "CMIP6",
+
+           "#experiment_id":         "Correspond to id found in CV json file",
+           "#experiment_id":          "piClim-aer",
+           "experiment_id":          "piControl-withism",
+           "#experiment_id":          "land-hist",
+
+           "source_type":            "AGCM AER CHEM DENIS",
+           "source_type":            "AGCM AER DENIS",
+           "source_type":            "AOGCM ISM AER",
+           "#source_type":            "LND",
+           "sub_experiment":         "none",
+           "sub_experiment_id":      "none",
+           "#parent_sub_experiment_id": "N/A",
+           "parent_mip_era":         "N/A",
+           "mip_era":                "CMIP6",
+           "#calendar":              "",
+           "calendar":               "360_day",
+           "branch_time":            "1.34",
+
+           "#realization_index":     "",
+           "realization_index":      "1",
+
+           "#initialization_index":  "",
+           "initialization_index":   "1",
+
+           "#physics_index":         "",
+           "physics_index":          "1",
+
+           "#forcing_index":         "",
+           "forcing_index":          "1",
+
+           "#contact ":              "Not required",
+           "#contact ":              "Rusty Koder (koder at middle_earth.net)",
+
+           "#history":               "not required, supplemented by CMOR",
+           "history":                "Output from archivcl_A1.nce/giccm_03_std_2xCO2_2256.",
+
+           "#comment":               "Not required",
+           "comment":                "Equilibrium reached after 30-year spin-up after which data were output starting with nominal date of January 2030",
+
+           "#references":            "Not required",
+           "references":             "Model described by Koder and Tolkien (J. Geophys. Res., 2001, 576-591).  Also see http://www.GICC.su/giccm/doc/index.html  2XCO2 simulation described in Dorkey et al. '(Clim. Dyn., 2003, 323-357.)'",
+
+
+           "#driving_variant_label":     "no-driver",
+
+           "further_info_url":       "http://furtherinfo.es-doc.org/<mip_era><institution_id><source_id><experiment_id><sub_experiment_id><variant_label>",
+
+           "grid":                   "gs1x1",
+           "grid_label":             "gs1x1 gn",
+           "grid_resolution":        "2x2",
+
+           "institution_id":         "BNU",
+
+           "parent_activity_id":     "CMIP",
+           "parent_experiment_id":   "histALL",
+           "parent_source_id":       "GFDL-CM2-1",
+           "parent_variant_label":      "r1i1p1f3",
+
+
+           "#run_variant":           "Description of run variant (Recommended).",
+           "run_variant":            "forcing: black carbon aerosol only",
+
+           "#source_id":              "Model Source",
+           "source_id":               "CESM1-CAM5",
+
+           "#source":                "source title, first part is source_id",
+           "source":                 "CESM1 (CAM5): model version ca. 2009",
+
+
+           "#output_path_template":   "Template for output path directory using tables keys or global attributes",
+           "output_path_template":    "<activity_id><institution_id><source_id><experiment_id><variant_label><table><variable_id><grid_label><version>",
+
+
+           "output_file_template":    "<variable_id><table><experiment_id><source_id><variant_label><grid_label>",
+
+           "license":                "One of 2 licenses: ----- CMIP6 model data produced by <Your CentreName> is licensed under a Creative Commons Attribution 'NonCommercial Share Alike' 4.0 International License (http://creativecommons.org/licenses/by/4.0/). Use of the data should be acknowledged following guidelines found at <what URL???> The data is hosted via the Earth System Grid Federation. Permissions beyond the scope of this license may be available at http://pcmdi.org/cmip5/term [...]
+
+
+
+}
+
diff --git a/Test/test_python_CMIP6_CV_badgridresolution2.py b/Test/test_python_CMIP6_CV_badgridresolution2.py
new file mode 100644
index 0000000..7053932
--- /dev/null
+++ b/Test/test_python_CMIP6_CV_badgridresolution2.py
@@ -0,0 +1,98 @@
+from threading import Thread
+import time
+import cmor,numpy
+import contextlib
+import unittest
+import signal
+import sys,os
+import tempfile
+import pdb
+import atexit
+
+
+# ------------------------------------------------------
+# Copy stdout and stderr file descriptor for cmor output
+# ------------------------------------------------------
+newstdout = os.dup(1)
+newstderr = os.dup(2)
+# --------------
+# Create tmpfile
+# --------------
+tmpfile = tempfile.mkstemp() #tempfile[0] = File number, tempfile[1] = File name.
+os.dup2(tmpfile[0], 1)
+os.dup2(tmpfile[0], 2)
+os.close(tmpfile[0])
+
+global testOK 
+testOK = []
+
+# ==============================
+# Handle SIGINT receive by CMOR
+# ==============================
+def sig_handler(signum, frame):
+    global testOK
+
+    f=open(tmpfile[1],'r')
+    lines=f.readlines()
+    for line in lines:
+        if line.find('Error:') != -1:
+            testOK = line.strip()
+            break
+    f.close()
+    os.unlink(tmpfile[1])
+
+
+# ==============================
+#  main thread
+# ==============================
+def run():
+    unittest.main()
+
+
+# ----------------------
+# Hook up SIGINT signal 
+# ----------------------
+signal.signal(signal.SIGINT, sig_handler)
+
+
+class TestInstitutionMethods(unittest.TestCase):
+
+    def testCMIP6(self):
+
+        # -------------------------------------------
+        # Try to call cmor with a bad institution_ID
+        # -------------------------------------------
+        global testOK
+        error_flag = cmor.setup(inpath='Tables', netcdf_file_action=cmor.CMOR_REPLACE)
+        error_flag = cmor.dataset_json("Test/test_python_CMIP6_CV_badgridresolution2.json")
+  
+        # ------------------------------------------
+        # load Omon table and create masso variable
+        # ------------------------------------------
+        cmor.load_table("CMIP6_Omon.json")
+        itime = cmor.axis(table_entry="time",units='months since 2010',
+                          coord_vals=numpy.array([0,1,2,3,4.]),
+                          cell_bounds=numpy.array([0,1,2,3,4,5.]))
+        ivar = cmor.variable(table_entry="masso",axis_ids=[itime],units='kg')
+
+        data=numpy.random.random(5)
+        for i in range(0,5):
+            a = cmor.write(ivar,data[i:i])
+        os.dup2(newstdout,1)
+        os.dup2(newstderr,2)
+        sys.stdout = os.fdopen(newstdout, 'w', 0)
+        sys.stderr = os.fdopen(newstderr, 'w', 0)
+        time.sleep(.1)
+        # ------------------------------------------
+        # Check error after signal handler is back
+        # ------------------------------------------
+        self.assertIn("\"2x2\"", testOK)
+
+
+if __name__ == '__main__':
+    t = Thread(target=run)
+    t.start()
+    while t.is_alive():
+        t.join(1)
+
+
diff --git a/Test/test_python_CMIP6_CV_badinstitution.json b/Test/test_python_CMIP6_CV_badinstitution.json
new file mode 100644
index 0000000..012c246
--- /dev/null
+++ b/Test/test_python_CMIP6_CV_badinstitution.json
@@ -0,0 +1,102 @@
+{
+           "_control_vocabulary_file": "CMIP6_CV.json",
+           "_cmip6_option":           "CMIP6",
+
+           "#activity_id":           "Specify an activity PMIP, GeoMIP, (must start with CMIP6-)",
+           "activity_id":            "CMIP",
+
+           "#output":                "Output Path where files are written",
+           "outpath":                "CMIP6",
+
+           "#experiment_id":         "Correspond to id found in experiments.json",
+           "experiment_id":          "piControl",
+           "source_type":            "AOGCM",
+           "sub_experiment":         "none",
+           "sub_experiment_id":      "none",
+           "parent_sub_experiment_id":"N/A",
+           "parent_mip_era":         "N/A",
+           "mip_era":                "CMIP6",
+
+           "#source":                "",
+           "source":                 "MIROC-ESM",
+
+           "#calendar":              "",
+           "calendar":               "gregorian",
+
+           "#realization_index":     "",
+           "realization_index":      "1",
+
+           "#initialization_index":  "",
+           "initialization_index":   "1",
+
+           "#physics_index":         "",
+           "physics_index":          "1",
+
+           "#forcing_index":         "",
+           "forcing_index":          "1",
+
+           "#contact ":              "",
+           "contact ":               "Python Coder (python at a.b.com) ",
+
+           "#history":               "",
+           "history":                "Output from archivcl_A1.nce/giccm_03_std_2xCO2_2256.",
+
+           "#comment":               "",
+           "comment":                "Equilibrium reached after 30-year spin-up ",
+
+           "#references":            "",
+           "references":             "Model described by Koder and Tolkien ",
+
+           "#institution_id":         "",
+           "institution_id":          "NCC",
+
+           "#institution":           "Controlled Vocabulary",
+           "institution":            "bad institution",
+            
+           "#model_id":              "",
+           "model_id":               "GICCM1",
+
+           "#forcing":               "",
+           "forcing":                "TO, SO, Nat",
+
+           "#parent_experiment_rip": "",
+           "parent_variant_label":  "r1i3p2",
+
+           "#parent_experiment_id":  "",
+           "parent_experiment_id":   "N/A",
+
+           "#branch_time":            "",
+           "branch_time":             "1",
+
+
+           "parent_activity_id": "CMIP",
+           "parent_experiment_id": "histALL",
+           "parent_source_id":   "GFDL-CM2-1",
+           "parent_variant_label":  "r1i1p1f3",
+
+           "branch_method":         "standard",
+           "branch_time_in_child":  "00D0",
+           "branch_time_in_parent":"3650.0D0",
+           "branch_time_units_in_parent": "days since 1000-1-1",
+
+
+           "further_info_url":       "http://furtherinfo.es-doc.org/<mip_era><institution_id><source_id><experiment_id><sub_experiment_id><variant_label>",
+           "grid":                   "native atmosphere T63 gaussian grid (64x128 latxlon)",
+           "grid_label":             "gn",
+           "grid_resolution":        "5 km",
+           "references":             "Model described by Koder and Tolkien (J. Geophys. Res.,2001, 576 - 591).  Also see http://www.GICC.su/giccm/doc/index.html  2XCO2 simulation described in Dorkey et al. '(Clim. Dyn., 2003, 323 - 357.)",
+           "run_variant":            "forcing: black carbon aerosol only",
+           "source_id":              "MIROC-ESM",
+
+           "#output_path_template":   "Template for output path directory using tables keys or global attributes",
+           "output_path_template":    "<activity_id><institution_id><source_id><experiment_id><variant_label><table><variable_id><grid_label><version>",
+
+           "#output_file_template":   "Template for output filename using table keys or global attributes",
+           "output_file_template":    "<variable_id><table><experiment_id><source_id><variant_label><grid_label>",
+
+           "license":                "One of 2 licenses: ----- CMIP6 model data produced by <Your CentreName> is licensed under a Creative Commons Attribution 'NonCommercial Share Alike' 4.0 International License (http://creativecommons.org/licenses/by/4.0/). Use of the data should be acknowledged following guidelines found at <what URL???> The data is hosted via the Earth System Grid Federation. Permissions beyond the scope of this license may be available at http://pcmdi.org/cmip5/term [...]
+
+
+}
+
+
diff --git a/Test/test_python_CMIP6_CV_badinstitution.py b/Test/test_python_CMIP6_CV_badinstitution.py
new file mode 100644
index 0000000..4257762
--- /dev/null
+++ b/Test/test_python_CMIP6_CV_badinstitution.py
@@ -0,0 +1,60 @@
+import cmor,numpy
+import unittest
+import sys,os
+import tempfile
+import pdb
+
+class TestInstitutionMethods(unittest.TestCase):
+
+    def test_Institution(self):
+
+        # ------------------------------------------------------
+        # Copy stdout and stderr file descriptor for cmor output
+        # ------------------------------------------------------
+        newstdout = os.dup(1)
+        newstderr = os.dup(2)
+        # --------------
+        # Create tmpfile
+        # --------------
+        tmpfile = tempfile.mkstemp()
+        os.dup2(tmpfile[0], 1)
+        os.dup2(tmpfile[0], 2)
+        os.close(tmpfile[0])
+        # -------------------------------------------
+        # Try to call cmor with a bad institution_ID
+        # -------------------------------------------
+        try:
+            error_flag = cmor.setup(inpath='Tables', netcdf_file_action=cmor.CMOR_REPLACE)
+            error_flag = cmor.dataset_json("Test/test_python_CMIP6_CV_badinstitution.json")
+  
+            # ------------------------------------------
+            # load Omon table and create masso variable
+            # ------------------------------------------
+            cmor.load_table("CMIP6_Omon.json")
+            itime = cmor.axis(table_entry="time",units='months since 2010',
+                              coord_vals=numpy.array([0,1,2,3,4.]),
+                              cell_bounds=numpy.array([0,1,2,3,4,5.]))
+            ivar = cmor.variable(table_entry="masso",axis_ids=[itime],units='kg')
+
+            data=numpy.random.random(5)
+            for i in range(0,5):
+                cmor.write(ivar,data[i:i])
+            error_flag = cmor.close()
+        finally:
+            os.dup2(newstdout,1)
+            os.dup2(newstderr,2)
+            sys.stdout = os.fdopen(newstdout, 'w', 0)
+            sys.stderr = os.fdopen(newstderr, 'w', 0)
+            f=open(tmpfile[1],'r')
+            lines=f.readlines()
+            for line in lines:
+                if line.find('Warning:') != -1:
+                    self.assertIn('bad institution', line.strip())
+                    break
+            f.close()
+            os.unlink(tmpfile[1])
+
+
+if __name__ == '__main__':
+    unittest.main()
+
diff --git a/Test/test_python_CMIP6_CV_badinstitutionID.json b/Test/test_python_CMIP6_CV_badinstitutionID.json
new file mode 100644
index 0000000..b7f8c06
--- /dev/null
+++ b/Test/test_python_CMIP6_CV_badinstitutionID.json
@@ -0,0 +1,102 @@
+{
+           "_control_vocabulary_file": "CMIP6_CV.json",
+           "_cmip6_option":           "CMIP6",
+
+           "#activity_id":           "Specify an activity PMIP, GeoMIP, (must start with CMIP6-)",
+           "activity_id":            "CMIP",
+
+           "#output":                "Output Path where files are written",
+           "outpath":                "CMIP6",
+
+           "#experiment_id":         "Correspond to id found in experiments.json",
+           "experiment_id":          "piControl",
+           "source_type":            "AOGCM",
+           "sub_experiment":         "none",
+           "sub_experiment_id":      "none",
+           "parent_sub_experiment_id":"N/A",
+           "parent_mip_era":         "N/A",
+           "mip_era":                "CMIP6",
+
+           "#source":                "",
+           "source":                 "MIROC-ESM",
+
+           "#calendar":              "",
+           "calendar":               "gregorian",
+
+           "#realization_index":     "",
+           "realization_index":      "1",
+
+           "#initialization_index":  "",
+           "initialization_index":   "1",
+
+           "#physics_index":         "",
+           "physics_index":          "1",
+
+           "#forcing_index":         "",
+           "forcing_index":          "1",
+
+           "#contact ":              "",
+           "contact ":               "Python Coder (python at a.b.com) ",
+
+           "#history":               "",
+           "history":                "Output from archivcl_A1.nce/giccm_03_std_2xCO2_2256.",
+
+           "#comment":               "",
+           "comment":                "Equilibrium reached after 30-year spin-up ",
+
+           "#references":            "",
+           "references":             "Model described by Koder and Tolkien ",
+
+           "#institution_id":         "",
+           "institution_id":          "PCMDI",
+
+           "#institution":           "Controlled Vocabulary",
+           "institution":            "PCMDI",
+            
+           "#model_id":              "",
+           "model_id":               "GICCM1",
+
+           "#forcing":               "",
+           "forcing":                "TO, SO, Nat",
+
+           "#parent_experiment_rip": "",
+           "parent_variant_label":  "r1i3p2",
+
+           "#parent_experiment_id":  "",
+           "parent_experiment_id":   "N/A",
+
+           "#branch_time":            "",
+           "branch_time":             "1",
+
+
+           "parent_activity_id": "CMIP",
+           "parent_experiment_id": "histALL",
+           "parent_source_id":   "GFDL-CM2-1",
+           "parent_variant_label":  "r1i1p1f3",
+
+           "branch_method":         "standard",
+           "branch_time_in_child":  "00D0",
+           "branch_time_in_parent":"3650.0D0",
+           "branch_time_units_in_parent": "days since 1000-1-1",
+
+
+           "further_info_url":       "http://furtherinfo.es-doc.org/<mip_era><institution_id><source_id><experiment_id><sub_experiment_id><variant_label>",
+           "grid":                   "native atmosphere T63 gaussian grid (64x128 latxlon)",
+           "grid_label":             "gn",
+           "grid_resolution":        "5 km",
+           "references":             "Model described by Koder and Tolkien (J. Geophys. Res.,2001, 576 - 591).  Also see http://www.GICC.su/giccm/doc/index.html  2XCO2 simulation described in Dorkey et al. '(Clim. Dyn., 2003, 323 - 357.)",
+           "run_variant":            "forcing: black carbon aerosol only",
+           "source_id":              "MIROC-ESM",
+
+           "#output_path_template":   "Template for output path directory using tables keys or global attributes",
+           "output_path_template":    "<activity_id><institution_id><source_id><experiment_id><variant_label><table><variable_id><grid_label><version>",
+
+           "#output_file_template":   "Template for output filename using table keys or global attributes",
+           "output_file_template":    "<variable_id><table><experiment_id><source_id><variant_label><grid_label>",
+
+           "license":                "One of 2 licenses: ----- CMIP6 model data produced by <Your CentreName> is licensed under a Creative Commons Attribution 'NonCommercial Share Alike' 4.0 International License (http://creativecommons.org/licenses/by/4.0/). Use of the data should be acknowledged following guidelines found at <what URL???> The data is hosted via the Earth System Grid Federation. Permissions beyond the scope of this license may be available at http://pcmdi.org/cmip5/term [...]
+
+
+}
+
+
diff --git a/Test/test_python_CMIP6_CV_badinstitutionID.py b/Test/test_python_CMIP6_CV_badinstitutionID.py
new file mode 100644
index 0000000..ed7a524
--- /dev/null
+++ b/Test/test_python_CMIP6_CV_badinstitutionID.py
@@ -0,0 +1,86 @@
+from threading import Thread
+import time
+import cmor,numpy
+import unittest
+import signal
+import sys,os
+import tempfile
+
+
+# ------------------------------------------------------
+# Copy stdout and stderr file descriptor for cmor output
+# ------------------------------------------------------
+newstdout = os.dup(1)
+newstderr = os.dup(2)
+# --------------
+# Create tmpfile
+# --------------
+tmpfile = tempfile.mkstemp()
+os.dup2(tmpfile[0], 1)
+os.dup2(tmpfile[0], 2)
+os.close(tmpfile[0])
+
+global testOK 
+testOK = []
+
+# --------------
+# Create thread
+# --------------
+def sig_handler(signum, frame):
+
+    global testOK
+
+    f=open(tmpfile[1],'r')
+    lines=f.readlines()
+    for line in lines:
+        if line.find('Error:') != -1:
+            testOK = line.strip()
+            break
+    f.close()
+    os.unlink(tmpfile[1])
+
+
+def run():
+    unittest.main()
+
+signal.signal(signal.SIGINT, sig_handler)
+signal.signal(signal.SIGINT, sig_handler)
+
+
+class TestInstitutionMethods(unittest.TestCase):
+
+    def test_Institution(self):
+
+        # -------------------------------------------
+        # Try to call cmor with a bad institution_ID
+        # -------------------------------------------
+        global testOK
+        error_flag = cmor.setup(inpath='Tables', netcdf_file_action=cmor.CMOR_REPLACE)
+        error_flag = cmor.dataset_json("Test/test_python_CMIP6_CV_badinstitutionID.json")
+  
+        # ------------------------------------------
+        # load Omon table and create masso variable
+        # ------------------------------------------
+        cmor.load_table("CMIP6_Omon.json")
+        itime = cmor.axis(table_entry="time",units='months since 2010',
+                          coord_vals=numpy.array([0,1,2,3,4.]),
+                          cell_bounds=numpy.array([0,1,2,3,4,5.]))
+        ivar = cmor.variable(table_entry="masso",axis_ids=[itime],units='kg')
+
+        data=numpy.random.random(5)
+        for i in range(0,5):
+            a = cmor.write(ivar,data[i:i])
+        os.dup2(newstdout,1)
+        os.dup2(newstderr,2)
+        sys.stdout = os.fdopen(newstdout, 'w', 0)
+        time.sleep(.1)
+        self.assertIn("PCMDI", testOK)
+
+
+if __name__ == '__main__':
+    t = Thread(target=run)
+    t.start()
+    while t.is_alive():
+        t.join(1)
+
+
diff --git a/Test/test_python_CMIP6_CV_badinstitutionIDNotSet.json b/Test/test_python_CMIP6_CV_badinstitutionIDNotSet.json
new file mode 100644
index 0000000..3ab48d1
--- /dev/null
+++ b/Test/test_python_CMIP6_CV_badinstitutionIDNotSet.json
@@ -0,0 +1,102 @@
+{
+           "_control_vocabulary_file": "CMIP6_CV.json",
+           "_cmip6_option":           "CMIP6",
+
+           "#activity_id":           "Specify an activity PMIP, GeoMIP, (must start with CMIP6-)",
+           "activity_id":            "CMIP",
+
+           "#output":                "Output Path where files are written",
+           "outpath":                "CMIP6",
+
+           "#experiment_id":         "Correspond to id found in experiments.json",
+           "experiment_id":          "piControl",
+           "source_type":            "AOGCM",
+           "sub_experiment":         "none",
+           "sub_experiment_id":      "none",
+           "parent_sub_experiment_id":"N/A",
+           "parent_mip_era":         "N/A",
+           "mip_era":                "CMIP6",
+
+           "#source":                "",
+           "source":                 "MIROC-ESM",
+
+           "#calendar":              "",
+           "calendar":               "gregorian",
+
+           "#realization_index":     "",
+           "realization_index":      "1",
+
+           "#initialization_index":  "",
+           "initialization_index":   "1",
+
+           "#physics_index":         "",
+           "physics_index":          "1",
+
+           "#forcing_index":         "",
+           "forcing_index":          "1",
+
+           "#contact ":              "",
+           "contact ":               "Python Coder (python at a.b.com) ",
+
+           "#history":               "",
+           "history":                "Output from archivcl_A1.nce/giccm_03_std_2xCO2_2256.",
+
+           "#comment":               "",
+           "comment":                "Equilibrium reached after 30-year spin-up ",
+
+           "#references":            "",
+           "references":             "Model described by Koder and Tolkien ",
+
+           "#institution_id":         "",
+           "institution_id":          "",
+
+           "#institution":           "Controlled Vocabulary",
+           "institution":            "PCMDI",
+            
+           "#model_id":              "",
+           "model_id":               "GICCM1",
+
+           "#forcing":               "",
+           "forcing":                "TO, SO, Nat",
+
+           "#parent_experiment_rip": "",
+           "parent_variant_label":  "r1i3p2",
+
+           "#parent_experiment_id":  "",
+           "parent_experiment_id":   "N/A",
+
+           "#branch_time":            "",
+           "branch_time":             "1",
+
+
+           "parent_activity_id": "CMIP",
+           "parent_experiment_id": "histALL",
+           "parent_source_id":   "GFDL-CM2-1",
+           "parent_variant_label":  "r1i1p1f3",
+
+           "branch_method":         "standard",
+           "branch_time_in_child":  "00D0",
+           "branch_time_in_parent":"3650.0D0",
+           "branch_time_units_in_parent": "days since 1000-1-1",
+
+
+           "further_info_url":       "http://furtherinfo.es-doc.org/<mip_era><institution_id><source_id><experiment_id><sub_experiment_id><variant_label>",
+           "grid":                   "native atmosphere T63 gaussian grid (64x128 latxlon)",
+           "grid_label":             "gn",
+           "grid_resolution":        "5 km",
+           "references":             "Model described by Koder and Tolkien (J. Geophys. Res.,2001, 576 - 591).  Also see http://www.GICC.su/giccm/doc/index.html  2XCO2 simulation described in Dorkey et al. '(Clim. Dyn., 2003, 323 - 357.)",
+           "run_variant":            "forcing: black carbon aerosol only",
+           "source_id":              "MIROC-ESM",
+
+           "#output_path_template":   "Template for output path directory using tables keys or global attributes",
+           "output_path_template":    "<activity_id><institution_id><source_id><experiment_id><variant_label><table><variable_id><grid_label><version>",
+
+           "#output_file_template":   "Template for output filename using table keys or global attributes",
+           "output_file_template":    "<variable_id><table><experiment_id><source_id><variant_label><grid_label>",
+
+           "license":                "One of 2 licenses: ----- CMIP6 model data produced by <Your CentreName> is licensed under a Creative Commons Attribution 'NonCommercial Share Alike' 4.0 International License (http://creativecommons.org/licenses/by/4.0/). Use of the data should be acknowledged following guidelines found at <what URL???> The data is hosted via the Earth System Grid Federation. Permissions beyond the scope of this license may be available at http://pcmdi.org/cmip5/term [...]
+
+
+}
+
+
diff --git a/Test/test_python_CMIP6_CV_badinstitutionIDNotSet.py b/Test/test_python_CMIP6_CV_badinstitutionIDNotSet.py
new file mode 100644
index 0000000..a0e45b1
--- /dev/null
+++ b/Test/test_python_CMIP6_CV_badinstitutionIDNotSet.py
@@ -0,0 +1,85 @@
+from threading import Thread
+import time
+import cmor,numpy
+import contextlib
+import unittest
+import signal
+import sys,os
+import tempfile
+import pdb
+import atexit
+
+
+# ------------------------------------------------------
+# Copy stdout and stderr file descriptor for cmor output
+# ------------------------------------------------------
+newstdout = os.dup(1)
+newstderr = os.dup(2)
+# --------------
+# Create tmpfile
+# --------------
+tmpfile = tempfile.mkstemp()
+os.dup2(tmpfile[0], 1)
+os.dup2(tmpfile[0], 2)
+os.close(tmpfile[0])
+
+global testOK 
+testOK = []
+
+def sig_handler(signum, frame):
+    global testOK
+
+    f=open(tmpfile[1],'r')
+    lines=f.readlines()
+    for line in lines:
+        if line.find('Error:') != -1:
+            testOK = line.strip()
+            break
+    f.close()
+    os.unlink(tmpfile[1])
+
+
+def run():
+    unittest.main()
+
+signal.signal(signal.SIGINT, sig_handler)
+
+
+class TestInstitutionMethods(unittest.TestCase):
+
+    def test_Institution(self):
+
+        # -------------------------------------------
+        # Try to call cmor with a bad institution_ID
+        # -------------------------------------------
+        global testOK
+        error_flag = cmor.setup(inpath='Tables', netcdf_file_action=cmor.CMOR_REPLACE)
+        error_flag = cmor.dataset_json("Test/test_python_CMIP6_CV_badinstitutionIDNotSet.json")
+  
+        # ------------------------------------------
+        # load Omon table and create masso variable
+        # ------------------------------------------
+        cmor.load_table("CMIP6_Omon.json")
+        itime = cmor.axis(table_entry="time",units='months since 2010',
+                          coord_vals=numpy.array([0,1,2,3,4.]),
+                          cell_bounds=numpy.array([0,1,2,3,4,5.]))
+        ivar = cmor.variable(table_entry="masso",axis_ids=[itime],units='kg')
+
+        data=numpy.random.random(5)
+        for i in range(0,5):
+            a = cmor.write(ivar,data[i:i])
+        os.dup2(newstdout,1)
+        os.dup2(newstderr,2)
+        sys.stdout = os.fdopen(newstdout, 'w', 0)
+        sys.stderr = os.fdopen(newstderr, 'w', 0)
+        time.sleep(.1)
+        self.assertIn("Control Vocabulary file", testOK)
+
+
+if __name__ == '__main__':
+    t = Thread(target=run)
+    t.start()
+    while t.is_alive():
+        t.join(1)
+
+
diff --git a/Test/test_python_CMIP6_CV_badsource.json b/Test/test_python_CMIP6_CV_badsource.json
new file mode 100644
index 0000000..c7ef107
--- /dev/null
+++ b/Test/test_python_CMIP6_CV_badsource.json
@@ -0,0 +1,100 @@
+{
+           "_control_vocabulary_file": "CMIP6_CV.json",
+           "_cmip6_option":           "CMIP6",
+
+           "#activity_id":           "Specify an activity PMIP, GeoMIP, (must start with CMIP6-)",
+           "activity_id":            "CMIP",
+
+           "#output":                "Output Path where files are written",
+           "outpath":                "CMIP6",
+
+           "#experiment_id":         "Correspond to id found in experiments.json",
+           "experiment_id":          "piControl",
+           "sub_experiment_id":      "none",
+           "sub_experiment":         "none",
+
+
+           "parent_sub_experiment_id":"N/A",
+           "parent_mip_era":         "N/A",
+           "mip_era":                "CMIP6",
+
+           "source_id":              "KMA-ACE",
+           "source":                 "bad_source",
+           "source_type":            "AOGCM",
+
+           "#calendar":              "",
+           "calendar":               "gregorian",
+
+           "#realization_index":     "",
+           "realization_index":      "1",
+
+           "#initialization_index":  "",
+           "initialization_index":   "1",
+
+           "#physics_index":         "",
+           "physics_index":          "1",
+
+           "#forcing_index":         "",
+           "forcing_index":          "1",
+
+           "#contact ":              "",
+           "contact ":               "Python Coder (python at a.b.com) ",
+
+           "#history":               "",
+           "history":                "Output from archivcl_A1.nce/giccm_03_std_2xCO2_2256.",
+
+           "#comment":               "",
+           "comment":                "Equilibrium reached after 30-year spin-up ",
+
+           "#references":            "",
+           "references":             "Model described by Koder and Tolkien ",
+
+           "institution_id":          "NCC",
+
+            
+           "#model_id":              "",
+           "model_id":               "GICCM1",
+
+           "#forcing":               "",
+           "forcing":                "TO, SO, Nat",
+
+           "#parent_experiment_rip": "",
+           "parent_variant_label":  "r1i3p2",
+
+           "#parent_experiment_id":  "",
+           "parent_experiment_id":   "N/A",
+
+           "#branch_time":            "",
+           "branch_time":             "1",
+
+
+           "parent_activity_id": "CMIP",
+           "parent_experiment_id": "histALL",
+           "parent_source_id":   "GFDL-CM2-1",
+           "parent_variant_label":  "r1i1p1f3",
+
+           "branch_method":         "standard",
+           "branch_time_in_child":  "00D0",
+           "branch_time_in_parent":"3650.0D0",
+           "branch_time_units_in_parent": "days since 1000-1-1",
+
+
+           "further_info_url":       "http://furtherinfo.es-doc.org/<mip_era><institution_id><source_id><experiment_id><sub_experiment_id><variant_label>",
+           "grid":                   "native atmosphere T63 gaussian grid (64x128 latxlon)",
+           "grid_label":             "gn",
+           "grid_resolution":        "5 km",
+           "references":             "Model described by Koder and Tolkien (J. Geophys. Res.,2001, 576 - 591).  Also see http://www.GICC.su/giccm/doc/index.html  2XCO2 simulation described in Dorkey et al. '(Clim. Dyn., 2003, 323 - 357.)",
+           "run_variant":            "forcing: black carbon aerosol only",
+
+           "#output_path_template":   "Template for output path directory using tables keys or global attributes",
+           "output_path_template":    "<activity_id><institution_id><source_id><experiment_id><variant_label><table><variable_id><grid_label><version>",
+
+           "#output_file_template":   "Template for output filename using table keys or global attributes",
+           "output_file_template":    "<variable_id><table><experiment_id><source_id><variant_label><grid_label>",
+
+           "license":                "One of 2 licenses: ----- CMIP6 model data produced by <Your CentreName> is licensed under a Creative Commons Attribution 'NonCommercial Share Alike' 4.0 International License (http://creativecommons.org/licenses/by/4.0/). Use of the data should be acknowledged following guidelines found at <what URL???> The data is hosted via the Earth System Grid Federation. Permissions beyond the scope of this license may be available at http://pcmdi.org/cmip5/term [...]
+
+
+}
+
+
diff --git a/Test/test_python_CMIP6_CV_badsource.py b/Test/test_python_CMIP6_CV_badsource.py
new file mode 100644
index 0000000..7ea454f
--- /dev/null
+++ b/Test/test_python_CMIP6_CV_badsource.py
@@ -0,0 +1,62 @@
+import cmor,numpy
+import unittest
+import sys,os
+import tempfile
+import pdb
+
+class TestInstitutionMethods(unittest.TestCase):
+
+    def test_Institution(self):
+
+        # ------------------------------------------------------
+        # Copy stdout and stderr file descriptor for cmor output
+        # ------------------------------------------------------
+        newstdout = os.dup(1)
+        newstderr = os.dup(2)
+        # --------------
+        # Create tmpfile
+        # --------------
+        tmpfile = tempfile.mkstemp()
+        os.dup2(tmpfile[0], 1)
+        os.dup2(tmpfile[0], 2)
+        os.close(tmpfile[0])
+        # -------------------------------------------
+        # Try to call cmor with a bad institution_ID
+        # -------------------------------------------
+        try:
+            error_flag = cmor.setup(inpath='Tables', netcdf_file_action=cmor.CMOR_REPLACE)
+            error_flag = cmor.dataset_json("Test/test_python_CMIP6_CV_badsource.json")
+  
+            # ------------------------------------------
+            # load Omon table and create masso variable
+            # ------------------------------------------
+            cmor.load_table("CMIP6_Omon.json")
+            itime = cmor.axis(table_entry="time",units='months since 2010',
+                              coord_vals=numpy.array([0,1,2,3,4.]),
+                              cell_bounds=numpy.array([0,1,2,3,4,5.]))
+            ivar = cmor.variable(table_entry="masso",axis_ids=[itime],units='kg')
+
+            data=numpy.random.random(5)
+            for i in range(0,5):
+                cmor.write(ivar,data[i:i])
+            error_flag = cmor.close()
+        except:
+            raise
+        finally:
+            os.dup2(newstdout,1)
+            os.dup2(newstderr,2)
+            sys.stdout = os.fdopen(newstdout, 'w', 0)
+            sys.stderr = os.fdopen(newstderr, 'w', 0)
+            f=open(tmpfile[1],'r')
+            lines=f.readlines()
+            for line in lines:
+                if line.find('Warning:') != -1:
+                    self.assertIn('\"source\"', line.strip())
+                    break
+            f.close()
+            os.unlink(tmpfile[1])
+
+
+if __name__ == '__main__':
+    unittest.main()
+
diff --git a/Test/test_python_CMIP6_CV_badsourceid.json b/Test/test_python_CMIP6_CV_badsourceid.json
new file mode 100644
index 0000000..188de48
--- /dev/null
+++ b/Test/test_python_CMIP6_CV_badsourceid.json
@@ -0,0 +1,102 @@
+{
+           "_control_vocabulary_file": "CMIP6_CV.json",
+           "_cmip6_option":           "CMIP6",
+
+           "_control_vocabulary_file": "CMIP6_CV.json",
+           "_cmip6_option":           "CMIP6",
+
+           "#activity_id":           "Specify an activity PMIP, GeoMIP, (must start with CMIP6-)",
+           "activity_id":            "CMIP",
+
+           "#output":                "Output Path where files are written",
+           "outpath":                "CMIP6",
+
+           "#experiment_id":         "Correspond to id found in experiments.json",
+           "experiment_id":          "piControl",
+           "sub_experiment_id":      "none",
+           "sub_experiment":         "none",
+
+
+           "parent_sub_experiment_id":"N/A",
+           "parent_mip_era":         "N/A",
+           "mip_era":                "CMIP6",
+
+           "source_id":              "bad_sourceid",
+           "source_type":            "AOGCM",
+
+           "#calendar":              "",
+           "calendar":               "gregorian",
+
+           "#realization_index":     "",
+           "realization_index":      "1",
+
+           "#initialization_index":  "",
+           "initialization_index":   "1",
+
+           "#physics_index":         "",
+           "physics_index":          "1",
+
+           "#forcing_index":         "",
+           "forcing_index":          "1",
+
+           "#contact ":              "",
+           "contact ":               "Python Coder (python at a.b.com) ",
+
+           "#history":               "",
+           "history":                "Output from archivcl_A1.nce/giccm_03_std_2xCO2_2256.",
+
+           "#comment":               "",
+           "comment":                "Equilibrium reached after 30-year spin-up ",
+
+           "#references":            "",
+           "references":             "Model described by Koder and Tolkien ",
+
+           "institution_id":          "NCC",
+
+            
+           "#model_id":              "",
+           "model_id":               "GICCM1",
+
+           "#forcing":               "",
+           "forcing":                "TO, SO, Nat",
+
+           "#parent_experiment_rip": "",
+           "parent_variant_label":  "r1i3p2",
+
+           "#parent_experiment_id":  "",
+           "parent_experiment_id":   "N/A",
+
+           "#branch_time":            "",
+           "branch_time":             "1",
+
+
+           "parent_activity_id": "CMIP",
+           "parent_experiment_id": "histALL",
+           "parent_source_id":   "GFDL-CM2-1",
+           "parent_variant_label":  "r1i1p1f3",
+
+           "branch_method":         "standard",
+           "branch_time_in_child":  "00D0",
+           "branch_time_in_parent":"3650.0D0",
+           "branch_time_units_in_parent": "days since 1000-1-1",
+
+
+           "further_info_url":       "http://furtherinfo.es-doc.org/<mip_era><institution_id><source_id><experiment_id><sub_experiment_id><variant_label>",
+           "grid":                   "native atmosphere T63 gaussian grid (64x128 latxlon)",
+           "grid_label":             "gn",
+           "grid_resolution":        "5 km",
+           "references":             "Model described by Koder and Tolkien (J. Geophys. Res.,2001, 576 - 591).  Also see http://www.GICC.su/giccm/doc/index.html  2XCO2 simulation described in Dorkey et al. '(Clim. Dyn., 2003, 323 - 357.)",
+           "run_variant":            "forcing: black carbon aerosol only",
+
+           "#output_path_template":   "Template for output path directory using tables keys or global attributes",
+           "output_path_template":    "<activity_id><institution_id><source_id><experiment_id><variant_label><table><variable_id><grid_label><version>",
+
+           "#output_file_template":   "Template for output filename using table keys or global attributes",
+           "output_file_template":    "<variable_id><table><experiment_id><source_id><variant_label><grid_label>",
+
+           "license":                "One of 2 licenses: ----- CMIP6 model data produced by <Your CentreName> is licensed under a Creative Commons Attribution 'NonCommercial Share Alike' 4.0 International License (http://creativecommons.org/licenses/by/4.0/). Use of the data should be acknowledged following guidelines found at <what URL???> The data is hosted via the Earth System Grid Federation. Permissions beyond the scope of this license may be available at http://pcmdi.org/cmip5/term [...]
+
+
+}
+
+
diff --git a/Test/test_python_CMIP6_CV_badsourceid.py b/Test/test_python_CMIP6_CV_badsourceid.py
new file mode 100644
index 0000000..b3ae16a
--- /dev/null
+++ b/Test/test_python_CMIP6_CV_badsourceid.py
@@ -0,0 +1,85 @@
+from threading import Thread
+import time
+import cmor,numpy
+import contextlib
+import unittest
+import signal
+import sys,os
+import tempfile
+import pdb
+import atexit
+
+
+# ------------------------------------------------------
+# Copy stdout and stderr file descriptor for cmor output
+# ------------------------------------------------------
+newstdout = os.dup(1)
+newstderr = os.dup(2)
+# --------------
+# Create tmpfile
+# --------------
+tmpfile = tempfile.mkstemp()
+os.dup2(tmpfile[0], 1)
+os.dup2(tmpfile[0], 2)
+os.close(tmpfile[0])
+
+global testOK 
+testOK = []
+
+def sig_handler(signum, frame):
+    global testOK
+
+    f=open(tmpfile[1],'r')
+    lines=f.readlines()
+    for line in lines:
+        if line.find('Error:') != -1:
+            testOK = line.strip()
+            break
+    f.close()
+    os.unlink(tmpfile[1])
+
+
+def run():
+    unittest.main()
+
+signal.signal(signal.SIGINT, sig_handler)
+
+
+class TestInstitutionMethods(unittest.TestCase):
+
+    def test_Institution(self):
+
+        # -------------------------------------------
+        # Try to call cmor with a bad institution_ID
+        # -------------------------------------------
+        global testOK
+        error_flag = cmor.setup(inpath='Tables', netcdf_file_action=cmor.CMOR_REPLACE)
+        error_flag = cmor.dataset_json("Test/test_python_CMIP6_CV_badsourceid.json")
+  
+        # ------------------------------------------
+        # load Omon table and create masso variable
+        # ------------------------------------------
+        cmor.load_table("CMIP6_Omon.json")
+        itime = cmor.axis(table_entry="time",units='months since 2010',
+                          coord_vals=numpy.array([0,1,2,3,4.]),
+                          cell_bounds=numpy.array([0,1,2,3,4,5.]))
+        ivar = cmor.variable(table_entry="masso",axis_ids=[itime],units='kg')
+
+        data=numpy.random.random(5)
+        for i in range(0,5):
+            a = cmor.write(ivar,data[i:i])
+        os.dup2(newstdout,1)
+        os.dup2(newstderr,2)
+        sys.stdout = os.fdopen(newstdout, 'w', 0)
+        sys.stderr = os.fdopen(newstderr, 'w', 0)
+        time.sleep(.1)
+        self.assertIn("bad_sourceid", testOK)
+
+
+if __name__ == '__main__':
+    t = Thread(target=run)
+    t.start()
+    while t.is_alive():
+        t.join(1)
+
+
diff --git a/Test/test_python_CMIP6_CV_badsourcetype.json b/Test/test_python_CMIP6_CV_badsourcetype.json
new file mode 100644
index 0000000..c5cac47
--- /dev/null
+++ b/Test/test_python_CMIP6_CV_badsourcetype.json
@@ -0,0 +1,102 @@
+{
+           "_control_vocabulary_file": "CMIP6_CV.json",
+           "_cmip6_option":           "CMIP6",
+
+           "#activity_id":           "Specify an activity PMIP, GeoMIP, (must start with CMIP6-)",
+           "activity_id":            "CMIP",
+
+           "#output":                "Output Path where files are written",
+           "outpath":                "CMIP6",
+
+           "#experiment_id":         "Correspond to id found in experiments.json",
+           "experiment_id":          "piControl",
+           "source_type":            "AOGCM DENIS",
+           "sub_experiment":         "none",
+           "sub_experiment_id":      "none",
+           "parent_sub_experiment_id":"N/A",
+           "parent_mip_era":         "N/A",
+           "mip_era":                "CMIP6",
+
+           "#source":                "",
+           "source":                 "MIROC-ESM",
+
+           "#calendar":              "",
+           "calendar":               "gregorian",
+
+           "#realization_index":     "",
+           "realization_index":      "1",
+
+           "#initialization_index":  "",
+           "initialization_index":   "1",
+
+           "#physics_index":         "",
+           "physics_index":          "1",
+
+           "#forcing_index":         "",
+           "forcing_index":          "1",
+
+           "#contact ":              "",
+           "contact ":               "Python Coder (python at a.b.com) ",
+
+           "#history":               "",
+           "history":                "Output from archivcl_A1.nce/giccm_03_std_2xCO2_2256.",
+
+           "#comment":               "",
+           "comment":                "Equilibrium reached after 30-year spin-up ",
+
+           "#references":            "",
+           "references":             "Model described by Koder and Tolkien ",
+
+           "#institution_id":         "",
+           "institution_id":          "NCC",
+
+           "#institution":           "Controlled Vocabulary",
+           "institution":            "bad institution",
+            
+           "#model_id":              "",
+           "model_id":               "GICCM1",
+
+           "#forcing":               "",
+           "forcing":                "TO, SO, Nat",
+
+           "#parent_experiment_rip": "",
+           "parent_variant_label":  "r1i3p2",
+
+           "#parent_experiment_id":  "",
+           "parent_experiment_id":   "N/A",
+
+           "#branch_time":            "",
+           "branch_time":             "1",
+
+
+           "parent_activity_id": "CMIP",
+           "parent_experiment_id": "histALL",
+           "parent_source_id":   "GFDL-CM2-1",
+           "parent_variant_label":  "r1i1p1f3",
+
+           "branch_method":         "standard",
+           "branch_time_in_child":  "00D0",
+           "branch_time_in_parent":"3650.0D0",
+           "branch_time_units_in_parent": "days since 1000-1-1",
+
+
+           "further_info_url":       "http://furtherinfo.es-doc.org/<mip_era><institution_id><source_id><experiment_id><sub_experiment_id><variant_label>",
+           "grid":                   "native atmosphere T63 gaussian grid (64x128 latxlon)",
+           "grid_label":             "gn",
+           "grid_resolution":        "5 km",
+           "references":             "Model described by Koder and Tolkien (J. Geophys. Res.,2001, 576 - 591).  Also see http://www.GICC.su/giccm/doc/index.html  2XCO2 simulation described in Dorkey et al. '(Clim. Dyn., 2003, 323 - 357.)",
+           "run_variant":            "forcing: black carbon aerosol only",
+           "source_id":              "MIROC-ESM",
+
+           "#output_path_template":   "Template for output path directory using tables keys or global attributes",
+           "output_path_template":    "<activity_id><institution_id><source_id><experiment_id><variant_label><table><variable_id><grid_label><version>",
+
+           "#output_file_template":   "Template for output filename using table keys or global attributes",
+           "output_file_template":    "<variable_id><table><experiment_id><source_id><variant_label><grid_label>",
+
+           "license":                "One of 2 licenses: ----- CMIP6 model data produced by <Your CentreName> is licensed under a Creative Commons Attribution 'NonCommercial Share Alike' 4.0 International License (http://creativecommons.org/licenses/by/4.0/). Use of the data should be acknowledged following guidelines found at <what URL???> The data is hosted via the Earth System Grid Federation. Permissions beyond the scope of this license may be available at http://pcmdi.org/cmip5/term [...]
+
+
+}
+
+
diff --git a/Test/test_python_CMIP6_CV_badsourcetype.py b/Test/test_python_CMIP6_CV_badsourcetype.py
new file mode 100644
index 0000000..2dcae38
--- /dev/null
+++ b/Test/test_python_CMIP6_CV_badsourcetype.py
@@ -0,0 +1,85 @@
+from threading import Thread
+import time
+import cmor,numpy
+import contextlib
+import unittest
+import signal
+import sys,os
+import tempfile
+import pdb
+import atexit
+
+
+# ------------------------------------------------------
+# Copy stdout and stderr file descriptor for cmor output
+# ------------------------------------------------------
+newstdout = os.dup(1)
+newstderr = os.dup(2)
+# --------------
+# Create tmpfile
+# --------------
+tmpfile = tempfile.mkstemp()
+os.dup2(tmpfile[0], 1)
+os.dup2(tmpfile[0], 2)
+os.close(tmpfile[0])
+
+global testOK 
+testOK = []
+
+def sig_handler(signum, frame):
+    global testOK
+
+    f=open(tmpfile[1],'r')
+    lines=f.readlines()
+    for line in lines:
+        if line.find('Error:') != -1:
+            testOK = line.strip()
+            break
+    f.close()
+    os.unlink(tmpfile[1])
+
+
+def run():
+    unittest.main()
+
+signal.signal(signal.SIGINT, sig_handler)
+
+
+class TestInstitutionMethods(unittest.TestCase):
+
+    def test_Institution(self):
+
+        # -------------------------------------------
+        # Try to call cmor with a bad institution_ID
+        # -------------------------------------------
+        global testOK
+        error_flag = cmor.setup(inpath='Tables', netcdf_file_action=cmor.CMOR_REPLACE)
+        error_flag = cmor.dataset_json("Test/test_python_CMIP6_CV_badsourcetype.json")
+  
+        # ------------------------------------------
+        # load Omon table and create masso variable
+        # ------------------------------------------
+        cmor.load_table("CMIP6_Omon.json")
+        itime = cmor.axis(table_entry="time",units='months since 2010',
+                          coord_vals=numpy.array([0,1,2,3,4.]),
+                          cell_bounds=numpy.array([0,1,2,3,4,5.]))
+        ivar = cmor.variable(table_entry="masso",axis_ids=[itime],units='kg')
+
+        data=numpy.random.random(5)
+        for i in range(0,5):
+            a = cmor.write(ivar,data[i:i])
+        os.dup2(newstdout,1)
+        os.dup2(newstderr,2)
+        sys.stdout = os.fdopen(newstdout, 'w', 0)
+        sys.stderr = os.fdopen(newstderr, 'w', 0)
+        time.sleep(.1)
+        self.assertIn("source_type", testOK)
+
+
+if __name__ == '__main__':
+    t = Thread(target=run)
+    t.start()
+    while t.is_alive():
+        t.join(1)
+
+
diff --git a/Test/test_python_CMIP6_CV_badsourcetypeCHEMAER.json b/Test/test_python_CMIP6_CV_badsourcetypeCHEMAER.json
new file mode 100644
index 0000000..d34cf01
--- /dev/null
+++ b/Test/test_python_CMIP6_CV_badsourcetypeCHEMAER.json
@@ -0,0 +1,102 @@
+{
+           "_control_vocabulary_file": "CMIP6_CV.json",
+           "_cmip6_option":           "CMIP6",
+
+           "#activity_id":           "Specify an activity PMIP, GeoMIP, (must start with CMIP6-)",
+           "activity_id":            "CMIP",
+
+           "#output":                "Output Path where files are written",
+           "outpath":                "CMIP6",
+
+           "#experiment_id":         "Correspond to id found in experiments.json",
+           "experiment_id":          "piControl-withism",
+           "source_type":            "AOGCM ISM CHEM AER",
+           "sub_experiment":         "none",
+           "sub_experiment_id":      "none",
+           "parent_sub_experiment_id":"N/A",
+           "parent_mip_era":         "N/A",
+           "mip_era":                "CMIP6",
+
+           "#source":                "",
+           "source":                 "MIROC-ESM",
+
+           "#calendar":              "",
+           "calendar":               "gregorian",
+
+           "#realization_index":     "",
+           "realization_index":      "1",
+
+           "#initialization_index":  "",
+           "initialization_index":   "1",
+
+           "#physics_index":         "",
+           "physics_index":          "1",
+
+           "#forcing_index":         "",
+           "forcing_index":          "1",
+
+           "#contact ":              "",
+           "contact ":               "Python Coder (python at a.b.com) ",
+
+           "#history":               "",
+           "history":                "Output from archivcl_A1.nce/giccm_03_std_2xCO2_2256.",
+
+           "#comment":               "",
+           "comment":                "Equilibrium reached after 30-year spin-up ",
+
+           "#references":            "",
+           "references":             "Model described by Koder and Tolkien ",
+
+           "#institution_id":         "",
+           "institution_id":          "NCC",
+
+           "#institution":           "Controlled Vocabulary",
+           "institution":            "bad institution",
+            
+           "#model_id":              "",
+           "model_id":               "GICCM1",
+
+           "#forcing":               "",
+           "forcing":                "TO, SO, Nat",
+
+           "#parent_experiment_rip": "",
+           "parent_variant_label":  "r1i3p2",
+
+           "#parent_experiment_id":  "",
+           "parent_experiment_id":   "N/A",
+
+           "#branch_time":            "",
+           "branch_time":             "1",
+
+
+           "parent_activity_id": "CMIP",
+           "parent_experiment_id": "histALL",
+           "parent_source_id":   "GFDL-CM2-1",
+           "parent_variant_label":  "r1i1p1f3",
+
+           "branch_method":         "standard",
+           "branch_time_in_child":  "00D0",
+           "branch_time_in_parent":"3650.0D0",
+           "branch_time_units_in_parent": "days since 1000-1-1",
+
+
+           "further_info_url":       "http://furtherinfo.es-doc.org/<mip_era><institution_id><source_id><experiment_id><sub_experiment_id><variant_label>",
+           "grid":                   "native atmosphere T63 gaussian grid (64x128 latxlon)",
+           "grid_label":             "gn",
+           "grid_resolution":        "5 km",
+           "references":             "Model described by Koder and Tolkien (J. Geophys. Res.,2001, 576 - 591).  Also see http://www.GICC.su/giccm/doc/index.html  2XCO2 simulation described in Dorkey et al. '(Clim. Dyn., 2003, 323 - 357.)",
+           "run_variant":            "forcing: black carbon aerosol only",
+           "source_id":              "MIROC-ESM",
+
+           "#output_path_template":   "Template for output path directory using tables keys or global attributes",
+           "output_path_template":    "<activity_id><institution_id><source_id><experiment_id><variant_label><table><variable_id><grid_label><version>",
+
+           "#output_file_template":   "Template for output filename using table keys or global attributes",
+           "output_file_template":    "<variable_id><table><experiment_id><source_id><variant_label><grid_label>",
+
+           "license":                "One of 2 licenses: ----- CMIP6 model data produced by <Your CentreName> is licensed under a Creative Commons Attribution 'NonCommercial Share Alike' 4.0 International License (http://creativecommons.org/licenses/by/4.0/). Use of the data should be acknowledged following guidelines found at <what URL???> The data is hosted via the Earth System Grid Federation. Permissions beyond the scope of this license may be available at http://pcmdi.org/cmip5/term [...]
+
+
+}
+
+
diff --git a/Test/test_python_CMIP6_CV_badsourcetypeCHEMAER.py b/Test/test_python_CMIP6_CV_badsourcetypeCHEMAER.py
new file mode 100644
index 0000000..0999112
--- /dev/null
+++ b/Test/test_python_CMIP6_CV_badsourcetypeCHEMAER.py
@@ -0,0 +1,85 @@
+from threading import Thread
+import time
+import cmor,numpy
+import contextlib
+import unittest
+import signal
+import sys,os
+import tempfile
+import pdb
+import atexit
+
+
+# ------------------------------------------------------
+# Copy stdout and stderr file descriptor for cmor output
+# ------------------------------------------------------
+newstdout = os.dup(1)
+newstderr = os.dup(2)
+# --------------
+# Create tmpfile
+# --------------
+tmpfile = tempfile.mkstemp()
+os.dup2(tmpfile[0], 1)
+os.dup2(tmpfile[0], 2)
+os.close(tmpfile[0])
+
+global testOK 
+testOK = []
+
+def sig_handler(signum, frame):
+    global testOK
+
+    f=open(tmpfile[1],'r')
+    lines=f.readlines()
+    for line in lines:
+        if line.find('Error:') != -1:
+            testOK = line.strip()
+            break
+    f.close()
+    os.unlink(tmpfile[1])
+
+
+def run():
+    unittest.main()
+
+signal.signal(signal.SIGINT, sig_handler)
+
+
+class TestInstitutionMethods(unittest.TestCase):
+
+    def test_Institution(self):
+
+        # -------------------------------------------
+        # Try to call cmor with a bad institution_ID
+        # -------------------------------------------
+        global testOK
+        error_flag = cmor.setup(inpath='Tables', netcdf_file_action=cmor.CMOR_REPLACE)
+        error_flag = cmor.dataset_json("Test/test_python_CMIP6_CV_badsourcetypeCHEMAER.json")
+  
+        # ------------------------------------------
+        # load Omon table and create masso variable
+        # ------------------------------------------
+        cmor.load_table("CMIP6_Omon.json")
+        itime = cmor.axis(table_entry="time",units='months since 2010',
+                          coord_vals=numpy.array([0,1,2,3,4.]),
+                          cell_bounds=numpy.array([0,1,2,3,4,5.]))
+        ivar = cmor.variable(table_entry="masso",axis_ids=[itime],units='kg')
+
+        data=numpy.random.random(5)
+        for i in range(0,5):
+            a = cmor.write(ivar,data[i:i])
+        os.dup2(newstdout,1)
+        os.dup2(newstderr,2)
+        sys.stdout = os.fdopen(newstdout, 'w', 0)
+        sys.stderr = os.fdopen(newstderr, 'w', 0)
+        time.sleep(.1)
+        self.assertIn("\"CHEM\" and \"AER\"", testOK)
+
+
+if __name__ == '__main__':
+    t = Thread(target=run)
+    t.start()
+    while t.is_alive():
+        t.join(1)
+
+
diff --git a/Test/test_python_CMIP6_CV_badsourcetypeCHMAER.json b/Test/test_python_CMIP6_CV_badsourcetypeCHMAER.json
new file mode 100644
index 0000000..d34cf01
--- /dev/null
+++ b/Test/test_python_CMIP6_CV_badsourcetypeCHMAER.json
@@ -0,0 +1,102 @@
+{
+           "_control_vocabulary_file": "CMIP6_CV.json",
+           "_cmip6_option":           "CMIP6",
+
+           "#activity_id":           "Specify an activity PMIP, GeoMIP, (must start with CMIP6-)",
+           "activity_id":            "CMIP",
+
+           "#output":                "Output Path where files are written",
+           "outpath":                "CMIP6",
+
+           "#experiment_id":         "Correspond to id found in experiments.json",
+           "experiment_id":          "piControl-withism",
+           "source_type":            "AOGCM ISM CHEM AER",
+           "sub_experiment":         "none",
+           "sub_experiment_id":      "none",
+           "parent_sub_experiment_id":"N/A",
+           "parent_mip_era":         "N/A",
+           "mip_era":                "CMIP6",
+
+           "#source":                "",
+           "source":                 "MIROC-ESM",
+
+           "#calendar":              "",
+           "calendar":               "gregorian",
+
+           "#realization_index":     "",
+           "realization_index":      "1",
+
+           "#initialization_index":  "",
+           "initialization_index":   "1",
+
+           "#physics_index":         "",
+           "physics_index":          "1",
+
+           "#forcing_index":         "",
+           "forcing_index":          "1",
+
+           "#contact ":              "",
+           "contact ":               "Python Coder (python at a.b.com) ",
+
+           "#history":               "",
+           "history":                "Output from archivcl_A1.nce/giccm_03_std_2xCO2_2256.",
+
+           "#comment":               "",
+           "comment":                "Equilibrium reached after 30-year spin-up ",
+
+           "#references":            "",
+           "references":             "Model described by Koder and Tolkien ",
+
+           "#institution_id":         "",
+           "institution_id":          "NCC",
+
+           "#institution":           "Controlled Vocabulary",
+           "institution":            "bad institution",
+            
+           "#model_id":              "",
+           "model_id":               "GICCM1",
+
+           "#forcing":               "",
+           "forcing":                "TO, SO, Nat",
+
+           "#parent_experiment_rip": "",
+           "parent_variant_label":  "r1i3p2",
+
+           "#parent_experiment_id":  "",
+           "parent_experiment_id":   "N/A",
+
+           "#branch_time":            "",
+           "branch_time":             "1",
+
+
+           "parent_activity_id": "CMIP",
+           "parent_experiment_id": "histALL",
+           "parent_source_id":   "GFDL-CM2-1",
+           "parent_variant_label":  "r1i1p1f3",
+
+           "branch_method":         "standard",
+           "branch_time_in_child":  "00D0",
+           "branch_time_in_parent":"3650.0D0",
+           "branch_time_units_in_parent": "days since 1000-1-1",
+
+
+           "further_info_url":       "http://furtherinfo.es-doc.org/<mip_era><institution_id><source_id><experiment_id><sub_experiment_id><variant_label>",
+           "grid":                   "native atmosphere T63 gaussian grid (64x128 latxlon)",
+           "grid_label":             "gn",
+           "grid_resolution":        "5 km",
+           "references":             "Model described by Koder and Tolkien (J. Geophys. Res.,2001, 576 - 591).  Also see http://www.GICC.su/giccm/doc/index.html  2XCO2 simulation described in Dorkey et al. '(Clim. Dyn., 2003, 323 - 357.)",
+           "run_variant":            "forcing: black carbon aerosol only",
+           "source_id":              "MIROC-ESM",
+
+           "#output_path_template":   "Template for output path directory using tables keys or global attributes",
+           "output_path_template":    "<activity_id><institution_id><source_id><experiment_id><variant_label><table><variable_id><grid_label><version>",
+
+           "#output_file_template":   "Template for output filename using table keys or global attributes",
+           "output_file_template":    "<variable_id><table><experiment_id><source_id><variant_label><grid_label>",
+
+           "license":                "One of 2 licenses: ----- CMIP6 model data produced by <Your CentreName> is licensed under a Creative Commons Attribution 'NonCommercial Share Alike' 4.0 International License (http://creativecommons.org/licenses/by/4.0/). Use of the data should be acknowledged following guidelines found at <what URL???> The data is hosted via the Earth System Grid Federation. Permissions beyond the scope of this license may be available at http://pcmdi.org/cmip5/term [...]
+
+
+}
+
+
diff --git a/Test/test_python_CMIP6_CV_badsourcetypeRequired.json b/Test/test_python_CMIP6_CV_badsourcetypeRequired.json
new file mode 100644
index 0000000..4afceac
--- /dev/null
+++ b/Test/test_python_CMIP6_CV_badsourcetypeRequired.json
@@ -0,0 +1,82 @@
+{
+           "_control_vocabulary_file": "CMIP6_CV.json",
+           "_cmip6_option":           "CMIP6",
+
+           "#activity_id":           "Specify an activity PMIP, GeoMIP, (default in Control Vocabulary File)",
+
+           "#output":                "Output Path where files are written",
+           "outpath":                "CMIP6",
+
+           "#experiment_id":         "Correspond to id found in experiments.json",
+           "experiment_id":          "piControl-withism",
+           "source_type":            "AOGCM",
+           "mip_era":                "CMIP6",
+
+           "source_id":              "MIROC-ESM",
+           "#source":                "Defined int Control Vocabulary File",
+
+           "#calendar":              "",
+           "calendar":               "gregorian",
+
+           "#realization_index":     "",
+           "realization_index":      "1",
+
+           "#initialization_index":  "",
+           "initialization_index":   "1",
+
+           "#physics_index":         "",
+           "physics_index":          "1",
+
+           "#forcing_index":         "",
+           "forcing_index":          "1",
+
+           "#contact ":              "",
+           "contact ":               "Python Coder (python at a.b.com) ",
+
+           "#history":               "",
+           "history":                "Output from archivcl_A1.nce/giccm_03_std_2xCO2_2256.",
+
+           "#comment":               "",
+           "comment":                "Equilibrium reached after 30-year spin-up ",
+
+           "#references":            "",
+           "references":             "Model described by Koder and Tolkien ",
+
+           "#institution_id":         "",
+           "institution_id":          "NCC",
+
+           "#institution":           "Defined in Controlled Vocabulary File",
+            
+           "#forcing":               "",
+           "forcing":                "TO, SO, Nat",
+
+           "#parent_experiment_rip": "",
+           "parent_variant_label":  "r1i3p2",
+
+           "#parent_experiment_id":  "",
+           "parent_experiment_id":   "N/A",
+
+           "#branch_time":            "",
+           "branch_time":             "1",
+
+           "sub_experiment":     "none",
+
+           "further_info_url":       "http://furtherinfo.es-doc.org/<mip_era><institution_id><source_id><experiment_id><sub_experiment_id><variant_label>",
+           "grid":                   "native atmosphere T63 gaussian grid (64x128 latxlon)",
+           "grid_label":             "gn",
+           "grid_resolution":        "5 km",
+           "references":             "Model described by Koder and Tolkien (J. Geophys. Res.,2001, 576 - 591).  Also see http://www.GICC.su/giccm/doc/index.html  2XCO2 simulation described in Dorkey et al. '(Clim. Dyn., 2003, 323 - 357.)",
+           "run_variant":            "forcing: black carbon aerosol only",
+
+           "#output_path_template":   "Template for output path directory using tables keys or global attributes",
+           "output_path_template":    "<activity_id><institution_id><source_id><experiment_id><variant_label><table><variable_id><grid_label><version>",
+
+           "#output_file_template":   "Template for output filename using table keys or global attributes",
+           "output_file_template":    "<variable_id><table><experiment_id><source_id><variant_label><grid_label>",
+
+           "license":                "One of 2 licenses: ----- CMIP6 model data produced by <Your CentreName> is licensed under a Creative Commons Attribution 'NonCommercial Share Alike' 4.0 International License (http://creativecommons.org/licenses/by/4.0/). Use of the data should be acknowledged following guidelines found at <what URL???> The data is hosted via the Earth System Grid Federation. Permissions beyond the scope of this license may be available at http://pcmdi.org/cmip5/term [...]
+
+
+}
+
+
diff --git a/Test/test_python_CMIP6_CV_badsourcetypeRequired.py b/Test/test_python_CMIP6_CV_badsourcetypeRequired.py
new file mode 100644
index 0000000..6b1f7b2
--- /dev/null
+++ b/Test/test_python_CMIP6_CV_badsourcetypeRequired.py
@@ -0,0 +1,98 @@
+from threading import Thread
+import time
+import cmor,numpy
+import contextlib
+import unittest
+import signal
+import sys,os
+import tempfile
+import pdb
+import atexit
+
+
+# ------------------------------------------------------
+# Copy stdout and stderr file descriptor for cmor output
+# ------------------------------------------------------
+newstdout = os.dup(1)
+newstderr = os.dup(2)
+# --------------
+# Create tmpfile
+# --------------
+tmpfile = tempfile.mkstemp() #tempfile[0] = File number, tempfile[1] = File name.
+os.dup2(tmpfile[0], 1)
+os.dup2(tmpfile[0], 2)
+os.close(tmpfile[0])
+
+global testOK 
+testOK = []
+
+# ==============================
+# Handle SIGINT receive by CMOR
+# ==============================
+def sig_handler(signum, frame):
+    global testOK
+
+    f=open(tmpfile[1],'r')
+    lines=f.readlines()
+    for line in lines:
+        if line.find('Error:') != -1:
+            testOK = line.strip()
+            break
+    f.close()
+    os.unlink(tmpfile[1])
+
+
+# ==============================
+#  main thread
+# ==============================
+def run():
+    unittest.main()
+
+
+# ---------------------
+# Hook up SIGTEM signal 
+# ---------------------
+signal.signal(signal.SIGINT, sig_handler)
+
+
+class TestInstitutionMethods(unittest.TestCase):
+
+    def testCMIP6(self):
+
+        # -------------------------------------------
+        # Try to call cmor with a bad institution_ID
+        # -------------------------------------------
+        global testOK
+        error_flag = cmor.setup(inpath='Tables', netcdf_file_action=cmor.CMOR_REPLACE)
+        error_flag = cmor.dataset_json("Test/test_python_CMIP6_CV_badsourcetypeRequired.json")
+  
+        # ------------------------------------------
+        # load Omon table and create masso variable
+        # ------------------------------------------
+        cmor.load_table("CMIP6_Omon.json")
+        itime = cmor.axis(table_entry="time",units='months since 2010',
+                          coord_vals=numpy.array([0,1,2,3,4.]),
+                          cell_bounds=numpy.array([0,1,2,3,4,5.]))
+        ivar = cmor.variable(table_entry="masso",axis_ids=[itime],units='kg')
+
+        data=numpy.random.random(5)
+        for i in range(0,5):
+            a = cmor.write(ivar,data[i:i])
+        os.dup2(newstdout,1)
+        os.dup2(newstderr,2)
+        sys.stdout = os.fdopen(newstdout, 'w', 0)
+        sys.stderr = os.fdopen(newstderr, 'w', 0)
+        time.sleep(.1)
+        # ------------------------------------------
+        # Check error after signal handler is back
+        # ------------------------------------------
+        self.assertIn("\"AOGCM ISM\"", testOK)
+
+
+if __name__ == '__main__':
+    t = Thread(target=run)
+    t.start()
+    while t.is_alive():
+        t.join(1)
+
+
diff --git a/Test/test_python_CMIP6_CV_badvariant.json b/Test/test_python_CMIP6_CV_badvariant.json
new file mode 100644
index 0000000..9235ef8
--- /dev/null
+++ b/Test/test_python_CMIP6_CV_badvariant.json
@@ -0,0 +1,92 @@
+{
+           "_control_vocabulary_file": "CMIP6_CV.json",
+           "_cmip6_option":           "CMIP6",
+
+           "activity_id":            "AerChemMIP",
+
+           "branch_method":          "standard",
+           "branch_time_in_child":   "365.0",
+           "#output":                "Output Path where files are written",
+           "outpath":                "CMIP6",
+
+           "#experiment_id":         "Correspond to id found in CV json file",
+           "#experiment_id":          "piClim-aer",
+           "experiment_id":          "piControl-withism",
+           "#experiment_id":          "land-hist",
+
+           "source_type":            "AGCM AER CHEM DENIS",
+           "source_type":            "AGCM AER DENIS",
+           "source_type":            "AOGCM ISM AER",
+           "#source_type":            "LND",
+           "sub_experiment":         "none",
+           "sub_experiment_id":      "none",
+           "#parent_sub_experiment_id": "N/A",
+           "parent_mip_era":         "N/A",
+           "mip_era":                "CMIP6",
+           "#calendar":              "",
+           "calendar":               "360_day",
+           "branch_time":            "1.34",
+
+           "#realization_index":     "",
+           "realization_index":      "131",
+
+           "#initialization_index":  "",
+           "initialization_index":   "1",
+
+           "#physics_index":         "",
+           "physics_index":          "1A",
+
+           "#forcing_index":         "",
+           "forcing_index":          "1",
+
+           "#contact ":              "Not required",
+           "#contact ":              "Rusty Koder (koder at middle_earth.net)",
+
+           "#history":               "not required, supplemented by CMOR",
+           "history":                "Output from archivcl_A1.nce/giccm_03_std_2xCO2_2256.",
+
+           "#comment":               "Not required",
+           "comment":                "Equilibrium reached after 30-year spin-up after which data were output starting with nominal date of January 2030",
+
+           "#references":            "Not required",
+           "references":             "Model described by Koder and Tolkien (J. Geophys. Res., 2001, 576-591).  Also see http://www.GICC.su/giccm/doc/index.html  2XCO2 simulation described in Dorkey et al. '(Clim. Dyn., 2003, 323-357.)'",
+
+
+           "#driving_variant_label":     "no-driver",
+
+           "further_info_url":       "http://furtherinfo.es-doc.org/<mip_era><institution_id><source_id><experiment_id><sub_experiment_id><variant_label>",
+
+           "grid":                   "gs1x1",
+           "grid_label":             "gr1",
+           "grid_resolution":        "5 km",
+
+           "institution_id":         "BNU",
+
+           "parent_activity_id":     "CMIP",
+           "parent_experiment_id":   "histALL",
+           "parent_source_id":       "GFDL-CM2-1",
+           "parent_variant_label":      "r1i1p1f3",
+
+
+           "#run_variant":           "Description of run variant (Recommended).",
+           "run_variant":            "forcing: black carbon aerosol only",
+
+           "#source_id":              "Model Source",
+           "source_id":               "CESM1-CAM5",
+
+           "#source":                "source title, first part is source_id",
+           "source":                 "CESM1 (CAM5): model version ca. 2009",
+
+
+           "#output_path_template":   "Template for output path directory using tables keys or global attributes",
+           "output_path_template":    "<activity_id><institution_id><source_id><experiment_id><variant_label><table><variable_id><grid_label><version>",
+
+
+           "output_file_template":    "<variable_id><table><experiment_id><source_id><variant_label><grid_label>",
+
+           "license":                "One of 2 licenses: ----- CMIP6 model data produced by <Your CentreName> is licensed under a Creative Commons Attribution 'NonCommercial Share Alike' 4.0 International License (http://creativecommons.org/licenses/by/4.0/). Use of the data should be acknowledged following guidelines found at <what URL???> The data is hosted via the Earth System Grid Federation. Permissions beyond the scope of this license may be available at http://pcmdi.org/cmip5/term [...]
+
+
+
+}
+
diff --git a/Test/test_python_CMIP6_CV_badvariant.py b/Test/test_python_CMIP6_CV_badvariant.py
new file mode 100644
index 0000000..e92576d
--- /dev/null
+++ b/Test/test_python_CMIP6_CV_badvariant.py
@@ -0,0 +1,98 @@
+from threading import Thread
+import time
+import cmor,numpy
+import contextlib
+import unittest
+import signal
+import sys,os
+import tempfile
+import pdb
+import atexit
+
+
+# ------------------------------------------------------
+# Copy stdout and stderr file descriptor for cmor output
+# ------------------------------------------------------
+newstdout = os.dup(1)
+newstderr = os.dup(2)
+# --------------
+# Create tmpfile
+# --------------
+tmpfile = tempfile.mkstemp() #tempfile[0] = File number, tempfile[1] = File name.
+os.dup2(tmpfile[0], 1)
+os.dup2(tmpfile[0], 2)
+os.close(tmpfile[0])
+
+global testOK 
+testOK = []
+
+# ==============================
+# Handle SIGINT receive by CMOR
+# ==============================
+def sig_handler(signum, frame):
+    global testOK
+
+    f=open(tmpfile[1],'r')
+    lines=f.readlines()
+    for line in lines:
+        if line.find('Error:') != -1:
+            testOK = line.strip()
+            break
+    f.close()
+    os.unlink(tmpfile[1])
+
+
+# ==============================
+#  main thread
+# ==============================
+def run():
+    unittest.main()
+
+
+# ---------------------
+# Hook up SIGTEM signal 
+# ---------------------
+signal.signal(signal.SIGINT, sig_handler)
+
+
+class TestInstitutionMethods(unittest.TestCase):
+
+    def testCMIP6(self):
+
+        # -------------------------------------------
+        # Try to call cmor with a bad institution_ID
+        # -------------------------------------------
+        global testOK
+        error_flag = cmor.setup(inpath='Tables', netcdf_file_action=cmor.CMOR_REPLACE)
+        error_flag = cmor.dataset_json("Test/test_python_CMIP6_CV_badvariant.json")
+  
+        # ------------------------------------------
+        # load Omon table and create masso variable
+        # ------------------------------------------
+        cmor.load_table("CMIP6_Omon.json")
+        itime = cmor.axis(table_entry="time",units='months since 2010',
+                          coord_vals=numpy.array([0,1,2,3,4.]),
+                          cell_bounds=numpy.array([0,1,2,3,4,5.]))
+        ivar = cmor.variable(table_entry="masso",axis_ids=[itime],units='kg')
+
+        data=numpy.random.random(5)
+        for i in range(0,5):
+            a = cmor.write(ivar,data[i:i])
+        os.dup2(newstdout,1)
+        os.dup2(newstderr,2)
+        sys.stdout = os.fdopen(newstdout, 'w', 0)
+        sys.stderr = os.fdopen(newstderr, 'w', 0)
+        time.sleep(.2)
+        # ------------------------------------------
+        # Check error after signal handler is back
+        # ------------------------------------------
+        self.assertIn("\"1A\"", testOK)
+
+
+if __name__ == '__main__':
+    t = Thread(target=run)
+    t.start()
+    while t.is_alive():
+        t.join(1)
+
+
diff --git a/Test/test_python_CMIP6_CV_externalvariables.json b/Test/test_python_CMIP6_CV_externalvariables.json
new file mode 100644
index 0000000..901d407
--- /dev/null
+++ b/Test/test_python_CMIP6_CV_externalvariables.json
@@ -0,0 +1,91 @@
+{
+           "_control_vocabulary_file": "CMIP6_CV.json",
+           "_cmip6_option":           "CMIP6",
+
+           "activity_id":            "ISMIP6",
+
+           "branch_method":          "standard",
+           "branch_time_in_child":   "365.0",
+           "#output":                "Output Path where files are written",
+           "outpath":                "CMIP6",
+
+           "#experiment_id":         "Correspond to id found in CV json file",
+           "#experiment_id":          "piClim-aer",
+           "experiment_id":          "piControl-withism",
+           "#experiment_id":          "land-hist",
+
+           "source_type":            "AGCM AER CHEM DENIS",
+           "source_type":            "AGCM AER DENIS",
+           "source_type":            "AOGCM ISM AER",
+           "#source_type":            "LND",
+           "sub_experiment":         "Initialization in year 1968",
+           "sub_experiment_id":      "s1968",
+           "#parent_sub_experiment_id": "N/A",
+           "parent_mip_era":         "N/A",
+           "mip_era":                "CMIP6",
+           "#calendar":              "",
+           "calendar":               "360_day",
+           "branch_time":            "1.34",
+
+           "#realization_index":     "",
+           "realization_index":      "1",
+
+           "#initialization_index":  "",
+           "initialization_index":   "1",
+
+           "#physics_index":         "",
+           "physics_index":          "1",
+
+           "#forcing_index":         "",
+           "forcing_index":          "1",
+
+           "#contact ":              "Not required",
+           "#contact ":              "Rusty Koder (koder at middle_earth.net)",
+
+           "#history":               "not required, supplemented by CMOR",
+           "history":                "Output from archivcl_A1.nce/giccm_03_std_2xCO2_2256.",
+
+           "#comment":               "Not required",
+           "comment":                "Equilibrium reached after 30-year spin-up after which data were output starting with nominal date of January 2030",
+
+           "#references":            "Not required",
+           "references":             "Model described by Koder and Tolkien (J. Geophys. Res., 2001, 576-591).  Also see http://www.GICC.su/giccm/doc/index.html  2XCO2 simulation described in Dorkey et al. '(Clim. Dyn., 2003, 323-357.)'",
+
+
+           "#driving_variant_label":     "no-driver",
+
+
+           "grid":                   "gs1x1",
+           "grid_label":             "gn",
+           "grid_resolution":        "5 km",
+
+           "institution_id":         "BNU",
+
+           "parent_activity_id":     "CMIP",
+           "parent_experiment_id":   "histALL",
+           "parent_source_id":       "GFDL-CM2-1",
+           "parent_variant_label":      "r1i1p1f3",
+
+
+           "#run_variant":           "Description of run variant (Recommended).",
+           "run_variant":            "forcing: black carbon aerosol only",
+
+           "#source_id":              "Model Source",
+           "source_id":               "CESM1-CAM5",
+
+           "#source":                "source title, first part is source_id",
+           "source":                 "CESM1 (CAM5): model version ca. 2009",
+
+
+           "#output_path_template":   "Template for output path directory using tables keys or global attributes",
+           "output_path_template":    "<activity_id><institution_id><source_id><experiment_id><variant_label><table><variable_id><grid_label><version>",
+
+
+           "output_file_template":    "<variable_id><table><experiment_id><source_id><variant_label><grid_label>",
+
+           "license":                "One of 2 licenses: ----- CMIP6 model data produced by <Your CentreName> is licensed under a Creative Commons Attribution 'NonCommercial Share Alike' 4.0 International License (http://creativecommons.org/licenses/by/4.0/). Use of the data should be acknowledged following guidelines found at <what URL???> The data is hosted via the Earth System Grid Federation. Permissions beyond the scope of this license may be available at http://pcmdi.org/cmip5/term [...]
+
+
+
+}
+
diff --git a/Test/test_python_CMIP6_CV_externalvariables.py b/Test/test_python_CMIP6_CV_externalvariables.py
new file mode 100644
index 0000000..d235d5d
--- /dev/null
+++ b/Test/test_python_CMIP6_CV_externalvariables.py
@@ -0,0 +1,73 @@
+from threading import Thread
+import time
+import cmor,numpy
+import contextlib
+import unittest
+import signal
+import sys,os
+import tempfile
+import cdms2
+
+
+
+# ==============================
+#  main thread
+# ==============================
+def run():
+    unittest.main()
+
+
+
+class TestInstitutionMethods(unittest.TestCase):
+
+    def testCMIP6(self):
+
+        nlat = 10
+        dlat = 180./nlat
+        nlon = 20
+        dlon = 360./nlon
+        nlev =5 
+        ntimes = 5
+
+        lats = numpy.arange(90-dlat/2.,-90,-dlat)
+        blats = numpy.arange(90,-90-dlat,-dlat)
+        lons = numpy.arange(0+dlon/2.,360.,dlon)
+        blons = numpy.arange(0,360.+dlon,dlon)
+
+        # -------------------------------------------
+        # Try to call cmor with a bad institution_ID
+        # -------------------------------------------
+        global testOK
+        error_flag = cmor.setup(inpath='Tables', netcdf_file_action=cmor.CMOR_REPLACE)
+        error_flag = cmor.dataset_json("Test/test_python_CMIP6_CV_externalvariables.json")
+  
+        # --------------------------------------------
+        # load Omon table and create masscello variable
+        # --------------------------------------------
+        cmor.load_table("CMIP6_Omon.json")
+        itime = cmor.axis(table_entry="time",units='months since 2010',
+                          coord_vals=numpy.array([0,1,2,3,4.]),
+                          cell_bounds=numpy.array([0,1,2,3,4,5.]))
+        ilat = cmor.axis(table_entry='latitude', coord_vals=lats, cell_bounds=blats,units='degrees_north')
+        ilon = cmor.axis(table_entry='longitude', coord_vals=lons, cell_bounds=blons,units='degrees_east')
+        ilev = cmor.axis(table_entry='depth_coord', length=5,
+                         cell_bounds=numpy.arange(0,12000,2000), coord_vals=numpy.arange(0,10000,2000), units="m")
+
+        ivar = cmor.variable(table_entry="masscello",axis_ids=[itime, ilev, ilat,ilon,],units='kg/m2')
+
+        data = numpy.random.random((ntimes,nlev,nlat,nlon))*100.
+
+        a = cmor.write(ivar,data)
+        cmor.close()
+        f=cdms2.open(cmor.get_final_filename(),"r")
+        a=f.getglobal("external_variables")
+        self.assertEqual("areacello volcello", a)
+
+
+if __name__ == '__main__':
+    t = Thread(target=run)
+    t.start()
+    while t.is_alive():
+        t.join(1)
+
+
diff --git a/Test/test_python_CMIP6_CV_furtherinfourl.json b/Test/test_python_CMIP6_CV_furtherinfourl.json
new file mode 100644
index 0000000..3b55c20
--- /dev/null
+++ b/Test/test_python_CMIP6_CV_furtherinfourl.json
@@ -0,0 +1,82 @@
+{
+           "_control_vocabulary_file": "CMIP6_CV.json",
+           "_cmip6_option":           "CMIP6",
+           "mip_era":                "CMIP6",
+           "further_info_url":       "http://furtherinfo.es-doc.org/<mip_era><institution_id><source_id><experiment_id><sub_experiment_id><variant_label>",
+
+           "#activity_id":           "Specify an activity PMIP, GeoMIP, (default in Control Vocabulary File)",
+
+           "#output":                "Output Path where files are written",
+           "outpath":                "unittest",
+
+           "#experiment_id":         "Correspond to id found in Control Vocabulary File",
+           "experiment_id":          "piControl-withism",
+           "source_id":              "MIROC-ESM",
+           "source_type":            "AOGCM ISM",
+           "#source":                "Defined int Control Vocabulary File",
+
+           "#calendar":              "",
+           "calendar":               "gregorian",
+
+           "#realization_index":     "",
+           "realization_index":      "1",
+
+           "#initialization_index":  "",
+           "initialization_index":   "1",
+
+           "#physics_index":         "",
+           "physics_index":          "1",
+
+           "#forcing_index":         "",
+           "forcing_index":          "1",
+
+           "#contact ":              "",
+           "contact ":               "Python Coder (python at a.b.com) ",
+
+           "#history":               "",
+           "history":                "Output from archivcl_A1.nce/giccm_03_std_2xCO2_2256.",
+
+           "#comment":               "",
+           "comment":                "Equilibrium reached after 30-year spin-up ",
+
+           "#references":            "",
+           "references":             "Model described by Koder and Tolkien ",
+
+           "#institution_id":         "",
+           "institution_id":          "NCC",
+
+           "#institution":           "Defined in Controlled Vocabulary File",
+            
+           "#forcing":               "",
+           "forcing":                "TO, SO, Nat",
+
+           "#parent_experiment_rip": "",
+           "parent_variant_label":  "r1i3p2",
+
+           "#parent_experiment_id":  "",
+           "parent_experiment_id":   "N/A",
+
+           "#branch_time":            "",
+           "branch_time":             "1",
+
+           "branch_method":           "standard",
+           "sub_experiment":     "none",
+
+           "grid":                   "native atmosphere T63 gaussian grid (64x128 latxlon)",
+           "grid_label":             "gn",
+           "grid_resolution":        "5 km",
+           "references":             "Model described by Koder and Tolkien (J. Geophys. Res.,2001, 576 - 591).  Also see http://www.GICC.su/giccm/doc/index.html  2XCO2 simulation described in Dorkey et al. '(Clim. Dyn., 2003, 323 - 357.)",
+           "run_variant":            "forcing: black carbon aerosol only",
+
+           "#output_path_template":   "Template for output path directory using tables keys or global attributes",
+           "output_path_template":    "<activity_id><institution_id><source_id><experiment_id><variant_label><table><variable_id><grid_label><version>",
+
+           "#output_file_template":   "Template for output filename using table keys or global attributes",
+           "output_file_template":    "<variable_id><table><experiment_id><source_id><variant_label><grid_label>",
+
+           "license":                "One of 2 licenses: ----- CMIP6 model data produced by <Your CentreName> is licensed under a Creative Commons Attribution 'NonCommercial Share Alike' 4.0 International License (http://creativecommons.org/licenses/by/4.0/). Use of the data should be acknowledged following guidelines found at <what URL???> The data is hosted via the Earth System Grid Federation. Permissions beyond the scope of this license may be available at http://pcmdi.org/cmip5/term [...]
+
+
+}
+
+
diff --git a/Test/test_python_CMIP6_CV_furtherinfourl.py b/Test/test_python_CMIP6_CV_furtherinfourl.py
new file mode 100644
index 0000000..bc8b87e
--- /dev/null
+++ b/Test/test_python_CMIP6_CV_furtherinfourl.py
@@ -0,0 +1,101 @@
+from threading import Thread
+import time
+import cmor,numpy
+import contextlib
+import unittest
+import signal
+import sys,os
+import tempfile
+import atexit
+import cdms2
+import pdb
+
+
+# ------------------------------------------------------
+# Copy stdout and stderr file descriptor for cmor output
+# ------------------------------------------------------
+newstdout = os.dup(1)
+newstderr = os.dup(2)
+# --------------
+# Create tmpfile
+# --------------
+tmpfile = tempfile.mkstemp() #tempfile[0] = File number, tempfile[1] = File name.
+os.dup2(tmpfile[0], 1)
+os.dup2(tmpfile[0], 2)
+os.close(tmpfile[0])
+
+global testOK 
+testOK = []
+
+# ==============================
+# Handle SIGINT receive by CMOR
+# ==============================
+def sig_handler(signum, frame):
+    global testOK
+
+    f=open(tmpfile[1],'r')
+    lines=f.readlines()
+    for line in lines:
+        if line.find('Error:') != -1:
+            testOK = line.strip()
+            break
+    f.close()
+    os.unlink(tmpfile[1])
+
+
+# ==============================
+#  main thread
+# ==============================
+def run():
+    unittest.main()
+
+
+# ---------------------
+# Hook up SIGTEM signal 
+# ---------------------
+signal.signal(signal.SIGINT, sig_handler)
+
+
+class TestInstitutionMethods(unittest.TestCase):
+
+    def testCMIP6(self):
+        ''' This test will not fail we veirfy the attribute further_info_url'''
+
+        # -------------------------------------------
+        # Try to call cmor with a bad institution_ID
+        # -------------------------------------------
+        global testOK
+        error_flag = cmor.setup(inpath='Tables', netcdf_file_action=cmor.CMOR_REPLACE)
+        error_flag = cmor.dataset_json("Test/test_python_CMIP6_CV_furtherinfourl.json")
+  
+        # ------------------------------------------
+        # load Omon table and create masso variable
+        # ------------------------------------------
+        cmor.load_table("CMIP6_Omon.json")
+        itime = cmor.axis(table_entry="time",units='months since 2010',
+                          coord_vals=numpy.array([0,1,2,3,4.]),
+                          cell_bounds=numpy.array([0,1,2,3,4,5.]))
+        ivar = cmor.variable(table_entry="masso",axis_ids=[itime],units='kg')
+
+        data=numpy.random.random(5)
+        for i in range(0,5):
+            a = cmor.write(ivar,data[i:i])
+        file = cmor.close()
+        print file
+        os.dup2(newstdout,1)
+        os.dup2(newstderr,2)
+        sys.stdout = os.fdopen(newstdout, 'w', 0)
+        sys.stderr = os.fdopen(newstderr, 'w', 0)
+        f=cdms2.open(cmor.get_final_filename(),"r")
+        a=f.getglobal("further_info_url")
+        self.assertEqual("http://furtherinfo.es-doc.org/CMIP6/NCC.MIROC-ESM.piControl-withism.s1968.r1i1p1f1", a)
+
+
+
+if __name__ == '__main__':
+    t = Thread(target=run)
+    t.start()
+    while t.is_alive():
+        t.join(1)
+
+
diff --git a/Test/test_python_CMIP6_CV_fxtable.json b/Test/test_python_CMIP6_CV_fxtable.json
new file mode 100644
index 0000000..a58514a
--- /dev/null
+++ b/Test/test_python_CMIP6_CV_fxtable.json
@@ -0,0 +1,92 @@
+{
+           "_control_vocabulary_file": "CMIP6_CV.json",
+           "_cmip6_option":           "CMIP6",
+
+           "tracking_prefix":        "hdl:21.14100",
+           "activity_id":            "ISMIP6",
+
+           "branch_method":          "standard",
+           "branch_time_in_child":   "365.0",
+           "#output":                "Output Path where files are written",
+           "outpath":                "CMIP6",
+
+           "#experiment_id":         "Correspond to id found in CV json file",
+           "#experiment_id":         "piClim-aer",
+           "experiment_id":          "piControl-withism",
+           "#experiment_id":         "land-hist",
+           "sub_experiment_id":      "s1968",
+           "sub_experiment":         "none",
+
+           "source_type":            "AGCM AER CHEM DENIS",
+           "source_type":            "AGCM AER DENIS",
+           "source_type":            "AOGCM ISM AER",
+           "#source_type":            "LND",
+           "#parent_sub_experiment_id": "N/A",
+           "parent_mip_era":         "N/A",
+           "mip_era":                "CMIP6",
+           "#calendar":              "",
+           "calendar":               "360_day",
+           "branch_time":            "1.34",
+
+           "#realization_index":     "",
+           "realization_index":      "11",
+
+           "#initialization_index":  "",
+           "initialization_index":   "1",
+
+           "#physics_index":         "",
+           "physics_index":          "1",
+
+           "#forcing_index":         "",
+           "forcing_index":          "1",
+
+           "#contact ":              "Not required",
+           "#contact ":              "Python Coder (coder at a.b.c.com)",
+
+           "#history":               "not required, supplemented by CMOR",
+           "history":                "Output from archivcl_A1.nce/giccm_03_std_2xCO2_2256.",
+
+           "#comment":               "Not required",
+           "comment":                "Equilibrium reached after 30-year spin-up after which data were output starting with nominal date of January 2030",
+
+           "#references":            "Not required",
+           "references":             "Model described by Koder and Tolkien (J. Geophys. Res., 2001, 576-591).  Also see http://www.GICC.su/giccm/doc/index.html  2XCO2 simulation described in Dorkey et al. '(Clim. Dyn., 2003, 323-357.)'",
+
+
+           "#driving_variant_label":     "no-driver",
+
+
+           "grid":                   "gs1x1",
+           "grid_label":             "gr",
+           "grid_resolution":        "5 km",
+
+           "institution_id":         "BNU",
+
+           "parent_activity_id":     "CMIP",
+           "parent_experiment_id":   "histALL",
+           "parent_source_id":       "GFDL-CM2-1",
+           "parent_variant_label":      "r1i1p1f3",
+
+
+           "#run_variant":           "Description of run variant (Recommended).",
+           "run_variant":            "forcing: black carbon aerosol only",
+
+           "#source_id":              "Model Source",
+           "source_id":               "CESM1-CAM5",
+
+           "#source":                "source title, first part is source_id",
+           "source":                 "CESM1 (CAM5): model version ca. 2009",
+
+
+           "#output_path_template":   "Template for output path directory using tables keys or global attributes",
+           "output_path_template":    "<activity_id><institution_id><source_id><experiment_id><variant_label><table><variable_id><grid_label><version>",
+
+
+           "output_file_template":    "<variable_id><table><experiment_id><source_id><variant_label><grid_label>",
+
+           "license":                "One of 2 licenses: ----- CMIP6 model data produced by <Your CentreName> is licensed under a Creative Commons Attribution 'NonCommercial Share Alike' 4.0 International License (http://creativecommons.org/licenses/by/4.0/). Use of the data should be acknowledged following guidelines found at <what URL???> The data is hosted via the Earth System Grid Federation. Permissions beyond the scope of this license may be available at http://pcmdi.org/cmip5/term [...]
+
+
+
+}
+
diff --git a/Test/test_python_CMIP6_CV_fxtable.py b/Test/test_python_CMIP6_CV_fxtable.py
new file mode 100644
index 0000000..79db09b
--- /dev/null
+++ b/Test/test_python_CMIP6_CV_fxtable.py
@@ -0,0 +1,114 @@
+from threading import Thread
+import time
+import cmor,numpy
+import contextlib
+import unittest
+import signal
+import sys,os
+import tempfile
+import cdms2
+
+
+# ------------------------------------------------------
+# Copy stdout and stderr file descriptor for cmor output
+# ------------------------------------------------------
+newstdout = os.dup(1)
+newstderr = os.dup(2)
+# --------------
+# Create tmpfile
+# --------------
+tmpfile = tempfile.mkstemp() #tempfile[0] = File number, tempfile[1] = File name.
+os.dup2(tmpfile[0], 1)
+os.dup2(tmpfile[0], 2)
+os.close(tmpfile[0])
+
+global testOK 
+testOK = []
+
+# ==============================
+# Handle SIGINT receive by CMOR
+# ==============================
+def sig_handler(signum, frame):
+    global testOK
+
+    f=open(tmpfile[1],'r')
+    lines=f.readlines()
+    for line in lines:
+        if line.find('Error:') != -1:
+            testOK = line.strip()
+            break
+    f.close()
+    os.unlink(tmpfile[1])
+
+
+# ==============================
+#  main thread
+# ==============================
+def run():
+    unittest.main()
+
+
+# ---------------------
+# Hook up SIGINT signal 
+# ---------------------
+signal.signal(signal.SIGINT, sig_handler)
+
+
+class TestInstitutionMethods(unittest.TestCase):
+
+    def testCMIP6(self):
+        ''' This test will not fail we veirfy the attribute further_info_url'''
+
+        # -------------------------------------------
+        # Try to call cmor with a bad institution_ID
+        # -------------------------------------------
+        global testOK
+        nlat = 10
+        dlat = 180./nlat
+        nlon = 20
+        dlon = 360./nlon
+
+        error_flag = cmor.setup(inpath='Tables', netcdf_file_action=cmor.CMOR_REPLACE)
+        error_flag = cmor.dataset_json("Test/test_python_CMIP6_CV_fxtable.json")
+        cmor.load_table("CMIP6_fx.json")
+  
+        lats = numpy.arange(90-dlat/2.,-90,-dlat)
+        blats = numpy.arange(90,-90-dlat,-dlat)
+        lats2 = numpy.arange(-90+dlat/2.,90,dlat)
+        blats2 = numpy.arange(-90,90+dlat,dlat)
+        lons = numpy.arange(0+dlon/2.,360.,dlon)
+        blons = numpy.arange(0,360.+dlon,dlon)
+
+
+        data = lats[:,numpy.newaxis]*lons[numpy.newaxis,:]
+
+        data = ( data + 29000 ) / 750. + 233.2
+
+
+        ilat = cmor.axis(table_entry='latitude',coord_vals=lats,cell_bounds=blats,units='degrees_north')
+        ilon = cmor.axis(table_entry='longitude',coord_vals=lons,cell_bounds=blons,units='degrees_east')
+
+        # ------------------------------------------
+        # load Omon table and create masso variable
+        # ------------------------------------------
+        ivar = cmor.variable(table_entry="areacello",axis_ids=[ilat,ilon],units='m2')
+
+        a = cmor.write(ivar,data)
+        file = cmor.close()
+        os.dup2(newstdout,1)
+        os.dup2(newstderr,2)
+        sys.stdout = os.fdopen(newstdout, 'w', 0)
+        sys.stderr = os.fdopen(newstderr, 'w', 0)
+#        f=cdms2.open(cmor.get_final_filename(),"r")
+#        a =f.getglobal("tracking_id").split('/')[0] 
+#        self.assertIn("hdl:21.14100", a)
+
+
+
+if __name__ == '__main__':
+    t = Thread(target=run)
+    t.start()
+    while t.is_alive():
+        t.join(1)
+
+
diff --git a/Test/test_python_CMIP6_CV_longrealizationindex.json b/Test/test_python_CMIP6_CV_longrealizationindex.json
new file mode 100644
index 0000000..e589f7b
--- /dev/null
+++ b/Test/test_python_CMIP6_CV_longrealizationindex.json
@@ -0,0 +1,92 @@
+{
+           "_control_vocabulary_file": "CMIP6_CV.json",
+           "_cmip6_option":           "CMIP6",
+
+           "activity_id":            "AerChemMIP",
+
+           "branch_method":          "standard",
+           "branch_time_in_child":   "365.0",
+           "#output":                "Output Path where files are written",
+           "outpath":                "CMIP6",
+
+           "#experiment_id":         "Correspond to id found in CV json file",
+           "#experiment_id":          "piClim-aer",
+           "experiment_id":          "piControl-withism",
+           "#experiment_id":          "land-hist",
+
+           "source_type":            "AGCM AER CHEM DENIS",
+           "source_type":            "AGCM AER DENIS",
+           "source_type":            "AOGCM ISM AER",
+           "#source_type":            "LND",
+           "sub_experiment":         "none",
+           "sub_experiment_id":      "none",
+           "#parent_sub_experiment_id": "N/A",
+           "parent_mip_era":         "N/A",
+           "mip_era":                "CMIP6",
+           "#calendar":              "",
+           "calendar":               "360_day",
+           "branch_time":            "1.34",
+
+           "#realization_index":     "",
+           "realization_index":      "131",
+
+           "#initialization_index":  "",
+           "initialization_index":   "1209374928349823498274987234987",
+
+           "#physics_index":         "",
+           "physics_index":          "1",
+
+           "#forcing_index":         "",
+           "forcing_index":          "1",
+
+           "#contact ":              "Not required",
+           "#contact ":              "Rusty Koder (koder at middle_earth.net)",
+
+           "#history":               "not required, supplemented by CMOR",
+           "history":                "Output from archivcl_A1.nce/giccm_03_std_2xCO2_2256.",
+
+           "#comment":               "Not required",
+           "comment":                "Equilibrium reached after 30-year spin-up after which data were output starting with nominal date of January 2030",
+
+           "#references":            "Not required",
+           "references":             "Model described by Koder and Tolkien (J. Geophys. Res., 2001, 576-591).  Also see http://www.GICC.su/giccm/doc/index.html  2XCO2 simulation described in Dorkey et al. '(Clim. Dyn., 2003, 323-357.)'",
+
+
+           "#driving_variant_label":     "no-driver",
+
+           "further_info_url":       "http://furtherinfo.es-doc.org/<mip_era><institution_id><source_id><experiment_id><sub_experiment_id><variant_label>",
+
+           "grid":                   "gs1x1",
+           "grid_label":             "gr0",
+           "grid_resolution":        "5 km",
+
+           "institution_id":         "BNU",
+
+           "parent_activity_id":     "CMIP",
+           "parent_experiment_id":   "histALL",
+           "parent_source_id":       "GFDL-CM2-1",
+           "parent_variant_label":      "r1i1p1f3",
+
+
+           "#run_variant":           "Description of run variant (Recommended).",
+           "run_variant":            "forcing: black carbon aerosol only",
+
+           "#source_id":              "Model Source",
+           "source_id":               "CESM1-CAM5",
+
+           "#source":                "source title, first part is source_id",
+           "source":                 "CESM1 (CAM5): model version ca. 2009",
+
+
+           "#output_path_template":   "Template for output path directory using tables keys or global attributes",
+           "output_path_template":    "<activity_id><institution_id><source_id><experiment_id><variant_label><table><variable_id><grid_label><version>",
+
+
+           "output_file_template":    "<variable_id><table><experiment_id><source_id><variant_label><grid_label>",
+
+           "license":                "One of 2 licenses: ----- CMIP6 model data produced by <Your CentreName> is licensed under a Creative Commons Attribution 'NonCommercial Share Alike' 4.0 International License (http://creativecommons.org/licenses/by/4.0/). Use of the data should be acknowledged following guidelines found at <what URL???> The data is hosted via the Earth System Grid Federation. Permissions beyond the scope of this license may be available at http://pcmdi.org/cmip5/term [...]
+
+
+
+}
+
diff --git a/Test/test_python_CMIP6_CV_longrealizationindex.py b/Test/test_python_CMIP6_CV_longrealizationindex.py
new file mode 100644
index 0000000..517b7ab
--- /dev/null
+++ b/Test/test_python_CMIP6_CV_longrealizationindex.py
@@ -0,0 +1,100 @@
+from threading import Thread
+import time
+import cmor,numpy
+import contextlib
+import unittest
+import signal
+import sys,os
+import tempfile
+import pdb
+import atexit
+
+
+# ------------------------------------------------------
+# Copy stdout and stderr file descriptor for cmor output
+# ------------------------------------------------------
+newstdout = os.dup(1)
+newstderr = os.dup(2)
+# --------------
+# Create tmpfile
+# --------------
+tmpfile = tempfile.mkstemp() #tempfile[0] = File number, tempfile[1] = File name.
+os.dup2(tmpfile[0], 1)
+os.dup2(tmpfile[0], 2)
+os.close(tmpfile[0])
+
+global testOK 
+testOK = []
+
+# ==============================
+# Handle SIGINT receive by CMOR
+# ==============================
+def sig_handler(signum, frame):
+    global testOK
+
+    f=open(tmpfile[1],'r')
+    lines=f.readlines()
+    for line in lines:
+        if line.find('Error:') != -1:
+            testOK = line.strip()
+            break
+    f.close()
+    os.unlink(tmpfile[1])
+
+
+# ==============================
+#  main thread
+# ==============================
+def run():
+    return(unittest.main())
+
+
+# ---------------------
+# Hook up SIGTEM signal 
+# ---------------------
+signal.signal(signal.SIGINT, sig_handler)
+
+
+class TestInstitutionMethods(unittest.TestCase):
+
+    def testCMIP6(self):
+
+        # -------------------------------------------
+        # Try to call cmor with a bad institution_ID
+        # -------------------------------------------
+        global testOK
+        error_flag = cmor.setup(inpath='Tables', netcdf_file_action=cmor.CMOR_REPLACE)
+        error_flag = cmor.dataset_json("Test/test_python_CMIP6_CV_longrealizationindex.json")
+  
+        # ------------------------------------------
+        # load Omon table and create masso variable
+        # ------------------------------------------
+        cmor.load_table("CMIP6_Omon.json")
+        itime = cmor.axis(table_entry="time",units='months since 2010',
+                          coord_vals=numpy.array([0,1,2,3,4.]),
+                          cell_bounds=numpy.array([0,1,2,3,4,5.]))
+        ivar = cmor.variable(table_entry="masso",axis_ids=[itime],units='kg')
+
+        data=numpy.random.random(5)
+        try:
+            for i in range(0,1):
+                a = cmor.write(ivar,data[i:i])
+        except:
+            os.dup2(newstdout,1)
+            os.dup2(newstderr,2)
+            sys.stdout = os.fdopen(newstdout, 'w', 0)
+            sys.stderr = os.fdopen(newstderr, 'w', 0)
+            time.sleep(.1)
+            # ------------------------------------------
+            # Check error after signal handler is back
+            # ------------------------------------------
+            self.assertIn("\"Denis1209374928349823498274987234987\"", testOK)
+
+
+if __name__ == '__main__':
+    t = Thread(target=run)
+    t.start()
+    while t.is_alive():
+        t.join(1)
+
+
diff --git a/Test/test_python_CMIP6_CV_nomipera.json b/Test/test_python_CMIP6_CV_nomipera.json
new file mode 100644
index 0000000..c5d71d5
--- /dev/null
+++ b/Test/test_python_CMIP6_CV_nomipera.json
@@ -0,0 +1,98 @@
+{
+           "_control_vocabulary_file": "CMIP6_CV.json",
+
+           "#activity_id":           "Specify an activity PMIP, GeoMIP, (must start with CMIP6-)",
+           "activity_id":            "CMIP",
+
+           "#output":                "Output Path where files are written",
+           "outpath":                "CMIP6",
+
+           "#experiment_id":         "Correspond to id found in experiments.json",
+           "experiment_id":          "piControl",
+           "sub_experiment_id":      "none",
+           "sub_experiment":         "none",
+
+
+           "parent_sub_experiment_id":"N/A",
+           "parent_mip_era":         "N/A",
+           "#mip_era":                "CMIP6",
+
+           "source_id":              "KMA-ACE",
+           "source_type":            "AOGCM",
+
+           "#calendar":              "",
+           "calendar":               "gregorian",
+
+           "#realization_index":     "",
+           "realization_index":      "1",
+
+           "#initialization_index":  "",
+           "initialization_index":   "1",
+
+           "#physics_index":         "",
+           "physics_index":          "1",
+
+           "#forcing_index":         "",
+           "forcing_index":          "1",
+
+           "#contact ":              "",
+           "contact ":               "Python Coder (python at a.b.com) ",
+
+           "#history":               "",
+           "history":                "Output from archivcl_A1.nce/giccm_03_std_2xCO2_2256.",
+
+           "#comment":               "",
+           "comment":                "Equilibrium reached after 30-year spin-up ",
+
+           "#references":            "",
+           "references":             "Model described by Koder and Tolkien ",
+
+           "institution_id":          "NCC",
+
+            
+           "#model_id":              "",
+           "model_id":               "GICCM1",
+
+           "#forcing":               "",
+           "forcing":                "TO, SO, Nat",
+
+           "#parent_experiment_rip": "",
+           "parent_variant_label":  "r1i3p2",
+
+           "#parent_experiment_id":  "",
+           "parent_experiment_id":   "N/A",
+
+           "#branch_time":            "",
+           "branch_time":             "1",
+
+
+           "parent_activity_id": "CMIP",
+           "parent_experiment_id": "histALL",
+           "parent_source_id":   "GFDL-CM2-1",
+           "parent_variant_label":  "r1i1p1f3",
+
+           "branch_method":         "standard",
+           "branch_time_in_child":  "00D0",
+           "branch_time_in_parent":"3650.0D0",
+           "branch_time_units_in_parent": "days since 1000-1-1",
+
+
+           "further_info_url":       "http://furtherinfo.es-doc.org/<mip_era><institution_id><source_id><experiment_id><sub_experiment_id><variant_label>",
+           "grid":                   "native atmosphere T63 gaussian grid (64x128 latxlon)",
+           "grid_label":             "gn",
+           "grid_resolution":        "5 km",
+           "references":             "Model described by Koder and Tolkien (J. Geophys. Res.,2001, 576 - 591).  Also see http://www.GICC.su/giccm/doc/index.html  2XCO2 simulation described in Dorkey et al. '(Clim. Dyn., 2003, 323 - 357.)",
+           "run_variant":            "forcing: black carbon aerosol only",
+
+           "#output_path_template":   "Template for output path directory using tables keys or global attributes",
+           "output_path_template":    "<activity_id><institution_id><source_id><experiment_id><variant_label><table><variable_id><grid_label><version>",
+
+           "#output_file_template":   "Template for output filename using table keys or global attributes",
+           "output_file_template":    "<variable_id><table><experiment_id><source_id><variant_label><grid_label>",
+
+           "license":                "One of 2 licenses: ----- CMIP6 model data produced by <Your CentreName> is licensed under a Creative Commons Attribution 'NonCommercial Share Alike' 4.0 International License (http://creativecommons.org/licenses/by/4.0/). Use of the data should be acknowledged following guidelines found at <what URL???> The data is hosted via the Earth System Grid Federation. Permissions beyond the scope of this license may be available at http://pcmdi.org/cmip5/term [...]
+
+
+}
+
+
diff --git a/Test/test_python_CMIP6_CV_nomipera.py b/Test/test_python_CMIP6_CV_nomipera.py
new file mode 100644
index 0000000..01cb01b
--- /dev/null
+++ b/Test/test_python_CMIP6_CV_nomipera.py
@@ -0,0 +1,96 @@
+from threading import Thread
+import time
+import cmor,numpy
+import contextlib
+import unittest
+import signal
+import sys,os
+import tempfile
+import cdms2
+
+
+# ------------------------------------------------------
+# Copy stdout and stderr file descriptor for cmor output
+# ------------------------------------------------------
+newstdout = os.dup(1)
+newstderr = os.dup(2)
+# --------------
+# Create tmpfile
+# --------------
+tmpfile = tempfile.mkstemp() #tempfile[0] = File number, tempfile[1] = File name.
+os.dup2(tmpfile[0], 1)
+os.dup2(tmpfile[0], 2)
+os.close(tmpfile[0])
+
+global testOK 
+testOK = []
+
+# ==============================
+# Handle SIGINT receive by CMOR
+# ==============================
+def sig_handler(signum, frame):
+    global testOK
+
+    f=open(tmpfile[1],'r')
+    lines=f.readlines()
+    for line in lines:
+        if line.find('set attribute') != -1:
+            testOK = line.strip()
+            break
+    f.close()
+    os.unlink(tmpfile[1])
+
+
+# ==============================
+#  main thread
+# ==============================
+def run():
+    unittest.main()
+
+
+# ---------------------
+# Hook up SIGTEM signal 
+# ---------------------
+signal.signal(signal.SIGINT, sig_handler)
+
+
+class TestInstitutionMethods(unittest.TestCase):
+
+    def testCMIP6(self):
+        ''' This test will not fail we veirfy the attribute further_info_url'''
+
+        # -------------------------------------------
+        # Try to call cmor with a bad institution_ID
+        # -------------------------------------------
+        global testOK
+        error_flag = cmor.setup(inpath='Tables', netcdf_file_action=cmor.CMOR_REPLACE)
+        error_flag = cmor.dataset_json("Test/test_python_CMIP6_CV_nomipera.json")
+  
+        # ------------------------------------------
+        # load Omon table and create masso variable
+        # ------------------------------------------
+        cmor.load_table("CMIP6_badOmon.json")
+        itime = cmor.axis(table_entry="time",units='months since 2010',
+                          coord_vals=numpy.array([0,1,2,3,4.]),
+                          cell_bounds=numpy.array([0,1,2,3,4,5.]))
+        ivar = cmor.variable(table_entry="masso",axis_ids=[itime],units='kg')
+
+        data=numpy.random.random(5)
+        for i in range(0,5):
+            a = cmor.write(ivar,data[i:i])
+        file = cmor.close()
+        os.dup2(newstdout,1)
+        os.dup2(newstderr,2)
+        sys.stdout = os.fdopen(newstdout, 'w', 0)
+        sys.stderr = os.fdopen(newstderr, 'w', 0)
+        self.assertIn("mip_era", testOK);
+
+
+
+if __name__ == '__main__':
+    t = Thread(target=run)
+    t.start()
+    while t.is_alive():
+        t.join(1)
+
+
diff --git a/Test/test_python_CMIP6_CV_trackingNoprefix.json b/Test/test_python_CMIP6_CV_trackingNoprefix.json
new file mode 100644
index 0000000..4b0eb36
--- /dev/null
+++ b/Test/test_python_CMIP6_CV_trackingNoprefix.json
@@ -0,0 +1,92 @@
+{
+           "_control_vocabulary_file": "CMIP6_CV.json",
+           "_cmip6_option":           "CMIP6",
+
+           "tracking_prefix":        "",
+           "activity_id":            "ISMIP6",
+
+           "branch_method":          "standard",
+           "branch_time_in_child":   "365.0",
+           "#output":                "Output Path where files are written",
+           "outpath":                "CMIP6",
+
+           "#experiment_id":         "Correspond to id found in CV json file",
+           "#experiment_id":         "piClim-aer",
+           "experiment_id":          "piControl-withism",
+           "#experiment_id":         "land-hist",
+           "sub_experiment_id":      "none",
+           "sub_experiment":         "none",
+
+           "source_type":            "AGCM AER CHEM DENIS",
+           "source_type":            "AGCM AER DENIS",
+           "source_type":            "AOGCM ISM AER",
+           "#source_type":            "LND",
+           "#parent_sub_experiment_id": "N/A",
+           "parent_mip_era":         "N/A",
+           "mip_era":                "CMIP6",
+           "#calendar":              "",
+           "calendar":               "360_day",
+           "branch_time":            "1.34",
+
+           "#realization_index":     "",
+           "realization_index":      "11",
+
+           "#initialization_index":  "",
+           "initialization_index":   "1",
+
+           "#physics_index":         "",
+           "physics_index":          "1",
+
+           "#forcing_index":         "",
+           "forcing_index":          "1",
+
+           "#contact ":              "Not required",
+           "#contact ":              "Python Coder (coder at a.b.c.com)",
+
+           "#history":               "not required, supplemented by CMOR",
+           "history":                "Output from archivcl_A1.nce/giccm_03_std_2xCO2_2256.",
+
+           "#comment":               "Not required",
+           "comment":                "Equilibrium reached after 30-year spin-up after which data were output starting with nominal date of January 2030",
+
+           "#references":            "Not required",
+           "references":             "Model described by Koder and Tolkien (J. Geophys. Res., 2001, 576-591).  Also see http://www.GICC.su/giccm/doc/index.html  2XCO2 simulation described in Dorkey et al. '(Clim. Dyn., 2003, 323-357.)'",
+
+
+           "#driving_variant_label":     "no-driver",
+
+
+           "grid":                   "gs1x1",
+           "grid_label":             "gr",
+           "grid_resolution":        "5 km",
+
+           "institution_id":         "BNU",
+
+           "parent_activity_id":     "CMIP",
+           "parent_experiment_id":   "histALL",
+           "parent_source_id":       "GFDL-CM2-1",
+           "parent_variant_label":      "r1i1p1f3",
+
+
+           "#run_variant":           "Description of run variant (Recommended).",
+           "run_variant":            "forcing: black carbon aerosol only",
+
+           "#source_id":              "Model Source",
+           "source_id":               "CESM1-CAM5",
+
+           "#source":                "source title, first part is source_id",
+           "source":                 "CESM1 (CAM5): model version ca. 2009",
+
+
+           "#output_path_template":   "Template for output path directory using tables keys or global attributes",
+           "output_path_template":    "<activity_id><institution_id><source_id><experiment_id><variant_label><table><variable_id><grid_label><version>",
+
+
+           "output_file_template":    "<variable_id><table><experiment_id><source_id><variant_label><grid_label>",
+
+           "license":                "One of 2 licenses: ----- CMIP6 model data produced by <Your CentreName> is licensed under a Creative Commons Attribution 'NonCommercial Share Alike' 4.0 International License (http://creativecommons.org/licenses/by/4.0/). Use of the data should be acknowledged following guidelines found at <what URL???> The data is hosted via the Earth System Grid Federation. Permissions beyond the scope of this license may be available at http://pcmdi.org/cmip5/term [...]
+
+
+
+}
+
diff --git a/Test/test_python_CMIP6_CV_trackingNoprefix.py b/Test/test_python_CMIP6_CV_trackingNoprefix.py
new file mode 100644
index 0000000..adb71fb
--- /dev/null
+++ b/Test/test_python_CMIP6_CV_trackingNoprefix.py
@@ -0,0 +1,98 @@
+from threading import Thread
+import time
+import cmor,numpy
+import contextlib
+import unittest
+import signal
+import sys,os
+import tempfile
+import cdms2
+
+
+# ------------------------------------------------------
+# Copy stdout and stderr file descriptor for cmor output
+# ------------------------------------------------------
+newstdout = os.dup(1)
+newstderr = os.dup(2)
+# --------------
+# Create tmpfile
+# --------------
+tmpfile = tempfile.mkstemp() #tempfile[0] = File number, tempfile[1] = File name.
+os.dup2(tmpfile[0], 1)
+os.dup2(tmpfile[0], 2)
+os.close(tmpfile[0])
+
+global testOK 
+testOK = []
+
+# ==============================
+# Handle SIGINT receive by CMOR
+# ==============================
+def sig_handler(signum, frame):
+    global testOK
+
+    f=open(tmpfile[1],'r')
+    lines=f.readlines()
+    for line in lines:
+        if line.find('Error:') != -1:
+            testOK = line.strip()
+            break
+    f.close()
+    os.unlink(tmpfile[1])
+
+
+# ==============================
+#  main thread
+# ==============================
+def run():
+    unittest.main()
+
+
+# ---------------------
+# Hook up SIGTEM signal 
+# ---------------------
+signal.signal(signal.SIGINT, sig_handler)
+
+
+class TestInstitutionMethods(unittest.TestCase):
+
+    def testCMIP6(self):
+        ''' This test will not fail we veirfy the attribute further_info_url'''
+
+        # -------------------------------------------
+        # Try to call cmor with a bad institution_ID
+        # -------------------------------------------
+        global testOK
+        error_flag = cmor.setup(inpath='Tables', netcdf_file_action=cmor.CMOR_REPLACE)
+        error_flag = cmor.dataset_json("Test/test_python_CMIP6_CV_trackingNoprefix.json")
+  
+        # ------------------------------------------
+        # load Omon table and create masso variable
+        # ------------------------------------------
+        cmor.load_table("CMIP6_Omon.json")
+        itime = cmor.axis(table_entry="time",units='months since 2010',
+                          coord_vals=numpy.array([0,1,2,3,4.]),
+                          cell_bounds=numpy.array([0,1,2,3,4,5.]))
+        ivar = cmor.variable(table_entry="masso",axis_ids=[itime],units='kg')
+
+        data=numpy.random.random(5)
+        for i in range(0,5):
+            a = cmor.write(ivar,data[i:i])
+        file = cmor.close()
+        os.dup2(newstdout,1)
+        os.dup2(newstderr,2)
+        sys.stdout = os.fdopen(newstdout, 'w', 0)
+        sys.stderr = os.fdopen(newstderr, 'w', 0)
+        f=cdms2.open(cmor.get_final_filename(),"r")
+        a =f.getglobal("tracking_id").split('/')[0] 
+        self.assertNotIn("hdl:21.14100/", a)
+
+
+
+if __name__ == '__main__':
+    t = Thread(target=run)
+    t.start()
+    while t.is_alive():
+        t.join(1)
+
+
diff --git a/Test/test_python_CMIP6_CV_trackingprefix.json b/Test/test_python_CMIP6_CV_trackingprefix.json
new file mode 100644
index 0000000..edbfe84
--- /dev/null
+++ b/Test/test_python_CMIP6_CV_trackingprefix.json
@@ -0,0 +1,92 @@
+{
+           "_control_vocabulary_file": "CMIP6_CV.json",
+           "_cmip6_option":           "CMIP6",
+
+           "tracking_prefix":        "hdl:21.14100",
+           "activity_id":            "ISMIP6",
+
+           "branch_method":          "standard",
+           "branch_time_in_child":   "365.0",
+           "#output":                "Output Path where files are written",
+           "outpath":                "CMIP6",
+
+           "#experiment_id":         "Correspond to id found in CV json file",
+           "#experiment_id":         "piClim-aer",
+           "experiment_id":          "piControl-withism",
+           "#experiment_id":         "land-hist",
+           "sub_experiment_id":      "none",
+           "sub_experiment":         "none",
+
+           "source_type":            "AGCM AER CHEM DENIS",
+           "source_type":            "AGCM AER DENIS",
+           "source_type":            "AOGCM ISM AER",
+           "#source_type":            "LND",
+           "#parent_sub_experiment_id": "N/A",
+           "parent_mip_era":         "N/A",
+           "mip_era":                "CMIP6",
+           "#calendar":              "",
+           "calendar":               "360_day",
+           "branch_time":            "1.34",
+
+           "#realization_index":     "",
+           "realization_index":      "11",
+
+           "#initialization_index":  "",
+           "initialization_index":   "1",
+
+           "#physics_index":         "",
+           "physics_index":          "1",
+
+           "#forcing_index":         "",
+           "forcing_index":          "1",
+
+           "#contact ":              "Not required",
+           "#contact ":              "Python Coder (coder at a.b.c.com)",
+
+           "#history":               "not required, supplemented by CMOR",
+           "history":                "Output from archivcl_A1.nce/giccm_03_std_2xCO2_2256.",
+
+           "#comment":               "Not required",
+           "comment":                "Equilibrium reached after 30-year spin-up after which data were output starting with nominal date of January 2030",
+
+           "#references":            "Not required",
+           "references":             "Model described by Koder and Tolkien (J. Geophys. Res., 2001, 576-591).  Also see http://www.GICC.su/giccm/doc/index.html  2XCO2 simulation described in Dorkey et al. '(Clim. Dyn., 2003, 323-357.)'",
+
+
+           "#driving_variant_label":     "no-driver",
+
+
+           "grid":                   "gs1x1",
+           "grid_label":             "gr",
+           "grid_resolution":        "5 km",
+
+           "institution_id":         "BNU",
+
+           "parent_activity_id":     "CMIP",
+           "parent_experiment_id":   "histALL",
+           "parent_source_id":       "GFDL-CM2-1",
+           "parent_variant_label":      "r1i1p1f3",
+
+
+           "#run_variant":           "Description of run variant (Recommended).",
+           "run_variant":            "forcing: black carbon aerosol only",
+
+           "#source_id":              "Model Source",
+           "source_id":               "CESM1-CAM5",
+
+           "#source":                "source title, first part is source_id",
+           "source":                 "CESM1 (CAM5): model version ca. 2009",
+
+
+           "#output_path_template":   "Template for output path directory using tables keys or global attributes",
+           "output_path_template":    "<activity_id><institution_id><source_id><experiment_id><variant_label><table><variable_id><grid_label><version>",
+
+
+           "output_file_template":    "<variable_id><table><experiment_id><source_id><variant_label><grid_label>",
+
+           "license":                "One of 2 licenses: ----- CMIP6 model data produced by <Your CentreName> is licensed under a Creative Commons Attribution 'NonCommercial Share Alike' 4.0 International License (http://creativecommons.org/licenses/by/4.0/). Use of the data should be acknowledged following guidelines found at <what URL???> The data is hosted via the Earth System Grid Federation. Permissions beyond the scope of this license may be available at http://pcmdi.org/cmip5/term [...]
+
+
+
+}
+
diff --git a/Test/test_python_CMIP6_CV_trackingprefix.py b/Test/test_python_CMIP6_CV_trackingprefix.py
new file mode 100644
index 0000000..b41913c
--- /dev/null
+++ b/Test/test_python_CMIP6_CV_trackingprefix.py
@@ -0,0 +1,98 @@
+from threading import Thread
+import time
+import cmor,numpy
+import contextlib
+import unittest
+import signal
+import sys,os
+import tempfile
+import cdms2
+
+
+# ------------------------------------------------------
+# Copy stdout and stderr file descriptor for cmor output
+# ------------------------------------------------------
+newstdout = os.dup(1)
+newstderr = os.dup(2)
+# --------------
+# Create tmpfile
+# --------------
+tmpfile = tempfile.mkstemp() #tempfile[0] = File number, tempfile[1] = File name.
+os.dup2(tmpfile[0], 1)
+os.dup2(tmpfile[0], 2)
+os.close(tmpfile[0])
+
+global testOK 
+testOK = []
+
+# ==============================
+# Handle SIGINT receive by CMOR
+# ==============================
+def sig_handler(signum, frame):
+    global testOK
+
+    f=open(tmpfile[1],'r')
+    lines=f.readlines()
+    for line in lines:
+        if line.find('Error:') != -1:
+            testOK = line.strip()
+            break
+    f.close()
+    os.unlink(tmpfile[1])
+
+
+# ==============================
+#  main thread
+# ==============================
+def run():
+    unittest.main()
+
+
+# ---------------------
+# Hook up SIGTEM signal 
+# ---------------------
+signal.signal(signal.SIGINT, sig_handler)
+
+
+class TestInstitutionMethods(unittest.TestCase):
+
+    def testCMIP6(self):
+        ''' This test will not fail we veirfy the attribute further_info_url'''
+
+        # -------------------------------------------
+        # Try to call cmor with a bad institution_ID
+        # -------------------------------------------
+        global testOK
+        error_flag = cmor.setup(inpath='Tables', netcdf_file_action=cmor.CMOR_REPLACE)
+        error_flag = cmor.dataset_json("Test/test_python_CMIP6_CV_trackingprefix.json")
+  
+        # ------------------------------------------
+        # load Omon table and create masso variable
+        # ------------------------------------------
+        cmor.load_table("CMIP6_Omon.json")
+        itime = cmor.axis(table_entry="time",units='months since 2010',
+                          coord_vals=numpy.array([0,1,2,3,4.]),
+                          cell_bounds=numpy.array([0,1,2,3,4,5.]))
+        ivar = cmor.variable(table_entry="masso",axis_ids=[itime],units='kg')
+
+        data=numpy.random.random(5)
+        for i in range(0,5):
+            a = cmor.write(ivar,data[i:i])
+        file = cmor.close()
+        os.dup2(newstdout,1)
+        os.dup2(newstderr,2)
+        sys.stdout = os.fdopen(newstdout, 'w', 0)
+        sys.stderr = os.fdopen(newstderr, 'w', 0)
+        f=cdms2.open(cmor.get_final_filename(),"r")
+        a =f.getglobal("tracking_id").split('/')[0] 
+        self.assertIn("hdl:21.14100", a)
+
+
+
+if __name__ == '__main__':
+    t = Thread(target=run)
+    t.start()
+    while t.is_alive():
+        t.join(1)
+
+
diff --git a/Test/test_python_CMIP6_driving.json b/Test/test_python_CMIP6_driving.json
new file mode 100644
index 0000000..b6ed0a2
--- /dev/null
+++ b/Test/test_python_CMIP6_driving.json
@@ -0,0 +1,103 @@
+{
+           "_control_vocabulary_file": "CMIP6_CV.json",
+           "_cmip6_option":           "CMIP6",
+
+           "#activity_id":           "Specify an activity PMIP, GeoMIP, (must start with CMIP6-)",
+           "activity_id":            "CMIP",
+
+           "#output":                "Output Path where files are written",
+           "outpath":                "CMIP6",
+
+           "#experiment_id":         "Correspond to id found in experiments.json",
+           "experiment_id":          "piControl",
+     "source_type":                      "AOGCM",
+     "sub_experiment":                      "none",
+     "sub_experiment_id":                      "none",
+     "parent_sub_experiment_id":                      "N/A",
+     "parent_mip_era":                      "N/A",
+     "mip_era":                      "CMIP6",
+
+           "#institution":           "Controlled Vocaburaly in instition.json",
+           "institution":            "GICC (Generic International Climate Center, Geneva, Switzerland)",
+            
+           "#source":                "",
+           "source":              "MIROC-ESM",
+
+           "#calendar":              "",
+           "calendar":               "gregorian",
+
+           "#realization_index":     "",
+           "realization_index":      "1",
+
+           "#initialization_index":  "",
+           "initialization_index":   "1",
+
+           "#physics_index":         "",
+           "physics_index":          "1",
+
+           "#forcing_index":         "",
+           "forcing_index":          "1",
+
+           "#contact ":              "",
+           "contact ":               "Python Coder (python at a.b.com) ",
+
+           "#history":               "",
+           "history":                "Output from archivcl_A1.nce/giccm_03_std_2xCO2_2256.",
+
+           "#comment":               "",
+           "comment":                "Equilibrium reached after 30-year spin-up ",
+
+           "#references":            "",
+           "references":             "Model described by Koder and Tolkien ",
+
+           "#institution_id":          "",
+           "institution_id":           "PCMDI",
+
+           "#model_id":              "",
+           "model_id":               "GICCM1",
+
+           "#forcing":               "",
+           "forcing":                "TO, SO, Nat",
+
+           "#parent_experiment_rip": "",
+           "parent_variant_label":  "r1i3p2",
+
+           "#parent_experiment_id":  "",
+           "parent_experiment_id":   "N/A",
+
+           "#branch_time":            "",
+           "branch_time":             "1",
+
+
+           "parent_activity_id": "CMIP",
+           "parent_experiment_id": "histALL",
+           "parent_source_id":   "GFDL-CM2-1",
+           "parent_variant_label":  "r1i1p1f3",
+
+           "branch_method":         "standard",
+           "branch_time_in_child":  "00D0",
+           "branch_time_in_parent":"3650.0D0",
+           "branch_time_units_in_parent": "days since 1000-1-1",
+
+
+           "further_info_url":       "http://furtherinfo.es-doc.org/<mip_era><institution_id><source_id><experiment_id><sub_experiment_id><variant_label>",
+           "grid":                   "native atmosphere T63 gaussian grid (64x128 latxlon)",
+           "grid_label":             "gn",
+           "grid_resolution":        "5 km",
+           "institution_id":         "d",
+           "references":             "Model described by Koder and Tolkien (J. Geophys. Res.,2001, 576 - 591).  Also see http://www.GICC.su/giccm/doc/index.html  2XCO2 simulation described in Dorkey et al. '(Clim. Dyn., 2003, 323 - 357.)",
+           "run_variant":            "forcing: black carbon aerosol only",
+           "source_id":              "MIROC-ESM",
+
+           "#output_path_template":   "Template for output path directory using tables keys or global attributes",
+           "output_path_template":    "<activity_id><institution_id><source_id><experiment_id><variant_label><table><variable_id><grid_label><version>",
+
+           "#output_file_template":   "Template for output filename using table keys or global attributes",
+           "output_file_template":    "<variable_id><table><experiment_id><source_id><variant_label><grid_label>",
+
+           "license":                "One of 2 licenses: ----- CMIP6 model data produced by <Your CentreName> is licensed under a Creative Commons Attribution 'NonCommercial Share Alike' 4.0 International License (http://creativecommons.org/licenses/by/4.0/). Use of the data should be acknowledged following guidelines found at <what URL???> The data is hosted via the Earth System Grid Federation. Permissions beyond the scope of this license may be available at http://pcmdi.org/cmip5/term [...]
+
+
+}
+
+
diff --git a/Test/test_python_CMIP6_driving.py b/Test/test_python_CMIP6_driving.py
new file mode 100644
index 0000000..c95d7b6
--- /dev/null
+++ b/Test/test_python_CMIP6_driving.py
@@ -0,0 +1,15 @@
+import cmor,numpy
+
+error_flag = cmor.setup(inpath='Tables', netcdf_file_action=cmor.CMOR_REPLACE)
+  
+error_flag = cmor.dataset_json("Test/test_python_CMIP6_driving.json")
+  
+cmor.load_table("CMIP6_Omon.json")
+itime = cmor.axis(table_entry="time",units='months since 2010',coord_vals=numpy.array([0,1,2,3,4.]),cell_bounds=numpy.array([0,1,2,3,4,5.]))
+ivar = cmor.variable(table_entry="masso",axis_ids=[itime],units='kg')
+
+data=numpy.random.random(5)
+for i in range(0,5):
+    cmor.write(ivar,data[i:i])#,time_vals=numpy.array([i,]),time_bnds=numpy.array([i,i+1]))
+error_flag = cmor.close()
+
diff --git a/Test/test_python_CMIP6_experimentID.json b/Test/test_python_CMIP6_experimentID.json
new file mode 100644
index 0000000..c65d0a2
--- /dev/null
+++ b/Test/test_python_CMIP6_experimentID.json
@@ -0,0 +1,81 @@
+{
+           "_control_vocabulary_file": "CMIP6_CV.json",
+           "_cmip6_option":           "CMIP6",
+
+           "_control_vocabulary_file": "CMIP6_CV.json",
+           "_cmip6_option":           "CMIP6",
+           "activity_id":            "CMIP",
+
+           "#output":                "Output Path where files are written",
+           "outpath":                "CMIP6",
+
+           "#experiment_id":         "Correspond to id found in experiments.json",
+           "experiment_id":          "piControl",
+
+           "#institution":           "Controlled Vocaburaly in instition.json",
+           "institution":            "GICC (Generic International Climate Center, Geneva, Switzerland)",
+            
+           "#source":                "",
+           "source":                 "MIROC-ESM",
+
+           "#calendar":              "",
+           "calendar":               "gregorian",
+
+           "#realization_index":     "",
+           "realization_index":      "1",
+
+           "#initialization_index":  "",
+           "initialization_index":   "1",
+
+           "#physics_index":         "",
+           "physics_index":          "1",
+
+           "#forcing_index":         "",
+           "forcing_index":          "1",
+
+           "#contact ":              "",
+           "contact ":               "Python Coder (python at a.b.com) ",
+
+           "#history":               "",
+           "history":                "Output from archivcl_A1.nce/giccm_03_std_2xCO2_2256.",
+
+           "#comment":               "",
+           "comment":                "Equilibrium reached after 30-year spin-up ",
+
+           "#references":            "",
+           "references":             "Model described by Koder and Tolkien ",
+
+           "#institution_id":          "",
+           "institution_id":           "PCMDI",
+
+           "#model_id":              "",
+           "model_id":               "GICCM1",
+
+           "#forcing":               "",
+           "forcing":                "TO, SO, Nat",
+
+           "#branch_time":            "",
+           "branch_time":             "1",
+
+
+           "further_info_url":       "http://furtherinfo.es-doc.org/<mip_era><institution_id><source_id><experiment_id><sub_experiment_id><variant_label>",
+           "grid":                   "native atmosphere T63 gaussian grid (64x128 latxlon)",
+           "grid_label":             "gn",
+           "grid_resolution":        "5 km",
+           "institution_id":         "BNU",
+           "references":             "Model described by Koder and Tolkien (J. Geophys. Res.,2001, 576 - 591).  Also see http://www.GICC.su/giccm/doc/index.html  2XCO2 simulation described in Dorkey et al. '(Clim. Dyn., 2003, 323 - 357.)",
+           "run_variant":            "forcing: black carbon aerosol only",
+           "source_id":              "MIROC-ESM",
+
+           "#output_path_template":   "Template for output path directory using tables keys or global attributes",
+           "output_path_template":    "<activity_id><institution_id><source_id><experiment_id><variant_label><table><variable_id><grid_label><version>",
+
+           "#output_file_template":   "Template for output filename using table keys or global attributes",
+           "output_file_template":    "<variable_id><table><experiment_id><source_id><variant_label><grid_label>",
+
+           "license":                "One of 2 licenses: ----- CMIP6 model data produced by <Your CentreName> is licensed under a Creative Commons Attribution 'NonCommercial Share Alike' 4.0 International License (http://creativecommons.org/licenses/by/4.0/). Use of the data should be acknowledged following guidelines found at <what URL???> The data is hosted via the Earth System Grid Federation. Permissions beyond the scope of this license may be available at http://pcmdi.org/cmip5/term [...]
+
+
+}
+
+
diff --git a/Test/test_python_CMIP6_experimentID.py b/Test/test_python_CMIP6_experimentID.py
new file mode 100644
index 0000000..6e10d58
--- /dev/null
+++ b/Test/test_python_CMIP6_experimentID.py
@@ -0,0 +1,15 @@
+import cmor,numpy
+
+error_flag = cmor.setup(inpath='Tables', netcdf_file_action=cmor.CMOR_REPLACE)
+  
+error_flag = cmor.dataset_json("Test/test_python_CMIP6_experimentID.json")
+  
+cmor.load_table("CMIP6_Omon.json")
+itime = cmor.axis(table_entry="time",units='months since 2010',coord_vals=numpy.array([0,1,2,3,4.]),cell_bounds=numpy.array([0,1,2,3,4,5.]))
+ivar = cmor.variable(table_entry="masso",axis_ids=[itime],units='kg')
+
+data=numpy.random.random(5)
+for i in range(0,5):
+    cmor.write(ivar,data[i:i])#,time_vals=numpy.array([i,]),time_bnds=numpy.array([i,i+1]))
+error_flag = cmor.close()
+
diff --git a/Test/test_python_CMIP6_no_driving.json b/Test/test_python_CMIP6_no_driving.json
new file mode 100644
index 0000000..e72e336
--- /dev/null
+++ b/Test/test_python_CMIP6_no_driving.json
@@ -0,0 +1,95 @@
+{
+           "_control_vocabulary_file": "CMIP6_CV.json",
+           "_cmip6_option":           "CMIP6",
+
+           "#activity_id":           "Specify an activity PMIP, GeoMIP, (must start with CMIP6-)",
+           "activity_id":            "CMIP",
+
+           "#outpath":               "Output Path where files are written",
+           "outpath":                "CMIP6",
+
+           "#experiment_id":         "Correspond to id found in experiments.json",
+           "experiment_id":          "piControl",
+           "source_type":            "AOGCM",
+           "sub_experiment":         "none",
+           "sub_experiment_id":      "none",
+           "parent_sub_experiment_id":"N/A",
+           "parent_mip_era":         "N/A",
+           "mip_era":                "CMIP6",
+
+           "#institution":           "Controlled Vocaburaly in CV.json",
+           "institution":            "GICC (Generic International Climate Center, Geneva, Switzerland)",
+            
+           "#source":                "",
+           "source":                 "MIROC-ESM",
+
+           "#calendar":              "",
+           "calendar":               "gregorian",
+
+           "#realization_index":     "",
+           "realization_index":      "1",
+
+           "#initialization_index":  "",
+           "initialization_index":   "1",
+
+           "#physics_index":         "",
+           "physics_index":          "1",
+
+           "#forcing_index":         "",
+           "forcing_index":          "1",
+
+           "#contact ":              "",
+           "contact ":               "Python Coder (python at a.b.com) ",
+
+           "#history":               "",
+           "history":                "Output from archivcl_A1.nce/giccm_03_std_2xCO2_2256.",
+
+           "#comment":               "",
+           "comment":                "Equilibrium reached after 30-year spin-up ",
+
+           "#references":            "",
+           "references":             "Model described by Koder and Tolkien ",
+
+           "#institution_id":          "",
+           "institution_id":           "PCMDI",
+
+           "#model_id":              "",
+           "model_id":               "GICCM1",
+
+           "#forcing":               "",
+           "forcing":                "TO, SO, Nat",
+
+
+           "parent_activity_id":     "CMIP",
+           "parent_experiment_id":   "histALL",
+           "parent_source_id":       "GFDL-CM2-1",
+           "parent_variant_label":      "r1i1p1f3",
+
+           "branch_method":         "standard",
+           "branch_time_in_child":  "00D0",
+           "branch_time_in_parent":"3650.0D0",
+           "branch_time_units_in_parent": "days since 1000-1-1",
+
+
+           "further_info_url":       "http://furtherinfo.es-doc.org/<mip_era><institution_id><source_id><experiment_id><sub_experiment_id><variant_label>",
+           "grid":                   "native atmosphere T63 gaussian grid (64x128 latxlon)",
+           "grid_label":            "gn",
+           "grid_resolution":        "5 km",
+           "institution_id":         "d",
+           "references":             "Model described by Koder and Tolkien (J. Geophys. Res.,2001, 576 - 591).  Also see http://www.GICC.su/giccm/doc/index.html  2XCO2 simulation described in Dorkey et al. '(Clim. Dyn., 2003, 323 - 357.)",
+           "run_variant":            "forcing: black carbon aerosol only",
+           "source_id":              "MIROC-ESM",
+
+           "#output_path_template":   "Template for output path directory using tables keys or global attributes",
+           "output_path_template":    "<activity_id><institution_id><source_id><experiment_id><variant_label><table><variable_id><grid_label><version>",
+
+
+           "#output_file_template":   "Template for output filename using table keys or global attributes",
+           "output_file_template":    "<variable_id><table><experiment_id><source_id><variant_label><grid_label>",
+
+           "license":                "One of 2 licenses: ----- CMIP6 model data produced by <Your CentreName> is licensed under a Creative Commons Attribution 'NonCommercial Share Alike' 4.0 International License (http://creativecommons.org/licenses/by/4.0/). Use of the data should be acknowledged following guidelines found at <what URL???> The data is hosted via the Earth System Grid Federation. Permissions beyond the scope of this license may be available at http://pcmdi.org/cmip5/term [...]
+
+
+}
+
+
diff --git a/Test/test_python_CMIP6_no_driving.py b/Test/test_python_CMIP6_no_driving.py
new file mode 100644
index 0000000..b965dd2
--- /dev/null
+++ b/Test/test_python_CMIP6_no_driving.py
@@ -0,0 +1,15 @@
+import cmor,numpy
+
+error_flag = cmor.setup(inpath='Tables', netcdf_file_action=cmor.CMOR_REPLACE)
+  
+error_flag = cmor.dataset_json("Test/test_python_CMIP6_no_driving.json")
+  
+cmor.load_table("CMIP6_Omon.json")
+itime = cmor.axis(table_entry="time",units='months since 2010',coord_vals=numpy.array([0,1,2,3,4.]),cell_bounds=numpy.array([0,1,2,3,4,5.]))
+ivar = cmor.variable(table_entry="masso",axis_ids=[itime],units='kg')
+
+data=numpy.random.random(5)
+for i in range(0,5):
+    cmor.write(ivar,data[i:i])#,time_vals=numpy.array([i,]),time_bnds=numpy.array([i,i+1]))
+error_flag = cmor.close()
+
diff --git a/Test/test_python_CMIP6_wrong_activity.json b/Test/test_python_CMIP6_wrong_activity.json
new file mode 100644
index 0000000..4a45a55
--- /dev/null
+++ b/Test/test_python_CMIP6_wrong_activity.json
@@ -0,0 +1,105 @@
+{
+           "_control_vocabulary_file": "CMIP6_CV.json",
+           "_cmip6_option":           "CMIP6",
+
+           "#activity_id":           "Specify an activity PMIP, GeoMIP, (must start with CMIP6-)",
+           "activity_id":            "CMIP5-PMIP",
+
+           "#output":                "Output Path where files are written",
+           "outpath":                "CMIP6",
+
+           "#experiment_id":         "Correspond to id found in experiments.json",
+           "experiment_id":          "piControl",
+     "source_type":                      "AOGCM",
+     "sub_experiment":                      "none",
+     "sub_experiment_id":                      "none",
+     "parent_sub_experiment_id":                      "N/A",
+     "parent_mip_era":                      "N/A",
+     "mip_era":                      "CMIP6",
+
+           "#institution":           "Controlled Vocaburaly in instition.json",
+           "institution":            "GICC (Generic International Climate Center, Geneva, Switzerland)",
+            
+           "#source":                "",
+           "source":                 "GICCM1 (2002):",
+
+           "#calendar":              "",
+           "calendar":               "gregorian",
+
+           "#realization_index":     "",
+           "realization_index":      "1",
+
+           "#initialization_index":  "",
+           "initialization_index":   "1",
+
+           "#physics_index":         "",
+           "physics_index":          "1",
+
+           "#forcing_index":         "",
+           "forcing_index":          "1",
+
+           "#contact ":              "",
+           "contact ":               "Python Coder (python at a.b.com) ",
+
+           "#history":               "",
+           "history":                "Output from archivcl_A1.nce/giccm_03_std_2xCO2_2256.",
+
+           "#comment":               "",
+           "comment":                "Equilibrium reached after 30-year spin-up ",
+
+           "#references":            "",
+           "references":             "Model described by Koder and Tolkien ",
+
+           "#institution_id":          "",
+           "institution_id":           "PCMDI",
+
+           "#model_id":              "",
+           "model_id":               "GICCM1",
+
+           "#forcing":               "",
+           "forcing":                "TO, SO, Nat",
+
+           "#parent_experiment_rip": "",
+           "parent_variant_label":  "r1i3p2",
+
+           "#parent_experiment_id":  "",
+           "parent_experiment_id":   "N/A",
+
+           "#branch_time":            "",
+           "branch_time":             "1",
+
+           "#driving_source_id": "HadGEM3",
+
+           "parent_activity_id": "CMIP",
+           "parent_experiment_id": "histALL",
+           "parent_source_id":   "GFDL-CM2-1",
+           "parent_variant_label":  "r1i1p1f3",
+
+           "branch_method":         "standard",
+           "branch_time_in_child":  "00D0",
+           "branch_time_in_parent":"3650.0D0",
+           "branch_time_units_in_parent": "days since 1000-1-1",
+
+
+           "further_info_url":       "http://furtherinfo.es-doc.org/<mip_era><institution_id><source_id><experiment_id><sub_experiment_id><variant_label>",
+           "grid":                   "native atmosphere T63 gaussian grid (64x128 latxlon)",
+           "grid_label":            "gn",
+           "grid_resolution":        "5 km",
+           "institution_id":         "d",
+           "references":             "Model described by Koder and Tolkien (J. Geophys. Res.,2001, 576 - 591).  Also see http://www.GICC.su/giccm/doc/index.html  2XCO2 simulation described in Dorkey et al. '(Clim. Dyn., 2003, 323 - 357.)",
+           "run_variant":            "forcing: black carbon aerosol only",
+           "source_id":              "MIROC-ESM",
+
+           "#output_path_template":   "Template for output path directory using tables keys or global attributes",
+           "#output_path_template":    "<activity_id><institution_id><source_id><experiment_id><variant_label><table><variable_id><grid_label><version>",
+           "output_path_template":    "<activity_id><institution_id><source_id><experiment_id><variant_label><table><variable_id><grid_label><version>",
+
+           "#output_path_template":   "Template for output filename using table keys or global attributes",
+           "output_file_template":    "<variable_id><table><experiment_id><source_id><variant_label><grid_label><driving_source_id><driving_variant_id>",
+
+           "license":                "One of 2 licenses: ----- CMIP6 model data produced by <Your CentreName> is licensed under a Creative Commons Attribution 'NonCommercial Share Alike' 4.0 International License (http://creativecommons.org/licenses/by/4.0/). Use of the data should be acknowledged following guidelines found at <what URL???> The data is hosted via the Earth System Grid Federation. Permissions beyond the scope of this license may be available at http://pcmdi.org/cmip5/term [...]
+
+
+}
+
+
diff --git a/Test/test_python_CMIP6_wrong_activity.py b/Test/test_python_CMIP6_wrong_activity.py
new file mode 100644
index 0000000..b2d32f4
--- /dev/null
+++ b/Test/test_python_CMIP6_wrong_activity.py
@@ -0,0 +1,14 @@
+import cmor,numpy
+
+error_flag = cmor.setup(inpath='Tables', netcdf_file_action=cmor.CMOR_REPLACE)
+  
+error_flag = cmor.dataset_json("Test/test_python_CMIP6_wrong_activity.json")
+  
+cmor.load_table("CMIP6_Omon.json")
+itime = cmor.axis(table_entry="time",units='months since 2010',coord_vals=numpy.array([0,1,2,3,4.]),cell_bounds=numpy.array([0,1,2,3,4,5.]))
+ivar = cmor.variable(table_entry="masso",axis_ids=[itime],units='kg')
+data=numpy.random.random(5)
+for i in range(0,5):
+    cmor.write(ivar,data[i:i])#,time_vals=numpy.array([i,]),time_bnds=numpy.array([i,i+1]))
+error_flag = cmor.close()
+
diff --git a/Test/test_python_YYYMMDDHH_exp_fmt.json b/Test/test_python_YYYMMDDHH_exp_fmt.json
new file mode 100644
index 0000000..c618eb2
--- /dev/null
+++ b/Test/test_python_YYYMMDDHH_exp_fmt.json
@@ -0,0 +1,62 @@
+{
+           "_control_vocabulary_file": "CMIP6_CV.json",
+           "_cmip6_option":           "CMIP6",
+
+    "activity_id":                  "CMIP",
+    "outpath":                      "CMIP6",
+    "experiment_id":                "piControl",
+    "calendar":                     "360_day",
+    "realization_index":            "1",
+    "initialization_index":         "1",
+    "physics_index":                "1",
+    "forcing_index":                "1",
+     "source_type":                      "AOGCM",
+     "sub_experiment":                      "none",
+     "sub_experiment_id":                      "none",
+     "parent_sub_experiment_id":                      "N/A",
+     "parent_mip_era":                      "N/A",
+     "mip_era":                      "CMIP6",
+    "contact ":                     "Python Coder (python at a.b.com) ",
+    "institution_id":                 "PCMDI",
+    "model_id":                     "GICCM1",
+    "history":                      "output from archivcl_A1.nce/giccm_03_std_2xCO2_2256.",
+    "comment":                      "equilibrium reached after 30-year spin-up ",
+    "references":                   "model described by Koder and Tolkien ",
+    "model_id":                     "pcmdi-10a", 
+    "parent_experiment_rip":        "r1i3p2",
+    "parent_experiment_id":         "lgm",
+    "parent_variant_label":            "r1i3p2",
+    "branch_time":                  "0",
+
+
+    "parent_activity_id":           "CMIP",
+    "parent_source_id":             "GFDL-CM2-1",
+    "parent_variant_label":            "r1i1p1f3",
+
+    "branch_method":                "standard",
+    "branch_time_in_child":         "00D0",
+    "branch_time_in_parent":        "3650.0D0",
+    "branch_time_units_in_parent":  "days since 1000-1-1",
+
+    "further_info_url":             "http://furtherinfo.es-doc.org/<mip_era><institution_id><source_id><experiment_id><sub_experiment_id><variant_label>",
+    "grid":                         "native atmosphere T63 gaussian grid (64x128 latxlon)",
+    "grid_label":                  "gn",
+    "grid_resolution":              "5 km",
+
+    "institution_id":               "CSIRO-BOM",
+    "institution":                  "Commonwealth Scientific and Industrial Research Organisation, Australia, and Bureau of Meteorology, Australia",
+
+    "references":                   "Model described by Koder and Tolkien (J. Geophys. Res.,2001, 576 - 591).  Also see http://www.GICC.su/giccm/doc/index.html  2XCO2 simulation described in Dorkey et al. '(Clim. Dyn., 2003, 323 - 357.)",
+    "run_variant":                  "forcing: black carbon aerosol only",
+    "source_id":                    "NICAM",
+    "source":                       "NICAM:",
+    "output_path_template":         "<activity_id><institution_id><source_id><experiment_id><variant_label><table><variable_id><grid_label><version>",
+    "output_file_template":         "<variable_id><table><experiment_id><source_id><variant_label><grid_label>",
+
+    "license":                      "One of 2 licenses: ----- CMIP6 model data produced by <Your CentreName> is licensed under a Creative Commons Attribution 'NonCommercial Share Alike' 4.0 International License (http://creativecommons.org/licenses/by/4.0/). Use of the data should be acknowledged following guidelines found at <what URL???> The data is hosted via the Earth System Grid Federation. Permissions beyond the scope of this license may be available at http://pcmdi.org/cmip5/terms [...]
+
+
+}
+
+
+
diff --git a/Test/test_python_YYYMMDDHH_exp_fmt.py b/Test/test_python_YYYMMDDHH_exp_fmt.py
index fc92ae7..45ccd3a 100644
--- a/Test/test_python_YYYMMDDHH_exp_fmt.py
+++ b/Test/test_python_YYYMMDDHH_exp_fmt.py
@@ -3,11 +3,9 @@ import cmor
 def path_test():
     cmor.setup(inpath='Test',netcdf_file_action=cmor.CMOR_REPLACE)
 
-    cmor.dataset('mytest2010030812', 'ukmo', 'HadCM3', '360_day',
-                 institute_id="PCMDI",
-                 model_id='HadCM3',forcing='co2')
+    cmor.dataset_json("Test/test_python_YYYMMDDHH_exp_fmt.json")
     
-    table='CMIP5_Amon_YYYYMMDDHH'
+    table='Tables/CMIP6_Amon.json'
     cmor.load_table(table)
     axes = [ {'table_entry': 'time',
               'units': 'days since 2000-01-01 00:00:00',
diff --git a/Test/test_python_alastair_1.json b/Test/test_python_alastair_1.json
new file mode 100644
index 0000000..c618eb2
--- /dev/null
+++ b/Test/test_python_alastair_1.json
@@ -0,0 +1,62 @@
+{
+           "_control_vocabulary_file": "CMIP6_CV.json",
+           "_cmip6_option":           "CMIP6",
+
+    "activity_id":                  "CMIP",
+    "outpath":                      "CMIP6",
+    "experiment_id":                "piControl",
+    "calendar":                     "360_day",
+    "realization_index":            "1",
+    "initialization_index":         "1",
+    "physics_index":                "1",
+    "forcing_index":                "1",
+     "source_type":                      "AOGCM",
+     "sub_experiment":                      "none",
+     "sub_experiment_id":                      "none",
+     "parent_sub_experiment_id":                      "N/A",
+     "parent_mip_era":                      "N/A",
+     "mip_era":                      "CMIP6",
+    "contact ":                     "Python Coder (python at a.b.com) ",
+    "institution_id":                 "PCMDI",
+    "model_id":                     "GICCM1",
+    "history":                      "output from archivcl_A1.nce/giccm_03_std_2xCO2_2256.",
+    "comment":                      "equilibrium reached after 30-year spin-up ",
+    "references":                   "model described by Koder and Tolkien ",
+    "model_id":                     "pcmdi-10a", 
+    "parent_experiment_rip":        "r1i3p2",
+    "parent_experiment_id":         "lgm",
+    "parent_variant_label":            "r1i3p2",
+    "branch_time":                  "0",
+
+
+    "parent_activity_id":           "CMIP",
+    "parent_source_id":             "GFDL-CM2-1",
+    "parent_variant_label":            "r1i1p1f3",
+
+    "branch_method":                "standard",
+    "branch_time_in_child":         "00D0",
+    "branch_time_in_parent":        "3650.0D0",
+    "branch_time_units_in_parent":  "days since 1000-1-1",
+
+    "further_info_url":             "http://furtherinfo.es-doc.org/<mip_era><institution_id><source_id><experiment_id><sub_experiment_id><variant_label>",
+    "grid":                         "native atmosphere T63 gaussian grid (64x128 latxlon)",
+    "grid_label":                  "gn",
+    "grid_resolution":              "5 km",
+
+    "institution_id":               "CSIRO-BOM",
+    "institution":                  "Commonwealth Scientific and Industrial Research Organisation, Australia, and Bureau of Meteorology, Australia",
+
+    "references":                   "Model described by Koder and Tolkien (J. Geophys. Res.,2001, 576 - 591).  Also see http://www.GICC.su/giccm/doc/index.html  2XCO2 simulation described in Dorkey et al. '(Clim. Dyn., 2003, 323 - 357.)",
+    "run_variant":                  "forcing: black carbon aerosol only",
+    "source_id":                    "NICAM",
+    "source":                       "NICAM:",
+    "output_path_template":         "<activity_id><institution_id><source_id><experiment_id><variant_label><table><variable_id><grid_label><version>",
+    "output_file_template":         "<variable_id><table><experiment_id><source_id><variant_label><grid_label>",
+
+    "license":                      "One of 2 licenses: ----- CMIP6 model data produced by <Your CentreName> is licensed under a Creative Commons Attribution 'NonCommercial Share Alike' 4.0 International License (http://creativecommons.org/licenses/by/4.0/). Use of the data should be acknowledged following guidelines found at <what URL???> The data is hosted via the Earth System Grid Federation. Permissions beyond the scope of this license may be available at http://pcmdi.org/cmip5/terms [...]
+
+
+}
+
+
+
diff --git a/Test/test_python_alastair_1.py b/Test/test_python_alastair_1.py
index 52c3e02..3902b41 100644
--- a/Test/test_python_alastair_1.py
+++ b/Test/test_python_alastair_1.py
@@ -1,25 +1,8 @@
 import cmor,numpy
 
-error_flag = cmor.setup(inpath='Test', netcdf_file_action=cmor.CMOR_REPLACE)
-  
-error_flag = cmor.dataset(                                   
-       outpath='Test',                                         
-       experiment_id='noVolc2000',
-       institution= 'GICC (Generic International Climate Center, Geneva, Switzerland)',                                 
-       source='GICCM1 (2002): ',
-       calendar='360_day',                                      
-       realization=1,                                          
-       contact = 'Rusty Koder (koder at middle_earth.net) ',      
-       history='Output from archivcl_A1.nce/giccm_03_std_2xCO2_2256.', 
-       comment='Equilibrium reached after 30-year spin-up ',                                 
-       references='Model described by Koder and Tolkien ',
-       model_id="GICCM1", 
-       institute_id="PCMDI",
-       forcing="Nat, SO",
-       parent_experiment_id="lgm",
-       parent_experiment_rip="r1i1p1",
-       branch_time=3.14159)
+error_flag = cmor.setup(inpath='Tables', netcdf_file_action=cmor.CMOR_REPLACE)
   
+error_flag = cmor.dataset_json("Test/test_python_alastair_1.json")
 
 # creates 1 degree grid
 nlat=18
@@ -28,7 +11,7 @@ alats = numpy.arange(180)-89.5
 bnds_lat = numpy.arange(181)-90
 alons=numpy.arange(360)+.5
 bnds_lon=numpy.arange(361)
-cmor.load_table("/git/cmip5-cmor-tables/Tables/CMIP5_Amon")
+cmor.load_table("CMIP6_Amon.json")
 ilat = cmor.axis(  
     table_entry='latitude',       
     units='degrees_north',          
@@ -56,7 +39,7 @@ itim = cmor.axis(
     interval='1 month')
 
 ilev = cmor.axis(  
-        table_entry='plevs',       
+        table_entry='plev17',       
         units='Pa',
         coord_vals=plevs,             
         cell_bounds=None)
diff --git a/Test/test_python_appending.json b/Test/test_python_appending.json
new file mode 100644
index 0000000..c618eb2
--- /dev/null
+++ b/Test/test_python_appending.json
@@ -0,0 +1,62 @@
+{
+           "_control_vocabulary_file": "CMIP6_CV.json",
+           "_cmip6_option":           "CMIP6",
+
+    "activity_id":                  "CMIP",
+    "outpath":                      "CMIP6",
+    "experiment_id":                "piControl",
+    "calendar":                     "360_day",
+    "realization_index":            "1",
+    "initialization_index":         "1",
+    "physics_index":                "1",
+    "forcing_index":                "1",
+     "source_type":                      "AOGCM",
+     "sub_experiment":                      "none",
+     "sub_experiment_id":                      "none",
+     "parent_sub_experiment_id":                      "N/A",
+     "parent_mip_era":                      "N/A",
+     "mip_era":                      "CMIP6",
+    "contact ":                     "Python Coder (python at a.b.com) ",
+    "institution_id":                 "PCMDI",
+    "model_id":                     "GICCM1",
+    "history":                      "output from archivcl_A1.nce/giccm_03_std_2xCO2_2256.",
+    "comment":                      "equilibrium reached after 30-year spin-up ",
+    "references":                   "model described by Koder and Tolkien ",
+    "model_id":                     "pcmdi-10a", 
+    "parent_experiment_rip":        "r1i3p2",
+    "parent_experiment_id":         "lgm",
+    "parent_variant_label":            "r1i3p2",
+    "branch_time":                  "0",
+
+
+    "parent_activity_id":           "CMIP",
+    "parent_source_id":             "GFDL-CM2-1",
+    "parent_variant_label":            "r1i1p1f3",
+
+    "branch_method":                "standard",
+    "branch_time_in_child":         "00D0",
+    "branch_time_in_parent":        "3650.0D0",
+    "branch_time_units_in_parent":  "days since 1000-1-1",
+
+    "further_info_url":             "http://furtherinfo.es-doc.org/<mip_era><institution_id><source_id><experiment_id><sub_experiment_id><variant_label>",
+    "grid":                         "native atmosphere T63 gaussian grid (64x128 latxlon)",
+    "grid_label":                  "gn",
+    "grid_resolution":              "5 km",
+
+    "institution_id":               "CSIRO-BOM",
+    "institution":                  "Commonwealth Scientific and Industrial Research Organisation, Australia, and Bureau of Meteorology, Australia",
+
+    "references":                   "Model described by Koder and Tolkien (J. Geophys. Res.,2001, 576 - 591).  Also see http://www.GICC.su/giccm/doc/index.html  2XCO2 simulation described in Dorkey et al. '(Clim. Dyn., 2003, 323 - 357.)",
+    "run_variant":                  "forcing: black carbon aerosol only",
+    "source_id":                    "NICAM",
+    "source":                       "NICAM:",
+    "output_path_template":         "<activity_id><institution_id><source_id><experiment_id><variant_label><table><variable_id><grid_label><version>",
+    "output_file_template":         "<variable_id><table><experiment_id><source_id><variant_label><grid_label>",
+
+    "license":                      "One of 2 licenses: ----- CMIP6 model data produced by <Your CentreName> is licensed under a Creative Commons Attribution 'NonCommercial Share Alike' 4.0 International License (http://creativecommons.org/licenses/by/4.0/). Use of the data should be acknowledged following guidelines found at <what URL???> The data is hosted via the Earth System Grid Federation. Permissions beyond the scope of this license may be available at http://pcmdi.org/cmip5/terms [...]
+
+
+}
+
+
+
diff --git a/Test/test_python_appending.py b/Test/test_python_appending.py
index f23f7b9..36c4275 100644
--- a/Test/test_python_appending.py
+++ b/Test/test_python_appending.py
@@ -35,20 +35,9 @@ def mywrite(data = None, time_vals = None, append_to = None,cell_bounds=None):
                netcdf_file_action = mode,
                logfile = None)
 
-    cmor.dataset(
-        outpath = ipth,
-        experiment_id = "lgm",
-        institution = "PCMDI",
-        source = "GICCM1 2002",
-        institute_id="PCMDI",
-        calendar = "standard",
-        contact="Pablo Sandoval",
-        model_id="GICCM1",forcing="Nat",
-        parent_experiment_id="historical",
-        parent_experiment_rip="r1i3p2",
-        branch_time=3.14159)
-
-    cmor.load_table("Tables/CMIP5_Amon")
+    cmor.dataset_json("Test/test_python_appending.json")
+
+    cmor.load_table("Tables/CMIP6_Amon.json")
 
     dlat = 180/nlat
     dlon = 360./nlon
@@ -66,7 +55,7 @@ def mywrite(data = None, time_vals = None, append_to = None,cell_bounds=None):
     ilat = cmor.axis(table_entry='latitude',coord_vals=lats,units='degrees_north',cell_bounds=bnds_lat)
     ilon = cmor.axis(table_entry='longitude',coord_vals=lons,units='degrees_east',cell_bounds=bnds_lon)
     print 'so far',itim,ilat,ilon
-    ilev = cmor.axis(table_entry="plevs",coord_vals=plevs,units="Pa")
+    ilev = cmor.axis(table_entry="plev17",coord_vals=plevs,units="Pa")
 
     iv = cmor.variable(table_entry='ta',axis_ids=numpy.array((itim,ilev,ilat,ilon)),units='K')
 
diff --git a/Test/test_python_bounds_request.json b/Test/test_python_bounds_request.json
new file mode 100644
index 0000000..c618eb2
--- /dev/null
+++ b/Test/test_python_bounds_request.json
@@ -0,0 +1,62 @@
+{
+           "_control_vocabulary_file": "CMIP6_CV.json",
+           "_cmip6_option":           "CMIP6",
+
+    "activity_id":                  "CMIP",
+    "outpath":                      "CMIP6",
+    "experiment_id":                "piControl",
+    "calendar":                     "360_day",
+    "realization_index":            "1",
+    "initialization_index":         "1",
+    "physics_index":                "1",
+    "forcing_index":                "1",
+     "source_type":                      "AOGCM",
+     "sub_experiment":                      "none",
+     "sub_experiment_id":                      "none",
+     "parent_sub_experiment_id":                      "N/A",
+     "parent_mip_era":                      "N/A",
+     "mip_era":                      "CMIP6",
+    "contact ":                     "Python Coder (python at a.b.com) ",
+    "institution_id":                 "PCMDI",
+    "model_id":                     "GICCM1",
+    "history":                      "output from archivcl_A1.nce/giccm_03_std_2xCO2_2256.",
+    "comment":                      "equilibrium reached after 30-year spin-up ",
+    "references":                   "model described by Koder and Tolkien ",
+    "model_id":                     "pcmdi-10a", 
+    "parent_experiment_rip":        "r1i3p2",
+    "parent_experiment_id":         "lgm",
+    "parent_variant_label":            "r1i3p2",
+    "branch_time":                  "0",
+
+
+    "parent_activity_id":           "CMIP",
+    "parent_source_id":             "GFDL-CM2-1",
+    "parent_variant_label":            "r1i1p1f3",
+
+    "branch_method":                "standard",
+    "branch_time_in_child":         "00D0",
+    "branch_time_in_parent":        "3650.0D0",
+    "branch_time_units_in_parent":  "days since 1000-1-1",
+
+    "further_info_url":             "http://furtherinfo.es-doc.org/<mip_era><institution_id><source_id><experiment_id><sub_experiment_id><variant_label>",
+    "grid":                         "native atmosphere T63 gaussian grid (64x128 latxlon)",
+    "grid_label":                  "gn",
+    "grid_resolution":              "5 km",
+
+    "institution_id":               "CSIRO-BOM",
+    "institution":                  "Commonwealth Scientific and Industrial Research Organisation, Australia, and Bureau of Meteorology, Australia",
+
+    "references":                   "Model described by Koder and Tolkien (J. Geophys. Res.,2001, 576 - 591).  Also see http://www.GICC.su/giccm/doc/index.html  2XCO2 simulation described in Dorkey et al. '(Clim. Dyn., 2003, 323 - 357.)",
+    "run_variant":                  "forcing: black carbon aerosol only",
+    "source_id":                    "NICAM",
+    "source":                       "NICAM:",
+    "output_path_template":         "<activity_id><institution_id><source_id><experiment_id><variant_label><table><variable_id><grid_label><version>",
+    "output_file_template":         "<variable_id><table><experiment_id><source_id><variant_label><grid_label>",
+
+    "license":                      "One of 2 licenses: ----- CMIP6 model data produced by <Your CentreName> is licensed under a Creative Commons Attribution 'NonCommercial Share Alike' 4.0 International License (http://creativecommons.org/licenses/by/4.0/). Use of the data should be acknowledged following guidelines found at <what URL???> The data is hosted via the Earth System Grid Federation. Permissions beyond the scope of this license may be available at http://pcmdi.org/cmip5/terms [...]
+
+
+}
+
+
+
diff --git a/Test/test_python_bounds_request.py b/Test/test_python_bounds_request.py
index e96cc8c..065076b 100644
--- a/Test/test_python_bounds_request.py
+++ b/Test/test_python_bounds_request.py
@@ -20,21 +20,14 @@ levs=numpy.array(levs)
 
 print levs
 
-ipth="Test"
-cmor.setup(inpath=ipth,
+cmor.setup(inpath="Tables",
            set_verbosity=cmor.CMOR_NORMAL,
            netcdf_file_action = cmor.CMOR_REPLACE,
            logfile = None)
 
-cmor.dataset(
-    outpath = ipth,
-    experiment_id = "present-day control experiment",
-    institution = "PCMDI",
-    source = "PCMDI",
-    calendar = "standard",
-    model_id="pcmdi-09a",forcing="forcing")
+cmor.dataset_json("Test/test_python_bounds_request.json")
 
-cmor.load_table("python_test_table_A")
+cmor.load_table("Test/python_test_table_A")
 
 nlat = 90
 dlat = 180/nlat
@@ -52,6 +45,7 @@ itim = cmor.axis(table_entry='time',coord_vals=numpy.arange(0,ntime,1),units='mo
 ilat = cmor.axis(table_entry='latitude',coord_vals=lats,units='degrees_north')
 ilon = cmor.axis(table_entry='longitude',coord_vals=lons,units='degrees_east')
 print 'so far',itim,ilat,ilon
+print bnds_req
 ilev = cmor.axis(table_entry="pressure2",coord_vals=levs,cell_bounds=bnds_req,units="Pa")
 
 iv = cmor.variable(table_entry='ta',axis_ids=numpy.array((itim,ilev,ilat,ilon)),units='K')
diff --git a/Test/test_python_cfmip_site_axis_test.json b/Test/test_python_cfmip_site_axis_test.json
new file mode 100644
index 0000000..c618eb2
--- /dev/null
+++ b/Test/test_python_cfmip_site_axis_test.json
@@ -0,0 +1,62 @@
+{
+           "_control_vocabulary_file": "CMIP6_CV.json",
+           "_cmip6_option":           "CMIP6",
+
+    "activity_id":                  "CMIP",
+    "outpath":                      "CMIP6",
+    "experiment_id":                "piControl",
+    "calendar":                     "360_day",
+    "realization_index":            "1",
+    "initialization_index":         "1",
+    "physics_index":                "1",
+    "forcing_index":                "1",
+     "source_type":                      "AOGCM",
+     "sub_experiment":                      "none",
+     "sub_experiment_id":                      "none",
+     "parent_sub_experiment_id":                      "N/A",
+     "parent_mip_era":                      "N/A",
+     "mip_era":                      "CMIP6",
+    "contact ":                     "Python Coder (python at a.b.com) ",
+    "institution_id":                 "PCMDI",
+    "model_id":                     "GICCM1",
+    "history":                      "output from archivcl_A1.nce/giccm_03_std_2xCO2_2256.",
+    "comment":                      "equilibrium reached after 30-year spin-up ",
+    "references":                   "model described by Koder and Tolkien ",
+    "model_id":                     "pcmdi-10a", 
+    "parent_experiment_rip":        "r1i3p2",
+    "parent_experiment_id":         "lgm",
+    "parent_variant_label":            "r1i3p2",
+    "branch_time":                  "0",
+
+
+    "parent_activity_id":           "CMIP",
+    "parent_source_id":             "GFDL-CM2-1",
+    "parent_variant_label":            "r1i1p1f3",
+
+    "branch_method":                "standard",
+    "branch_time_in_child":         "00D0",
+    "branch_time_in_parent":        "3650.0D0",
+    "branch_time_units_in_parent":  "days since 1000-1-1",
+
+    "further_info_url":             "http://furtherinfo.es-doc.org/<mip_era><institution_id><source_id><experiment_id><sub_experiment_id><variant_label>",
+    "grid":                         "native atmosphere T63 gaussian grid (64x128 latxlon)",
+    "grid_label":                  "gn",
+    "grid_resolution":              "5 km",
+
+    "institution_id":               "CSIRO-BOM",
+    "institution":                  "Commonwealth Scientific and Industrial Research Organisation, Australia, and Bureau of Meteorology, Australia",
+
+    "references":                   "Model described by Koder and Tolkien (J. Geophys. Res.,2001, 576 - 591).  Also see http://www.GICC.su/giccm/doc/index.html  2XCO2 simulation described in Dorkey et al. '(Clim. Dyn., 2003, 323 - 357.)",
+    "run_variant":                  "forcing: black carbon aerosol only",
+    "source_id":                    "NICAM",
+    "source":                       "NICAM:",
+    "output_path_template":         "<activity_id><institution_id><source_id><experiment_id><variant_label><table><variable_id><grid_label><version>",
+    "output_file_template":         "<variable_id><table><experiment_id><source_id><variant_label><grid_label>",
+
+    "license":                      "One of 2 licenses: ----- CMIP6 model data produced by <Your CentreName> is licensed under a Creative Commons Attribution 'NonCommercial Share Alike' 4.0 International License (http://creativecommons.org/licenses/by/4.0/). Use of the data should be acknowledged following guidelines found at <what URL???> The data is hosted via the Earth System Grid Federation. Permissions beyond the scope of this license may be available at http://pcmdi.org/cmip5/terms [...]
+
+
+}
+
+
+
diff --git a/Test/test_python_cfmip_site_axis_test.py b/Test/test_python_cfmip_site_axis_test.py
index dd0089e..3008064 100644
--- a/Test/test_python_cfmip_site_axis_test.py
+++ b/Test/test_python_cfmip_site_axis_test.py
@@ -41,14 +41,7 @@ def setup_cmor() :
       set_verbosity=cmor.CMOR_NORMAL, create_subdirectories=0)
 
    # Create CMOR dataset
-   cmor.dataset(outpath='Test', institution='Met Office Hadley Centre', institute_id="MOHC",
-      experiment_id='amip', model_id="HadGEM2-A", source='HadGEM2-A 2009',
-      calendar='360_day', contact='mark.webb at metoffice.gov.uk',
-      realization=1, initialization_method=1, physics_version=1,
-      history='history', comment='CMIP5 site axis test',
-      references='references', forcing="GHG, TO (yeah or some think)",
-      parent_experiment_id='N/A', parent_experiment_rip='N/A', branch_time=0
-   )
+   cmor.dataset_json("Test/test_python_cfmip_site_axis_test.json")
 
 #---------------------------------------------------------------------------------------------------
 if __name__ == '__main__' :
@@ -62,7 +55,7 @@ if __name__ == '__main__' :
    site_lons = numpy.array([0.0, 0.0, 0.0], dtype=numpy.float32)
 
    # Create CMOR axes and grids
-   table_id = cmor.load_table('CMIP5_cfSites')
+   table_id = cmor.load_table('CMIP6_cfSites.json')
    taxis_id = cmor.axis('time1', units='days since 2000-01-01 00:00:00') #, length=1, interval='30 minutes')
    print 'ok: created time axis'
 
@@ -79,13 +72,13 @@ if __name__ == '__main__' :
    print 'ok: created b zfactors'
 
    # Create grid object to link site-dimensioned variables to (lat,long).
-   # Need to make CMIP5_grids the current MIP table for this to work.
-   table_id = cmor.load_table('CMIP5_grids')
+   # Need to make CMIP6_grids the current MIP table for this to work.
+   table_id = cmor.load_table('CMIP6_grids.json')
    gaxis_id = cmor.grid([saxis_id], site_lats, site_lons)
    print 'ok: created site grid'
 
    # Create CMOR variable for cloud area fraction: MIP name = 'cl', STASH = m01s02i261*100
-   table_id = cmor.load_table('CMIP5_cfSites')
+   table_id = cmor.load_table('CMIP6_cfSites.json')
    var_id = cmor.variable('cl', '%', [taxis_id, gaxis_id, zaxis_id], type='f',
       missing_value=-99.0, original_name='STASH m01s02i261*100')
    print 'ok: created variable for "cl"'
diff --git a/Test/test_python_direct_calls.json b/Test/test_python_direct_calls.json
new file mode 100644
index 0000000..c618eb2
--- /dev/null
+++ b/Test/test_python_direct_calls.json
@@ -0,0 +1,62 @@
+{
+           "_control_vocabulary_file": "CMIP6_CV.json",
+           "_cmip6_option":           "CMIP6",
+
+    "activity_id":                  "CMIP",
+    "outpath":                      "CMIP6",
+    "experiment_id":                "piControl",
+    "calendar":                     "360_day",
+    "realization_index":            "1",
+    "initialization_index":         "1",
+    "physics_index":                "1",
+    "forcing_index":                "1",
+     "source_type":                      "AOGCM",
+     "sub_experiment":                      "none",
+     "sub_experiment_id":                      "none",
+     "parent_sub_experiment_id":                      "N/A",
+     "parent_mip_era":                      "N/A",
+     "mip_era":                      "CMIP6",
+    "contact ":                     "Python Coder (python at a.b.com) ",
+    "institution_id":                 "PCMDI",
+    "model_id":                     "GICCM1",
+    "history":                      "output from archivcl_A1.nce/giccm_03_std_2xCO2_2256.",
+    "comment":                      "equilibrium reached after 30-year spin-up ",
+    "references":                   "model described by Koder and Tolkien ",
+    "model_id":                     "pcmdi-10a", 
+    "parent_experiment_rip":        "r1i3p2",
+    "parent_experiment_id":         "lgm",
+    "parent_variant_label":            "r1i3p2",
+    "branch_time":                  "0",
+
+
+    "parent_activity_id":           "CMIP",
+    "parent_source_id":             "GFDL-CM2-1",
+    "parent_variant_label":            "r1i1p1f3",
+
+    "branch_method":                "standard",
+    "branch_time_in_child":         "00D0",
+    "branch_time_in_parent":        "3650.0D0",
+    "branch_time_units_in_parent":  "days since 1000-1-1",
+
+    "further_info_url":             "http://furtherinfo.es-doc.org/<mip_era><institution_id><source_id><experiment_id><sub_experiment_id><variant_label>",
+    "grid":                         "native atmosphere T63 gaussian grid (64x128 latxlon)",
+    "grid_label":                  "gn",
+    "grid_resolution":              "5 km",
+
+    "institution_id":               "CSIRO-BOM",
+    "institution":                  "Commonwealth Scientific and Industrial Research Organisation, Australia, and Bureau of Meteorology, Australia",
+
+    "references":                   "Model described by Koder and Tolkien (J. Geophys. Res.,2001, 576 - 591).  Also see http://www.GICC.su/giccm/doc/index.html  2XCO2 simulation described in Dorkey et al. '(Clim. Dyn., 2003, 323 - 357.)",
+    "run_variant":                  "forcing: black carbon aerosol only",
+    "source_id":                    "NICAM",
+    "source":                       "NICAM:",
+    "output_path_template":         "<activity_id><institution_id><source_id><experiment_id><variant_label><table><variable_id><grid_label><version>",
+    "output_file_template":         "<variable_id><table><experiment_id><source_id><variant_label><grid_label>",
+
+    "license":                      "One of 2 licenses: ----- CMIP6 model data produced by <Your CentreName> is licensed under a Creative Commons Attribution 'NonCommercial Share Alike' 4.0 International License (http://creativecommons.org/licenses/by/4.0/). Use of the data should be acknowledged following guidelines found at <what URL???> The data is hosted via the Earth System Grid Federation. Permissions beyond the scope of this license may be available at http://pcmdi.org/cmip5/terms [...]
+
+
+}
+
+
+
diff --git a/Test/test_python_direct_calls.py b/Test/test_python_direct_calls.py
index a88f372..35e6f95 100644
--- a/Test/test_python_direct_calls.py
+++ b/Test/test_python_direct_calls.py
@@ -1,7 +1,6 @@
 from test_python_common import * # common subroutines
 import cmor._cmor
 import os
-
 pth = os.path.split(os.path.realpath(os.curdir))
 if pth[-1]=='Test':
     ipth = opth = '.'
@@ -13,25 +12,12 @@ myaxes2=numpy.zeros(9,dtype='i')
 myvars=numpy.zeros(9,dtype='i')
 
 cmor._cmor.setup(ipth,cmor.CMOR_REPLACE,cmor.CMOR_NORMAL,cmor.CMOR_EXIT_ON_MAJOR,"",1);
-cmor._cmor.dataset( \
-    ipth,\
-    "lgm",\
-    "GICC (Generic International Climate Center, Geneva, Switzerland)",\
-    "GICCM1 (2002): atmosphere:  GICAM3 (gicam_0_brnchT_itea_2, T63L32); ocean: MOM (mom3_ver_3.5.2, 2x3L15); sea ice: GISIM4; land: GILSM2.5",\
-    "standard",\
-    1,\
-    "Rusty Koder (koder at middle_earth.net)",\
-    "Output from archive/giccm_03_std_2xCO2_2256.",\
-    "Equilibrium reached after 30-year spin-up after which data were output starting with nominal date of January 2030",\
-    "Model described by Koder and Tolkien (J. Geophys. Res., 2001, 576-591).  Also see http://www.GICC.su/giccm/doc/index.html  2XCO2 simulation described in Dorkey et al. '(Clim. Dyn., 2003, 323-357.)",\
-    0,\
-    0,\
-    None,"GICCM1","Nat",0,0,"PCMDI","N/A",0,"r1i1p1")
+cmor.dataset_json("Test/test_python_direct_calls.json")
 
 tables=[]
-a = cmor._cmor.load_table("Tables/CMIP5_Omon")
+a = cmor._cmor.load_table("Tables/CMIP6_Omon.json")
 tables.append(a)
-tables.append(cmor._cmor.load_table("Tables/CMIP5_Amon"))
+tables.append(cmor._cmor.load_table("Tables/CMIP6_Amon.json"))
 print 'Tables ids:',tables
 
 
@@ -46,7 +32,7 @@ myaxes[1] = cmor._cmor.axis(id,units,lat,alats,'d',bnds_lat,2,interval)
 id="longitude"
 units="degrees_east"
 myaxes[2] = cmor._cmor.axis(id,units,lon,alons,'d',bnds_lon,2,interval)
-id="plevs"
+id="plev17"
 units="Pa"
 print plevs.astype("d")
 myaxes[3] = cmor._cmor.axis(id,units,lev2,plevs.astype("d"),'d',None,0,interval)
@@ -115,6 +101,6 @@ cmor.set_table(tables[1])
 for i in range(ntimes):
     data2d = read_2d_input_files(i, varin2d[0], lat,lon)
     print 'writing time',i,data2d.shape,data2d,numpy.average(data2d)
-    cmor._cmor.write(myvars[0],numpy.ravel(data2d),data2d.dtype.char,"",1,None,None,None);
+    cmor._cmor.write(myvars[0],numpy.ravel(data2d),data2d.dtype.char,1,None,None,None);
 
 cmor._cmor.close(None,0,0)
diff --git a/Test/test_python_free_wrapping_issue.json b/Test/test_python_free_wrapping_issue.json
new file mode 100644
index 0000000..c618eb2
--- /dev/null
+++ b/Test/test_python_free_wrapping_issue.json
@@ -0,0 +1,62 @@
+{
+           "_control_vocabulary_file": "CMIP6_CV.json",
+           "_cmip6_option":           "CMIP6",
+
+    "activity_id":                  "CMIP",
+    "outpath":                      "CMIP6",
+    "experiment_id":                "piControl",
+    "calendar":                     "360_day",
+    "realization_index":            "1",
+    "initialization_index":         "1",
+    "physics_index":                "1",
+    "forcing_index":                "1",
+     "source_type":                      "AOGCM",
+     "sub_experiment":                      "none",
+     "sub_experiment_id":                      "none",
+     "parent_sub_experiment_id":                      "N/A",
+     "parent_mip_era":                      "N/A",
+     "mip_era":                      "CMIP6",
+    "contact ":                     "Python Coder (python at a.b.com) ",
+    "institution_id":                 "PCMDI",
+    "model_id":                     "GICCM1",
+    "history":                      "output from archivcl_A1.nce/giccm_03_std_2xCO2_2256.",
+    "comment":                      "equilibrium reached after 30-year spin-up ",
+    "references":                   "model described by Koder and Tolkien ",
+    "model_id":                     "pcmdi-10a", 
+    "parent_experiment_rip":        "r1i3p2",
+    "parent_experiment_id":         "lgm",
+    "parent_variant_label":            "r1i3p2",
+    "branch_time":                  "0",
+
+
+    "parent_activity_id":           "CMIP",
+    "parent_source_id":             "GFDL-CM2-1",
+    "parent_variant_label":            "r1i1p1f3",
+
+    "branch_method":                "standard",
+    "branch_time_in_child":         "00D0",
+    "branch_time_in_parent":        "3650.0D0",
+    "branch_time_units_in_parent":  "days since 1000-1-1",
+
+    "further_info_url":             "http://furtherinfo.es-doc.org/<mip_era><institution_id><source_id><experiment_id><sub_experiment_id><variant_label>",
+    "grid":                         "native atmosphere T63 gaussian grid (64x128 latxlon)",
+    "grid_label":                  "gn",
+    "grid_resolution":              "5 km",
+
+    "institution_id":               "CSIRO-BOM",
+    "institution":                  "Commonwealth Scientific and Industrial Research Organisation, Australia, and Bureau of Meteorology, Australia",
+
+    "references":                   "Model described by Koder and Tolkien (J. Geophys. Res.,2001, 576 - 591).  Also see http://www.GICC.su/giccm/doc/index.html  2XCO2 simulation described in Dorkey et al. '(Clim. Dyn., 2003, 323 - 357.)",
+    "run_variant":                  "forcing: black carbon aerosol only",
+    "source_id":                    "NICAM",
+    "source":                       "NICAM:",
+    "output_path_template":         "<activity_id><institution_id><source_id><experiment_id><variant_label><table><variable_id><grid_label><version>",
+    "output_file_template":         "<variable_id><table><experiment_id><source_id><variant_label><grid_label>",
+
+    "license":                      "One of 2 licenses: ----- CMIP6 model data produced by <Your CentreName> is licensed under a Creative Commons Attribution 'NonCommercial Share Alike' 4.0 International License (http://creativecommons.org/licenses/by/4.0/). Use of the data should be acknowledged following guidelines found at <what URL???> The data is hosted via the Earth System Grid Federation. Permissions beyond the scope of this license may be available at http://pcmdi.org/cmip5/terms [...]
+
+
+}
+
+
+
diff --git a/Test/test_python_free_wrapping_issue.py b/Test/test_python_free_wrapping_issue.py
index 98fe6de..e0f1b1d 100644
--- a/Test/test_python_free_wrapping_issue.py
+++ b/Test/test_python_free_wrapping_issue.py
@@ -14,24 +14,11 @@ def save(opts,threeD=True):
             exit_control=cmor.CMOR_NORMAL,
             logfile=None, create_subdirectories=1)
 
-    cmor.dataset(outpath=opts['outpath'],
-            experiment_id='historical', 
-            institution='CMOR-test', 
-            source='CMOR-test',
-            calendar='gregorian', 
-            realization=1,
-            contact='dummy',
-            history='dummy',
-            model_id='CMOR-test',
-            forcing='GHG',
-            institute_id='CMOR-test',
-            parent_experiment_id='piControl',
-            branch_time=109207.0,
-            parent_experiment_rip='r1i1p1')
+    cmor.dataset_json("Test/test_python_free_wrapping_issue.json")
 
     # Load the CMIP tables into memory.
     tables=[]
-    tables.append(cmor.load_table('CMIP5_grids'))
+    tables.append(cmor.load_table('CMIP6_grids.json'))
     tables.append(cmor.load_table(opts['cmip_table']))
 
     # Create the dimension axes
@@ -90,7 +77,7 @@ def save(opts,threeD=True):
             [4000, 2500],
             [2500, 1500],
             [1500, 500]])
-        plev_axis_id = cmor.axis(table_entry='plevs',
+        plev_axis_id = cmor.axis(table_entry='plev17',
                 units='Pa', length=len(plev),
                 coord_vals=plev[:], cell_bounds=plev_bounds[:],
                 interval=None)
@@ -149,7 +136,7 @@ def save(opts,threeD=True):
 
 if __name__ == "__main__":
 
-    opts={'cmip_table': 'CMIP5_Amon',
+    opts={'cmip_table': 'CMIP6_Amon.json',
           'outpath': 'Test',
           'table_path': 'Tables'}
 
diff --git a/Test/test_python_fx.py b/Test/test_python_fx.py
deleted file mode 100644
index 251f8f7..0000000
--- a/Test/test_python_fx.py
+++ /dev/null
@@ -1,48 +0,0 @@
-import cmor
-import numpy
-
-
-def test_mode(mode):
-    cmor.setup(inpath='Tables',
-               netcdf_file_action = mode)
-    cmor.dataset('pre-industrial control', 'ukmo', 'HadCM3', '360_day',
-                 institute_id = 'ukmo',
-                 model_id = 'HadCM3',
-                 forcing="TO",
-                 contact="Derek Jeter",
-                 history = 'some global history',
-                 parent_experiment_id="lgm",
-                 parent_experiment_rip="r1i1p1",
-                 branch_time=0)
-    
-    table = 'CMIP5_fx'
-    cmor.load_table(table)
-    axes = [ 
-             {'table_entry': 'latitude',
-              'units': 'degrees_north',
-              'coord_vals': [0],
-              'cell_bounds': [-1, 1]},             
-             {'table_entry': 'longitude',
-              'units': 'degrees_east',
-              'coord_vals': [90],
-              'cell_bounds': [89, 91]},
-          
-             ]
-    values = numpy.array([5000],numpy.float32)
-    axis_ids = list()
-
-
-    for axis in axes:
-        axis_id = cmor.axis(**axis)
-        axis_ids.append(axis_id)
-    for var, units in (('deptho', 'm'),):
-        varid = cmor.variable(var,
-                              units,
-                              axis_ids,
-                              history = 'variable history'
-                              )
-        cmor.write(varid, values)
-    fnm = cmor.close(varid,file_name=True)
-    cmor.close()
-    return fnm
-print test_mode(cmor.CMOR_REPLACE)
diff --git a/Test/test_python_grid_and_ocn_sigma.json b/Test/test_python_grid_and_ocn_sigma.json
new file mode 100644
index 0000000..c618eb2
--- /dev/null
+++ b/Test/test_python_grid_and_ocn_sigma.json
@@ -0,0 +1,62 @@
+{
+           "_control_vocabulary_file": "CMIP6_CV.json",
+           "_cmip6_option":           "CMIP6",
+
+    "activity_id":                  "CMIP",
+    "outpath":                      "CMIP6",
+    "experiment_id":                "piControl",
+    "calendar":                     "360_day",
+    "realization_index":            "1",
+    "initialization_index":         "1",
+    "physics_index":                "1",
+    "forcing_index":                "1",
+     "source_type":                      "AOGCM",
+     "sub_experiment":                      "none",
+     "sub_experiment_id":                      "none",
+     "parent_sub_experiment_id":                      "N/A",
+     "parent_mip_era":                      "N/A",
+     "mip_era":                      "CMIP6",
+    "contact ":                     "Python Coder (python at a.b.com) ",
+    "institution_id":                 "PCMDI",
+    "model_id":                     "GICCM1",
+    "history":                      "output from archivcl_A1.nce/giccm_03_std_2xCO2_2256.",
+    "comment":                      "equilibrium reached after 30-year spin-up ",
+    "references":                   "model described by Koder and Tolkien ",
+    "model_id":                     "pcmdi-10a", 
+    "parent_experiment_rip":        "r1i3p2",
+    "parent_experiment_id":         "lgm",
+    "parent_variant_label":            "r1i3p2",
+    "branch_time":                  "0",
+
+
+    "parent_activity_id":           "CMIP",
+    "parent_source_id":             "GFDL-CM2-1",
+    "parent_variant_label":            "r1i1p1f3",
+
+    "branch_method":                "standard",
+    "branch_time_in_child":         "00D0",
+    "branch_time_in_parent":        "3650.0D0",
+    "branch_time_units_in_parent":  "days since 1000-1-1",
+
+    "further_info_url":             "http://furtherinfo.es-doc.org/<mip_era><institution_id><source_id><experiment_id><sub_experiment_id><variant_label>",
+    "grid":                         "native atmosphere T63 gaussian grid (64x128 latxlon)",
+    "grid_label":                  "gn",
+    "grid_resolution":              "5 km",
+
+    "institution_id":               "CSIRO-BOM",
+    "institution":                  "Commonwealth Scientific and Industrial Research Organisation, Australia, and Bureau of Meteorology, Australia",
+
+    "references":                   "Model described by Koder and Tolkien (J. Geophys. Res.,2001, 576 - 591).  Also see http://www.GICC.su/giccm/doc/index.html  2XCO2 simulation described in Dorkey et al. '(Clim. Dyn., 2003, 323 - 357.)",
+    "run_variant":                  "forcing: black carbon aerosol only",
+    "source_id":                    "NICAM",
+    "source":                       "NICAM:",
+    "output_path_template":         "<activity_id><institution_id><source_id><experiment_id><variant_label><table><variable_id><grid_label><version>",
+    "output_file_template":         "<variable_id><table><experiment_id><source_id><variant_label><grid_label>",
+
+    "license":                      "One of 2 licenses: ----- CMIP6 model data produced by <Your CentreName> is licensed under a Creative Commons Attribution 'NonCommercial Share Alike' 4.0 International License (http://creativecommons.org/licenses/by/4.0/). Use of the data should be acknowledged following guidelines found at <what URL???> The data is hosted via the Earth System Grid Federation. Permissions beyond the scope of this license may be available at http://pcmdi.org/cmip5/terms [...]
+
+
+}
+
+
+
diff --git a/Test/test_python_grid_and_ocn_sigma.py b/Test/test_python_grid_and_ocn_sigma.py
index d7eb316..17cef2f 100644
--- a/Test/test_python_grid_and_ocn_sigma.py
+++ b/Test/test_python_grid_and_ocn_sigma.py
@@ -48,44 +48,19 @@ def gen_irreg_grid(lon,lat):
 
 
 
-pth = os.path.split(os.path.realpath(os.curdir))
-if pth[-1]=='Test':
-    ipth = opth = '.'
-else:
-    ipth = opth = 'Test'
-
 
 myaxes=numpy.zeros(9,dtype='i')
 myaxes2=numpy.zeros(9,dtype='i')
 myvars=numpy.zeros(9,dtype='i')
 
 
-cmor.setup(inpath=ipth,set_verbosity=cmor.CMOR_NORMAL, netcdf_file_action = cmor.CMOR_REPLACE, exit_control = cmor.CMOR_EXIT_ON_MAJOR);
-cmor.dataset(
-    outpath = opth,
-    experiment_id = "historical",
-    institution = "GICC (Generic International Climate Center, Geneva, Switzerland)",
-    source = "GICCM1 2002: atmosphere:  GICAM3 (gicam_0_brnchT_itea_2, T63L32); ocean: MOM (mom3_ver_3.5.2, 2x3L15); sea ice: GISIM4; land: GILSM2.5",
-    calendar = "standard",
-    realization = 1,
-    contact = "Tim Lincecum",
-    history = "Testing noncartesian grid and ocn sigma",
-    comment = "trying to see if it core dumps",
-    references = "ref",
-    leap_year=0,
-    leap_month=0,
-    month_lengths=None,
-    model_id="GICCM1",
-    forcing="Ant, Nat",
-    institute_id="pcmdi",
-    parent_experiment_id="piControl",
-    parent_experiment_rip="r1i2p3",
-    branch_time=18336.33)
+cmor.setup(inpath="Tables",set_verbosity=cmor.CMOR_NORMAL, netcdf_file_action = cmor.CMOR_REPLACE, exit_control = cmor.CMOR_EXIT_ON_MAJOR);
+cmor.dataset_json("Test/test_python_grid_and_ocn_sigma.json")
 
 tables=[]
-a = cmor.load_table("Tables/CMIP5_grids")
+a = cmor.load_table("CMIP6_grids.json")
 tables.append(a)
-tables.append(cmor.load_table("Tables/CMIP5_Omon"))
+tables.append(cmor.load_table("CMIP6_Omon.json"))
 print 'Tables ids:',tables
 
 cmor.set_table(tables[0])
@@ -150,7 +125,7 @@ bnds_time = numpy.zeros(ntimes*2,dtype='d')
 Time[0],bnds_time[0:2] = read_time(0)
 Time[1],bnds_time[2:4] = read_time(1)
 for i in range(ntimes):
-    data3d = numpy.random.random((lev,lon,lat,ntimes))
+    data3d = numpy.random.random((lev,lon,lat,ntimes))*40.+273.15
     eta = numpy.random.random((lon,lat,ntimes))*10000.
     #print 'writing time: ',i,data3d.shape,data3d
     #print Time[i],bnds_time[2*i:2*i+2]
diff --git a/Test/test_python_index_coord.py b/Test/test_python_index_coord.py
index 7fabce0..9466d9a 100644
--- a/Test/test_python_index_coord.py
+++ b/Test/test_python_index_coord.py
@@ -14,7 +14,7 @@ cmor.dataset(
     calendar = "standard",
     model_id="pcmdi-09a",forcing="forcing")
 
-cmor.load_table("Tables/CMIP5_Omon")
+cmor.load_table("Tables/CMIP6_Omon.json")
 
 nlat = 90
 dlat = 180/nlat
diff --git a/Test/test_python_jamie.json b/Test/test_python_jamie.json
new file mode 100644
index 0000000..c618eb2
--- /dev/null
+++ b/Test/test_python_jamie.json
@@ -0,0 +1,62 @@
+{
+           "_control_vocabulary_file": "CMIP6_CV.json",
+           "_cmip6_option":           "CMIP6",
+
+    "activity_id":                  "CMIP",
+    "outpath":                      "CMIP6",
+    "experiment_id":                "piControl",
+    "calendar":                     "360_day",
+    "realization_index":            "1",
+    "initialization_index":         "1",
+    "physics_index":                "1",
+    "forcing_index":                "1",
+     "source_type":                      "AOGCM",
+     "sub_experiment":                      "none",
+     "sub_experiment_id":                      "none",
+     "parent_sub_experiment_id":                      "N/A",
+     "parent_mip_era":                      "N/A",
+     "mip_era":                      "CMIP6",
+    "contact ":                     "Python Coder (python at a.b.com) ",
+    "institution_id":                 "PCMDI",
+    "model_id":                     "GICCM1",
+    "history":                      "output from archivcl_A1.nce/giccm_03_std_2xCO2_2256.",
+    "comment":                      "equilibrium reached after 30-year spin-up ",
+    "references":                   "model described by Koder and Tolkien ",
+    "model_id":                     "pcmdi-10a", 
+    "parent_experiment_rip":        "r1i3p2",
+    "parent_experiment_id":         "lgm",
+    "parent_variant_label":            "r1i3p2",
+    "branch_time":                  "0",
+
+
+    "parent_activity_id":           "CMIP",
+    "parent_source_id":             "GFDL-CM2-1",
+    "parent_variant_label":            "r1i1p1f3",
+
+    "branch_method":                "standard",
+    "branch_time_in_child":         "00D0",
+    "branch_time_in_parent":        "3650.0D0",
+    "branch_time_units_in_parent":  "days since 1000-1-1",
+
+    "further_info_url":             "http://furtherinfo.es-doc.org/<mip_era><institution_id><source_id><experiment_id><sub_experiment_id><variant_label>",
+    "grid":                         "native atmosphere T63 gaussian grid (64x128 latxlon)",
+    "grid_label":                  "gn",
+    "grid_resolution":              "5 km",
+
+    "institution_id":               "CSIRO-BOM",
+    "institution":                  "Commonwealth Scientific and Industrial Research Organisation, Australia, and Bureau of Meteorology, Australia",
+
+    "references":                   "Model described by Koder and Tolkien (J. Geophys. Res.,2001, 576 - 591).  Also see http://www.GICC.su/giccm/doc/index.html  2XCO2 simulation described in Dorkey et al. '(Clim. Dyn., 2003, 323 - 357.)",
+    "run_variant":                  "forcing: black carbon aerosol only",
+    "source_id":                    "NICAM",
+    "source":                       "NICAM:",
+    "output_path_template":         "<activity_id><institution_id><source_id><experiment_id><variant_label><table><variable_id><grid_label><version>",
+    "output_file_template":         "<variable_id><table><experiment_id><source_id><variant_label><grid_label>",
+
+    "license":                      "One of 2 licenses: ----- CMIP6 model data produced by <Your CentreName> is licensed under a Creative Commons Attribution 'NonCommercial Share Alike' 4.0 International License (http://creativecommons.org/licenses/by/4.0/). Use of the data should be acknowledged following guidelines found at <what URL???> The data is hosted via the Earth System Grid Federation. Permissions beyond the scope of this license may be available at http://pcmdi.org/cmip5/terms [...]
+
+
+}
+
+
+
diff --git a/Test/test_python_jamie.py b/Test/test_python_jamie.py
index 0215ddd..e00025e 100644
--- a/Test/test_python_jamie.py
+++ b/Test/test_python_jamie.py
@@ -1,16 +1,11 @@
 import cmor
 
 def path_test():
-    cmor.setup(inpath='TestTables',netcdf_file_action=cmor.CMOR_REPLACE)
+    cmor.setup(inpath='Tables',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/test_python_jamie.json")
     
-    table='CMIP5_Amon'
+    table='CMIP6_Amon.json'
     cmor.load_table(table)
     axes = [ {'table_entry': 'time',
               'units': 'days since 2000-01-01 00:00:00',
diff --git a/Test/test_python_jamie_10.json b/Test/test_python_jamie_10.json
new file mode 100644
index 0000000..c618eb2
--- /dev/null
+++ b/Test/test_python_jamie_10.json
@@ -0,0 +1,62 @@
+{
+           "_control_vocabulary_file": "CMIP6_CV.json",
+           "_cmip6_option":           "CMIP6",
+
+    "activity_id":                  "CMIP",
+    "outpath":                      "CMIP6",
+    "experiment_id":                "piControl",
+    "calendar":                     "360_day",
+    "realization_index":            "1",
+    "initialization_index":         "1",
+    "physics_index":                "1",
+    "forcing_index":                "1",
+     "source_type":                      "AOGCM",
+     "sub_experiment":                      "none",
+     "sub_experiment_id":                      "none",
+     "parent_sub_experiment_id":                      "N/A",
+     "parent_mip_era":                      "N/A",
+     "mip_era":                      "CMIP6",
+    "contact ":                     "Python Coder (python at a.b.com) ",
+    "institution_id":                 "PCMDI",
+    "model_id":                     "GICCM1",
+    "history":                      "output from archivcl_A1.nce/giccm_03_std_2xCO2_2256.",
+    "comment":                      "equilibrium reached after 30-year spin-up ",
+    "references":                   "model described by Koder and Tolkien ",
+    "model_id":                     "pcmdi-10a", 
+    "parent_experiment_rip":        "r1i3p2",
+    "parent_experiment_id":         "lgm",
+    "parent_variant_label":            "r1i3p2",
+    "branch_time":                  "0",
+
+
+    "parent_activity_id":           "CMIP",
+    "parent_source_id":             "GFDL-CM2-1",
+    "parent_variant_label":            "r1i1p1f3",
+
+    "branch_method":                "standard",
+    "branch_time_in_child":         "00D0",
+    "branch_time_in_parent":        "3650.0D0",
+    "branch_time_units_in_parent":  "days since 1000-1-1",
+
+    "further_info_url":             "http://furtherinfo.es-doc.org/<mip_era><institution_id><source_id><experiment_id><sub_experiment_id><variant_label>",
+    "grid":                         "native atmosphere T63 gaussian grid (64x128 latxlon)",
+    "grid_label":                  "gn",
+    "grid_resolution":              "5 km",
+
+    "institution_id":               "CSIRO-BOM",
+    "institution":                  "Commonwealth Scientific and Industrial Research Organisation, Australia, and Bureau of Meteorology, Australia",
+
+    "references":                   "Model described by Koder and Tolkien (J. Geophys. Res.,2001, 576 - 591).  Also see http://www.GICC.su/giccm/doc/index.html  2XCO2 simulation described in Dorkey et al. '(Clim. Dyn., 2003, 323 - 357.)",
+    "run_variant":                  "forcing: black carbon aerosol only",
+    "source_id":                    "NICAM",
+    "source":                       "NICAM:",
+    "output_path_template":         "<activity_id><institution_id><source_id><experiment_id><variant_label><table><variable_id><grid_label><version>",
+    "output_file_template":         "<variable_id><table><experiment_id><source_id><variant_label><grid_label>",
+
+    "license":                      "One of 2 licenses: ----- CMIP6 model data produced by <Your CentreName> is licensed under a Creative Commons Attribution 'NonCommercial Share Alike' 4.0 International License (http://creativecommons.org/licenses/by/4.0/). Use of the data should be acknowledged following guidelines found at <what URL???> The data is hosted via the Earth System Grid Federation. Permissions beyond the scope of this license may be available at http://pcmdi.org/cmip5/terms [...]
+
+
+}
+
+
+
diff --git a/Test/test_python_jamie_10.py b/Test/test_python_jamie_10.py
index 6b88bdd..d59e0e7 100644
--- a/Test/test_python_jamie_10.py
+++ b/Test/test_python_jamie_10.py
@@ -6,22 +6,14 @@ def main():
     
     cmor.setup(inpath='Tables',
                netcdf_file_action = cmor.CMOR_REPLACE_3)
-    cmor.dataset('pre-industrial control', 'ukmo', 'HadCM3', '360_day',
-                 institute_id = 'ukmo',
-                 model_id = 'HadCM3',
-                 history = 'some global history',
-                 forcing = 'N/A',
-                 parent_experiment_id = 'N/A',
-                 parent_experiment_rip = 'N/A',
-                 branch_time = 0,
-                 contact = 'brian clough')
+    cmor.dataset_json("Test/test_python_jamie_10.json")
  
-    table = 'CMIP5_Amon'
+    table = 'CMIP6_Amon.json'
     cmor.load_table(table)
     axes = [ {'table_entry': 'time',
               'units': 'days since 2000-01-01 00:00:00',
               },
-             {'table_entry': 'plevs',
+             {'table_entry': 'plev17',
               'units': 'Pa',
               'coord_vals': [100000., 92500., 85000., 70000., 60000., 50000., 40000., 30000., 25000., 20000., 15000., 10000., 7000., 5000., 3000., 2000., 1000.]},
              {'table_entry': 'latitude',
diff --git a/Test/test_python_jamie_11.json b/Test/test_python_jamie_11.json
new file mode 100644
index 0000000..2193d92
--- /dev/null
+++ b/Test/test_python_jamie_11.json
@@ -0,0 +1,63 @@
+{
+           "_control_vocabulary_file": "CMIP6_CV.json",
+           "_cmip6_option":           "CMIP6",
+
+    "activity_id":                  "CMIP",
+    "outpath":                      "CMIP6",
+    "experiment_id":                "piControl",
+    "tracking_prefix":              "hdl:21.14100" ,
+    "calendar":                     "360_day",
+    "realization_index":            "1",
+    "initialization_index":         "1",
+    "physics_index":                "1",
+    "forcing_index":                "1",
+    "source_type":                  "AOGCM",
+    "sub_experiment":               "none",
+    "sub_experiment_id":            "none",
+    "parent_sub_experiment_id":     "N/A",
+    "parent_mip_era":               "N/A",
+    "mip_era":                      "CMIP6",
+    "contact ":                     "Python Coder (python at a.b.com) ",
+    "institution_id":               "PCMDI",
+    "model_id":                     "GICCM1",
+    "history":                      "output from archivcl_A1.nce/giccm_03_std_2xCO2_2256.",
+    "comment":                      "equilibrium reached after 30-year spin-up ",
+    "references":                   "model described by Koder and Tolkien ",
+    "model_id":                     "pcmdi-10a", 
+    "parent_experiment_rip":        "r1i3p2",
+    "parent_experiment_id":         "lgm",
+    "parent_variant_label":            "r1i3p2",
+    "branch_time":                  "0",
+
+
+    "parent_activity_id":           "CMIP",
+    "parent_source_id":             "GFDL-CM2-1",
+    "parent_variant_label":            "r1i1p1f3",
+
+    "branch_method":                "standard",
+    "branch_time_in_child":         "00D0",
+    "branch_time_in_parent":        "3650.0D0",
+    "branch_time_units_in_parent":  "days since 1000-1-1",
+
+    "further_info_url":             "http://furtherinfo.es-doc.org/<mip_era><institution_id><source_id><experiment_id><sub_experiment_id><variant_label>",
+    "grid":                         "native atmosphere T63 gaussian grid (64x128 latxlon)",
+    "grid_label":                  "gn",
+    "grid_resolution":              "5 km",
+
+    "institution_id":               "CSIRO-BOM",
+    "institution":                  "Commonwealth Scientific and Industrial Research Organisation, Australia, and Bureau of Meteorology, Australia",
+
+    "references":                   "Model described by Koder and Tolkien (J. Geophys. Res.,2001, 576 - 591).  Also see http://www.GICC.su/giccm/doc/index.html  2XCO2 simulation described in Dorkey et al. '(Clim. Dyn., 2003, 323 - 357.)",
+    "run_variant":                  "forcing: black carbon aerosol only",
+    "source_id":                    "NICAM",
+    "source":                       "NICAM:",
+    "output_path_template":         "<activity_id><institution_id><source_id><experiment_id><variant_label><table><variable_id><grid_label><version>",
+    "output_file_template":         "<variable_id><table><experiment_id><source_id><variant_label><grid_label>",
+
+    "license":                      "One of 2 licenses: ----- CMIP6 model data produced by <Your CentreName> is licensed under a Creative Commons Attribution 'NonCommercial Share Alike' 4.0 International License (http://creativecommons.org/licenses/by/4.0/). Use of the data should be acknowledged following guidelines found at <what URL???> The data is hosted via the Earth System Grid Federation. Permissions beyond the scope of this license may be available at http://pcmdi.org/cmip5/terms [...]
+
+
+}
+
+
+
diff --git a/Test/test_python_jamie_11.py b/Test/test_python_jamie_11.py
index 2eea704..f60c00d 100644
--- a/Test/test_python_jamie_11.py
+++ b/Test/test_python_jamie_11.py
@@ -2,22 +2,7 @@ import cmor,numpy
 
 error_flag = cmor.setup(inpath='Test', netcdf_file_action=cmor.CMOR_REPLACE)
   
-error_flag = cmor.dataset(                                   
-       outpath='Test',                                         
-       experiment_id='noVolc2000',
-       institution= 'GICC (Generic International Climate Center, Geneva, Switzerland)',                                 
-       source='GICCM1 (2002): ',
-       calendar='360_day',                                      
-       realization=1,                                          
-       contact = 'Rusty Koder (koder at middle_earth.net) ',      
-       history='Output from archivcl_A1.nce/giccm_03_std_2xCO2_2256.', 
-       comment='Equilibrium reached after 30-year spin-up ',                                 
-       references='Model described by Koder and Tolkien ',
-       model_id="GICCM1", 
-        institute_id="PCMDI",
-       forcing="TO",
-       parent_experiment_rip="r1i3p2",
-       parent_experiment_id="lgm",branch_time=0)
+error_flag = cmor.dataset_json("Test/test_python_jamie_11.json")
   
 
 # creates 1 degree grid
@@ -27,7 +12,7 @@ alats = numpy.arange(180)-89.5
 bnds_lat = numpy.arange(181)-90
 alons=numpy.arange(360)+.5
 bnds_lon=numpy.arange(361)
-cmor.load_table("/git/cmip5-cmor-tables/Tables/CMIP5_aero")
+cmor.load_table("Tables/CMIP6_aero.json")
 ilat = cmor.axis(  
     table_entry='latitude',       
     units='degrees_north',          
diff --git a/Test/test_python_jamie_12.json b/Test/test_python_jamie_12.json
new file mode 100644
index 0000000..c618eb2
--- /dev/null
+++ b/Test/test_python_jamie_12.json
@@ -0,0 +1,62 @@
+{
+           "_control_vocabulary_file": "CMIP6_CV.json",
+           "_cmip6_option":           "CMIP6",
+
+    "activity_id":                  "CMIP",
+    "outpath":                      "CMIP6",
+    "experiment_id":                "piControl",
+    "calendar":                     "360_day",
+    "realization_index":            "1",
+    "initialization_index":         "1",
+    "physics_index":                "1",
+    "forcing_index":                "1",
+     "source_type":                      "AOGCM",
+     "sub_experiment":                      "none",
+     "sub_experiment_id":                      "none",
+     "parent_sub_experiment_id":                      "N/A",
+     "parent_mip_era":                      "N/A",
+     "mip_era":                      "CMIP6",
+    "contact ":                     "Python Coder (python at a.b.com) ",
+    "institution_id":                 "PCMDI",
+    "model_id":                     "GICCM1",
+    "history":                      "output from archivcl_A1.nce/giccm_03_std_2xCO2_2256.",
+    "comment":                      "equilibrium reached after 30-year spin-up ",
+    "references":                   "model described by Koder and Tolkien ",
+    "model_id":                     "pcmdi-10a", 
+    "parent_experiment_rip":        "r1i3p2",
+    "parent_experiment_id":         "lgm",
+    "parent_variant_label":            "r1i3p2",
+    "branch_time":                  "0",
+
+
+    "parent_activity_id":           "CMIP",
+    "parent_source_id":             "GFDL-CM2-1",
+    "parent_variant_label":            "r1i1p1f3",
+
+    "branch_method":                "standard",
+    "branch_time_in_child":         "00D0",
+    "branch_time_in_parent":        "3650.0D0",
+    "branch_time_units_in_parent":  "days since 1000-1-1",
+
+    "further_info_url":             "http://furtherinfo.es-doc.org/<mip_era><institution_id><source_id><experiment_id><sub_experiment_id><variant_label>",
+    "grid":                         "native atmosphere T63 gaussian grid (64x128 latxlon)",
+    "grid_label":                  "gn",
+    "grid_resolution":              "5 km",
+
+    "institution_id":               "CSIRO-BOM",
+    "institution":                  "Commonwealth Scientific and Industrial Research Organisation, Australia, and Bureau of Meteorology, Australia",
+
+    "references":                   "Model described by Koder and Tolkien (J. Geophys. Res.,2001, 576 - 591).  Also see http://www.GICC.su/giccm/doc/index.html  2XCO2 simulation described in Dorkey et al. '(Clim. Dyn., 2003, 323 - 357.)",
+    "run_variant":                  "forcing: black carbon aerosol only",
+    "source_id":                    "NICAM",
+    "source":                       "NICAM:",
+    "output_path_template":         "<activity_id><institution_id><source_id><experiment_id><variant_label><table><variable_id><grid_label><version>",
+    "output_file_template":         "<variable_id><table><experiment_id><source_id><variant_label><grid_label>",
+
+    "license":                      "One of 2 licenses: ----- CMIP6 model data produced by <Your CentreName> is licensed under a Creative Commons Attribution 'NonCommercial Share Alike' 4.0 International License (http://creativecommons.org/licenses/by/4.0/). Use of the data should be acknowledged following guidelines found at <what URL???> The data is hosted via the Earth System Grid Federation. Permissions beyond the scope of this license may be available at http://pcmdi.org/cmip5/terms [...]
+
+
+}
+
+
+
diff --git a/Test/test_python_jamie_12.py b/Test/test_python_jamie_12.py
index 05beb96..88f016a 100644
--- a/Test/test_python_jamie_12.py
+++ b/Test/test_python_jamie_12.py
@@ -30,20 +30,10 @@ def define_write_var(axis_ids, entry, unit, values):
 def cmor_ini():
     cmor.setup(inpath='/git/cmip5-cmor-tables/Tables',
                netcdf_file_action = cmor.CMOR_REPLACE)
-    cmor.dataset('pre-industrial control', 'mohc', 'HadGEM2: source',
-                 '360_day',
-                 institute_id = 'ukmo',
-                 model_id = 'HadGEM2',
-                 history = 'some global history',
-                 forcing = 'N/A',
-                 parent_experiment_id = 'N/A',
-                 parent_experiment_rip = 'N/A',
-                 branch_time = 0.,
-                 contact = 'brian clough')
-
+    cmor.dataset_json("Test/test_python_jamie_12.json")
 
 def define_write_landcoverfrac():
-    cmor.load_table('CMIP5_Lmon')
+    cmor.load_table('Tables/CMIP6_Lmon.json')
     axes = [ {'table_entry': 'time',
               'units': 'days since 2000-01-01 00:00:00',
               },
diff --git a/Test/test_python_jamie_2.json b/Test/test_python_jamie_2.json
new file mode 100644
index 0000000..c618eb2
--- /dev/null
+++ b/Test/test_python_jamie_2.json
@@ -0,0 +1,62 @@
+{
+           "_control_vocabulary_file": "CMIP6_CV.json",
+           "_cmip6_option":           "CMIP6",
+
+    "activity_id":                  "CMIP",
+    "outpath":                      "CMIP6",
+    "experiment_id":                "piControl",
+    "calendar":                     "360_day",
+    "realization_index":            "1",
+    "initialization_index":         "1",
+    "physics_index":                "1",
+    "forcing_index":                "1",
+     "source_type":                      "AOGCM",
+     "sub_experiment":                      "none",
+     "sub_experiment_id":                      "none",
+     "parent_sub_experiment_id":                      "N/A",
+     "parent_mip_era":                      "N/A",
+     "mip_era":                      "CMIP6",
+    "contact ":                     "Python Coder (python at a.b.com) ",
+    "institution_id":                 "PCMDI",
+    "model_id":                     "GICCM1",
+    "history":                      "output from archivcl_A1.nce/giccm_03_std_2xCO2_2256.",
+    "comment":                      "equilibrium reached after 30-year spin-up ",
+    "references":                   "model described by Koder and Tolkien ",
+    "model_id":                     "pcmdi-10a", 
+    "parent_experiment_rip":        "r1i3p2",
+    "parent_experiment_id":         "lgm",
+    "parent_variant_label":            "r1i3p2",
+    "branch_time":                  "0",
+
+
+    "parent_activity_id":           "CMIP",
+    "parent_source_id":             "GFDL-CM2-1",
+    "parent_variant_label":            "r1i1p1f3",
+
+    "branch_method":                "standard",
+    "branch_time_in_child":         "00D0",
+    "branch_time_in_parent":        "3650.0D0",
+    "branch_time_units_in_parent":  "days since 1000-1-1",
+
+    "further_info_url":             "http://furtherinfo.es-doc.org/<mip_era><institution_id><source_id><experiment_id><sub_experiment_id><variant_label>",
+    "grid":                         "native atmosphere T63 gaussian grid (64x128 latxlon)",
+    "grid_label":                  "gn",
+    "grid_resolution":              "5 km",
+
+    "institution_id":               "CSIRO-BOM",
+    "institution":                  "Commonwealth Scientific and Industrial Research Organisation, Australia, and Bureau of Meteorology, Australia",
+
+    "references":                   "Model described by Koder and Tolkien (J. Geophys. Res.,2001, 576 - 591).  Also see http://www.GICC.su/giccm/doc/index.html  2XCO2 simulation described in Dorkey et al. '(Clim. Dyn., 2003, 323 - 357.)",
+    "run_variant":                  "forcing: black carbon aerosol only",
+    "source_id":                    "NICAM",
+    "source":                       "NICAM:",
+    "output_path_template":         "<activity_id><institution_id><source_id><experiment_id><variant_label><table><variable_id><grid_label><version>",
+    "output_file_template":         "<variable_id><table><experiment_id><source_id><variant_label><grid_label>",
+
+    "license":                      "One of 2 licenses: ----- CMIP6 model data produced by <Your CentreName> is licensed under a Creative Commons Attribution 'NonCommercial Share Alike' 4.0 International License (http://creativecommons.org/licenses/by/4.0/). Use of the data should be acknowledged following guidelines found at <what URL???> The data is hosted via the Earth System Grid Federation. Permissions beyond the scope of this license may be available at http://pcmdi.org/cmip5/terms [...]
+
+
+}
+
+
+
diff --git a/Test/test_python_jamie_2.py b/Test/test_python_jamie_2.py
index 53b25d1..5b4c248 100644
--- a/Test/test_python_jamie_2.py
+++ b/Test/test_python_jamie_2.py
@@ -3,14 +3,8 @@ import cmor
 def multi_call_test():
     cmor.setup(inpath='Tables',netcdf_file_action=cmor.CMOR_REPLACE)
 
-    cmor.dataset('historical', 'ukmo', 'HadCM3', '360_day',
-                 institute_id="PCMDI",
-                 model_id='HadCM3',contact="Ron Nen",forcing='SO',
-                 parent_experiment_id="lgm",
-                 parent_experiment_rip="r1i3p2",
-                 branch_time=0.)
-    
-    table='CMIP5_Amon'
+    cmor.dataset_json("Test/test_python_jamie_2.json")
+    table='CMIP6_Amon.json'
     cmor.load_table(table)
     axes = [ {'table_entry': 'time',
               'units': 'days since 2000-01-01 00:00:00',
diff --git a/Test/test_python_jamie_3.json b/Test/test_python_jamie_3.json
new file mode 100644
index 0000000..c618eb2
--- /dev/null
+++ b/Test/test_python_jamie_3.json
@@ -0,0 +1,62 @@
+{
+           "_control_vocabulary_file": "CMIP6_CV.json",
+           "_cmip6_option":           "CMIP6",
+
+    "activity_id":                  "CMIP",
+    "outpath":                      "CMIP6",
+    "experiment_id":                "piControl",
+    "calendar":                     "360_day",
+    "realization_index":            "1",
+    "initialization_index":         "1",
+    "physics_index":                "1",
+    "forcing_index":                "1",
+     "source_type":                      "AOGCM",
+     "sub_experiment":                      "none",
+     "sub_experiment_id":                      "none",
+     "parent_sub_experiment_id":                      "N/A",
+     "parent_mip_era":                      "N/A",
+     "mip_era":                      "CMIP6",
+    "contact ":                     "Python Coder (python at a.b.com) ",
+    "institution_id":                 "PCMDI",
+    "model_id":                     "GICCM1",
+    "history":                      "output from archivcl_A1.nce/giccm_03_std_2xCO2_2256.",
+    "comment":                      "equilibrium reached after 30-year spin-up ",
+    "references":                   "model described by Koder and Tolkien ",
+    "model_id":                     "pcmdi-10a", 
+    "parent_experiment_rip":        "r1i3p2",
+    "parent_experiment_id":         "lgm",
+    "parent_variant_label":            "r1i3p2",
+    "branch_time":                  "0",
+
+
+    "parent_activity_id":           "CMIP",
+    "parent_source_id":             "GFDL-CM2-1",
+    "parent_variant_label":            "r1i1p1f3",
+
+    "branch_method":                "standard",
+    "branch_time_in_child":         "00D0",
+    "branch_time_in_parent":        "3650.0D0",
+    "branch_time_units_in_parent":  "days since 1000-1-1",
+
+    "further_info_url":             "http://furtherinfo.es-doc.org/<mip_era><institution_id><source_id><experiment_id><sub_experiment_id><variant_label>",
+    "grid":                         "native atmosphere T63 gaussian grid (64x128 latxlon)",
+    "grid_label":                  "gn",
+    "grid_resolution":              "5 km",
+
+    "institution_id":               "CSIRO-BOM",
+    "institution":                  "Commonwealth Scientific and Industrial Research Organisation, Australia, and Bureau of Meteorology, Australia",
+
+    "references":                   "Model described by Koder and Tolkien (J. Geophys. Res.,2001, 576 - 591).  Also see http://www.GICC.su/giccm/doc/index.html  2XCO2 simulation described in Dorkey et al. '(Clim. Dyn., 2003, 323 - 357.)",
+    "run_variant":                  "forcing: black carbon aerosol only",
+    "source_id":                    "NICAM",
+    "source":                       "NICAM:",
+    "output_path_template":         "<activity_id><institution_id><source_id><experiment_id><variant_label><table><variable_id><grid_label><version>",
+    "output_file_template":         "<variable_id><table><experiment_id><source_id><variant_label><grid_label>",
+
+    "license":                      "One of 2 licenses: ----- CMIP6 model data produced by <Your CentreName> is licensed under a Creative Commons Attribution 'NonCommercial Share Alike' 4.0 International License (http://creativecommons.org/licenses/by/4.0/). Use of the data should be acknowledged following guidelines found at <what URL???> The data is hosted via the Earth System Grid Federation. Permissions beyond the scope of this license may be available at http://pcmdi.org/cmip5/terms [...]
+
+
+}
+
+
+
diff --git a/Test/test_python_jamie_3.py b/Test/test_python_jamie_3.py
index 0a04416..f95b94f 100644
--- a/Test/test_python_jamie_3.py
+++ b/Test/test_python_jamie_3.py
@@ -7,15 +7,9 @@ def main():
     missing = -99.
     cmor.setup(inpath='Tables',
                netcdf_file_action = cmor.CMOR_REPLACE)
-    cmor.dataset('historical', 'ukmo', 'HadCM3', '360_day',
-                 institute_id = 'ukmo',
-                 forcing = 'Nat',
-                 model_id = 'HadCM3',
-                 contact="Bleachers 140",
-                 parent_experiment_rip="r1i3p2",
-                 parent_experiment_id="lgm",branch_time=0.)
+    cmor.dataset_json("Test/test_python_jamie_3.json")
 
-    table = 'CMIP5_Amon'
+    table = 'CMIP6_Amon.json'
     cmor.load_table(table)
     axes = [ {'table_entry': 'time',
               'units': 'days since 2000-01-01 00:00:00',
diff --git a/Test/test_python_jamie_4.json b/Test/test_python_jamie_4.json
new file mode 100644
index 0000000..c618eb2
--- /dev/null
+++ b/Test/test_python_jamie_4.json
@@ -0,0 +1,62 @@
+{
+           "_control_vocabulary_file": "CMIP6_CV.json",
+           "_cmip6_option":           "CMIP6",
+
+    "activity_id":                  "CMIP",
+    "outpath":                      "CMIP6",
+    "experiment_id":                "piControl",
+    "calendar":                     "360_day",
+    "realization_index":            "1",
+    "initialization_index":         "1",
+    "physics_index":                "1",
+    "forcing_index":                "1",
+     "source_type":                      "AOGCM",
+     "sub_experiment":                      "none",
+     "sub_experiment_id":                      "none",
+     "parent_sub_experiment_id":                      "N/A",
+     "parent_mip_era":                      "N/A",
+     "mip_era":                      "CMIP6",
+    "contact ":                     "Python Coder (python at a.b.com) ",
+    "institution_id":                 "PCMDI",
+    "model_id":                     "GICCM1",
+    "history":                      "output from archivcl_A1.nce/giccm_03_std_2xCO2_2256.",
+    "comment":                      "equilibrium reached after 30-year spin-up ",
+    "references":                   "model described by Koder and Tolkien ",
+    "model_id":                     "pcmdi-10a", 
+    "parent_experiment_rip":        "r1i3p2",
+    "parent_experiment_id":         "lgm",
+    "parent_variant_label":            "r1i3p2",
+    "branch_time":                  "0",
+
+
+    "parent_activity_id":           "CMIP",
+    "parent_source_id":             "GFDL-CM2-1",
+    "parent_variant_label":            "r1i1p1f3",
+
+    "branch_method":                "standard",
+    "branch_time_in_child":         "00D0",
+    "branch_time_in_parent":        "3650.0D0",
+    "branch_time_units_in_parent":  "days since 1000-1-1",
+
+    "further_info_url":             "http://furtherinfo.es-doc.org/<mip_era><institution_id><source_id><experiment_id><sub_experiment_id><variant_label>",
+    "grid":                         "native atmosphere T63 gaussian grid (64x128 latxlon)",
+    "grid_label":                  "gn",
+    "grid_resolution":              "5 km",
+
+    "institution_id":               "CSIRO-BOM",
+    "institution":                  "Commonwealth Scientific and Industrial Research Organisation, Australia, and Bureau of Meteorology, Australia",
+
+    "references":                   "Model described by Koder and Tolkien (J. Geophys. Res.,2001, 576 - 591).  Also see http://www.GICC.su/giccm/doc/index.html  2XCO2 simulation described in Dorkey et al. '(Clim. Dyn., 2003, 323 - 357.)",
+    "run_variant":                  "forcing: black carbon aerosol only",
+    "source_id":                    "NICAM",
+    "source":                       "NICAM:",
+    "output_path_template":         "<activity_id><institution_id><source_id><experiment_id><variant_label><table><variable_id><grid_label><version>",
+    "output_file_template":         "<variable_id><table><experiment_id><source_id><variant_label><grid_label>",
+
+    "license":                      "One of 2 licenses: ----- CMIP6 model data produced by <Your CentreName> is licensed under a Creative Commons Attribution 'NonCommercial Share Alike' 4.0 International License (http://creativecommons.org/licenses/by/4.0/). Use of the data should be acknowledged following guidelines found at <what URL???> The data is hosted via the Earth System Grid Federation. Permissions beyond the scope of this license may be available at http://pcmdi.org/cmip5/terms [...]
+
+
+}
+
+
+
diff --git a/Test/test_python_jamie_4.py b/Test/test_python_jamie_4.py
index 8d18995..7f28f2c 100644
--- a/Test/test_python_jamie_4.py
+++ b/Test/test_python_jamie_4.py
@@ -6,14 +6,9 @@ def main():
     
     cmor.setup(inpath='Tables',
                netcdf_file_action = cmor.CMOR_REPLACE)
-    cmor.dataset('historical', 'ukmo', 'HadCM3', '360_day',
-                 institute_id = 'ukmo',
-                 forcing = 'SO',
-                 model_id = 'HadCM3',contact="Dusty Baker (even though he was a Dodgers",
-                 parent_experiment_rip="r1i3p2",
-                 parent_experiment_id="lgm",branch_time=0)
+    cmor.dataset_json("Test/test_python_jamie_4.json")
 
-    table = 'CMIP5_Amon'
+    table = 'CMIP6_Amon.json'
     cmor.load_table(table)
     axes = [ {'table_entry': 'time',
               'units': 'days since 2000-01-01 00:00:00',
diff --git a/Test/test_python_jamie_6.json b/Test/test_python_jamie_6.json
new file mode 100644
index 0000000..c618eb2
--- /dev/null
+++ b/Test/test_python_jamie_6.json
@@ -0,0 +1,62 @@
+{
+           "_control_vocabulary_file": "CMIP6_CV.json",
+           "_cmip6_option":           "CMIP6",
+
+    "activity_id":                  "CMIP",
+    "outpath":                      "CMIP6",
+    "experiment_id":                "piControl",
+    "calendar":                     "360_day",
+    "realization_index":            "1",
+    "initialization_index":         "1",
+    "physics_index":                "1",
+    "forcing_index":                "1",
+     "source_type":                      "AOGCM",
+     "sub_experiment":                      "none",
+     "sub_experiment_id":                      "none",
+     "parent_sub_experiment_id":                      "N/A",
+     "parent_mip_era":                      "N/A",
+     "mip_era":                      "CMIP6",
+    "contact ":                     "Python Coder (python at a.b.com) ",
+    "institution_id":                 "PCMDI",
+    "model_id":                     "GICCM1",
+    "history":                      "output from archivcl_A1.nce/giccm_03_std_2xCO2_2256.",
+    "comment":                      "equilibrium reached after 30-year spin-up ",
+    "references":                   "model described by Koder and Tolkien ",
+    "model_id":                     "pcmdi-10a", 
+    "parent_experiment_rip":        "r1i3p2",
+    "parent_experiment_id":         "lgm",
+    "parent_variant_label":            "r1i3p2",
+    "branch_time":                  "0",
+
+
+    "parent_activity_id":           "CMIP",
+    "parent_source_id":             "GFDL-CM2-1",
+    "parent_variant_label":            "r1i1p1f3",
+
+    "branch_method":                "standard",
+    "branch_time_in_child":         "00D0",
+    "branch_time_in_parent":        "3650.0D0",
+    "branch_time_units_in_parent":  "days since 1000-1-1",
+
+    "further_info_url":             "http://furtherinfo.es-doc.org/<mip_era><institution_id><source_id><experiment_id><sub_experiment_id><variant_label>",
+    "grid":                         "native atmosphere T63 gaussian grid (64x128 latxlon)",
+    "grid_label":                  "gn",
+    "grid_resolution":              "5 km",
+
+    "institution_id":               "CSIRO-BOM",
+    "institution":                  "Commonwealth Scientific and Industrial Research Organisation, Australia, and Bureau of Meteorology, Australia",
+
+    "references":                   "Model described by Koder and Tolkien (J. Geophys. Res.,2001, 576 - 591).  Also see http://www.GICC.su/giccm/doc/index.html  2XCO2 simulation described in Dorkey et al. '(Clim. Dyn., 2003, 323 - 357.)",
+    "run_variant":                  "forcing: black carbon aerosol only",
+    "source_id":                    "NICAM",
+    "source":                       "NICAM:",
+    "output_path_template":         "<activity_id><institution_id><source_id><experiment_id><variant_label><table><variable_id><grid_label><version>",
+    "output_file_template":         "<variable_id><table><experiment_id><source_id><variant_label><grid_label>",
+
+    "license":                      "One of 2 licenses: ----- CMIP6 model data produced by <Your CentreName> is licensed under a Creative Commons Attribution 'NonCommercial Share Alike' 4.0 International License (http://creativecommons.org/licenses/by/4.0/). Use of the data should be acknowledged following guidelines found at <what URL???> The data is hosted via the Earth System Grid Federation. Permissions beyond the scope of this license may be available at http://pcmdi.org/cmip5/terms [...]
+
+
+}
+
+
+
diff --git a/Test/test_python_jamie_6.py b/Test/test_python_jamie_6.py
index ae31d32..c64d11e 100644
--- a/Test/test_python_jamie_6.py
+++ b/Test/test_python_jamie_6.py
@@ -2,22 +2,7 @@ import cmor,numpy
 
 error_flag = cmor.setup(inpath='Test', netcdf_file_action=cmor.CMOR_REPLACE)
   
-error_flag = cmor.dataset(                                   
-       outpath='Test',                                         
-       experiment_id='noVolc2000',
-       institution= 'GICC (Generic International Climate Center, Geneva, Switzerland)',                                 
-       source='GICCM1 (2002): ',
-       calendar='360_day',                                      
-       realization=1,                                          
-       contact = 'Rusty Koder (koder at middle_earth.net) ',      
-       history='Output from archivcl_A1.nce/giccm_03_std_2xCO2_2256.', 
-       comment='Equilibrium reached after 30-year spin-up ',                                 
-       references='Model described by Koder and Tolkien ',
-       model_id="GICCM1", 
-        institute_id="PCMDI",
-       forcing="TO",
-       parent_experiment_rip="r1i3p2",
-       parent_experiment_id="lgm",branch_time=0)
+error_flag = cmor.dataset_json("Test/test_python_jamie_6.json")
   
 
 # creates 1 degree grid
@@ -27,7 +12,7 @@ alats = numpy.arange(180)-89.5
 bnds_lat = numpy.arange(181)-90
 alons=numpy.arange(360)+.5
 bnds_lon=numpy.arange(361)
-cmor.load_table("Tables/CMIP5_Amon")
+cmor.load_table("Tables/CMIP6_Amon.json")
 ilat = cmor.axis(  
     table_entry='latitude',       
     units='degrees_north',          
diff --git a/Test/test_python_jamie_7.json b/Test/test_python_jamie_7.json
new file mode 100644
index 0000000..c618eb2
--- /dev/null
+++ b/Test/test_python_jamie_7.json
@@ -0,0 +1,62 @@
+{
+           "_control_vocabulary_file": "CMIP6_CV.json",
+           "_cmip6_option":           "CMIP6",
+
+    "activity_id":                  "CMIP",
+    "outpath":                      "CMIP6",
+    "experiment_id":                "piControl",
+    "calendar":                     "360_day",
+    "realization_index":            "1",
+    "initialization_index":         "1",
+    "physics_index":                "1",
+    "forcing_index":                "1",
+     "source_type":                      "AOGCM",
+     "sub_experiment":                      "none",
+     "sub_experiment_id":                      "none",
+     "parent_sub_experiment_id":                      "N/A",
+     "parent_mip_era":                      "N/A",
+     "mip_era":                      "CMIP6",
+    "contact ":                     "Python Coder (python at a.b.com) ",
+    "institution_id":                 "PCMDI",
+    "model_id":                     "GICCM1",
+    "history":                      "output from archivcl_A1.nce/giccm_03_std_2xCO2_2256.",
+    "comment":                      "equilibrium reached after 30-year spin-up ",
+    "references":                   "model described by Koder and Tolkien ",
+    "model_id":                     "pcmdi-10a", 
+    "parent_experiment_rip":        "r1i3p2",
+    "parent_experiment_id":         "lgm",
+    "parent_variant_label":            "r1i3p2",
+    "branch_time":                  "0",
+
+
+    "parent_activity_id":           "CMIP",
+    "parent_source_id":             "GFDL-CM2-1",
+    "parent_variant_label":            "r1i1p1f3",
+
+    "branch_method":                "standard",
+    "branch_time_in_child":         "00D0",
+    "branch_time_in_parent":        "3650.0D0",
+    "branch_time_units_in_parent":  "days since 1000-1-1",
+
+    "further_info_url":             "http://furtherinfo.es-doc.org/<mip_era><institution_id><source_id><experiment_id><sub_experiment_id><variant_label>",
+    "grid":                         "native atmosphere T63 gaussian grid (64x128 latxlon)",
+    "grid_label":                  "gn",
+    "grid_resolution":              "5 km",
+
+    "institution_id":               "CSIRO-BOM",
+    "institution":                  "Commonwealth Scientific and Industrial Research Organisation, Australia, and Bureau of Meteorology, Australia",
+
+    "references":                   "Model described by Koder and Tolkien (J. Geophys. Res.,2001, 576 - 591).  Also see http://www.GICC.su/giccm/doc/index.html  2XCO2 simulation described in Dorkey et al. '(Clim. Dyn., 2003, 323 - 357.)",
+    "run_variant":                  "forcing: black carbon aerosol only",
+    "source_id":                    "NICAM",
+    "source":                       "NICAM:",
+    "output_path_template":         "<activity_id><institution_id><source_id><experiment_id><variant_label><table><variable_id><grid_label><version>",
+    "output_file_template":         "<variable_id><table><experiment_id><source_id><variant_label><grid_label>",
+
+    "license":                      "One of 2 licenses: ----- CMIP6 model data produced by <Your CentreName> is licensed under a Creative Commons Attribution 'NonCommercial Share Alike' 4.0 International License (http://creativecommons.org/licenses/by/4.0/). Use of the data should be acknowledged following guidelines found at <what URL???> The data is hosted via the Earth System Grid Federation. Permissions beyond the scope of this license may be available at http://pcmdi.org/cmip5/terms [...]
+
+
+}
+
+
+
diff --git a/Test/test_python_jamie_7.py b/Test/test_python_jamie_7.py
index 3fca12e..1b479c6 100644
--- a/Test/test_python_jamie_7.py
+++ b/Test/test_python_jamie_7.py
@@ -2,22 +2,7 @@ import cmor,numpy
 
 error_flag = cmor.setup(inpath='Test', netcdf_file_action=cmor.CMOR_REPLACE)
   
-error_flag = cmor.dataset(                                   
-       outpath='Test',                                         
-       experiment_id='noVolc2000',
-       institution= 'GICC (Generic International Climate Center, Geneva, Switzerland)',                                 
-       source='GICCM1 (2002): ',
-       calendar='360_day',                                      
-       realization=1,                                          
-       contact = 'Rusty Koder (koder at middle_earth.net) ',      
-       history='Output from archivcl_A1.nce/giccm_03_std_2xCO2_2256.', 
-       comment='Equilibrium reached after 30-year spin-up ',                                 
-       references='Model described by Koder and Tolkien ',
-       model_id="GICCM1", 
-       institute_id="PCMDI",
-       forcing="Nat, SO",
-       parent_experiment_rip="r1i3p2",
-       parent_experiment_id="lgm",branch_time=3.14159)
+error_flag = cmor.dataset_json("Test/test_python_jamie_7.json")
   
 
 # creates 1 degree grid
@@ -27,7 +12,7 @@ alats = numpy.arange(180)-89.5
 bnds_lat = numpy.arange(181)-90
 alons=numpy.arange(360)+.5
 bnds_lon=numpy.arange(361)
-cmor.load_table("Tables/CMIP5_Amon")
+cmor.load_table("Tables/CMIP6_Amon.json")
 ilat = cmor.axis(  
     table_entry='latitude',       
     units='degrees_north',          
@@ -55,7 +40,7 @@ itim = cmor.axis(
     interval='1 month')
 
 ilev = cmor.axis(  
-        table_entry='plevs',       
+        table_entry='plev17',       
         units='Pa',
         coord_vals=plevs,             
         cell_bounds=None)
diff --git a/Test/test_python_jamie_8.json b/Test/test_python_jamie_8.json
new file mode 100644
index 0000000..c618eb2
--- /dev/null
+++ b/Test/test_python_jamie_8.json
@@ -0,0 +1,62 @@
+{
+           "_control_vocabulary_file": "CMIP6_CV.json",
+           "_cmip6_option":           "CMIP6",
+
+    "activity_id":                  "CMIP",
+    "outpath":                      "CMIP6",
+    "experiment_id":                "piControl",
+    "calendar":                     "360_day",
+    "realization_index":            "1",
+    "initialization_index":         "1",
+    "physics_index":                "1",
+    "forcing_index":                "1",
+     "source_type":                      "AOGCM",
+     "sub_experiment":                      "none",
+     "sub_experiment_id":                      "none",
+     "parent_sub_experiment_id":                      "N/A",
+     "parent_mip_era":                      "N/A",
+     "mip_era":                      "CMIP6",
+    "contact ":                     "Python Coder (python at a.b.com) ",
+    "institution_id":                 "PCMDI",
+    "model_id":                     "GICCM1",
+    "history":                      "output from archivcl_A1.nce/giccm_03_std_2xCO2_2256.",
+    "comment":                      "equilibrium reached after 30-year spin-up ",
+    "references":                   "model described by Koder and Tolkien ",
+    "model_id":                     "pcmdi-10a", 
+    "parent_experiment_rip":        "r1i3p2",
+    "parent_experiment_id":         "lgm",
+    "parent_variant_label":            "r1i3p2",
+    "branch_time":                  "0",
+
+
+    "parent_activity_id":           "CMIP",
+    "parent_source_id":             "GFDL-CM2-1",
+    "parent_variant_label":            "r1i1p1f3",
+
+    "branch_method":                "standard",
+    "branch_time_in_child":         "00D0",
+    "branch_time_in_parent":        "3650.0D0",
+    "branch_time_units_in_parent":  "days since 1000-1-1",
+
+    "further_info_url":             "http://furtherinfo.es-doc.org/<mip_era><institution_id><source_id><experiment_id><sub_experiment_id><variant_label>",
+    "grid":                         "native atmosphere T63 gaussian grid (64x128 latxlon)",
+    "grid_label":                  "gn",
+    "grid_resolution":              "5 km",
+
+    "institution_id":               "CSIRO-BOM",
+    "institution":                  "Commonwealth Scientific and Industrial Research Organisation, Australia, and Bureau of Meteorology, Australia",
+
+    "references":                   "Model described by Koder and Tolkien (J. Geophys. Res.,2001, 576 - 591).  Also see http://www.GICC.su/giccm/doc/index.html  2XCO2 simulation described in Dorkey et al. '(Clim. Dyn., 2003, 323 - 357.)",
+    "run_variant":                  "forcing: black carbon aerosol only",
+    "source_id":                    "NICAM",
+    "source":                       "NICAM:",
+    "output_path_template":         "<activity_id><institution_id><source_id><experiment_id><variant_label><table><variable_id><grid_label><version>",
+    "output_file_template":         "<variable_id><table><experiment_id><source_id><variant_label><grid_label>",
+
+    "license":                      "One of 2 licenses: ----- CMIP6 model data produced by <Your CentreName> is licensed under a Creative Commons Attribution 'NonCommercial Share Alike' 4.0 International License (http://creativecommons.org/licenses/by/4.0/). Use of the data should be acknowledged following guidelines found at <what URL???> The data is hosted via the Earth System Grid Federation. Permissions beyond the scope of this license may be available at http://pcmdi.org/cmip5/terms [...]
+
+
+}
+
+
+
diff --git a/Test/test_python_jamie_8.py b/Test/test_python_jamie_8.py
index 80a2863..4fe2573 100644
--- a/Test/test_python_jamie_8.py
+++ b/Test/test_python_jamie_8.py
@@ -29,19 +29,10 @@ def define_write_var(axis_ids, entry, unit, values):
 def cmor_ini():
     cmor.setup(inpath='Tables',
                netcdf_file_action = cmor.CMOR_REPLACE)
-    cmor.dataset('pre-industrial control', 'mohc', 'HadGEM2: source',
-                 '360_day',
-                 institute_id = 'ukmo',
-                 model_id = 'HadGEM2',
-                 history = 'some global history',
-                 forcing = 'N/A',
-                 parent_experiment_id = 'N/A',
-                 parent_experiment_rip = 'N/A',
-                 branch_time = 0.,
-                 contact = 'bob')
+    cmor.dataset_json("Test/test_python_jamie_8.json")
 
 def define_write_clisccp():
-    cmor.load_table('CMIP5_cfMon')
+    cmor.load_table('CMIP6_cfMon.json')
     axes = [ {'table_entry': 'time',
               'units': 'days since 2000-01-01 00:00:00',
               },
@@ -73,7 +64,7 @@ def define_write_clisccp():
     define_write_var(axis_ids, 'clisccp', '1', values)
 
 def define_write_landcoverfrac():
-    cmor.load_table('CMIP5_Lmon')
+    cmor.load_table('Tables/CMIP6_Lmon.json')
     axes = [ {'table_entry': 'time',
               'units': 'days since 2000-01-01 00:00:00',
               },
diff --git a/Test/test_python_jamie_9.json b/Test/test_python_jamie_9.json
new file mode 100644
index 0000000..c618eb2
--- /dev/null
+++ b/Test/test_python_jamie_9.json
@@ -0,0 +1,62 @@
+{
+           "_control_vocabulary_file": "CMIP6_CV.json",
+           "_cmip6_option":           "CMIP6",
+
+    "activity_id":                  "CMIP",
+    "outpath":                      "CMIP6",
+    "experiment_id":                "piControl",
+    "calendar":                     "360_day",
+    "realization_index":            "1",
+    "initialization_index":         "1",
+    "physics_index":                "1",
+    "forcing_index":                "1",
+     "source_type":                      "AOGCM",
+     "sub_experiment":                      "none",
+     "sub_experiment_id":                      "none",
+     "parent_sub_experiment_id":                      "N/A",
+     "parent_mip_era":                      "N/A",
+     "mip_era":                      "CMIP6",
+    "contact ":                     "Python Coder (python at a.b.com) ",
+    "institution_id":                 "PCMDI",
+    "model_id":                     "GICCM1",
+    "history":                      "output from archivcl_A1.nce/giccm_03_std_2xCO2_2256.",
+    "comment":                      "equilibrium reached after 30-year spin-up ",
+    "references":                   "model described by Koder and Tolkien ",
+    "model_id":                     "pcmdi-10a", 
+    "parent_experiment_rip":        "r1i3p2",
+    "parent_experiment_id":         "lgm",
+    "parent_variant_label":            "r1i3p2",
+    "branch_time":                  "0",
+
+
+    "parent_activity_id":           "CMIP",
+    "parent_source_id":             "GFDL-CM2-1",
+    "parent_variant_label":            "r1i1p1f3",
+
+    "branch_method":                "standard",
+    "branch_time_in_child":         "00D0",
+    "branch_time_in_parent":        "3650.0D0",
+    "branch_time_units_in_parent":  "days since 1000-1-1",
+
+    "further_info_url":             "http://furtherinfo.es-doc.org/<mip_era><institution_id><source_id><experiment_id><sub_experiment_id><variant_label>",
+    "grid":                         "native atmosphere T63 gaussian grid (64x128 latxlon)",
+    "grid_label":                  "gn",
+    "grid_resolution":              "5 km",
+
+    "institution_id":               "CSIRO-BOM",
+    "institution":                  "Commonwealth Scientific and Industrial Research Organisation, Australia, and Bureau of Meteorology, Australia",
+
+    "references":                   "Model described by Koder and Tolkien (J. Geophys. Res.,2001, 576 - 591).  Also see http://www.GICC.su/giccm/doc/index.html  2XCO2 simulation described in Dorkey et al. '(Clim. Dyn., 2003, 323 - 357.)",
+    "run_variant":                  "forcing: black carbon aerosol only",
+    "source_id":                    "NICAM",
+    "source":                       "NICAM:",
+    "output_path_template":         "<activity_id><institution_id><source_id><experiment_id><variant_label><table><variable_id><grid_label><version>",
+    "output_file_template":         "<variable_id><table><experiment_id><source_id><variant_label><grid_label>",
+
+    "license":                      "One of 2 licenses: ----- CMIP6 model data produced by <Your CentreName> is licensed under a Creative Commons Attribution 'NonCommercial Share Alike' 4.0 International License (http://creativecommons.org/licenses/by/4.0/). Use of the data should be acknowledged following guidelines found at <what URL???> The data is hosted via the Earth System Grid Federation. Permissions beyond the scope of this license may be available at http://pcmdi.org/cmip5/terms [...]
+
+
+}
+
+
+
diff --git a/Test/test_python_jamie_9.py b/Test/test_python_jamie_9.py
index 26cd1ce..ae0b646 100644
--- a/Test/test_python_jamie_9.py
+++ b/Test/test_python_jamie_9.py
@@ -6,24 +6,16 @@ def main():
     
     cmor.setup(inpath='Tables',
                netcdf_file_action = cmor.CMOR_REPLACE_3)
-    cmor.dataset('pre-industrial control', 'ukmo', 'HadCM3', '360_day',
-                 institute_id = 'ukmo',
-                 model_id = 'HadCM3',
-                 history = 'some global history',
-                 forcing = 'N/A',
-                 parent_experiment_id = 'N/A',
-                 parent_experiment_rip = 'N/A',
-                 branch_time = 0,
-                 contact = 'brian clough')
+    cmor.dataset_json("Test/test_python_jamie_9.json")
  
-    table = 'CMIP5_Amon'
+    table = 'CMIP6_Amon.json'
     cmor.load_table(table)
     axes = [ {'table_entry': 'time',
               'units': 'days since 2000-01-01 00:00:00',
               },
-             {'table_entry': 'plevs',
+             {'table_entry': 'plev17',
               'units': 'Pa',
-              'coord_vals': '100000. 92500. 85000. 70000. 60000. 50000. 40000. 30000. 25000. 20000. 15000. 10000. 7000. 5000. 3000. 2000. 1000.'.split(' ')},
+              'coord_vals': map(float,'100000. 92500. 85000. 70000. 60000. 50000. 40000. 30000. 25000. 20000. 15000. 10000. 7000. 5000. 3000. 2000. 1000.'.split(' '))},
              {'table_entry': 'latitude',
               'units': 'degrees_north',
               'coord_vals': [0],
@@ -41,7 +33,7 @@ def main():
         axis_id = cmor.axis(**axis)
         axis_ids.append(axis_id)
 
-    for var, units, value in (('ta', 'K', 274), ('ua', 'm s-1', 10)):
+    for var, units, value in (('ta', 'K', 274), ('ua', 'm s-1', 10) ):
         values = numpy.array([value,]*len(axes[1]['coord_vals']), numpy.float32)
         varid = cmor.variable(var,
                               units,
diff --git a/Test/test_python_jamie_site_surface.json b/Test/test_python_jamie_site_surface.json
new file mode 100644
index 0000000..c618eb2
--- /dev/null
+++ b/Test/test_python_jamie_site_surface.json
@@ -0,0 +1,62 @@
+{
+           "_control_vocabulary_file": "CMIP6_CV.json",
+           "_cmip6_option":           "CMIP6",
+
+    "activity_id":                  "CMIP",
+    "outpath":                      "CMIP6",
+    "experiment_id":                "piControl",
+    "calendar":                     "360_day",
+    "realization_index":            "1",
+    "initialization_index":         "1",
+    "physics_index":                "1",
+    "forcing_index":                "1",
+     "source_type":                      "AOGCM",
+     "sub_experiment":                      "none",
+     "sub_experiment_id":                      "none",
+     "parent_sub_experiment_id":                      "N/A",
+     "parent_mip_era":                      "N/A",
+     "mip_era":                      "CMIP6",
+    "contact ":                     "Python Coder (python at a.b.com) ",
+    "institution_id":                 "PCMDI",
+    "model_id":                     "GICCM1",
+    "history":                      "output from archivcl_A1.nce/giccm_03_std_2xCO2_2256.",
+    "comment":                      "equilibrium reached after 30-year spin-up ",
+    "references":                   "model described by Koder and Tolkien ",
+    "model_id":                     "pcmdi-10a", 
+    "parent_experiment_rip":        "r1i3p2",
+    "parent_experiment_id":         "lgm",
+    "parent_variant_label":            "r1i3p2",
+    "branch_time":                  "0",
+
+
+    "parent_activity_id":           "CMIP",
+    "parent_source_id":             "GFDL-CM2-1",
+    "parent_variant_label":            "r1i1p1f3",
+
+    "branch_method":                "standard",
+    "branch_time_in_child":         "00D0",
+    "branch_time_in_parent":        "3650.0D0",
+    "branch_time_units_in_parent":  "days since 1000-1-1",
+
+    "further_info_url":             "http://furtherinfo.es-doc.org/<mip_era><institution_id><source_id><experiment_id><sub_experiment_id><variant_label>",
+    "grid":                         "native atmosphere T63 gaussian grid (64x128 latxlon)",
+    "grid_label":                  "gn",
+    "grid_resolution":              "5 km",
+
+    "institution_id":               "CSIRO-BOM",
+    "institution":                  "Commonwealth Scientific and Industrial Research Organisation, Australia, and Bureau of Meteorology, Australia",
+
+    "references":                   "Model described by Koder and Tolkien (J. Geophys. Res.,2001, 576 - 591).  Also see http://www.GICC.su/giccm/doc/index.html  2XCO2 simulation described in Dorkey et al. '(Clim. Dyn., 2003, 323 - 357.)",
+    "run_variant":                  "forcing: black carbon aerosol only",
+    "source_id":                    "NICAM",
+    "source":                       "NICAM:",
+    "output_path_template":         "<activity_id><institution_id><source_id><experiment_id><variant_label><table><variable_id><grid_label><version>",
+    "output_file_template":         "<variable_id><table><experiment_id><source_id><variant_label><grid_label>",
+
+    "license":                      "One of 2 licenses: ----- CMIP6 model data produced by <Your CentreName> is licensed under a Creative Commons Attribution 'NonCommercial Share Alike' 4.0 International License (http://creativecommons.org/licenses/by/4.0/). Use of the data should be acknowledged following guidelines found at <what URL???> The data is hosted via the Earth System Grid Federation. Permissions beyond the scope of this license may be available at http://pcmdi.org/cmip5/terms [...]
+
+
+}
+
+
+
diff --git a/Test/test_python_jamie_site_surface.py b/Test/test_python_jamie_site_surface.py
index f9a325f..f79ad7b 100644
--- a/Test/test_python_jamie_site_surface.py
+++ b/Test/test_python_jamie_site_surface.py
@@ -5,16 +5,7 @@ def cmor_initialisation():
     cmor.setup(inpath='Tables',
                netcdf_file_action = cmor.CMOR_REPLACE_3,
                create_subdirectories = 0)
-    cmor.dataset('pre-industrial control', 'ukmo', 'HadCM3', '360_day',
-                 institute_id = 'ukmo',
-                 model_id = 'HadCM3',
-                 history = 'some global history',
-                 forcing = 'N/A',
-                 parent_experiment_id = 'N/A',
-                 parent_experiment_rip = 'N/A',
-                 branch_time = 0.,
-                 contact = 'bob',
-                 outpath = 'Test')
+    cmor.dataset_json("Test/test_python_jamie_site_surface.json")
 
 def setup_data():
     axes = [ {'table_entry': 'time1',
@@ -29,7 +20,7 @@ def setup_data():
     return values, axes
 
 def cmor_define_and_write(values, axes):
-    table = 'CMIP5_cfSites'
+    table = 'CMIP6_cfSites.json'
     cmor.load_table(table)
     site_axis_id = cmor.axis(**axes[1])
 
diff --git a/Test/test_python_joerg_1.json b/Test/test_python_joerg_1.json
new file mode 100644
index 0000000..27cae30
--- /dev/null
+++ b/Test/test_python_joerg_1.json
@@ -0,0 +1,65 @@
+{
+           "_control_vocabulary_file": "CMIP6_CV.json",
+           "_cmip6_option":           "CMIP6",
+
+    "activity_id":                  "CMIP",
+    "outpath":                      "CMIP6",
+    "experiment_id":                "DcppC2",
+    "source":                       "GICCM1 (2002):",
+    "calendar":                     "360_day",
+    "realization_index":            "1",
+    "initialization_index":         "1",
+    "physics_index":                "1",
+     "source_type":                      "AOGCM",
+     "sub_experiment":                      "none",
+     "sub_experiment_id":                      "none",
+     "parent_sub_experiment_id":                      "N/A",
+     "parent_mip_era":                      "N/A",
+     "mip_era":                      "CMIP6",
+    "forcing_index":                "1",
+    "contact ":                     "Python Coder (python at a.b.com) ",
+    "institution_id":                 "PCMDI",
+    "model_id":                     "GICCM1",
+    "history":                      "output from archivcl_A1.nce/giccm_03_std_2xCO2_2256.",
+    "comment":                      "equilibrium reached after 30-year spin-up ",
+    "references":                   "model described by Koder and Tolkien ",
+    "model_id":                     "pcmdi-10a", 
+    "parent_experiment_rip":        "r1i3p2",
+    "parent_experiment_id":         "lgm",
+    "parent_variant_label":            "r1i3p2",
+    "branch_time":                  "0",
+
+
+    "parent_activity_id":           "CMIP",
+    "parent_source_id":             "GFDL-CM2-1",
+    "parent_variant_label":            "r1i1p1f3",
+
+    "branch_method":                "standard",
+    "branch_time_in_child":         "00D0",
+    "branch_time_in_parent":       "3650.0D0",
+    "branch_time_units_in_parent":  "days since 1000-1-1",
+
+    "further_info_url":             "http://furtherinfo.es-doc.org/<mip_era><institution_id><source_id><experiment_id><sub_experiment_id><variant_label>",
+    "grid":                         "native atmosphere T63 gaussian grid (64x128 latxlon)",
+    "grid_label":                  "gn",
+    "grid_resolution":              "5 km",
+
+    "institution_id":               "CSIRO-BOM",
+    "institution":                  "Commonwealth Scientific and Industrial Research Organisation, Australia, and Bureau of Meteorology, Australia",
+    "parent_experiment_id":         "historical",
+    "parent_source_id":             "required",
+    "parent_variant_label":            "r2i5p4f43",
+
+    "references":                   "Model described by Koder and Tolkien (J. Geophys. Res.,2001, 576 - 591).  Also see http://www.GICC.su/giccm/doc/index.html  2XCO2 simulation described in Dorkey et al. '(Clim. Dyn., 2003, 323 - 357.)",
+    "run_variant":                  "forcing: black carbon aerosol only",
+    "source_id":                    "required",
+    "output_path_template":         "<activity_id><institution_id><source_id><experiment_id><variant_label><table><variable_id><grid_label><version>",
+    "output_file_template":         "<variable_id><table><experiment_id><source_id><variant_label><grid_label>",
+
+    "license":                      "One of 2 licenses: ----- CMIP6 model data produced by <Your CentreName> is licensed under a Creative Commons Attribution 'NonCommercial Share Alike' 4.0 International License (http://creativecommons.org/licenses/by/4.0/). Use of the data should be acknowledged following guidelines found at <what URL???> The data is hosted via the Earth System Grid Federation. Permissions beyond the scope of this license may be available at http://pcmdi.org/cmip5/terms [...]
+
+
+}
+
+
+
diff --git a/Test/test_python_joerg_1.py b/Test/test_python_joerg_1.py
index 84a4dde..64261f6 100644
--- a/Test/test_python_joerg_1.py
+++ b/Test/test_python_joerg_1.py
@@ -1,23 +1,8 @@
 import cmor,numpy
 
-error_flag = cmor.setup(inpath='Test', netcdf_file_action=cmor.CMOR_REPLACE)
-  
-error_flag = cmor.dataset(                                   
-       outpath='Test',                                         
-       experiment_id='noVolc2000',
-       institution= 'GICC (Generic International Climate Center, Geneva, Switzerland)',                                 
-       source='GICCM1 (2002): ',
-       calendar='360_day',                                      
-       realization=1,                                          
-       contact = 'Rusty Koder (koder at middle_earth.net) ',      
-       history='Output from archivcl_A1.nce/giccm_03_std_2xCO2_2256.', 
-       comment='Equilibrium reached after 30-year spin-up ',                                 
-       references='Model described by Koder and Tolkien ',
-       model_id="pcmdi-10a", 
-       forcing="co2",
-       parent_experiment_rip="r1i3p2",
-       parent_experiment_id="lgm",branch_time=0)
+error_flag = cmor.setup(inpath='Tables', netcdf_file_action=cmor.CMOR_REPLACE)
   
+error_flag = cmor.dataset_json("Test/test_python_joerg_1.json")
 
 # creates 1 degree grid
 nlat=180
@@ -26,7 +11,7 @@ alats = numpy.arange(180)-89.5
 bnds_lat = numpy.arange(181)-90
 alons=numpy.arange(360)+.5
 bnds_lon=numpy.arange(361)
-cmor.load_table("Tables/CMIP5_Amon")
+cmor.load_table("Tables/CMIP6_Amon.json")
 #cmor.load_table("Test/IPCC_table_A1")
 ilat = cmor.axis(  
     table_entry='latitude',       
diff --git a/Test/test_python_joerg_10.json b/Test/test_python_joerg_10.json
new file mode 100644
index 0000000..c618eb2
--- /dev/null
+++ b/Test/test_python_joerg_10.json
@@ -0,0 +1,62 @@
+{
+           "_control_vocabulary_file": "CMIP6_CV.json",
+           "_cmip6_option":           "CMIP6",
+
+    "activity_id":                  "CMIP",
+    "outpath":                      "CMIP6",
+    "experiment_id":                "piControl",
+    "calendar":                     "360_day",
+    "realization_index":            "1",
+    "initialization_index":         "1",
+    "physics_index":                "1",
+    "forcing_index":                "1",
+     "source_type":                      "AOGCM",
+     "sub_experiment":                      "none",
+     "sub_experiment_id":                      "none",
+     "parent_sub_experiment_id":                      "N/A",
+     "parent_mip_era":                      "N/A",
+     "mip_era":                      "CMIP6",
+    "contact ":                     "Python Coder (python at a.b.com) ",
+    "institution_id":                 "PCMDI",
+    "model_id":                     "GICCM1",
+    "history":                      "output from archivcl_A1.nce/giccm_03_std_2xCO2_2256.",
+    "comment":                      "equilibrium reached after 30-year spin-up ",
+    "references":                   "model described by Koder and Tolkien ",
+    "model_id":                     "pcmdi-10a", 
+    "parent_experiment_rip":        "r1i3p2",
+    "parent_experiment_id":         "lgm",
+    "parent_variant_label":            "r1i3p2",
+    "branch_time":                  "0",
+
+
+    "parent_activity_id":           "CMIP",
+    "parent_source_id":             "GFDL-CM2-1",
+    "parent_variant_label":            "r1i1p1f3",
+
+    "branch_method":                "standard",
+    "branch_time_in_child":         "00D0",
+    "branch_time_in_parent":        "3650.0D0",
+    "branch_time_units_in_parent":  "days since 1000-1-1",
+
+    "further_info_url":             "http://furtherinfo.es-doc.org/<mip_era><institution_id><source_id><experiment_id><sub_experiment_id><variant_label>",
+    "grid":                         "native atmosphere T63 gaussian grid (64x128 latxlon)",
+    "grid_label":                  "gn",
+    "grid_resolution":              "5 km",
+
+    "institution_id":               "CSIRO-BOM",
+    "institution":                  "Commonwealth Scientific and Industrial Research Organisation, Australia, and Bureau of Meteorology, Australia",
+
+    "references":                   "Model described by Koder and Tolkien (J. Geophys. Res.,2001, 576 - 591).  Also see http://www.GICC.su/giccm/doc/index.html  2XCO2 simulation described in Dorkey et al. '(Clim. Dyn., 2003, 323 - 357.)",
+    "run_variant":                  "forcing: black carbon aerosol only",
+    "source_id":                    "NICAM",
+    "source":                       "NICAM:",
+    "output_path_template":         "<activity_id><institution_id><source_id><experiment_id><variant_label><table><variable_id><grid_label><version>",
+    "output_file_template":         "<variable_id><table><experiment_id><source_id><variant_label><grid_label>",
+
+    "license":                      "One of 2 licenses: ----- CMIP6 model data produced by <Your CentreName> is licensed under a Creative Commons Attribution 'NonCommercial Share Alike' 4.0 International License (http://creativecommons.org/licenses/by/4.0/). Use of the data should be acknowledged following guidelines found at <what URL???> The data is hosted via the Earth System Grid Federation. Permissions beyond the scope of this license may be available at http://pcmdi.org/cmip5/terms [...]
+
+
+}
+
+
+
diff --git a/Test/test_python_joerg_10.py b/Test/test_python_joerg_10.py
index b1adc61..8d9a221 100644
--- a/Test/test_python_joerg_10.py
+++ b/Test/test_python_joerg_10.py
@@ -2,8 +2,8 @@ from test_python_common import * # common subroutines
 
 import cmor._cmor
 import os
-
 pth = os.path.split(os.path.realpath(os.curdir))
+
 if pth[-1]=='Test':
     ipth = opth = '.'
 else:
@@ -16,32 +16,14 @@ myvars=numpy.zeros(9,dtype='i')
 
 
 cmor.setup(inpath=ipth,set_verbosity=cmor.CMOR_NORMAL, netcdf_file_action = cmor.CMOR_REPLACE, exit_control = cmor.CMOR_EXIT_ON_MAJOR);
-cmor.dataset(
-    outpath = opth,
-    experiment_id = "historical",
-    institution = "GICC (Generic International Climate Center, Geneva, Switzerland)",
-    source = "GICCM1 2002: atmosphere:  GICAM3 (gicam_0_brnchT_itea_2, T63L32); ocean: MOM (mom3_ver_3.5.2, 2x3L15); sea ice: GISIM4; land: GILSM2.5",
-    calendar = "standard",
-    realization = 1,
-    contact = "Rusty Koder (koder at middle_earth.net)",
-    history = "Output from archive/giccm_03_std_2xCO2_2256.",
-    comment = "Equilibrium reached after 30-year spin-up after which data were output starting with nominal date of January 2030",
-    references = "Model described by Koder and Tolkien (J. Geophys. Res., 2001, 576-591).  Also see http://www.GICC.su/giccm/doc/index.html  2XCO2 simulation described in Dorkey et al. '(Clim. Dyn., 2003, 323-357.)",
-    leap_year=0,
-    leap_month=0,
-    month_lengths=None,
-    model_id="GICCM1",
-    forcing="Ant, Nat",
-    institute_id="pcmdi",
-    parent_experiment_rip="r1i1p1",
-    parent_experiment_id="piControl",branch_time=18336.33)
+cmor.dataset_json("Test/test_python_joerg_10.json")
 
 #cmor.set_cur_dataset_attribute("parent_experiment_rip","r1i1p1")
 
 tables=[]
-a = cmor.load_table("Tables/CMIP5_grids")
+a = cmor.load_table("Tables/CMIP6_grids.json")
 tables.append(a)
-tables.append(cmor.load_table("Tables/CMIP5_Omon"))
+tables.append(cmor.load_table("Tables/CMIP6_Omon.json"))
 print 'Tables ids:',tables
 
 cmor.set_table(tables[0])
@@ -57,6 +39,7 @@ myaxes[1] = cmor.axis(table_entry = 'x',
                       units = 'm', 
                       coord_vals = x)
 
+
 grid_id = cmor.grid(axis_ids = myaxes[:2], 
                     latitude = lat_coords, 
                     longitude = lon_coords, 
@@ -78,10 +61,14 @@ myaxes[2] = grid_id
 ##                       parameter_units = punits)
 
 cmor.set_table(tables[1])
+myaxes[4] = cmor.axis(table_entry = "depth_coord",
+                     coord_vals=[0],
+                     cell_bounds=[0,1],
+                     units="m")
 myaxes[3] = cmor.axis(table_entry = 'time',
                       units = 'months since 1980')
 
-pass_axes = [myaxes[3],myaxes[2]]
+pass_axes = [myaxes[3],myaxes[4],myaxes[2]]
 
 print 'ok going to cmorvar'
 myvars[0] = cmor.variable( table_entry = 'calc',
@@ -95,9 +82,15 @@ myvars[0] = cmor.variable( table_entry = 'calc',
 ntimes=2
 for i in range(0,ntimes,2):
     data2d_1 = read_2d_input_files(i,   varin2d[0], lat,lon)
+    data2d_1 = numpy.expand_dims(data2d_1,axis=0)
     data2d_2 = read_2d_input_files(i+1, varin2d[0], lat,lon)
+    data2d_2 = numpy.expand_dims(data2d_2,axis=0)
     data2d=numpy.array((data2d_1,data2d_2))
-    print 'writing time: ',i,data2d.shape,data2d
+    #data2d=numpy.expand_dims(data2d, axis=0)
+    #print data2d.shape
+    print 'writing time: ',i
+    print data2d.shape
+    print data2d
     print Time[i:i+2],bnds_time[2*i:2*i+4]    
     cmor.write(myvars[0],data2d,2,time_vals=numpy.arange(i,i+2),time_bnds=numpy.arange(i,i+3))
 cmor.close()
diff --git a/Test/test_python_joerg_11.json b/Test/test_python_joerg_11.json
new file mode 100644
index 0000000..c618eb2
--- /dev/null
+++ b/Test/test_python_joerg_11.json
@@ -0,0 +1,62 @@
+{
+           "_control_vocabulary_file": "CMIP6_CV.json",
+           "_cmip6_option":           "CMIP6",
+
+    "activity_id":                  "CMIP",
+    "outpath":                      "CMIP6",
+    "experiment_id":                "piControl",
+    "calendar":                     "360_day",
+    "realization_index":            "1",
+    "initialization_index":         "1",
+    "physics_index":                "1",
+    "forcing_index":                "1",
+     "source_type":                      "AOGCM",
+     "sub_experiment":                      "none",
+     "sub_experiment_id":                      "none",
+     "parent_sub_experiment_id":                      "N/A",
+     "parent_mip_era":                      "N/A",
+     "mip_era":                      "CMIP6",
+    "contact ":                     "Python Coder (python at a.b.com) ",
+    "institution_id":                 "PCMDI",
+    "model_id":                     "GICCM1",
+    "history":                      "output from archivcl_A1.nce/giccm_03_std_2xCO2_2256.",
+    "comment":                      "equilibrium reached after 30-year spin-up ",
+    "references":                   "model described by Koder and Tolkien ",
+    "model_id":                     "pcmdi-10a", 
+    "parent_experiment_rip":        "r1i3p2",
+    "parent_experiment_id":         "lgm",
+    "parent_variant_label":            "r1i3p2",
+    "branch_time":                  "0",
+
+
+    "parent_activity_id":           "CMIP",
+    "parent_source_id":             "GFDL-CM2-1",
+    "parent_variant_label":            "r1i1p1f3",
+
+    "branch_method":                "standard",
+    "branch_time_in_child":         "00D0",
+    "branch_time_in_parent":        "3650.0D0",
+    "branch_time_units_in_parent":  "days since 1000-1-1",
+
+    "further_info_url":             "http://furtherinfo.es-doc.org/<mip_era><institution_id><source_id><experiment_id><sub_experiment_id><variant_label>",
+    "grid":                         "native atmosphere T63 gaussian grid (64x128 latxlon)",
+    "grid_label":                  "gn",
+    "grid_resolution":              "5 km",
+
+    "institution_id":               "CSIRO-BOM",
+    "institution":                  "Commonwealth Scientific and Industrial Research Organisation, Australia, and Bureau of Meteorology, Australia",
+
+    "references":                   "Model described by Koder and Tolkien (J. Geophys. Res.,2001, 576 - 591).  Also see http://www.GICC.su/giccm/doc/index.html  2XCO2 simulation described in Dorkey et al. '(Clim. Dyn., 2003, 323 - 357.)",
+    "run_variant":                  "forcing: black carbon aerosol only",
+    "source_id":                    "NICAM",
+    "source":                       "NICAM:",
+    "output_path_template":         "<activity_id><institution_id><source_id><experiment_id><variant_label><table><variable_id><grid_label><version>",
+    "output_file_template":         "<variable_id><table><experiment_id><source_id><variant_label><grid_label>",
+
+    "license":                      "One of 2 licenses: ----- CMIP6 model data produced by <Your CentreName> is licensed under a Creative Commons Attribution 'NonCommercial Share Alike' 4.0 International License (http://creativecommons.org/licenses/by/4.0/). Use of the data should be acknowledged following guidelines found at <what URL???> The data is hosted via the Earth System Grid Federation. Permissions beyond the scope of this license may be available at http://pcmdi.org/cmip5/terms [...]
+
+
+}
+
+
+
diff --git a/Test/test_python_joerg_11.py b/Test/test_python_joerg_11.py
index 333ed2e..026625a 100644
--- a/Test/test_python_joerg_11.py
+++ b/Test/test_python_joerg_11.py
@@ -4,10 +4,6 @@ import cmor._cmor
 import os
 
 pth = os.path.split(os.path.realpath(os.curdir))
-if pth[-1]=='Test':
-    ipth = opth = '.'
-else:
-    ipth = opth = 'Test'
 
 
 myaxes=numpy.zeros(9,dtype='i')
@@ -15,32 +11,13 @@ myaxes2=numpy.zeros(9,dtype='i')
 myvars=numpy.zeros(9,dtype='i')
 
 
-cmor.setup(inpath=ipth,set_verbosity=cmor.CMOR_NORMAL, netcdf_file_action = cmor.CMOR_REPLACE, exit_control = cmor.CMOR_EXIT_ON_MAJOR);
-cmor.dataset(
-    outpath = opth,
-    experiment_id = "historical",
-    institution = "GICC (Generic International Climate Center, Geneva, Switzerland)",
-    source = "GICCM1 2002: atmosphere:  GICAM3 (gicam_0_brnchT_itea_2, T63L32); ocean: MOM (mom3_ver_3.5.2, 2x3L15); sea ice: GISIM4; land: GILSM2.5",
-    calendar = "standard",
-    realization = 1,
-    contact = "Rusty Koder (koder at middle_earth.net)",
-    history = "Output from archive/giccm_03_std_2xCO2_2256.",
-    comment = "Equilibrium reached after 30-year spin-up after which data were output starting with nominal date of January 2030",
-    references = "Model described by Koder and Tolkien (J. Geophys. Res., 2001, 576-591).  Also see http://www.GICC.su/giccm/doc/index.html  2XCO2 simulation described in Dorkey et al. '(Clim. Dyn., 2003, 323-357.)",
-    leap_year=0,
-    leap_month=0,
-    month_lengths=None,
-    model_id="GICCM1",
-    forcing="Ant, Nat",
-    institute_id="pcmdi",
-    parent_experiment_id="piControl",
-    parent_experiment_rip="r1i1p1",
-    branch_time=18336.33)
+cmor.setup(inpath="Tables",set_verbosity=cmor.CMOR_NORMAL, netcdf_file_action = cmor.CMOR_REPLACE, exit_control = cmor.CMOR_EXIT_ON_MAJOR);
+cmor.dataset_json("Test/test_python_joerg_11.json")
 
 tables=[]
-a = cmor.load_table("Tables/CMIP5_grids")
+a = cmor.load_table("Tables/CMIP6_grids.json")
 tables.append(a)
-tables.append(cmor.load_table("Tables/CMIP5_Omon"))
+tables.append(cmor.load_table("Tables/CMIP6_Omon.json"))
 print 'Tables ids:',tables
 
 cmor.set_table(tables[0])
diff --git a/Test/test_python_joerg_12.json b/Test/test_python_joerg_12.json
new file mode 100644
index 0000000..c618eb2
--- /dev/null
+++ b/Test/test_python_joerg_12.json
@@ -0,0 +1,62 @@
+{
+           "_control_vocabulary_file": "CMIP6_CV.json",
+           "_cmip6_option":           "CMIP6",
+
+    "activity_id":                  "CMIP",
+    "outpath":                      "CMIP6",
+    "experiment_id":                "piControl",
+    "calendar":                     "360_day",
+    "realization_index":            "1",
+    "initialization_index":         "1",
+    "physics_index":                "1",
+    "forcing_index":                "1",
+     "source_type":                      "AOGCM",
+     "sub_experiment":                      "none",
+     "sub_experiment_id":                      "none",
+     "parent_sub_experiment_id":                      "N/A",
+     "parent_mip_era":                      "N/A",
+     "mip_era":                      "CMIP6",
+    "contact ":                     "Python Coder (python at a.b.com) ",
+    "institution_id":                 "PCMDI",
+    "model_id":                     "GICCM1",
+    "history":                      "output from archivcl_A1.nce/giccm_03_std_2xCO2_2256.",
+    "comment":                      "equilibrium reached after 30-year spin-up ",
+    "references":                   "model described by Koder and Tolkien ",
+    "model_id":                     "pcmdi-10a", 
+    "parent_experiment_rip":        "r1i3p2",
+    "parent_experiment_id":         "lgm",
+    "parent_variant_label":            "r1i3p2",
+    "branch_time":                  "0",
+
+
+    "parent_activity_id":           "CMIP",
+    "parent_source_id":             "GFDL-CM2-1",
+    "parent_variant_label":            "r1i1p1f3",
+
+    "branch_method":                "standard",
+    "branch_time_in_child":         "00D0",
+    "branch_time_in_parent":        "3650.0D0",
+    "branch_time_units_in_parent":  "days since 1000-1-1",
+
+    "further_info_url":             "http://furtherinfo.es-doc.org/<mip_era><institution_id><source_id><experiment_id><sub_experiment_id><variant_label>",
+    "grid":                         "native atmosphere T63 gaussian grid (64x128 latxlon)",
+    "grid_label":                  "gn",
+    "grid_resolution":              "5 km",
+
+    "institution_id":               "CSIRO-BOM",
+    "institution":                  "Commonwealth Scientific and Industrial Research Organisation, Australia, and Bureau of Meteorology, Australia",
+
+    "references":                   "Model described by Koder and Tolkien (J. Geophys. Res.,2001, 576 - 591).  Also see http://www.GICC.su/giccm/doc/index.html  2XCO2 simulation described in Dorkey et al. '(Clim. Dyn., 2003, 323 - 357.)",
+    "run_variant":                  "forcing: black carbon aerosol only",
+    "source_id":                    "NICAM",
+    "source":                       "NICAM:",
+    "output_path_template":         "<activity_id><institution_id><source_id><experiment_id><variant_label><table><variable_id><grid_label><version>",
+    "output_file_template":         "<variable_id><table><experiment_id><source_id><variant_label><grid_label>",
+
+    "license":                      "One of 2 licenses: ----- CMIP6 model data produced by <Your CentreName> is licensed under a Creative Commons Attribution 'NonCommercial Share Alike' 4.0 International License (http://creativecommons.org/licenses/by/4.0/). Use of the data should be acknowledged following guidelines found at <what URL???> The data is hosted via the Earth System Grid Federation. Permissions beyond the scope of this license may be available at http://pcmdi.org/cmip5/terms [...]
+
+
+}
+
+
+
diff --git a/Test/test_python_joerg_12.py b/Test/test_python_joerg_12.py
index 3d413d5..120ee72 100644
--- a/Test/test_python_joerg_12.py
+++ b/Test/test_python_joerg_12.py
@@ -16,31 +16,12 @@ myvars=numpy.zeros(9,dtype='i')
 
 
 cmor.setup(inpath=ipth,set_verbosity=cmor.CMOR_NORMAL, netcdf_file_action = cmor.CMOR_REPLACE, exit_control = cmor.CMOR_EXIT_ON_MAJOR);
-cmor.dataset(
-    outpath = opth,
-    experiment_id = "historical",
-    institution = "GICC (Generic International Climate Center, Geneva, Switzerland)",
-    source = "GICCM1 2002: atmosphere:  GICAM3 (gicam_0_brnchT_itea_2, T63L32); ocean: MOM (mom3_ver_3.5.2, 2x3L15); sea ice: GISIM4; land: GILSM2.5",
-    calendar = "standard",
-    realization = 1,
-    contact = "Rusty Koder (koder at middle_earth.net)",
-    history = "Output from archive/giccm_03_std_2xCO2_2256.",
-    comment = "Equilibrium reached after 30-year spin-up after which data were output starting with nominal date of January 2030",
-    references = "Model described by Koder and Tolkien (J. Geophys. Res., 2001, 576-591).  Also see http://www.GICC.su/giccm/doc/index.html  2XCO2 simulation described in Dorkey et al. '(Clim. Dyn., 2003, 323-357.)",
-    leap_year=0,
-    leap_month=0,
-    month_lengths=None,
-    model_id="GICCM1",
-    forcing="Ant, Nat",
-    institute_id="pcmdi",
-    parent_experiment_id="piControl",
-    parent_experiment_rip="r1i1p1",
-    branch_time=18336.33)
+cmor.dataset_json("Test/test_python_joerg_12.json")
 
 tables=[]
-a = cmor.load_table("Tables/CMIP5_grids")
+a = cmor.load_table("Tables/CMIP6_grids.json")
 tables.append(a)
-tables.append(cmor.load_table("Tables/CMIP5_Lmon"))
+tables.append(cmor.load_table("Tables/CMIP6_Lmon.json"))
 print 'Tables ids:',tables
 
 cmor.set_table(tables[0])
diff --git a/Test/test_python_joerg_2.json b/Test/test_python_joerg_2.json
new file mode 100644
index 0000000..686b547
--- /dev/null
+++ b/Test/test_python_joerg_2.json
@@ -0,0 +1,62 @@
+{
+           "_control_vocabulary_file": "CMIP6_CV.json",
+           "_cmip6_option":           "CMIP6",
+
+    "activity_id":                  "CMIP",
+    "outpath":                      "CMIP6",
+    "experiment_id":                "piControl",
+    "calendar":                     "360_day",
+    "realization_index":            "1",
+    "initialization_index":         "1",
+    "physics_index":                "1",
+    "forcing_index":                "1",
+     "source_type":                      "AOGCM",
+     "sub_experiment":                      "none",
+     "sub_experiment_id":                      "none",
+     "parent_sub_experiment_id":                      "N/A",
+     "parent_mip_era":                      "N/A",
+     "mip_era":                      "CMIP6",
+    "contact ":                     "Python Coder (python at a.b.com) ",
+    "institution_id":                 "PCMDI",
+    "model_id":                     "GICCM1",
+    "history":                      "output from archivcl_A1.nce/giccm_03_std_2xCO2_2256.",
+    "comment":                      "equilibrium reached after 30-year spin-up ",
+    "references":                   "model described by Koder and Tolkien ",
+    "model_id":                     "pcmdi-10a", 
+    "parent_experiment_rip":        "r1i3p2",
+    "parent_experiment_id":         "lgm",
+    "parent_variant_label":            "r1i3p2",
+    "branch_time":                  "0",
+
+
+    "parent_activity_id":           "CMIP",
+    "parent_source_id":             "GFDL-CM2-1",
+    "parent_variant_label":            "r1i1p1f3",
+
+    "branch_method":                "standard",
+    "branch_time_in_child":         "00D0",
+    "branch_time_in_parent":       "3650.0D0",
+    "branch_time_units_in_parent":  "days since 1000-1-1",
+
+    "further_info_url":             "http://furtherinfo.es-doc.org/<mip_era><institution_id><source_id><experiment_id><sub_experiment_id><variant_label>",
+    "grid":                         "native atmosphere T63 gaussian grid (64x128 latxlon)",
+    "grid_label":                  "gn",
+    "grid_resolution":              "5 km",
+
+    "institution_id":               "CSIRO-BOM",
+    "institution":                  "Commonwealth Scientific and Industrial Research Organisation, Australia, and Bureau of Meteorology, Australia",
+
+    "references":                   "Model described by Koder and Tolkien (J. Geophys. Res.,2001, 576 - 591).  Also see http://www.GICC.su/giccm/doc/index.html  2XCO2 simulation described in Dorkey et al. '(Clim. Dyn., 2003, 323 - 357.)",
+    "run_variant":                  "forcing: black carbon aerosol only",
+    "source_id":                    "NICAM",
+    "source":                       "NICAM:",
+    "output_path_template":         "<activity_id><institution_id><source_id><experiment_id><variant_label><table><variable_id><grid_label><version>",
+    "output_file_template":         "<variable_id><table><experiment_id><source_id><variant_label><grid_label>",
+
+    "license":                      "One of 2 licenses: ----- CMIP6 model data produced by <Your CentreName> is licensed under a Creative Commons Attribution 'NonCommercial Share Alike' 4.0 International License (http://creativecommons.org/licenses/by/4.0/). Use of the data should be acknowledged following guidelines found at <what URL???> The data is hosted via the Earth System Grid Federation. Permissions beyond the scope of this license may be available at http://pcmdi.org/cmip5/terms [...]
+
+
+}
+
+
+
diff --git a/Test/test_python_joerg_2.py b/Test/test_python_joerg_2.py
index 1fa23aa..54c1c9f 100644
--- a/Test/test_python_joerg_2.py
+++ b/Test/test_python_joerg_2.py
@@ -6,16 +6,9 @@ import numpy
 def test_mode(mode,i,suffix=''):
     cmor.setup(inpath='Tables',
                netcdf_file_action = mode)
-    cmor.dataset('pre-industrial control', 'ukmo', 'HadCM3', '360_day',
-                 institute_id = 'ukmo',
-                 model_id = 'HadCM3',
-                 forcing="TO",
-                 contact="Derek Jeter",
-                 history = 'some global history',
-                 parent_experiment_rip="r1i3p2",
-                 parent_experiment_id="lgm",branch_time=0)
+    cmor.dataset_json("Test/test_python_joerg_2.json")
     
-    table = 'CMIP5_Amon'
+    table = 'CMIP6_Amon.json'
     cmor.load_table(table)
     levels = [100000.,
               92500.,
@@ -52,7 +45,7 @@ def test_mode(mode,i,suffix=''):
               'units': 'degrees_east',
               'coord_vals': [90],
               'cell_bounds': [89, 91]},
-             {'table_entry': 'plevs',
+             {'table_entry': 'plev17',
               'units': 'Pa',
               'coord_vals': levels},
              ]
@@ -70,9 +63,8 @@ def test_mode(mode,i,suffix=''):
                               history = 'variable history',
                               missing_value = -99
                               )
-        print 'suffix is:',suffix
         print "Sending time bounds:",[[i,i+1]]
-        cmor.write(varid, values, time_vals = [i], time_bnds = [ [i,i+1] ],file_suffix=suffix)
+        cmor.write(varid, values, time_vals = [i], time_bnds = [ [i,i+1] ])
 
     fnm = cmor.close(varid,file_name=True)
     cmor.close()
diff --git a/Test/test_python_joerg_3.json b/Test/test_python_joerg_3.json
new file mode 100644
index 0000000..bae180b
--- /dev/null
+++ b/Test/test_python_joerg_3.json
@@ -0,0 +1,51 @@
+{
+    "_control_vocabulary_file": "CMIP6_CV.json",
+    "_cmip6_option":           "CMIP6",
+
+    "outpath":                      "CMIP6",
+    "activity_id":                  "CMIP",
+    "experiment_id":                "piControl",
+    "calendar":                     "360_day",
+    "realization_index":            "1",
+    "initialization_index":         "1",
+    "physics_index":                "1",
+    "forcing_index":                "1",
+    "source_type":                  "AOGCM",
+    "sub_experiment":               "none",
+    "sub_experiment_id":            "none",
+    "parent_sub_experiment_id":     "N/A",
+    "parent_mip_era":               "N/A",
+    "mip_era":                      "CMIP6",
+    "contact ":                     "Python Coder (python at a.b.com) ",
+    "model_id":                     "GICCM1",
+    "model_id":                     "pcmdi-10a", 
+    "branch_time":                  "0",
+    "branch_method":                "standard",
+
+    "parent_activity_id":           "CMIP",
+    "parent_experiment_id":         "lgm",
+    "parent_source_id":             "GFDL-CM2-1",
+    "parent_variant_label":            "r1i1p1f3",
+
+    "further_info_url":             "http://furtherinfo.es-doc.org/<mip_era><institution_id><source_id><experiment_id><sub_experiment_id><variant_label>",
+    "grid":                         "native atmosphere T63 gaussian grid (64x128 latxlon)",
+    "grid_label":                  "gn",
+    "grid_resolution":              "5 km",
+
+    "institution_id":               "CSIRO-BOM",
+    "institution":                  "Commonwealth Scientific and Industrial Research Organisation, Australia, and Bureau of Meteorology, Australia",
+
+    "references":                   "Model described by Koder and Tolkien (J. Geophys. Res.,2001, 576 - 591).  Also see http://www.GICC.su/giccm/doc/index.html  2XCO2 simulation described in Dorkey et al. '(Clim. Dyn., 2003, 323 - 357.)",
+    "run_variant":                  "forcing: black carbon aerosol only",
+    "source_id":                    "NICAM",
+    "source":                       "NICAM:",
+    "output_path_template":         "<activity_id><institution_id><source_id><experiment_id><variant_label><table><variable_id><grid_label><version>",
+    "output_file_template":         "<variable_id><table><experiment_id><source_id><variant_label><grid_label>",
+
+    "license":                      "CMIP6 model data produced by <Your CentreName> is licensed under a Creative Commons Attribution 'NonCommercial Share Alike' 4.0 International License (http://creativecommons.org/licenses/by/4.0/). Use of the data should be acknowledged following guidelines found at <what URL???> The data is hosted via the Earth System Grid Federation. Permissions beyond the scope of this license may be available at http://pcmdi.org/cmip5/terms-of-use.   Individuals us [...]
+
+
+}
+
+
+
diff --git a/Test/test_python_joerg_3.py b/Test/test_python_joerg_3.py
index 4c07fa9..2061950 100644
--- a/Test/test_python_joerg_3.py
+++ b/Test/test_python_joerg_3.py
@@ -6,27 +6,9 @@ nlon=90
 nlev=5
 
 def prep(mode):
-    error_flag = cmor.setup(inpath='Test', netcdf_file_action=mode                       )
-
-    error_flag = cmor.dataset(                                   
-           outpath='Test',                                         
-           experiment_id='noVolc2000',
-           institution= 'GICC (Generic International Climate Center, Geneva, Switzerland)',                                 
-           source='GICCM1 (2002): ',
-           calendar='standard',                                      
-           realization=1,                                          
-           contact = 'Rusty Koder (koder at middle_earth.net) ',      
-           history='Output from archivcl_A1.nce/giccm_03_std_2xCO2_2256.', 
-           comment='Equilibrium reached after 30-year spin-up ',                                 
-           references='Model described by Koder and Tolkien ',
-           institute_id="PCMDI",
-           model_id="GICCM1", 
-           forcing="TO, SO, Nat",
-           ## month_lengths=[30,28,30,30,30,30,30,31,30,31,30,30],
-           ## leap_year=3,
-           ## leap_month=1,
-           parent_experiment_rip="r1i3p2",
-           parent_experiment_id="N/A",branch_time=1)
+    error_flag = cmor.setup(inpath='Tables', netcdf_file_action=mode,logfile="Denis.LOG" )
+
+    error_flag = cmor.dataset_json("Test/test_python_joerg_3.json")
 
 def prep_var(var,units):
     # creates 1 degree grid
@@ -36,7 +18,7 @@ def prep_var(var,units):
     bnds_lat = numpy.arange(-90,90+dlat,dlat)
     alons = numpy.arange(0+dlon/2.,360.,dlon)-180.
     bnds_lon = numpy.arange(0,360.+dlon,dlon)-180.
-    cmor.load_table("Tables/CMIP5_6hrLev")
+    cmor.load_table("Tables/CMIP6_6hrLev.json")
     #cmor.load_table("Test/IPCC_table_A1")
     ilat = cmor.axis(  
         table_entry='latitude',       
@@ -116,8 +98,6 @@ def prep_var(var,units):
     ivar1 =cmor.variable(var,axis_ids=[itim,ilev,ilat,ilon],units=units,missing_value=0.)
     return ivar1,ips
 
-file_suffix1=''
-file_suffix2=''
 for d in range(2):
     mode = cmor.CMOR_APPEND
     if d==0: mode = cmor.CMOR_REPLACE
@@ -126,15 +106,17 @@ for d in range(2):
     ivar2,ips2=prep_var("hus","%")
     for i in range(4):
         tval = [i/4.+d]
-        tbnd = [i/4.+d-.125,i/4.+d+.125]
-        print 'writing time:',i,i/4.,file_suffix1
+        tbnd = [i/4.+d-0.125,i/4.+d+0.125]
+        print 'tvar',tval
+        print 'tbnd',tbnd
+        print 'writing time:',i,i/4.
         data=numpy.random.random((ntimes,nlev,nlat,nlon))*30.+273
         data=data.astype("f")
-        cmor.write(ivar1,data,time_vals=tval,time_bnds=tbnd,file_suffix=file_suffix1)
+        cmor.write(ivar1,data,time_vals=tval,time_bnds=tbnd)
         print 'wrote var 1 time:',i
         data=numpy.random.random((ntimes,nlev,nlat,nlon))
         data=data.astype("f")
-        cmor.write(ivar2,data,time_vals=tval,time_bnds=tbnd,file_suffix=file_suffix2)
+        cmor.write(ivar2,data,time_vals=tval,time_bnds=tbnd)
         print 'wrote var 2 time:',i
         data=numpy.random.random((ntimes,nlat,nlon))*8.+96300.
         data=data.astype("f")
@@ -142,9 +124,10 @@ for d in range(2):
         print 'wrote ps in var 1 time:',i
         cmor.write(ips2,data,store_with=ivar2,ntimes_passed=1,time_vals=tval,time_bnds=tbnd)
         print 'wrote ps in var 2 time:',i
-    file_suffix1=cmor.close(ivar1,True)
-    file_suffix2=cmor.close(ivar2,True)
-    print 'File:',file_suffix1,file_suffix2
+    file1=cmor.close(ivar1,True)
+    file2=cmor.close(ivar2,True)
+    print 'File1:',file1
+    print 'File2:',file2
     cmor.close()
 print cmor.close(ivar1,True)
 cmor.close()
diff --git a/Test/test_python_joerg_4.json b/Test/test_python_joerg_4.json
new file mode 100644
index 0000000..076d49a
--- /dev/null
+++ b/Test/test_python_joerg_4.json
@@ -0,0 +1,62 @@
+{
+           "_control_vocabulary_file": "CMIP6_CV.json",
+           "_cmip6_option":           "CMIP6",
+
+    "activity_id":                  "CMIP",
+    "outpath":                      "CMIP6",
+    "experiment_id":                "piControl",
+    "calendar":                     "360_day",
+    "realization_index":            "1",
+    "initialization_index":         "1",
+    "physics_index":                "1",
+    "forcing_index":                "1",
+     "source_type":                      "AOGCM",
+     "sub_experiment":                      "none",
+     "sub_experiment_id":                      "none",
+     "parent_sub_experiment_id":                      "N/A",
+     "parent_mip_era":                      "N/A",
+     "mip_era":                      "CMIP6",
+    "contact ":                     "Python Coder (python at a.b.com) ",
+    "institution_id":                 "PCMDI",
+    "model_id":                     "GICCM1",
+    "history":                      "output from archivcl_A1.nce/giccm_03_std_2xCO2_2256.",
+    "comment":                      "equilibrium reached after 30-year spin-up ",
+    "references":                   "model described by Koder and Tolkien ",
+    "model_id":                     "pcmdi-10a", 
+    "parent_experiment_rip":        "r1i3p2",
+    "parent_experiment_id":         "lgm",
+    "parent_variant_label":            "r1i3p2",
+    "branch_time":                  "3.1415",
+
+
+    "parent_activity_id":           "CMIP",
+    "parent_source_id":             "GFDL-CM2-1",
+    "parent_variant_label":            "r1i1p1f3",
+
+    "branch_method":                "standard",
+    "branch_time_in_child":         "00D0",
+    "branch_time_in_parent":       "3650.0D0",
+    "branch_time_units_in_parent":  "days since 1000-1-1",
+
+    "further_info_url":             "http://furtherinfo.es-doc.org/<mip_era><institution_id><source_id><experiment_id><sub_experiment_id><variant_label>",
+    "grid":                         "native atmosphere T63 gaussian grid (64x128 latxlon)",
+    "grid_label":                  "gn",
+    "grid_resolution":              "5 km",
+
+    "institution_id":               "CSIRO-BOM",
+    "institution":                  "Commonwealth Scientific and Industrial Research Organisation, Australia, and Bureau of Meteorology, Australia",
+
+    "references":                   "Model described by Koder and Tolkien (J. Geophys. Res.,2001, 576 - 591).  Also see http://www.GICC.su/giccm/doc/index.html  2XCO2 simulation described in Dorkey et al. '(Clim. Dyn., 2003, 323 - 357.)",
+    "run_variant":                  "forcing: black carbon aerosol only",
+    "source_id":                    "NICAM",
+    "source":                       "NICAM:",
+    "output_path_template":         "<activity_id><institution_id><source_id><experiment_id><variant_label><table><variable_id><grid_label><version>",
+    "output_file_template":         "<variable_id><table><experiment_id><source_id><variant_label><grid_label>",
+
+    "license":                      "One of 2 licenses: ----- CMIP6 model data produced by <Your CentreName> is licensed under a Creative Commons Attribution 'NonCommercial Share Alike' 4.0 International License (http://creativecommons.org/licenses/by/4.0/). Use of the data should be acknowledged following guidelines found at <what URL???> The data is hosted via the Earth System Grid Federation. Permissions beyond the scope of this license may be available at http://pcmdi.org/cmip5/terms [...]
+
+
+}
+
+
+
diff --git a/Test/test_python_joerg_4.py b/Test/test_python_joerg_4.py
index 656b90e..adeb027 100644
--- a/Test/test_python_joerg_4.py
+++ b/Test/test_python_joerg_4.py
@@ -1,24 +1,8 @@
 import cmor,numpy
 
-error_flag = cmor.setup(inpath='Test', netcdf_file_action=cmor.CMOR_REPLACE)
-  
-error_flag = cmor.dataset(                                   
-       outpath='Test',                                         
-       experiment_id='noVolc2000',
-       institution= 'GICC (Generic International Climate Center, Geneva, Switzerland)',                                 
-       source='GICCM1 (2002): ',
-       calendar='360_day',                                      
-       realization=1,                                          
-       contact = 'Rusty Koder (koder at middle_earth.net) ',      
-       history='Output from archivcl_A1.nce/giccm_03_std_2xCO2_2256.', 
-       comment='Equilibrium reached after 30-year spin-up ',                                 
-       references='Model described by Koder and Tolkien ',
-       model_id="GICCM1", 
-       institute_id="PCMDI",
-       forcing="Nat, SO",
-       parent_experiment_rip="r1i3p2",
-       parent_experiment_id="lgm",branch_time=3.14159)
+error_flag = cmor.setup(inpath='Tables', netcdf_file_action=cmor.CMOR_REPLACE)
   
+error_flag = cmor.dataset_json("Test/test_python_joerg_4.json")
 
 # creates 1 degree grid
 nlat=18
@@ -27,7 +11,7 @@ alats = numpy.arange(180)-89.5
 bnds_lat = numpy.arange(181)-90
 alons=numpy.arange(360)+.5
 bnds_lon=numpy.arange(361)
-cmor.load_table("Tables/CMIP5_Omon")
+cmor.load_table("Tables/CMIP6_Omon.json")
 ilat = cmor.axis(  
     table_entry='latitude',       
     units='degrees_north',          
@@ -43,9 +27,10 @@ ilon = cmor.axis(
     cell_bounds=bnds_lon)      
 
 ntimes=12
-plevs = numpy.array([-6.0, -17.0, -27.0, -37.0, -47.0, -57.0, -68.0, -82.0, -100.0, -122.0, -150.0, -182.0, -220.0, -262.0, -310.0, -362.0, -420.0, -485.0, -560.0, -645.0, -740.0, -845.0, -960.0, -1085.0, -357.0, -382.0, -407.0, -434.0, -461.0, -490.0, -520.0, -551.0, -584.0, -619.0, -655.0, -693.0, -732.0, -773.0, -816.0, -861.0, -908.0, -957.0, -1009.0, -1063.0, -1119.0, -1178.0, -1240.0, -1304.0, -1372.0, -1442.0, -1516.0, -1594.0, -1675.0, -1760.0, -1849.0, -1942.0, -2039.0, -2140.0, [...]
-
-plevs_bnds = numpy.array([0.0, -11.5, -22.0, -32.0, -42.0, -52.0, -62.5, -75.0, -91.0, -111.0, -136.0, -166.0, -201.0, -241.0, -286.0, -336.0, -391.0, -452.5, -522.5, -602.5, -692.5, -792.5, -902.5, -1022.5, -721.0, -369.5, -394.5, -420.5, -447.5, -475.5, -505.0, -535.5, -567.5, -601.5, -637.0, -674.0, -712.5, -752.5, -794.5, -838.5, -884.5, -932.5, -983.0, -1036.0, -1091.0, -1148.5, -1209.0, -1272.0, -1338.0, -1407.0, -1479.0, -1555.0, -1634.5, -1717.5, -1804.5, -1895.5, -1990.5, -2089. [...]
+plevs = numpy.array([0, 17.0, 27.0, 37.0, 47.0, 57.0, 68.0, 82.0])
+plevs.sort()
+plevs_bnds = numpy.array([0, 11, 22.0, 32.0, 42.0, 52.0, 62.5, 75.0, 91.0 ])
+plevs_bnds.sort()
 
 itim = cmor.axis(  
     table_entry='time',           
@@ -53,6 +38,11 @@ itim = cmor.axis(
     length=ntimes,                
     interval='1 month')
 
+ilev = cmor.axis(  
+            table_entry='depth_coord',       
+            units='m',
+            coord_vals=plevs,             
+            cell_bounds=plevs_bnds)
 try:
     ilev = cmor.axis(  
             table_entry='depth_coord',       
@@ -63,8 +53,8 @@ except:
     pass
 
 var3d_ids = cmor.variable(    
-    table_entry='ta',     
-    units='K',           
+    table_entry='co3',     
+    units='mol m-3',           
     axis_ids=numpy.array((ilev, ilon, ilat, itim)),
     missing_value=numpy.array([1.0e28,],dtype=numpy.float32)[0], 
     original_name='cloud')
diff --git a/Test/test_python_joerg_5.json b/Test/test_python_joerg_5.json
new file mode 100644
index 0000000..192e609
--- /dev/null
+++ b/Test/test_python_joerg_5.json
@@ -0,0 +1,31 @@
+{
+           "_control_vocabulary_file": "CMIP6_CV.json",
+           "_cmip6_option":           "CMIP6",
+
+       "outpath":                        "CMIP6",
+       "experiment_id":                  "DcppC2",
+       "institution":                    "GICC (Generic International Climate Center, Geneva, Switzerland)",
+       "source":                         "GICCM1 (2002):",
+       "calendar":                       "360_day",
+       "realization":                    "1",
+       "contact ":                       "Rusty Koder (koder at middle_earth.net) ",
+       "history":                        "Output from archivcl_A1.nce/giccm_03_std_2xCO2_2256.",
+     "source_type":                      "AOGCM",
+     "sub_experiment":                      "none",
+     "sub_experiment_id":                      "none",
+     "parent_sub_experiment_id":                      "N/A",
+     "parent_mip_era":                      "N/A",
+     "mip_era":                      "CMIP6",
+       "comment":                        "Equilibrium reached after 30-year spin-up ",
+       "references":                     "Model described by Koder and Tolkien ",
+       "model_id":                       "GICCM1",
+       "institution_id":                   "PCMDI",
+       "forcing":                        "Nat, SO",
+       "parent_experiment_rip":          "r1i3p2",
+       "parent_experiment_id":           "lgm",
+       "branch_time":                    "3.14159",
+       "output_path_template":           "<product><institution_id><model_id><experiment_id><frequency><realm><run_variant>",
+       "output_file_template":           "<variable_id><table><model_id><experiment_id><run_variant>"
+
+}
+
diff --git a/Test/test_python_joerg_5.py b/Test/test_python_joerg_5.py
index 7668aba..0012877 100644
--- a/Test/test_python_joerg_5.py
+++ b/Test/test_python_joerg_5.py
@@ -1,23 +1,8 @@
 import cmor,numpy
 
-error_flag = cmor.setup(inpath='Test', netcdf_file_action=cmor.CMOR_REPLACE)
+error_flag = cmor.setup(inpath='Tables', netcdf_file_action=cmor.CMOR_REPLACE)
   
-error_flag = cmor.dataset(                                   
-       outpath='Test',                                         
-       experiment_id='noVolc2000',
-       institution= 'GICC (Generic International Climate Center, Geneva, Switzerland)',                                 
-       source='GICCM1 (2002): ',
-       calendar='360_day',                                      
-       realization=1,                                          
-       contact = 'Rusty Koder (koder at middle_earth.net) ',      
-       history='Output from archivcl_A1.nce/giccm_03_std_2xCO2_2256.', 
-       comment='Equilibrium reached after 30-year spin-up ',                                 
-       references='Model described by Koder and Tolkien ',
-       model_id="GICCM1", 
-       institute_id="PCMDI",
-       forcing="Nat, SO",
-       parent_experiment_rip="r1i3p2",
-       parent_experiment_id="lgm",branch_time=3.14159)
+error_flag = cmor.dataset_json("Test/test_python_joerg_5.json")
   
 
 # creates 1 degree grid
@@ -27,6 +12,6 @@ alats = numpy.arange(180)-89.5
 bnds_lat = numpy.arange(181)-90
 alons=numpy.arange(360)+.5
 bnds_lon=numpy.arange(361)
-cmor.load_table("Tables/CMIP5_cf3hr")
+cmor.load_table("Tables/CMIP6_Amon.json")
 error_flag = cmor.close()  
 
diff --git a/Test/test_python_joerg_6.json b/Test/test_python_joerg_6.json
new file mode 100644
index 0000000..076d49a
--- /dev/null
+++ b/Test/test_python_joerg_6.json
@@ -0,0 +1,62 @@
+{
+           "_control_vocabulary_file": "CMIP6_CV.json",
+           "_cmip6_option":           "CMIP6",
+
+    "activity_id":                  "CMIP",
+    "outpath":                      "CMIP6",
+    "experiment_id":                "piControl",
+    "calendar":                     "360_day",
+    "realization_index":            "1",
+    "initialization_index":         "1",
+    "physics_index":                "1",
+    "forcing_index":                "1",
+     "source_type":                      "AOGCM",
+     "sub_experiment":                      "none",
+     "sub_experiment_id":                      "none",
+     "parent_sub_experiment_id":                      "N/A",
+     "parent_mip_era":                      "N/A",
+     "mip_era":                      "CMIP6",
+    "contact ":                     "Python Coder (python at a.b.com) ",
+    "institution_id":                 "PCMDI",
+    "model_id":                     "GICCM1",
+    "history":                      "output from archivcl_A1.nce/giccm_03_std_2xCO2_2256.",
+    "comment":                      "equilibrium reached after 30-year spin-up ",
+    "references":                   "model described by Koder and Tolkien ",
+    "model_id":                     "pcmdi-10a", 
+    "parent_experiment_rip":        "r1i3p2",
+    "parent_experiment_id":         "lgm",
+    "parent_variant_label":            "r1i3p2",
+    "branch_time":                  "3.1415",
+
+
+    "parent_activity_id":           "CMIP",
+    "parent_source_id":             "GFDL-CM2-1",
+    "parent_variant_label":            "r1i1p1f3",
+
+    "branch_method":                "standard",
+    "branch_time_in_child":         "00D0",
+    "branch_time_in_parent":       "3650.0D0",
+    "branch_time_units_in_parent":  "days since 1000-1-1",
+
+    "further_info_url":             "http://furtherinfo.es-doc.org/<mip_era><institution_id><source_id><experiment_id><sub_experiment_id><variant_label>",
+    "grid":                         "native atmosphere T63 gaussian grid (64x128 latxlon)",
+    "grid_label":                  "gn",
+    "grid_resolution":              "5 km",
+
+    "institution_id":               "CSIRO-BOM",
+    "institution":                  "Commonwealth Scientific and Industrial Research Organisation, Australia, and Bureau of Meteorology, Australia",
+
+    "references":                   "Model described by Koder and Tolkien (J. Geophys. Res.,2001, 576 - 591).  Also see http://www.GICC.su/giccm/doc/index.html  2XCO2 simulation described in Dorkey et al. '(Clim. Dyn., 2003, 323 - 357.)",
+    "run_variant":                  "forcing: black carbon aerosol only",
+    "source_id":                    "NICAM",
+    "source":                       "NICAM:",
+    "output_path_template":         "<activity_id><institution_id><source_id><experiment_id><variant_label><table><variable_id><grid_label><version>",
+    "output_file_template":         "<variable_id><table><experiment_id><source_id><variant_label><grid_label>",
+
+    "license":                      "One of 2 licenses: ----- CMIP6 model data produced by <Your CentreName> is licensed under a Creative Commons Attribution 'NonCommercial Share Alike' 4.0 International License (http://creativecommons.org/licenses/by/4.0/). Use of the data should be acknowledged following guidelines found at <what URL???> The data is hosted via the Earth System Grid Federation. Permissions beyond the scope of this license may be available at http://pcmdi.org/cmip5/terms [...]
+
+
+}
+
+
+
diff --git a/Test/test_python_joerg_6.py b/Test/test_python_joerg_6.py
index 2258c5d..8ea678f 100644
--- a/Test/test_python_joerg_6.py
+++ b/Test/test_python_joerg_6.py
@@ -1,27 +1,10 @@
 import cmor,numpy
 
-error_flag = cmor.setup(inpath='Test', netcdf_file_action=cmor.CMOR_REPLACE)
-  
-error_flag = cmor.dataset(                                   
-       outpath='Test',                                         
-       experiment_id='noVolc2000',
-       institution= 'GICC (Generic International Climate Center, Geneva, Switzerland)',                                 
-       source='GICCM1 (2002): ',
-       calendar='360_day',                                      
-       realization=1,                                          
-       contact = 'Rusty Koder (koder at middle_earth.net) ',      
-       history='Output from archivcl_A1.nce/giccm_03_std_2xCO2_2256.', 
-       comment='Equilibrium reached after 30-year spin-up ',                                 
-       references='Model described by Koder and Tolkien ',
-       model_id="GICCM1", 
-       institute_id="PCMDI",
-       forcing="Nat, SO",
-       parent_experiment_id="lgm",
-       parent_experiment_rip="r1i1p1",
-       branch_time=3.14159)
+error_flag = cmor.setup(inpath='Tables', netcdf_file_action=cmor.CMOR_REPLACE)
   
+error_flag = cmor.dataset_json("Test/test_python_joerg_6.json")
 
-cmor.load_table("Tables/CMIP5_Omon")
+cmor.load_table("CMIP6_Omon.json")
 itime = cmor.axis(table_entry="time",units='months since 2010',coord_vals=numpy.array([0,1,2,3,4.]),cell_bounds=numpy.array([0,1,2,3,4,5.]))
 ivar = cmor.variable(table_entry="masso",axis_ids=[itime],units='kg')
 
@@ -29,4 +12,3 @@ data=numpy.random.random(5)
 for i in range(0,5):
     cmor.write(ivar,data[i:i])#,time_vals=numpy.array([i,]),time_bnds=numpy.array([i,i+1]))
 error_flag = cmor.close()  
-
diff --git a/Test/test_python_joerg_7.json b/Test/test_python_joerg_7.json
new file mode 100644
index 0000000..076d49a
--- /dev/null
+++ b/Test/test_python_joerg_7.json
@@ -0,0 +1,62 @@
+{
+           "_control_vocabulary_file": "CMIP6_CV.json",
+           "_cmip6_option":           "CMIP6",
+
+    "activity_id":                  "CMIP",
+    "outpath":                      "CMIP6",
+    "experiment_id":                "piControl",
+    "calendar":                     "360_day",
+    "realization_index":            "1",
+    "initialization_index":         "1",
+    "physics_index":                "1",
+    "forcing_index":                "1",
+     "source_type":                      "AOGCM",
+     "sub_experiment":                      "none",
+     "sub_experiment_id":                      "none",
+     "parent_sub_experiment_id":                      "N/A",
+     "parent_mip_era":                      "N/A",
+     "mip_era":                      "CMIP6",
+    "contact ":                     "Python Coder (python at a.b.com) ",
+    "institution_id":                 "PCMDI",
+    "model_id":                     "GICCM1",
+    "history":                      "output from archivcl_A1.nce/giccm_03_std_2xCO2_2256.",
+    "comment":                      "equilibrium reached after 30-year spin-up ",
+    "references":                   "model described by Koder and Tolkien ",
+    "model_id":                     "pcmdi-10a", 
+    "parent_experiment_rip":        "r1i3p2",
+    "parent_experiment_id":         "lgm",
+    "parent_variant_label":            "r1i3p2",
+    "branch_time":                  "3.1415",
+
+
+    "parent_activity_id":           "CMIP",
+    "parent_source_id":             "GFDL-CM2-1",
+    "parent_variant_label":            "r1i1p1f3",
+
+    "branch_method":                "standard",
+    "branch_time_in_child":         "00D0",
+    "branch_time_in_parent":       "3650.0D0",
+    "branch_time_units_in_parent":  "days since 1000-1-1",
+
+    "further_info_url":             "http://furtherinfo.es-doc.org/<mip_era><institution_id><source_id><experiment_id><sub_experiment_id><variant_label>",
+    "grid":                         "native atmosphere T63 gaussian grid (64x128 latxlon)",
+    "grid_label":                  "gn",
+    "grid_resolution":              "5 km",
+
+    "institution_id":               "CSIRO-BOM",
+    "institution":                  "Commonwealth Scientific and Industrial Research Organisation, Australia, and Bureau of Meteorology, Australia",
+
+    "references":                   "Model described by Koder and Tolkien (J. Geophys. Res.,2001, 576 - 591).  Also see http://www.GICC.su/giccm/doc/index.html  2XCO2 simulation described in Dorkey et al. '(Clim. Dyn., 2003, 323 - 357.)",
+    "run_variant":                  "forcing: black carbon aerosol only",
+    "source_id":                    "NICAM",
+    "source":                       "NICAM:",
+    "output_path_template":         "<activity_id><institution_id><source_id><experiment_id><variant_label><table><variable_id><grid_label><version>",
+    "output_file_template":         "<variable_id><table><experiment_id><source_id><variant_label><grid_label>",
+
+    "license":                      "One of 2 licenses: ----- CMIP6 model data produced by <Your CentreName> is licensed under a Creative Commons Attribution 'NonCommercial Share Alike' 4.0 International License (http://creativecommons.org/licenses/by/4.0/). Use of the data should be acknowledged following guidelines found at <what URL???> The data is hosted via the Earth System Grid Federation. Permissions beyond the scope of this license may be available at http://pcmdi.org/cmip5/terms [...]
+
+
+}
+
+
+
diff --git a/Test/test_python_joerg_7.py b/Test/test_python_joerg_7.py
index 6d3df16..aa2df48 100644
--- a/Test/test_python_joerg_7.py
+++ b/Test/test_python_joerg_7.py
@@ -1,27 +1,11 @@
 import cmor,numpy
 
-error_flag = cmor.setup(inpath='Test', netcdf_file_action=cmor.CMOR_REPLACE)
+error_flag = cmor.setup(inpath='Tables', netcdf_file_action=cmor.CMOR_REPLACE)
   
-error_flag = cmor.dataset(                                   
-       outpath='Test',                                         
-       experiment_id='noVolc2000',
-       institution= 'GICC (Generic International Climate Center, Geneva, Switzerland)',                                 
-       source='GICCM1 (2002): ',
-       calendar='360_day',                                      
-       realization=1,                                          
-       contact = 'Rusty Koder (koder at middle_earth.net) ',      
-       history='Output from archivcl_A1.nce/giccm_03_std_2xCO2_2256.', 
-       comment='Equilibrium reached after 30-year spin-up ',                                 
-       references='Model described by Koder and Tolkien ',
-       model_id="GICCM1", 
-       institute_id="PCMDI",
-       forcing="Nat, SO",
-       parent_experiment_id="lgm",
-       parent_experiment_rip="r1i1p1",
-       branch_time=3.14159)
+error_flag = cmor.dataset_json("Test/test_python_joerg_7.json")
   
 
-cmor.load_table("Tables/CMIP5_Omon")
+cmor.load_table("CMIP6_Omon.json")
 itime = cmor.axis(table_entry="time",units='months since 2010',coord_vals=numpy.array([0,1,2,3,4.]),cell_bounds=numpy.array([0,1,2,3,4,5.]))
 # creates 1 degree grid
 nlat=18
@@ -43,7 +27,7 @@ ilon = cmor.axis(
     units='degrees_east',         
     coord_vals=alons,             
     cell_bounds=bnds_lon)      
-ivar = cmor.variable(table_entry="epc100",axis_ids=[itime,ilat,ilon],units='mol m-2 s-1',positive="up")
+ivar = cmor.variable(table_entry="exparag100",axis_ids=[itime,ilat,ilon],units='mol m-2 s-1',positive="up")
 
 data=numpy.random.random((5,nlat,nlon))
 for i in range(0,5):
diff --git a/Test/test_python_joerg_8.json b/Test/test_python_joerg_8.json
new file mode 100644
index 0000000..076d49a
--- /dev/null
+++ b/Test/test_python_joerg_8.json
@@ -0,0 +1,62 @@
+{
+           "_control_vocabulary_file": "CMIP6_CV.json",
+           "_cmip6_option":           "CMIP6",
+
+    "activity_id":                  "CMIP",
+    "outpath":                      "CMIP6",
+    "experiment_id":                "piControl",
+    "calendar":                     "360_day",
+    "realization_index":            "1",
+    "initialization_index":         "1",
+    "physics_index":                "1",
+    "forcing_index":                "1",
+     "source_type":                      "AOGCM",
+     "sub_experiment":                      "none",
+     "sub_experiment_id":                      "none",
+     "parent_sub_experiment_id":                      "N/A",
+     "parent_mip_era":                      "N/A",
+     "mip_era":                      "CMIP6",
+    "contact ":                     "Python Coder (python at a.b.com) ",
+    "institution_id":                 "PCMDI",
+    "model_id":                     "GICCM1",
+    "history":                      "output from archivcl_A1.nce/giccm_03_std_2xCO2_2256.",
+    "comment":                      "equilibrium reached after 30-year spin-up ",
+    "references":                   "model described by Koder and Tolkien ",
+    "model_id":                     "pcmdi-10a", 
+    "parent_experiment_rip":        "r1i3p2",
+    "parent_experiment_id":         "lgm",
+    "parent_variant_label":            "r1i3p2",
+    "branch_time":                  "3.1415",
+
+
+    "parent_activity_id":           "CMIP",
+    "parent_source_id":             "GFDL-CM2-1",
+    "parent_variant_label":            "r1i1p1f3",
+
+    "branch_method":                "standard",
+    "branch_time_in_child":         "00D0",
+    "branch_time_in_parent":       "3650.0D0",
+    "branch_time_units_in_parent":  "days since 1000-1-1",
+
+    "further_info_url":             "http://furtherinfo.es-doc.org/<mip_era><institution_id><source_id><experiment_id><sub_experiment_id><variant_label>",
+    "grid":                         "native atmosphere T63 gaussian grid (64x128 latxlon)",
+    "grid_label":                  "gn",
+    "grid_resolution":              "5 km",
+
+    "institution_id":               "CSIRO-BOM",
+    "institution":                  "Commonwealth Scientific and Industrial Research Organisation, Australia, and Bureau of Meteorology, Australia",
+
+    "references":                   "Model described by Koder and Tolkien (J. Geophys. Res.,2001, 576 - 591).  Also see http://www.GICC.su/giccm/doc/index.html  2XCO2 simulation described in Dorkey et al. '(Clim. Dyn., 2003, 323 - 357.)",
+    "run_variant":                  "forcing: black carbon aerosol only",
+    "source_id":                    "NICAM",
+    "source":                       "NICAM:",
+    "output_path_template":         "<activity_id><institution_id><source_id><experiment_id><variant_label><table><variable_id><grid_label><version>",
+    "output_file_template":         "<variable_id><table><experiment_id><source_id><variant_label><grid_label>",
+
+    "license":                      "One of 2 licenses: ----- CMIP6 model data produced by <Your CentreName> is licensed under a Creative Commons Attribution 'NonCommercial Share Alike' 4.0 International License (http://creativecommons.org/licenses/by/4.0/). Use of the data should be acknowledged following guidelines found at <what URL???> The data is hosted via the Earth System Grid Federation. Permissions beyond the scope of this license may be available at http://pcmdi.org/cmip5/terms [...]
+
+
+}
+
+
+
diff --git a/Test/test_python_joerg_8.py b/Test/test_python_joerg_8.py
index 80b667b..ba03b07 100644
--- a/Test/test_python_joerg_8.py
+++ b/Test/test_python_joerg_8.py
@@ -15,32 +15,13 @@ myaxes2=numpy.zeros(9,dtype='i')
 myvars=numpy.zeros(9,dtype='i')
 
 
-cmor.setup(inpath=ipth,set_verbosity=cmor.CMOR_NORMAL, netcdf_file_action = cmor.CMOR_REPLACE, exit_control = cmor.CMOR_EXIT_ON_MAJOR);
-cmor.dataset(
-    outpath = opth,
-    experiment_id = "historical",
-    institution = "GICC (Generic International Climate Center, Geneva, Switzerland)",
-    source = "GICCM1 2002: atmosphere:  GICAM3 (gicam_0_brnchT_itea_2, T63L32); ocean: MOM (mom3_ver_3.5.2, 2x3L15); sea ice: GISIM4; land: GILSM2.5",
-    calendar = "standard",
-    realization = 1,
-    contact = "Rusty Koder (koder at middle_earth.net)",
-    history = "Output from archive/giccm_03_std_2xCO2_2256.",
-    comment = "Equilibrium reached after 30-year spin-up after which data were output starting with nominal date of January 2030",
-    references = "Model described by Koder and Tolkien (J. Geophys. Res., 2001, 576-591).  Also see http://www.GICC.su/giccm/doc/index.html  2XCO2 simulation described in Dorkey et al. '(Clim. Dyn., 2003, 323-357.)",
-    leap_year=0,
-    leap_month=0,
-    month_lengths=None,
-    model_id="GICCM1",
-    forcing="Ant, Nat",
-    institute_id="pcmdi",
-    parent_experiment_id="piControl",
-    parent_experiment_rip="r1i1p1",
-    branch_time=18336.33)
+cmor.setup(inpath="Tables",set_verbosity=cmor.CMOR_NORMAL, netcdf_file_action = cmor.CMOR_REPLACE, exit_control = cmor.CMOR_EXIT_ON_MAJOR);
+cmor.dataset_json("Test/test_python_joerg_8.json")
 
 tables=[]
-a = cmor.load_table("Tables/CMIP5_grids")
+a = cmor.load_table("Tables/CMIP6_grids.json")
 tables.append(a)
-tables.append(cmor.load_table("Tables/CMIP5_Omon"))
+tables.append(cmor.load_table("Tables/CMIP6_Omon.json"))
 print 'Tables ids:',tables
 
 cmor.set_table(tables[0])
@@ -83,7 +64,7 @@ myaxes[3] = cmor.axis(table_entry = 'time',
 pass_axes = [myaxes[3],myaxes[2]]
 
 print 'ok going to cmorvar'
-myvars[0] = cmor.variable( table_entry = 'epc100',
+myvars[0] = cmor.variable( table_entry = 'exparag100',
                            units = 'mol m-2 s-1',
                            axis_ids = pass_axes,
                            positive = 'down',
diff --git a/Test/test_python_joerg_9.py b/Test/test_python_joerg_9.py
index 6f5dfaf..20ad9d9 100644
--- a/Test/test_python_joerg_9.py
+++ b/Test/test_python_joerg_9.py
@@ -10,7 +10,7 @@ error_flag = cmor.setup(inpath='Test', netcdf_file_action=cmor.CMOR_APPEND)
   
 error_flag = cmor.dataset(                                   
        outpath='Joerg',                                         
-       experiment_id='noVolc2000',
+       experiment_id='DcppC2',
        institution= 'GICC (Generic International Climate Center, Geneva, Switzerland)',
        institute_id = "GICC",
        source='GICCM1 (2002): ',
@@ -24,7 +24,7 @@ error_flag = cmor.dataset(
        forcing="Ant",
        parent_experiment_id="lgm",branch_time=0)
 
-ntables=[cmor.load_table("Tables/CMIP5_grids")]
+ntables=[cmor.load_table("Tables/CMIP6_grids")]
 ntables.append(cmor.load_table("Tables/CMIP5_OImon"))
 
 
diff --git a/Test/test_python_joerg_tim2_clim_02.json b/Test/test_python_joerg_tim2_clim_02.json
new file mode 100644
index 0000000..c618eb2
--- /dev/null
+++ b/Test/test_python_joerg_tim2_clim_02.json
@@ -0,0 +1,62 @@
+{
+           "_control_vocabulary_file": "CMIP6_CV.json",
+           "_cmip6_option":           "CMIP6",
+
+    "activity_id":                  "CMIP",
+    "outpath":                      "CMIP6",
+    "experiment_id":                "piControl",
+    "calendar":                     "360_day",
+    "realization_index":            "1",
+    "initialization_index":         "1",
+    "physics_index":                "1",
+    "forcing_index":                "1",
+     "source_type":                      "AOGCM",
+     "sub_experiment":                      "none",
+     "sub_experiment_id":                      "none",
+     "parent_sub_experiment_id":                      "N/A",
+     "parent_mip_era":                      "N/A",
+     "mip_era":                      "CMIP6",
+    "contact ":                     "Python Coder (python at a.b.com) ",
+    "institution_id":                 "PCMDI",
+    "model_id":                     "GICCM1",
+    "history":                      "output from archivcl_A1.nce/giccm_03_std_2xCO2_2256.",
+    "comment":                      "equilibrium reached after 30-year spin-up ",
+    "references":                   "model described by Koder and Tolkien ",
+    "model_id":                     "pcmdi-10a", 
+    "parent_experiment_rip":        "r1i3p2",
+    "parent_experiment_id":         "lgm",
+    "parent_variant_label":            "r1i3p2",
+    "branch_time":                  "0",
+
+
+    "parent_activity_id":           "CMIP",
+    "parent_source_id":             "GFDL-CM2-1",
+    "parent_variant_label":            "r1i1p1f3",
+
+    "branch_method":                "standard",
+    "branch_time_in_child":         "00D0",
+    "branch_time_in_parent":        "3650.0D0",
+    "branch_time_units_in_parent":  "days since 1000-1-1",
+
+    "further_info_url":             "http://furtherinfo.es-doc.org/<mip_era><institution_id><source_id><experiment_id><sub_experiment_id><variant_label>",
+    "grid":                         "native atmosphere T63 gaussian grid (64x128 latxlon)",
+    "grid_label":                  "gn",
+    "grid_resolution":              "5 km",
+
+    "institution_id":               "CSIRO-BOM",
+    "institution":                  "Commonwealth Scientific and Industrial Research Organisation, Australia, and Bureau of Meteorology, Australia",
+
+    "references":                   "Model described by Koder and Tolkien (J. Geophys. Res.,2001, 576 - 591).  Also see http://www.GICC.su/giccm/doc/index.html  2XCO2 simulation described in Dorkey et al. '(Clim. Dyn., 2003, 323 - 357.)",
+    "run_variant":                  "forcing: black carbon aerosol only",
+    "source_id":                    "NICAM",
+    "source":                       "NICAM:",
+    "output_path_template":         "<activity_id><institution_id><source_id><experiment_id><variant_label><table><variable_id><grid_label><version>",
+    "output_file_template":         "<variable_id><table><experiment_id><source_id><variant_label><grid_label>",
+
+    "license":                      "One of 2 licenses: ----- CMIP6 model data produced by <Your CentreName> is licensed under a Creative Commons Attribution 'NonCommercial Share Alike' 4.0 International License (http://creativecommons.org/licenses/by/4.0/). Use of the data should be acknowledged following guidelines found at <what URL???> The data is hosted via the Earth System Grid Federation. Permissions beyond the scope of this license may be available at http://pcmdi.org/cmip5/terms [...]
+
+
+}
+
+
+
diff --git a/Test/test_python_joerg_tim2_clim_02.py b/Test/test_python_joerg_tim2_clim_02.py
index d4b145a..402b81b 100644
--- a/Test/test_python_joerg_tim2_clim_02.py
+++ b/Test/test_python_joerg_tim2_clim_02.py
@@ -4,19 +4,11 @@ import numpy
 
 def main():
     
-    cmor.setup(inpath='/git/cmip5-cmor-tables/Tables',
+    cmor.setup(inpath='Tables',
                netcdf_file_action = cmor.CMOR_REPLACE_3)
-    cmor.dataset('pre-industrial control', 'ukmo', 'HadCM3', '360_day',
-                 institute_id = 'ukmo',
-                 model_id = 'HadCM3',
-                 history = 'some global history',
-                 forcing = 'N/A',
-                 parent_experiment_id = 'N/A',
-                 parent_experiment_rip = 'N/A',
-                 branch_time = 0,
-                 contact = 'brian clough')
+    cmor.dataset_json("Test/test_python_joerg_tim2_clim_02.json")
  
-    table = 'CMIP5_Oclim'
+    table = 'CMIP6_Oclim.json'
     cmor.load_table(table)
     axes = [ {'table_entry': 'time2',
               'units': 'days since 1850-01-01 00:00:00',
diff --git a/Test/test_python_max_variables.json b/Test/test_python_max_variables.json
new file mode 100644
index 0000000..c618eb2
--- /dev/null
+++ b/Test/test_python_max_variables.json
@@ -0,0 +1,62 @@
+{
+           "_control_vocabulary_file": "CMIP6_CV.json",
+           "_cmip6_option":           "CMIP6",
+
+    "activity_id":                  "CMIP",
+    "outpath":                      "CMIP6",
+    "experiment_id":                "piControl",
+    "calendar":                     "360_day",
+    "realization_index":            "1",
+    "initialization_index":         "1",
+    "physics_index":                "1",
+    "forcing_index":                "1",
+     "source_type":                      "AOGCM",
+     "sub_experiment":                      "none",
+     "sub_experiment_id":                      "none",
+     "parent_sub_experiment_id":                      "N/A",
+     "parent_mip_era":                      "N/A",
+     "mip_era":                      "CMIP6",
+    "contact ":                     "Python Coder (python at a.b.com) ",
+    "institution_id":                 "PCMDI",
+    "model_id":                     "GICCM1",
+    "history":                      "output from archivcl_A1.nce/giccm_03_std_2xCO2_2256.",
+    "comment":                      "equilibrium reached after 30-year spin-up ",
+    "references":                   "model described by Koder and Tolkien ",
+    "model_id":                     "pcmdi-10a", 
+    "parent_experiment_rip":        "r1i3p2",
+    "parent_experiment_id":         "lgm",
+    "parent_variant_label":            "r1i3p2",
+    "branch_time":                  "0",
+
+
+    "parent_activity_id":           "CMIP",
+    "parent_source_id":             "GFDL-CM2-1",
+    "parent_variant_label":            "r1i1p1f3",
+
+    "branch_method":                "standard",
+    "branch_time_in_child":         "00D0",
+    "branch_time_in_parent":        "3650.0D0",
+    "branch_time_units_in_parent":  "days since 1000-1-1",
+
+    "further_info_url":             "http://furtherinfo.es-doc.org/<mip_era><institution_id><source_id><experiment_id><sub_experiment_id><variant_label>",
+    "grid":                         "native atmosphere T63 gaussian grid (64x128 latxlon)",
+    "grid_label":                  "gn",
+    "grid_resolution":              "5 km",
+
+    "institution_id":               "CSIRO-BOM",
+    "institution":                  "Commonwealth Scientific and Industrial Research Organisation, Australia, and Bureau of Meteorology, Australia",
+
+    "references":                   "Model described by Koder and Tolkien (J. Geophys. Res.,2001, 576 - 591).  Also see http://www.GICC.su/giccm/doc/index.html  2XCO2 simulation described in Dorkey et al. '(Clim. Dyn., 2003, 323 - 357.)",
+    "run_variant":                  "forcing: black carbon aerosol only",
+    "source_id":                    "NICAM",
+    "source":                       "NICAM:",
+    "output_path_template":         "<activity_id><institution_id><source_id><experiment_id><variant_label><table><variable_id><grid_label><version>",
+    "output_file_template":         "<variable_id><table><experiment_id><source_id><variant_label><grid_label>",
+
+    "license":                      "One of 2 licenses: ----- CMIP6 model data produced by <Your CentreName> is licensed under a Creative Commons Attribution 'NonCommercial Share Alike' 4.0 International License (http://creativecommons.org/licenses/by/4.0/). Use of the data should be acknowledged following guidelines found at <what URL???> The data is hosted via the Earth System Grid Federation. Permissions beyond the scope of this license may be available at http://pcmdi.org/cmip5/terms [...]
+
+
+}
+
+
+
diff --git a/Test/test_python_max_variables.py b/Test/test_python_max_variables.py
index c38d513..6909efd 100644
--- a/Test/test_python_max_variables.py
+++ b/Test/test_python_max_variables.py
@@ -2,24 +2,7 @@ import cmor,numpy
 
 error_flag = cmor.setup(inpath='Test', netcdf_file_action=cmor.CMOR_REPLACE)
   
-error_flag = cmor.dataset(                                   
-       outpath='Test',                                         
-       experiment_id='noVolc2000',
-       institution= 'GICC (Generic International Climate Center, Geneva, Switzerland)',                                 
-       source='GICCM1 (2002): ',
-       calendar='360_day',                                      
-       realization=1,                                          
-       contact = 'Rusty Koder (koder at middle_earth.net) ',      
-       history='Output from archivcl_A1.nce/giccm_03_std_2xCO2_2256.', 
-       comment='Equilibrium reached after 30-year spin-up ',                                 
-       references='Model described by Koder and Tolkien ',
-       model_id="GICCM1", 
-       forcing="Nat, SO",
-       institute_id='pcmdi',
-       parent_experiment_id="lgm",
-       parent_experiment_rip="r2i3p1",
-       branch_time=3.14159)
-  
+error_flag = cmor.dataset_json("Test/test_python_max_variables.json")
 
 # creates 10 degree grid
 nlat=18
@@ -28,7 +11,7 @@ alats = numpy.arange(180)-89.5
 bnds_lat = numpy.arange(181)-90.
 alons=numpy.arange(360)+.5
 bnds_lon=numpy.arange(361)
-cmor.load_table("Tables/CMIP5_Amon")
+cmor.load_table("Tables/CMIP6_Amon.json")
 ilat = cmor.axis(  
     table_entry='latitude',       
     units='degrees_north',          
@@ -56,7 +39,7 @@ itim = cmor.axis(
     interval='1 month')
 
 ilev = cmor.axis(  
-        table_entry='plevs',       
+        table_entry='plev17',       
         units='Pa',
         coord_vals=plevs,             
         cell_bounds=None)
diff --git a/Test/test_python_max_variables_2.py b/Test/test_python_max_variables_2.py
index bc41c17..11c54f7 100644
--- a/Test/test_python_max_variables_2.py
+++ b/Test/test_python_max_variables_2.py
@@ -2,23 +2,7 @@ import cmor,numpy
 
 error_flag = cmor.setup(inpath='Test', netcdf_file_action=cmor.CMOR_REPLACE)
   
-error_flag = cmor.dataset(                                   
-       outpath='Test',                                         
-       experiment_id='noVolc2000',
-       institution= 'GICC (Generic International Climate Center, Geneva, Switzerland)',                                 
-       source='GICCM1 (2002): ',
-       calendar='360_day',                                      
-       realization=1,                                          
-       contact = 'Rusty Koder (koder at middle_earth.net) ',      
-       history='Output from archivcl_A1.nce/giccm_03_std_2xCO2_2256.', 
-       comment='Equilibrium reached after 30-year spin-up ',                                 
-       references='Model described by Koder and Tolkien ',
-       model_id="GICCM1", 
-       forcing="Nat, SO",
-       institute_id='pcmdi',
-       parent_experiment_id="lgm",
-       parent_experiment_rip="r4i7p2",
-       branch_time=3.14159)
+error_flag = cmor.dataset_json("Test/test_python_max_variables.json")
   
 
 # creates 10 degree grid
@@ -28,7 +12,7 @@ alats = numpy.arange(180)-89.5
 bnds_lat = numpy.arange(181)-90.
 alons=numpy.arange(360)+.5
 bnds_lon=numpy.arange(361)
-cmor.load_table("Tables/CMIP5_Amon")
+cmor.load_table("Tables/CMIP6_Amon.json")
 ilat = cmor.axis(  
     table_entry='latitude',       
     units='degrees_north',          
@@ -56,7 +40,7 @@ itim = cmor.axis(
     interval='1 month')
 
 ilev = cmor.axis(  
-        table_entry='plevs',       
+        table_entry='plev17',       
         units='Pa',
         coord_vals=plevs,             
         cell_bounds=None)
diff --git a/Test/test_python_memory_check.json b/Test/test_python_memory_check.json
new file mode 100644
index 0000000..c618eb2
--- /dev/null
+++ b/Test/test_python_memory_check.json
@@ -0,0 +1,62 @@
+{
+           "_control_vocabulary_file": "CMIP6_CV.json",
+           "_cmip6_option":           "CMIP6",
+
+    "activity_id":                  "CMIP",
+    "outpath":                      "CMIP6",
+    "experiment_id":                "piControl",
+    "calendar":                     "360_day",
+    "realization_index":            "1",
+    "initialization_index":         "1",
+    "physics_index":                "1",
+    "forcing_index":                "1",
+     "source_type":                      "AOGCM",
+     "sub_experiment":                      "none",
+     "sub_experiment_id":                      "none",
+     "parent_sub_experiment_id":                      "N/A",
+     "parent_mip_era":                      "N/A",
+     "mip_era":                      "CMIP6",
+    "contact ":                     "Python Coder (python at a.b.com) ",
+    "institution_id":                 "PCMDI",
+    "model_id":                     "GICCM1",
+    "history":                      "output from archivcl_A1.nce/giccm_03_std_2xCO2_2256.",
+    "comment":                      "equilibrium reached after 30-year spin-up ",
+    "references":                   "model described by Koder and Tolkien ",
+    "model_id":                     "pcmdi-10a", 
+    "parent_experiment_rip":        "r1i3p2",
+    "parent_experiment_id":         "lgm",
+    "parent_variant_label":            "r1i3p2",
+    "branch_time":                  "0",
+
+
+    "parent_activity_id":           "CMIP",
+    "parent_source_id":             "GFDL-CM2-1",
+    "parent_variant_label":            "r1i1p1f3",
+
+    "branch_method":                "standard",
+    "branch_time_in_child":         "00D0",
+    "branch_time_in_parent":        "3650.0D0",
+    "branch_time_units_in_parent":  "days since 1000-1-1",
+
+    "further_info_url":             "http://furtherinfo.es-doc.org/<mip_era><institution_id><source_id><experiment_id><sub_experiment_id><variant_label>",
+    "grid":                         "native atmosphere T63 gaussian grid (64x128 latxlon)",
+    "grid_label":                  "gn",
+    "grid_resolution":              "5 km",
+
+    "institution_id":               "CSIRO-BOM",
+    "institution":                  "Commonwealth Scientific and Industrial Research Organisation, Australia, and Bureau of Meteorology, Australia",
+
+    "references":                   "Model described by Koder and Tolkien (J. Geophys. Res.,2001, 576 - 591).  Also see http://www.GICC.su/giccm/doc/index.html  2XCO2 simulation described in Dorkey et al. '(Clim. Dyn., 2003, 323 - 357.)",
+    "run_variant":                  "forcing: black carbon aerosol only",
+    "source_id":                    "NICAM",
+    "source":                       "NICAM:",
+    "output_path_template":         "<activity_id><institution_id><source_id><experiment_id><variant_label><table><variable_id><grid_label><version>",
+    "output_file_template":         "<variable_id><table><experiment_id><source_id><variant_label><grid_label>",
+
+    "license":                      "One of 2 licenses: ----- CMIP6 model data produced by <Your CentreName> is licensed under a Creative Commons Attribution 'NonCommercial Share Alike' 4.0 International License (http://creativecommons.org/licenses/by/4.0/). Use of the data should be acknowledged following guidelines found at <what URL???> The data is hosted via the Earth System Grid Federation. Permissions beyond the scope of this license may be available at http://pcmdi.org/cmip5/terms [...]
+
+
+}
+
+
+
diff --git a/Test/test_python_memory_check.py b/Test/test_python_memory_check.py
index 6636bb0..d776235 100644
--- a/Test/test_python_memory_check.py
+++ b/Test/test_python_memory_check.py
@@ -62,13 +62,9 @@ def memory_usage(fhd,mem=0,res=0,stk=0):
 
 def memory_check():
     cmor.setup(inpath='Tables',netcdf_file_action=cmor.CMOR_REPLACE)
-
-    cmor.dataset('historical', 'ukmo', 'HadCM3', '360_day',
-                 institute_id="PCMDI",
-                 parent_experiment_rip="r1i3p2",
-                 model_id='HadCM3',forcing='TO',parent_experiment_id="lgm",branch_time=0.,contact="Willie Mays")
+    cmor.dataset_json("Test/test_python_memory_check.json")
     
-    table='CMIP5_Amon'
+    table='CMIP6_Amon.json'
     cmor.load_table(table)
 
     tval = []
diff --git a/Test/test_python_new_tables.json b/Test/test_python_new_tables.json
new file mode 100644
index 0000000..c618eb2
--- /dev/null
+++ b/Test/test_python_new_tables.json
@@ -0,0 +1,62 @@
+{
+           "_control_vocabulary_file": "CMIP6_CV.json",
+           "_cmip6_option":           "CMIP6",
+
+    "activity_id":                  "CMIP",
+    "outpath":                      "CMIP6",
+    "experiment_id":                "piControl",
+    "calendar":                     "360_day",
+    "realization_index":            "1",
+    "initialization_index":         "1",
+    "physics_index":                "1",
+    "forcing_index":                "1",
+     "source_type":                      "AOGCM",
+     "sub_experiment":                      "none",
+     "sub_experiment_id":                      "none",
+     "parent_sub_experiment_id":                      "N/A",
+     "parent_mip_era":                      "N/A",
+     "mip_era":                      "CMIP6",
+    "contact ":                     "Python Coder (python at a.b.com) ",
+    "institution_id":                 "PCMDI",
+    "model_id":                     "GICCM1",
+    "history":                      "output from archivcl_A1.nce/giccm_03_std_2xCO2_2256.",
+    "comment":                      "equilibrium reached after 30-year spin-up ",
+    "references":                   "model described by Koder and Tolkien ",
+    "model_id":                     "pcmdi-10a", 
+    "parent_experiment_rip":        "r1i3p2",
+    "parent_experiment_id":         "lgm",
+    "parent_variant_label":            "r1i3p2",
+    "branch_time":                  "0",
+
+
+    "parent_activity_id":           "CMIP",
+    "parent_source_id":             "GFDL-CM2-1",
+    "parent_variant_label":            "r1i1p1f3",
+
+    "branch_method":                "standard",
+    "branch_time_in_child":         "00D0",
+    "branch_time_in_parent":        "3650.0D0",
+    "branch_time_units_in_parent":  "days since 1000-1-1",
+
+    "further_info_url":             "http://furtherinfo.es-doc.org/<mip_era><institution_id><source_id><experiment_id><sub_experiment_id><variant_label>",
+    "grid":                         "native atmosphere T63 gaussian grid (64x128 latxlon)",
+    "grid_label":                  "gn",
+    "grid_resolution":              "5 km",
+
+    "institution_id":               "CSIRO-BOM",
+    "institution":                  "Commonwealth Scientific and Industrial Research Organisation, Australia, and Bureau of Meteorology, Australia",
+
+    "references":                   "Model described by Koder and Tolkien (J. Geophys. Res.,2001, 576 - 591).  Also see http://www.GICC.su/giccm/doc/index.html  2XCO2 simulation described in Dorkey et al. '(Clim. Dyn., 2003, 323 - 357.)",
+    "run_variant":                  "forcing: black carbon aerosol only",
+    "source_id":                    "NICAM",
+    "source":                       "NICAM:",
+    "output_path_template":         "<activity_id><institution_id><source_id><experiment_id><variant_label><table><variable_id><grid_label><version>",
+    "output_file_template":         "<variable_id><table><experiment_id><source_id><variant_label><grid_label>",
+
+    "license":                      "One of 2 licenses: ----- CMIP6 model data produced by <Your CentreName> is licensed under a Creative Commons Attribution 'NonCommercial Share Alike' 4.0 International License (http://creativecommons.org/licenses/by/4.0/). Use of the data should be acknowledged following guidelines found at <what URL???> The data is hosted via the Earth System Grid Federation. Permissions beyond the scope of this license may be available at http://pcmdi.org/cmip5/terms [...]
+
+
+}
+
+
+
diff --git a/Test/test_python_new_tables.py b/Test/test_python_new_tables.py
index ced04ba..86b80fb 100644
--- a/Test/test_python_new_tables.py
+++ b/Test/test_python_new_tables.py
@@ -1,25 +1,14 @@
 import cmor,numpy
 
-ipth="Test"
+ipth="Tables"
 cmor.setup(inpath=ipth,
            set_verbosity=cmor.CMOR_NORMAL,
            netcdf_file_action = cmor.CMOR_REPLACE,
            logfile = None)
 
-cmor.dataset(
-    outpath = ipth,
-    experiment_id = "lgm",
-    institution = "PCMDI",
-    source = "GICCM1 2002",
-    institute_id="PCMDI",
-    calendar = "standard",
-    contact="Bengie Molina",
-    model_id="GICCM1",forcing="SO",
-    parent_experiment_id="historical",
-    parent_experiment_rip="r3i8p1",
-    branch_time=0.)
-
-cmor.load_table("Tables/CMIP5_Amon")
+cmor.dataset_json("Test/test_python_new_tables.json")
+
+cmor.load_table("CMIP6_Amon.json")
 
 nlat = 90
 dlat = 180/nlat
diff --git a/Test/test_python_obs4MIPs.json b/Test/test_python_obs4MIPs.json
new file mode 100644
index 0000000..42a3cda
--- /dev/null
+++ b/Test/test_python_obs4MIPs.json
@@ -0,0 +1,30 @@
+{
+           "_control_vocabulary_file": "CMIP6_CV.json",
+           "_cmip6_option":           "CMIP6",
+
+    "#tracking_prefix":              "http://doi.com",
+    "outpath":                      "CMIP6",
+    "data_structure":               "grid",
+    "further_info_url":             "https://obs4mips.nasa.jpl.gov",     
+    "instituion_id":                "USDOE",
+    "institution":                  "U.S. Department of Energy",
+    "license":                      "One of 2 license",
+    "mip_specs":                    "CMIP5",
+    "references":                   "journal",
+    "source":                       "ARMBE:",
+    "source_id":                    "ARMBE",
+    "source_type":                  "AOGCM",
+    "activity_id":                  "obs4MIPs",
+    "contact":                      "python coder python at coder.com",
+    "Conventions":                  "CF-1.6",
+    "calendar":                     "gregorian",
+    "comment":                      "Some comment about the data",
+    "history":                      "Test of obs4MIPs data",
+    "location":                     "Somewhere on earth",
+    "output_path_template":         "<product><mip_specs>",
+    "output_file_template":         "<variable_id><table>"
+
+}
+
+
+
diff --git a/Test/test_python_YYYMMDDHH_exp_fmt.py b/Test/test_python_obs4MIPs.py
similarity index 59%
copy from Test/test_python_YYYMMDDHH_exp_fmt.py
copy to Test/test_python_obs4MIPs.py
index fc92ae7..ddcdada 100644
--- a/Test/test_python_YYYMMDDHH_exp_fmt.py
+++ b/Test/test_python_obs4MIPs.py
@@ -1,18 +1,16 @@
 import cmor
 
-def path_test():
-    cmor.setup(inpath='Test',netcdf_file_action=cmor.CMOR_REPLACE)
-
-    cmor.dataset('mytest2010030812', 'ukmo', 'HadCM3', '360_day',
-                 institute_id="PCMDI",
-                 model_id='HadCM3',forcing='co2')
-    
-    table='CMIP5_Amon_YYYYMMDDHH'
+def test():
+    cmor.setup(inpath='Tables',netcdf_file_action=cmor.CMOR_REPLACE)
+
+    cmor.dataset_json("Test/test_python_obs4MIPs.json")
+
+    table='CMIP6_Amon.json'
+
     cmor.load_table(table)
+
     axes = [ {'table_entry': 'time',
               'units': 'days since 2000-01-01 00:00:00',
-              'coord_vals': [15],
-              'cell_bounds': [0, 30]
               },
              {'table_entry': 'latitude',
               'units': 'degrees_north',
@@ -28,11 +26,14 @@ def path_test():
     for axis in axes:
         axis_id = cmor.axis(**axis)
         axis_ids.append(axis_id)
+
     varid = cmor.variable('ts', 'K', axis_ids)
-    cmor.write(varid, [273])
-    path=cmor.close(varid, file_name=True)
 
-    print "Saved file: ",path
+    cmor.write(varid, [275], time_vals = [15], time_bnds = [ [0,30] ])
+
+    cmor.close(varid)
+
+
 
 if __name__ == '__main__':
-    path_test()
+    test()
diff --git a/Test/test_python_open_close_cmor_multiple.json b/Test/test_python_open_close_cmor_multiple.json
new file mode 100644
index 0000000..c618eb2
--- /dev/null
+++ b/Test/test_python_open_close_cmor_multiple.json
@@ -0,0 +1,62 @@
+{
+           "_control_vocabulary_file": "CMIP6_CV.json",
+           "_cmip6_option":           "CMIP6",
+
+    "activity_id":                  "CMIP",
+    "outpath":                      "CMIP6",
+    "experiment_id":                "piControl",
+    "calendar":                     "360_day",
+    "realization_index":            "1",
+    "initialization_index":         "1",
+    "physics_index":                "1",
+    "forcing_index":                "1",
+     "source_type":                      "AOGCM",
+     "sub_experiment":                      "none",
+     "sub_experiment_id":                      "none",
+     "parent_sub_experiment_id":                      "N/A",
+     "parent_mip_era":                      "N/A",
+     "mip_era":                      "CMIP6",
+    "contact ":                     "Python Coder (python at a.b.com) ",
+    "institution_id":                 "PCMDI",
+    "model_id":                     "GICCM1",
+    "history":                      "output from archivcl_A1.nce/giccm_03_std_2xCO2_2256.",
+    "comment":                      "equilibrium reached after 30-year spin-up ",
+    "references":                   "model described by Koder and Tolkien ",
+    "model_id":                     "pcmdi-10a", 
+    "parent_experiment_rip":        "r1i3p2",
+    "parent_experiment_id":         "lgm",
+    "parent_variant_label":            "r1i3p2",
+    "branch_time":                  "0",
+
+
+    "parent_activity_id":           "CMIP",
+    "parent_source_id":             "GFDL-CM2-1",
+    "parent_variant_label":            "r1i1p1f3",
+
+    "branch_method":                "standard",
+    "branch_time_in_child":         "00D0",
+    "branch_time_in_parent":        "3650.0D0",
+    "branch_time_units_in_parent":  "days since 1000-1-1",
+
+    "further_info_url":             "http://furtherinfo.es-doc.org/<mip_era><institution_id><source_id><experiment_id><sub_experiment_id><variant_label>",
+    "grid":                         "native atmosphere T63 gaussian grid (64x128 latxlon)",
+    "grid_label":                  "gn",
+    "grid_resolution":              "5 km",
+
+    "institution_id":               "CSIRO-BOM",
+    "institution":                  "Commonwealth Scientific and Industrial Research Organisation, Australia, and Bureau of Meteorology, Australia",
+
+    "references":                   "Model described by Koder and Tolkien (J. Geophys. Res.,2001, 576 - 591).  Also see http://www.GICC.su/giccm/doc/index.html  2XCO2 simulation described in Dorkey et al. '(Clim. Dyn., 2003, 323 - 357.)",
+    "run_variant":                  "forcing: black carbon aerosol only",
+    "source_id":                    "NICAM",
+    "source":                       "NICAM:",
+    "output_path_template":         "<activity_id><institution_id><source_id><experiment_id><variant_label><table><variable_id><grid_label><version>",
+    "output_file_template":         "<variable_id><table><experiment_id><source_id><variant_label><grid_label>",
+
+    "license":                      "One of 2 licenses: ----- CMIP6 model data produced by <Your CentreName> is licensed under a Creative Commons Attribution 'NonCommercial Share Alike' 4.0 International License (http://creativecommons.org/licenses/by/4.0/). Use of the data should be acknowledged following guidelines found at <what URL???> The data is hosted via the Earth System Grid Federation. Permissions beyond the scope of this license may be available at http://pcmdi.org/cmip5/terms [...]
+
+
+}
+
+
+
diff --git a/Test/test_python_open_close_cmor_multiple.py b/Test/test_python_open_close_cmor_multiple.py
index 3007873..04f81e7 100644
--- a/Test/test_python_open_close_cmor_multiple.py
+++ b/Test/test_python_open_close_cmor_multiple.py
@@ -3,7 +3,7 @@ import cmor,numpy
 
 
 
-vars ={'hfls' : ['W.m-2',25.,40.],'tas':['K',25,268.15],'clt':['%',100.,0.],'ta':['K',25,273.15]}
+vars ={'hfls' : ['W.m-2',25.,40.],'tas':['K',25,268.15],'clt':['%',10000.,0.],'ta':['K',25,273.15]}
 
 
 nlat = 90
@@ -21,20 +21,16 @@ blons = numpy.arange(0,360.+dlon,dlon)
 
 tvars= ['hfls','tas','clt','ta']
 
-cmor.setup(inpath='.',netcdf_file_action=cmor.CMOR_REPLACE)
-cmor.dataset('historical', 'ukmo', 'HadCM3', 'gregorian',
-             model_id='HadCM3',outpath='Test',forcing='TO, Nat',
-             institute_id="PCMDI",
-             parent_experiment_rip="r1i3p2",
-             contact="Matt Cain",parent_experiment_id="lgm",branch_time=0)
-table='TestTables/CMIP5_Amon'
+cmor.setup(inpath='Tables',netcdf_file_action=cmor.CMOR_REPLACE)
+cmor.dataset_json("Test/test_python_open_close_cmor_multiple.json")
+table='CMIP6_Amon.json'
 cmor.load_table(table)
 
 for var in tvars:
     ilat = cmor.axis(table_entry='latitude',coord_vals=lats,cell_bounds=blats,units='degrees_north')
     ilon = cmor.axis(table_entry='longitude',coord_vals=lons,cell_bounds=blons,units='degrees_east')
     itim = cmor.axis(table_entry='time',coord_vals=numpy.arange(ntimes,dtype=numpy.float),cell_bounds=numpy.arange(ntimes+1,dtype=float),units='months since 2000')
-    ilev = cmor.axis(table_entry='plevs',coord_vals=numpy.array([1000.,925,850,700,600,500,400,300,250,200,150,100,70,50,30,20,10]),units='hPa')
+    ilev = cmor.axis(table_entry='plev17',coord_vals=numpy.array([1000.,925,850,700,600,500,400,300,250,200,150,100,70,50,30,20,10]),units='hPa')
     
     if var!='ta':
         axes = [itim,ilat,ilon]
diff --git a/Test/test_python_region.json b/Test/test_python_region.json
new file mode 100644
index 0000000..c618eb2
--- /dev/null
+++ b/Test/test_python_region.json
@@ -0,0 +1,62 @@
+{
+           "_control_vocabulary_file": "CMIP6_CV.json",
+           "_cmip6_option":           "CMIP6",
+
+    "activity_id":                  "CMIP",
+    "outpath":                      "CMIP6",
+    "experiment_id":                "piControl",
+    "calendar":                     "360_day",
+    "realization_index":            "1",
+    "initialization_index":         "1",
+    "physics_index":                "1",
+    "forcing_index":                "1",
+     "source_type":                      "AOGCM",
+     "sub_experiment":                      "none",
+     "sub_experiment_id":                      "none",
+     "parent_sub_experiment_id":                      "N/A",
+     "parent_mip_era":                      "N/A",
+     "mip_era":                      "CMIP6",
+    "contact ":                     "Python Coder (python at a.b.com) ",
+    "institution_id":                 "PCMDI",
+    "model_id":                     "GICCM1",
+    "history":                      "output from archivcl_A1.nce/giccm_03_std_2xCO2_2256.",
+    "comment":                      "equilibrium reached after 30-year spin-up ",
+    "references":                   "model described by Koder and Tolkien ",
+    "model_id":                     "pcmdi-10a", 
+    "parent_experiment_rip":        "r1i3p2",
+    "parent_experiment_id":         "lgm",
+    "parent_variant_label":            "r1i3p2",
+    "branch_time":                  "0",
+
+
+    "parent_activity_id":           "CMIP",
+    "parent_source_id":             "GFDL-CM2-1",
+    "parent_variant_label":            "r1i1p1f3",
+
+    "branch_method":                "standard",
+    "branch_time_in_child":         "00D0",
+    "branch_time_in_parent":        "3650.0D0",
+    "branch_time_units_in_parent":  "days since 1000-1-1",
+
+    "further_info_url":             "http://furtherinfo.es-doc.org/<mip_era><institution_id><source_id><experiment_id><sub_experiment_id><variant_label>",
+    "grid":                         "native atmosphere T63 gaussian grid (64x128 latxlon)",
+    "grid_label":                  "gn",
+    "grid_resolution":              "5 km",
+
+    "institution_id":               "CSIRO-BOM",
+    "institution":                  "Commonwealth Scientific and Industrial Research Organisation, Australia, and Bureau of Meteorology, Australia",
+
+    "references":                   "Model described by Koder and Tolkien (J. Geophys. Res.,2001, 576 - 591).  Also see http://www.GICC.su/giccm/doc/index.html  2XCO2 simulation described in Dorkey et al. '(Clim. Dyn., 2003, 323 - 357.)",
+    "run_variant":                  "forcing: black carbon aerosol only",
+    "source_id":                    "NICAM",
+    "source":                       "NICAM:",
+    "output_path_template":         "<activity_id><institution_id><source_id><experiment_id><variant_label><table><variable_id><grid_label><version>",
+    "output_file_template":         "<variable_id><table><experiment_id><source_id><variant_label><grid_label>",
+
+    "license":                      "One of 2 licenses: ----- CMIP6 model data produced by <Your CentreName> is licensed under a Creative Commons Attribution 'NonCommercial Share Alike' 4.0 International License (http://creativecommons.org/licenses/by/4.0/). Use of the data should be acknowledged following guidelines found at <what URL???> The data is hosted via the Earth System Grid Federation. Permissions beyond the scope of this license may be available at http://pcmdi.org/cmip5/terms [...]
+
+
+}
+
+
+
diff --git a/Test/test_python_region.py b/Test/test_python_region.py
index c817a59..dc6df7b 100644
--- a/Test/test_python_region.py
+++ b/Test/test_python_region.py
@@ -4,12 +4,9 @@ import numpy
 
 cmor.setup("Test",netcdf_file_action=cmor.CMOR_REPLACE)
 
-cmor.dataset('historical', 'ukmo', 'HadCM3', '360_day',
-             institute_id="PCMDI",
-             parent_experiment_rip="r1i3p2",
-             contact="Mark Teixera",model_id='HadCM3',forcing="SO",parent_experiment_id="N/A",branch_time=0.)
+cmor.dataset_json("Test/test_python_region.json")
 
-cmor.load_table("Tables/CMIP5_Omon")
+cmor.load_table("Tables/CMIP6_Omon.json")
 
 nlat = 90
 dlat = 180/nlat
diff --git a/Test/test_python_reverted_lats.json b/Test/test_python_reverted_lats.json
new file mode 100644
index 0000000..c618eb2
--- /dev/null
+++ b/Test/test_python_reverted_lats.json
@@ -0,0 +1,62 @@
+{
+           "_control_vocabulary_file": "CMIP6_CV.json",
+           "_cmip6_option":           "CMIP6",
+
+    "activity_id":                  "CMIP",
+    "outpath":                      "CMIP6",
+    "experiment_id":                "piControl",
+    "calendar":                     "360_day",
+    "realization_index":            "1",
+    "initialization_index":         "1",
+    "physics_index":                "1",
+    "forcing_index":                "1",
+     "source_type":                      "AOGCM",
+     "sub_experiment":                      "none",
+     "sub_experiment_id":                      "none",
+     "parent_sub_experiment_id":                      "N/A",
+     "parent_mip_era":                      "N/A",
+     "mip_era":                      "CMIP6",
+    "contact ":                     "Python Coder (python at a.b.com) ",
+    "institution_id":                 "PCMDI",
+    "model_id":                     "GICCM1",
+    "history":                      "output from archivcl_A1.nce/giccm_03_std_2xCO2_2256.",
+    "comment":                      "equilibrium reached after 30-year spin-up ",
+    "references":                   "model described by Koder and Tolkien ",
+    "model_id":                     "pcmdi-10a", 
+    "parent_experiment_rip":        "r1i3p2",
+    "parent_experiment_id":         "lgm",
+    "parent_variant_label":            "r1i3p2",
+    "branch_time":                  "0",
+
+
+    "parent_activity_id":           "CMIP",
+    "parent_source_id":             "GFDL-CM2-1",
+    "parent_variant_label":            "r1i1p1f3",
+
+    "branch_method":                "standard",
+    "branch_time_in_child":         "00D0",
+    "branch_time_in_parent":        "3650.0D0",
+    "branch_time_units_in_parent":  "days since 1000-1-1",
+
+    "further_info_url":             "http://furtherinfo.es-doc.org/<mip_era><institution_id><source_id><experiment_id><sub_experiment_id><variant_label>",
+    "grid":                         "native atmosphere T63 gaussian grid (64x128 latxlon)",
+    "grid_label":                  "gn",
+    "grid_resolution":              "5 km",
+
+    "institution_id":               "CSIRO-BOM",
+    "institution":                  "Commonwealth Scientific and Industrial Research Organisation, Australia, and Bureau of Meteorology, Australia",
+
+    "references":                   "Model described by Koder and Tolkien (J. Geophys. Res.,2001, 576 - 591).  Also see http://www.GICC.su/giccm/doc/index.html  2XCO2 simulation described in Dorkey et al. '(Clim. Dyn., 2003, 323 - 357.)",
+    "run_variant":                  "forcing: black carbon aerosol only",
+    "source_id":                    "NICAM",
+    "source":                       "NICAM:",
+    "output_path_template":         "<activity_id><institution_id><source_id><experiment_id><variant_label><table><variable_id><grid_label><version>",
+    "output_file_template":         "<variable_id><table><experiment_id><source_id><variant_label><grid_label>",
+
+    "license":                      "One of 2 licenses: ----- CMIP6 model data produced by <Your CentreName> is licensed under a Creative Commons Attribution 'NonCommercial Share Alike' 4.0 International License (http://creativecommons.org/licenses/by/4.0/). Use of the data should be acknowledged following guidelines found at <what URL???> The data is hosted via the Earth System Grid Federation. Permissions beyond the scope of this license may be available at http://pcmdi.org/cmip5/terms [...]
+
+
+}
+
+
+
diff --git a/Test/test_python_reverted_lats.py b/Test/test_python_reverted_lats.py
index 2277d50..58dc9c6 100644
--- a/Test/test_python_reverted_lats.py
+++ b/Test/test_python_reverted_lats.py
@@ -15,8 +15,8 @@ lons = numpy.arange(0+dlon/2.,360.,dlon)
 blons = numpy.arange(0,360.+dlon,dlon)
 
 cmor.setup(inpath='.',netcdf_file_action=cmor.CMOR_REPLACE)
-cmor.dataset('historical', 'ukmo', 'HadCM3', 'gregorian',model_id='HadCM3',outpath='Test',forcing='TO, Nat', contact="Jonathan sanchez",parent_experiment_id="lgm",parent_experiment_rip="r1i1p1",branch_time=0,institute_id='pcmdi')
-table='Tables/CMIP5_Amon'
+cmor.dataset_json("Test/test_python_reverted_lats.json")
+table='Tables/CMIP6_Amon.json'
 cmor.load_table(table)
 
 data = lats[:,numpy.newaxis]*lons[numpy.newaxis,:]
diff --git a/Test/test_python_singleton_anywhere_in_table_def.py b/Test/test_python_singleton_anywhere_in_table_def.py
index a770cd2..490c752 100644
--- a/Test/test_python_singleton_anywhere_in_table_def.py
+++ b/Test/test_python_singleton_anywhere_in_table_def.py
@@ -35,13 +35,13 @@ cmor.dataset(
     model_id="GICCM1",
     forcing="Ant, Nat",
     institute_id="pcmdi",
-    parent_experiment_id="piControl",branch_time=18336.33)
+    parent_experiment_id="piControlwithism",branch_time=18336.33)
 
 tables=[]
-a = cmor.load_table("/git/cmip5-cmor-tables/Tables/CMIP5_grids")
+a = cmor.load_table("/git/cmip5-cmor-tables/Tables/CMIP6_grids")
 tables.append(a)
 
-t='CMIP5_Omon'
+t='CMIP6_Omon.json'
 te = 'dissic'
 u='mol m-3'
 time='time'
diff --git a/Test/test_python_singleton_string.py b/Test/test_python_singleton_string.py
index 896a855..61c3949 100644
--- a/Test/test_python_singleton_string.py
+++ b/Test/test_python_singleton_string.py
@@ -18,44 +18,27 @@ myvars=numpy.zeros(9,dtype='i')
 
 
 cmor.setup(inpath=ipth,set_verbosity=cmor.CMOR_NORMAL, netcdf_file_action = cmor.CMOR_REPLACE, exit_control = cmor.CMOR_EXIT_ON_MAJOR);
-cmor.dataset(
-    outpath = opth,
-    experiment_id = "historical",
-    institution = "GICC (Generic International Climate Center, Geneva, Switzerland)",
-    source = "GICCM1 2002: atmosphere:  GICAM3 (gicam_0_brnchT_itea_2, T63L32); ocean: MOM (mom3_ver_3.5.2, 2x3L15); sea ice: GISIM4; land: GILSM2.5",
-    calendar = "standard",
-    realization = 1,
-    contact = "Rusty Koder (koder at middle_earth.net)",
-    history = "Output from archive/giccm_03_std_2xCO2_2256.",
-    comment = "Equilibrium reached after 30-year spin-up after which data were output starting with nominal date of January 2030",
-    references = "Model described by Koder and Tolkien (J. Geophys. Res., 2001, 576-591).  Also see http://www.GICC.su/giccm/doc/index.html  2XCO2 simulation described in Dorkey et al. '(Clim. Dyn., 2003, 323-357.)",
-    leap_year=0,
-    leap_month=0,
-    month_lengths=None,
-    model_id="GICCM1",
-    forcing="Ant, Nat",
-    institute_id="pcmdi",
-    parent_experiment_id="piControl",branch_time=18336.33,parent_experiment_rip='r1i1p1')
+cmor.dataset_json("Test/test_python_joerg_8.json")
 
 tables=[]
-a = cmor.load_table("/git/cmip5-cmor-tables/Tables/CMIP5_grids")
+a = cmor.load_table("Tables/CMIP6_grids.json")
 tables.append(a)
 
-t='CMIP5_Omon'
+t='CMIP6_Omon.json'
 te = 'dissic'
 u='mol m-3'
 time='time'
 ts='month'
 tscl=1.
 
-t='CMIP5_Lmon'
+t='CMIP6_Lmon.json'
 te = 'baresoilFrac'
 u= ''
 time='time'
 ts='months'
 tscl=3.5e-4
 
-tables.append(cmor.load_table("/git/cmip5-cmor-tables/Tables/%s" % t))
+tables.append(cmor.load_table("Tables/%s" % t))
 print 'Tables ids:',tables
 
 cmor.set_table(tables[0])
diff --git a/Test/test_python_user_interface_00.json b/Test/test_python_user_interface_00.json
new file mode 100644
index 0000000..c618eb2
--- /dev/null
+++ b/Test/test_python_user_interface_00.json
@@ -0,0 +1,62 @@
+{
+           "_control_vocabulary_file": "CMIP6_CV.json",
+           "_cmip6_option":           "CMIP6",
+
+    "activity_id":                  "CMIP",
+    "outpath":                      "CMIP6",
+    "experiment_id":                "piControl",
+    "calendar":                     "360_day",
+    "realization_index":            "1",
+    "initialization_index":         "1",
+    "physics_index":                "1",
+    "forcing_index":                "1",
+     "source_type":                      "AOGCM",
+     "sub_experiment":                      "none",
+     "sub_experiment_id":                      "none",
+     "parent_sub_experiment_id":                      "N/A",
+     "parent_mip_era":                      "N/A",
+     "mip_era":                      "CMIP6",
+    "contact ":                     "Python Coder (python at a.b.com) ",
+    "institution_id":                 "PCMDI",
+    "model_id":                     "GICCM1",
+    "history":                      "output from archivcl_A1.nce/giccm_03_std_2xCO2_2256.",
+    "comment":                      "equilibrium reached after 30-year spin-up ",
+    "references":                   "model described by Koder and Tolkien ",
+    "model_id":                     "pcmdi-10a", 
+    "parent_experiment_rip":        "r1i3p2",
+    "parent_experiment_id":         "lgm",
+    "parent_variant_label":            "r1i3p2",
+    "branch_time":                  "0",
+
+
+    "parent_activity_id":           "CMIP",
+    "parent_source_id":             "GFDL-CM2-1",
+    "parent_variant_label":            "r1i1p1f3",
+
+    "branch_method":                "standard",
+    "branch_time_in_child":         "00D0",
+    "branch_time_in_parent":        "3650.0D0",
+    "branch_time_units_in_parent":  "days since 1000-1-1",
+
+    "further_info_url":             "http://furtherinfo.es-doc.org/<mip_era><institution_id><source_id><experiment_id><sub_experiment_id><variant_label>",
+    "grid":                         "native atmosphere T63 gaussian grid (64x128 latxlon)",
+    "grid_label":                  "gn",
+    "grid_resolution":              "5 km",
+
+    "institution_id":               "CSIRO-BOM",
+    "institution":                  "Commonwealth Scientific and Industrial Research Organisation, Australia, and Bureau of Meteorology, Australia",
+
+    "references":                   "Model described by Koder and Tolkien (J. Geophys. Res.,2001, 576 - 591).  Also see http://www.GICC.su/giccm/doc/index.html  2XCO2 simulation described in Dorkey et al. '(Clim. Dyn., 2003, 323 - 357.)",
+    "run_variant":                  "forcing: black carbon aerosol only",
+    "source_id":                    "NICAM",
+    "source":                       "NICAM:",
+    "output_path_template":         "<activity_id><institution_id><source_id><experiment_id><variant_label><table><variable_id><grid_label><version>",
+    "output_file_template":         "<variable_id><table><experiment_id><source_id><variant_label><grid_label>",
+
+    "license":                      "One of 2 licenses: ----- CMIP6 model data produced by <Your CentreName> is licensed under a Creative Commons Attribution 'NonCommercial Share Alike' 4.0 International License (http://creativecommons.org/licenses/by/4.0/). Use of the data should be acknowledged following guidelines found at <what URL???> The data is hosted via the Earth System Grid Federation. Permissions beyond the scope of this license may be available at http://pcmdi.org/cmip5/terms [...]
+
+
+}
+
+
+
diff --git a/Test/test_python_user_interface_00.py b/Test/test_python_user_interface_00.py
index 32ca102..b126bdd 100644
--- a/Test/test_python_user_interface_00.py
+++ b/Test/test_python_user_interface_00.py
@@ -14,32 +14,13 @@ myaxes2=numpy.zeros(9,dtype='i')
 myvars=numpy.zeros(9,dtype='i')
 
 
-cmor.setup(inpath=ipth,set_verbosity=cmor.CMOR_NORMAL, netcdf_file_action = cmor.CMOR_REPLACE, exit_control = cmor.CMOR_EXIT_ON_MAJOR);
-cmor.dataset(
-    outpath = opth,
-    experiment_id = "lgm",
-    institution = "GICC (Generic International Climate Center, Geneva, Switzerland)",
-    source = "GICCM1 (2002): atmosphere:  GICAM3 (gicam_0_brnchT_itea_2, T63L32); ocean: MOM (mom3_ver_3.5.2, 2x3L15); sea ice: GISIM4; land: GILSM2.5",
-    calendar = "standard",
-    realization = 1,
-    contact = "Rusty Koder (koder at middle_earth.net)",
-    history = "Output from archive/giccm_03_std_2xCO2_2256.",
-    comment = "Equilibrium reached after 30-year spin-up after which data were output starting with nominal date of January 2030",
-    references = "Model described by Koder and Tolkien (J. Geophys. Res., 2001, 576-591).  Also see http://www.GICC.su/giccm/doc/index.html  2XCO2 simulation described in Dorkey et al. '(Clim. Dyn., 2003, 323-357.)",
-    leap_year=0,
-    leap_month=0,
-    month_lengths=None,
-    model_id="GICCM1",
-    forcing="TO",
-    institute_id="PCMDI",
-    parent_experiment_id="N/A",
-    parent_experiment_rip="N/A",
-    branch_time=0)
+cmor.setup(inpath="Tables",set_verbosity=cmor.CMOR_NORMAL, netcdf_file_action = cmor.CMOR_REPLACE, exit_control = cmor.CMOR_EXIT_ON_MAJOR);
+cmor.dataset_json("Test/test_python_user_interface_00.json")
 
 tables=[]
-a = cmor.load_table(os.path.join(ipth,"../Tables/CMIP5_Omon"))
+a = cmor.load_table(os.path.join("CMIP6_Omon.json"))
 tables.append(a)
-tables.append(cmor.load_table("Tables/CMIP5_Amon"))
+tables.append(cmor.load_table("CMIP6_Amon.json"))
 print 'Tables ids:',tables
 
 axes=[]
@@ -59,7 +40,7 @@ myaxes[1] = cmor.axis(id,coord_vals=alats,units=units,cell_bounds=bnds_lat)
 id="longitude"
 units="degrees_east"
 myaxes[2] = cmor.axis(id,coord_vals=alons,units=units,cell_bounds=bnds_lon)
-id="plevs"
+id="plev17"
 units="Pa"
 myaxes[3] = cmor.axis(id,coord_vals=plevs,units=units)
 
diff --git a/Test/test_python_user_interface_01.json b/Test/test_python_user_interface_01.json
new file mode 100644
index 0000000..c618eb2
--- /dev/null
+++ b/Test/test_python_user_interface_01.json
@@ -0,0 +1,62 @@
+{
+           "_control_vocabulary_file": "CMIP6_CV.json",
+           "_cmip6_option":           "CMIP6",
+
+    "activity_id":                  "CMIP",
+    "outpath":                      "CMIP6",
+    "experiment_id":                "piControl",
+    "calendar":                     "360_day",
+    "realization_index":            "1",
+    "initialization_index":         "1",
+    "physics_index":                "1",
+    "forcing_index":                "1",
+     "source_type":                      "AOGCM",
+     "sub_experiment":                      "none",
+     "sub_experiment_id":                      "none",
+     "parent_sub_experiment_id":                      "N/A",
+     "parent_mip_era":                      "N/A",
+     "mip_era":                      "CMIP6",
+    "contact ":                     "Python Coder (python at a.b.com) ",
+    "institution_id":                 "PCMDI",
+    "model_id":                     "GICCM1",
+    "history":                      "output from archivcl_A1.nce/giccm_03_std_2xCO2_2256.",
+    "comment":                      "equilibrium reached after 30-year spin-up ",
+    "references":                   "model described by Koder and Tolkien ",
+    "model_id":                     "pcmdi-10a", 
+    "parent_experiment_rip":        "r1i3p2",
+    "parent_experiment_id":         "lgm",
+    "parent_variant_label":            "r1i3p2",
+    "branch_time":                  "0",
+
+
+    "parent_activity_id":           "CMIP",
+    "parent_source_id":             "GFDL-CM2-1",
+    "parent_variant_label":            "r1i1p1f3",
+
+    "branch_method":                "standard",
+    "branch_time_in_child":         "00D0",
+    "branch_time_in_parent":        "3650.0D0",
+    "branch_time_units_in_parent":  "days since 1000-1-1",
+
+    "further_info_url":             "http://furtherinfo.es-doc.org/<mip_era><institution_id><source_id><experiment_id><sub_experiment_id><variant_label>",
+    "grid":                         "native atmosphere T63 gaussian grid (64x128 latxlon)",
+    "grid_label":                  "gn",
+    "grid_resolution":              "5 km",
+
+    "institution_id":               "CSIRO-BOM",
+    "institution":                  "Commonwealth Scientific and Industrial Research Organisation, Australia, and Bureau of Meteorology, Australia",
+
+    "references":                   "Model described by Koder and Tolkien (J. Geophys. Res.,2001, 576 - 591).  Also see http://www.GICC.su/giccm/doc/index.html  2XCO2 simulation described in Dorkey et al. '(Clim. Dyn., 2003, 323 - 357.)",
+    "run_variant":                  "forcing: black carbon aerosol only",
+    "source_id":                    "NICAM",
+    "source":                       "NICAM:",
+    "output_path_template":         "<activity_id><institution_id><source_id><experiment_id><variant_label><table><variable_id><grid_label><version>",
+    "output_file_template":         "<variable_id><table><experiment_id><source_id><variant_label><grid_label>",
+
+    "license":                      "One of 2 licenses: ----- CMIP6 model data produced by <Your CentreName> is licensed under a Creative Commons Attribution 'NonCommercial Share Alike' 4.0 International License (http://creativecommons.org/licenses/by/4.0/). Use of the data should be acknowledged following guidelines found at <what URL???> The data is hosted via the Earth System Grid Federation. Permissions beyond the scope of this license may be available at http://pcmdi.org/cmip5/terms [...]
+
+
+}
+
+
+
diff --git a/Test/test_python_user_interface_01.py b/Test/test_python_user_interface_01.py
index e7edbc6..c4f36f3 100644
--- a/Test/test_python_user_interface_01.py
+++ b/Test/test_python_user_interface_01.py
@@ -7,7 +7,7 @@ pth = os.path.split(os.path.realpath(os.curdir))
 if pth[-1]=='Test':
     ipth = opth = '.'
 else:
-    ipth = opth = 'Test'
+    ipth = opth = 'Tables'
 
 
 myaxes=numpy.zeros(9,dtype='i')
@@ -16,31 +16,12 @@ myvars=numpy.zeros(9,dtype='i')
 
 
 cmor.setup(inpath=ipth,set_verbosity=cmor.CMOR_NORMAL, netcdf_file_action = cmor.CMOR_REPLACE, exit_control = cmor.CMOR_EXIT_ON_MAJOR);
-cmor.dataset(
-    outpath = opth,
-    experiment_id = "historical",
-    institution = "GICC (Generic International Climate Center, Geneva, Switzerland)",
-    source = "GICCM1 2002: atmosphere:  GICAM3 (gicam_0_brnchT_itea_2, T63L32); ocean: MOM (mom3_ver_3.5.2, 2x3L15); sea ice: GISIM4; land: GILSM2.5",
-    calendar = "standard",
-    realization = 1,
-    contact = "Rusty Koder (koder at middle_earth.net)",
-    history = "Output from archive/giccm_03_std_2xCO2_2256.",
-    comment = "Equilibrium reached after 30-year spin-up after which data were output starting with nominal date of January 2030",
-    references = "Model described by Koder and Tolkien (J. Geophys. Res., 2001, 576-591).  Also see http://www.GICC.su/giccm/doc/index.html  2XCO2 simulation described in Dorkey et al. '(Clim. Dyn., 2003, 323-357.)",
-    leap_year=0,
-    leap_month=0,
-    month_lengths=None,
-    model_id="GICCM1",
-    forcing="Ant, Nat",
-    institute_id="pcmdi",
-    parent_experiment_id="piControl",
-    parent_experiment_rip="r1i1p1",
-    branch_time=18336.33)
+cmor.dataset_json("Test/test_python_user_interface_01.json")
 
 tables=[]
-a = cmor.load_table("Tables/CMIP5_grids")
+a = cmor.load_table("CMIP6_grids.json")
 tables.append(a)
-tables.append(cmor.load_table("Tables/CMIP5_Amon"))
+tables.append(cmor.load_table("CMIP6_Amon.json"))
 print 'Tables ids:',tables
 
 cmor.set_table(tables[0])
diff --git a/Test/test_python_user_interface_03.json b/Test/test_python_user_interface_03.json
new file mode 100644
index 0000000..c618eb2
--- /dev/null
+++ b/Test/test_python_user_interface_03.json
@@ -0,0 +1,62 @@
+{
+           "_control_vocabulary_file": "CMIP6_CV.json",
+           "_cmip6_option":           "CMIP6",
+
+    "activity_id":                  "CMIP",
+    "outpath":                      "CMIP6",
+    "experiment_id":                "piControl",
+    "calendar":                     "360_day",
+    "realization_index":            "1",
+    "initialization_index":         "1",
+    "physics_index":                "1",
+    "forcing_index":                "1",
+     "source_type":                      "AOGCM",
+     "sub_experiment":                      "none",
+     "sub_experiment_id":                      "none",
+     "parent_sub_experiment_id":                      "N/A",
+     "parent_mip_era":                      "N/A",
+     "mip_era":                      "CMIP6",
+    "contact ":                     "Python Coder (python at a.b.com) ",
+    "institution_id":                 "PCMDI",
+    "model_id":                     "GICCM1",
+    "history":                      "output from archivcl_A1.nce/giccm_03_std_2xCO2_2256.",
+    "comment":                      "equilibrium reached after 30-year spin-up ",
+    "references":                   "model described by Koder and Tolkien ",
+    "model_id":                     "pcmdi-10a", 
+    "parent_experiment_rip":        "r1i3p2",
+    "parent_experiment_id":         "lgm",
+    "parent_variant_label":            "r1i3p2",
+    "branch_time":                  "0",
+
+
+    "parent_activity_id":           "CMIP",
+    "parent_source_id":             "GFDL-CM2-1",
+    "parent_variant_label":            "r1i1p1f3",
+
+    "branch_method":                "standard",
+    "branch_time_in_child":         "00D0",
+    "branch_time_in_parent":        "3650.0D0",
+    "branch_time_units_in_parent":  "days since 1000-1-1",
+
+    "further_info_url":             "http://furtherinfo.es-doc.org/<mip_era><institution_id><source_id><experiment_id><sub_experiment_id><variant_label>",
+    "grid":                         "native atmosphere T63 gaussian grid (64x128 latxlon)",
+    "grid_label":                  "gn",
+    "grid_resolution":              "5 km",
+
+    "institution_id":               "CSIRO-BOM",
+    "institution":                  "Commonwealth Scientific and Industrial Research Organisation, Australia, and Bureau of Meteorology, Australia",
+
+    "references":                   "Model described by Koder and Tolkien (J. Geophys. Res.,2001, 576 - 591).  Also see http://www.GICC.su/giccm/doc/index.html  2XCO2 simulation described in Dorkey et al. '(Clim. Dyn., 2003, 323 - 357.)",
+    "run_variant":                  "forcing: black carbon aerosol only",
+    "source_id":                    "NICAM",
+    "source":                       "NICAM:",
+    "output_path_template":         "<activity_id><institution_id><source_id><experiment_id><variant_label><table><variable_id><grid_label><version>",
+    "output_file_template":         "<variable_id><table><experiment_id><source_id><variant_label><grid_label>",
+
+    "license":                      "One of 2 licenses: ----- CMIP6 model data produced by <Your CentreName> is licensed under a Creative Commons Attribution 'NonCommercial Share Alike' 4.0 International License (http://creativecommons.org/licenses/by/4.0/). Use of the data should be acknowledged following guidelines found at <what URL???> The data is hosted via the Earth System Grid Federation. Permissions beyond the scope of this license may be available at http://pcmdi.org/cmip5/terms [...]
+
+
+}
+
+
+
diff --git a/Test/test_python_user_interface_03.py b/Test/test_python_user_interface_03.py
index 6debe7f..2e758b8 100644
--- a/Test/test_python_user_interface_03.py
+++ b/Test/test_python_user_interface_03.py
@@ -1,5 +1,7 @@
 import numpy
 import cmor
+from time import localtime, strftime
+today = strftime("%Y%m%d", localtime())
 
 print 'Done importing'
 try:
@@ -9,14 +11,8 @@ except:
     import sys
     sys.exit()
 import os
-pth = os.path.split(os.path.realpath(os.curdir))
-if pth[-1]=='Test':
-    ipth = opth = '.'
-    dpth = '../data'
-else:
-    ipth = opth = 'Test'
-    dpth='data'
 
+dpth="data"
 myaxes=numpy.zeros(9,dtype='i')
 myaxes2=numpy.zeros(9,dtype='i')
 myvars=numpy.zeros(9,dtype='i')
@@ -56,30 +52,13 @@ def prep_var(data):
 
 
 def prep_cmor():
-    cmor.setup(inpath=ipth,set_verbosity=cmor.CMOR_QUIET, netcdf_file_action = cmor.CMOR_REPLACE, exit_control = cmor.CMOR_EXIT_ON_MAJOR);
-    cmor.dataset(
-        outpath = opth,
-        experiment_id = "lgm",
-        institution = "GICC (Generic International Climate Center, Geneva, Switzerland)",
-        source = "GICCM1 (2002): atmosphere:  GICAM3 (gicam_0_brnchT_itea_2, T63L32); ocean: MOM (mom3_ver_3.5.2, 2x3L15); sea ice: GISIM4; land: GILSM2.5",
-        calendar = "standard",
-        realization = 1,
-        contact = "Rusty Koder (koder at middle_earth.net)",
-        history = "Output from archive/giccm_03_std_2xCO2_2256.",
-        comment = "Equilibrium reached after 30-year spin-up after which data were output starting with nominal date of January 2030",
-        references = "Model described by Koder and Tolkien (J. Geophys. Res., 2001, 576-591).  Also see http://www.GICC.su/giccm/doc/index.html  2XCO2 simulation described in Dorkey et al. '(Clim. Dyn., 2003, 323-357.)",
-        leap_year=0,
-        leap_month=0,
-        institute_id="PCMDI",
-        month_lengths=None,model_id="GICCM1",forcing="Nat",
-        parent_experiment_id="N/A",
-        parent_experiment_rip="N/A",
-        branch_time=0.)
+    cmor.setup(inpath="Tables",set_verbosity=cmor.CMOR_QUIET, netcdf_file_action = cmor.CMOR_REPLACE, exit_control = cmor.CMOR_EXIT_ON_MAJOR);
+    cmor.dataset_json("Test/test_python_user_interface_03.json")
     
     tables=[]
-    a = cmor.load_table("Tables/CMIP5_Omon")
+    a = cmor.load_table("CMIP6_Omon.json")
     tables.append(a)
-    tables.append(cmor.load_table("Tables/CMIP5_Amon"))
+    tables.append(cmor.load_table("CMIP6_Amon.json"))
     return
 
 
@@ -95,7 +74,8 @@ for var in ['tas',]:
         df = data.filled(data.missing_value)
         cmor.write(var_id,df)
         cmor.close()
-        f=cdms2.open(opth+'/CMIP5/output/PCMDI/GICCM1/lgm/mon/atmos/%s/r1i1p1/%s_Amon_GICCM1_lgm_r1i1p1_186810-186812.nc'  % (var,var))
+        fn = "CMIP6/CMIP/CSIRO-BOM/NICAM/piControl/r1i1p1f1/Amon/%s/gn/v%s/%s_Amon_piControl_NICAM_r1i1p1f1_gn_197901-199605.nc" %(var,today,var)
+        f=cdms2.open(fn)
         s=f(var)
         if not numpy.allclose(s,data_ordered):
             raise "Error reordering: %s"%o
diff --git a/Test/test_region.f90 b/Test/test_region.f90
index 4402984..d3602d0 100644
--- a/Test/test_region.f90
+++ b/Test/test_region.f90
@@ -167,34 +167,12 @@ PROGRAM test_region
   !   experiment conditions, and provide information to be included as 
   !   attributes in all CF-netCDF files written as part of this dataset.
 
-  error_flag = cmor_dataset(                                   &
-       outpath='Test',                                         &
-       experiment_id='abrupt 4XCO2',           &
-       institution=                                            &
-       'GICC (Generic International Climate Center, ' //       &
-       'Geneva, Switzerland)',                                 &
-       source='GICCM1 (2002): ' //                             &
-       'atmosphere:  GICAM3 (gicam_0_brnchT_itea_2, T63L32); '// &
-       'ocean: MOM (mom3_ver_3.5.2, 2x3L15); '             //  &
-       'sea ice: GISIM4; land: GILSM2.5',                      &
-       calendar='360_day',                                      &
-       realization=1,                                          &
-       history='Output from archive/giccm_03_std_2xCO2_2256.', &
-       comment='Equilibrium reached after 30-year spin-up ' // &
-       'after which data were output starting with nominal '// &
-       'date of January 2030',                                 &
-       references='Model described by Koder and Tolkien ' //   &
-       '(J. Geophys. Res., 2001, 576-591).  Also '        //   &
-       'see http://www.GICC.su/giccm/doc/index.html '     //   &
-       ' 2XCO2 simulation described in Dorkey et al. '    //   &
-       '(Clim. Dyn., 2003, 323-357.)' , model_id="GICCM1", &
-       forcing='TO',contact="Barry Bonds",institute_id="PCMDI",&
-       parent_experiment_rip="N/A",parent_experiment_id="N/A",branch_time=bt)
+  error_flag = cmor_dataset_json("Test/test2.json")
     
   !  Define all axes that will be needed
   
   ilat = cmor_axis(  &
-       table='Tables/CMIP5_Omon',    &
+       table='Tables/CMIP6_Omon.json',    &
        table_entry='latitude',       &
        units='degrees_north',        &  
        length=lat,                   &
@@ -202,7 +180,7 @@ PROGRAM test_region
        cell_bounds=bnds_lat)        
       
   ireg = cmor_axis(  &
-       table='Tables/CMIP5_Omon',        &
+       table='Tables/CMIP6_Omon.json',        &
        table_entry='basin',         &
        length=reg,                   &
        units='none',                 &
@@ -214,7 +192,7 @@ PROGRAM test_region
   !   cmor_write (later, below).
 
   itim = cmor_axis(  &
-       table='Tables/CMIP5_Omon',        &
+       table='Tables/CMIP6_Omon.json',        &
        table_entry='time',           &
        units='days since 2030-1-1',  &
        length=ntimes,                &
@@ -225,7 +203,7 @@ PROGRAM test_region
   
   DO m=1,n1d
      var1d_ids(m) = cmor_variable(    &
-          table='Tables/CMIP5_Omon',      &
+          table='Tables/CMIP6_Omon.json',      &
           table_entry=entry1d(m),     &
           units=units1d(m),           &
           axis_ids=(/ ilat, ireg, itim /), &
diff --git a/Test/test_shrt_exp_nm_set_att_initi.f90 b/Test/test_shrt_exp_nm_set_att_initi.f90
index b7828bc..3106597 100644
--- a/Test/test_shrt_exp_nm_set_att_initi.f90
+++ b/Test/test_shrt_exp_nm_set_att_initi.f90
@@ -160,27 +160,7 @@ PROGRAM mip_contribution
   !   all CF-netCDF files written as part of this dataset.
 
   print*, 'calling cmor_dataset'
-  error_flag = cmor_dataset(                                   &
-       outpath='Test',         &
-       experiment_id='lgm',           &
-       institution=                                            &
-       'GICC (Generic International Climate Center, ' //       &
-       ' Geneva, Switzerland)',                                &
-       source='GICCM1  2002(giccm_0_brnchT_itea_2, T63L32)',    &
-       calendar='360_day',                                      &
-       realization=1,                                          &
-       history='Output from archive/giccm_03_std_2xCO2_2256.', &
-       comment='Equilibrium reached after 30-year spin-up ' // &
-       'after which data were output starting with nominal '// &
-       'date of January 2030',                                 &
-       references='Model described by Koder and Tolkien ' //   &
-       '(J. Geophys. Res., 2001, 576-591).  Also ' //          &
-       'see http://www.GICC.su/giccm/doc/index.html '  //      &
-       ' 2XCO2 simulation described in Dorkey et al. '//       &
-       '(Clim. Dyn., 2003, 323-357.)',model_id="GICCM1", &
-       forcing='TO',contact="Barry Bonds",institute_id="PCMDI",&
-       parent_experiment_rip="N/A",parent_experiment_id="N/A",branch_time=bt)
-  
+  error_flag = cmor_dataset_json("Test/test2.json")
   
   print*, 'returned from cmor_dataset'
 
@@ -192,14 +172,14 @@ PROGRAM mip_contribution
   print*, 'defining axes'
   
   axis2d_ids(1) = cmor_axis(  &
-       table='Tables/CMIP5_Amon',    &
+       table='Tables/CMIP6_Amon.json',    &
        table_entry='latitude',       &
        units='degrees_north',        &  
        length=lat,                   &
        coord_vals=alats,             & 
        cell_bounds=bnds_lat)              
   axis2d_ids(2) = cmor_axis(  &
-       table='Tables/CMIP5_Amon',    &
+       table='Tables/CMIP6_Amon.json',    &
        table_entry='longitude',      &
        length=lon,                   &
        units='degrees_east',         &
@@ -210,7 +190,7 @@ PROGRAM mip_contribution
   !   cmor_write (below).
 print*, 'before time '
   axis2d_ids(3) = cmor_axis(  &
-       table='Tables/CMIP5_Amon',    &
+       table='Tables/CMIP6_Amon.json',    &
        table_entry='time',           &
        units='days since 1979-1-1',  &
        length=ntimes,                &
@@ -227,7 +207,7 @@ print*, 'before time '
      msg2 = trim(entry2d(1)(1:4))
      print*,'Test Code: defining variable: :',msg2
      var2d_ids(m) = cmor_variable(    &
-          table='Tables/CMIP5_Amon',  & 
+          table='Tables/CMIP6_Amon.json',  & 
           table_entry=msg2,     & 
 !!$          file_suffix='1979-2001',    &
           units=units2d(1),           & 
diff --git a/Test/test_sigma.f90 b/Test/test_sigma.f90
index d30d6a0..16d48e6 100644
--- a/Test/test_sigma.f90
+++ b/Test/test_sigma.f90
@@ -214,34 +214,11 @@ PROGRAM ipcc_test_code
   !   experiment conditions, and provide information to be included as 
   !   attributes in all CF-netCDF files written as part of this dataset.
 
-  error_flag = cmor_dataset(                                   &
-       outpath='Test',                                         &
-       experiment_id='abrupt 4XCO2',           &
-       institution=                                            &
-       'GICC (Generic International Climate Center, ' //       &
-       'Geneva, Switzerland)',                                 &
-       source='GICCM1 (2002): ' //                             &
-       'atmosphere:  GICAM3 (gicam_0_brnchT_itea_2, T63L32); '// &
-       'ocean: MOM (mom3_ver_3.5.2, 2x3L15); '             //  &
-       'sea ice: GISIM4; land: GILSM2.5',                      &
-       calendar='360_day',                                      &
-       realization=1,                                          &
-       history='Output from archivcl_A1.nce/giccm_03_std_2xCO2_2256.', &
-       comment='Equilibrium reached after 30-year spin-up ' // &
-       'after which data were output starting with nominal '// &
-       'date of January 2030',                                 &
-       references='Model described by Koder and Tolkien ' //   &
-       '(J. Geophys. Res., 2001, 576-591).  Also '        //   &
-       'see http://www.GICC.su/giccm/doc/index.html '     //   &
-       ' 2XCO2 simulation described in Dorkey et al. '    //   &
-       '(Clim. Dyn., 2003, 323-357.)',model_id="GICCM1", &
-       forcing='TO',contact="Barry Bonds",institute_id="PCMDI",&
-       parent_experiment_rip="N/A",parent_experiment_id="N/A",branch_time=bt)
-
+  error_flag = cmor_dataset_json("Test/test2.json")
   !  Define all axes that will be needed
   
   ilat = cmor_axis(  &
-       table='Tables/CMIP5_Amon',        &
+       table='Tables/CMIP6_Amon.json',        &
        table_entry='latitude',       &
        units='degrees_north',        &  
        length=lat,                   &
@@ -249,7 +226,7 @@ PROGRAM ipcc_test_code
        cell_bounds=bnds_lat)        
       
   ilon2 = cmor_axis(  &
-       table='Tables/CMIP5_Lmon',        &
+       table='Tables/CMIP6_Lmon.json',        &
        table_entry='longitude',      &
        length=lon,                   &
        units='degrees_east',         &
@@ -257,7 +234,7 @@ PROGRAM ipcc_test_code
        cell_bounds=bnds_lon)      
         
   ilat2 = cmor_axis(  &
-       table='Tables/CMIP5_Lmon',        &
+       table='Tables/CMIP6_Lmon.json',        &
        table_entry='latitude',       &
        units='degrees_north',        &  
        length=lat,                   &
@@ -265,7 +242,7 @@ PROGRAM ipcc_test_code
        cell_bounds=bnds_lat)        
       
   ilon = cmor_axis(  &
-       table='Tables/CMIP5_Amon',        &
+       table='Tables/CMIP6_Amon.json',        &
        table_entry='longitude',      &
        length=lon,                   &
        units='degrees_east',         &
@@ -273,8 +250,8 @@ PROGRAM ipcc_test_code
        cell_bounds=bnds_lon)      
         
   ipres = cmor_axis(  &
-       table='Tables/CMIP5_Amon',        &
-       table_entry='plevs',       &
+       table='Tables/CMIP6_Amon.json',        &
+       table_entry='plev17',       &
        units='Pa',                   &
        length=lev2,                   &
        coord_vals=plevs)
@@ -284,13 +261,13 @@ PROGRAM ipcc_test_code
   !   cmor_write (later, below).
 
   itim = cmor_axis(  &
-       table='Tables/CMIP5_Amon',        &
+       table='Tables/CMIP6_Amon.json',        &
        table_entry='time',           &
        units='days since 2030-1-1',  &
        length=ntimes,                &
        interval='1 month')
   itim2 = cmor_axis(  &
-       table='Tables/CMIP5_Lmon',        &
+       table='Tables/CMIP6_Lmon.json',        &
        table_entry='time',           &
        units='days since 2030-1-1',  &
        length=ntimes,                &
@@ -301,7 +278,7 @@ PROGRAM ipcc_test_code
   zlev_bnds=(/ 0.,.2, .42, .62, .8, 1. /)
 
   ilev = cmor_axis(  &
-       table='Tables/CMIP5_Amon',        &
+       table='Tables/CMIP6_Amon.json',        &
        table_entry='standard_sigma',       &
 !!$       table_entry='standard_hybrid_sigma',       &
        units='1',&
@@ -344,7 +321,7 @@ PROGRAM ipcc_test_code
   !    (appearing in IPCC table A1c)
 
   var3d_ids(1) = cmor_variable(    &
-       table='Tables/CMIP5_Amon',      &
+       table='Tables/CMIP6_Amon.json',      &
        table_entry=entry3d(1),     &
        units=units3d(1),           &
        axis_ids=(/ ilev, ilon, ilat, itim /),  &
@@ -356,7 +333,7 @@ PROGRAM ipcc_test_code
   
   DO m=2,n3d
      var3d_ids(m) = cmor_variable(    &
-          table='Tables/CMIP5_Amon',      &
+          table='Tables/CMIP6_Amon.json',      &
           table_entry=entry3d(m),     &
           units=units3d(m),           &
           axis_ids=(/ ipres, ilon, ilat, itim /), &
@@ -370,7 +347,7 @@ PROGRAM ipcc_test_code
   DO m=1,n2d
      if (m.ne.3) then
      var2d_ids(m) = cmor_variable(    &
-          table='Tables/CMIP5_Amon',      &
+          table='Tables/CMIP6_Amon.json',      &
           table_entry=entry2d(m),     & 
           units=units2d(m),           & 
           axis_ids=(/ ilon, ilat, itim /), &
@@ -379,7 +356,7 @@ PROGRAM ipcc_test_code
           original_name=varin2d(m))   
   else
      var2d_ids(m) = cmor_variable(    &
-          table='Tables/CMIP5_Lmon',      &
+          table='Tables/CMIP6_Lmon.json',      &
           table_entry=entry2d(m),     & 
           units=units2d(m),           & 
           axis_ids=(/ ilon2, ilat2, itim2 /), &
diff --git a/Test/test_singleton.f90 b/Test/test_singleton.f90
index f678b03..9d033d6 100755
--- a/Test/test_singleton.f90
+++ b/Test/test_singleton.f90
@@ -215,34 +215,11 @@ PROGRAM ipcc_test_code
   !   experiment conditions, and provide information to be included as 
   !   attributes in all CF-netCDF files written as part of this dataset.
 
-  error_flag = cmor_dataset(                                   &
-       outpath='Test',                                         &
-       experiment_id='abrupt 4XCO2',           &
-       institution=                                            &
-       'GICC (Generic International Climate Center, ' //       &
-       'Geneva, Switzerland)',                                 &
-       source='GICCM1 (2002): ' //                             &
-       'atmosphere:  GICAM3 (gicam_0_brnchT_itea_2, T63L32); '// &
-       'ocean: MOM (mom3_ver_3.5.2, 2x3L15); '             //  &
-       'sea ice: GISIM4; land: GILSM2.5',                      &
-       calendar='360_day',                                      &
-       realization=1,                                          &
-       contact = 'Rusty Koder (koder at middle_earth.net) ',      &
-       history='Output from archive/giccm_03_std_2xCO2_2256.', &
-       comment='Equilibrium reached after 30-year spin-up ' // &
-       'after which data were output starting with nominal '// &
-       'date of January 2030',                                 &
-       references='Model described by Koder and Tolkien ' //   &
-       '(J. Geophys. Res., 2001, 576-591).  Also '        //   &
-       'see http://www.GICC.su/giccm/doc/index.html '     //   &
-       ' 2XCO2 simulation described in Dorkey et al. '    //   &
-       '(Clim. Dyn., 2003, 323-357.)', model_id="GICCM1", &
-       forcing='TO',institute_id="PCMDI",&
-       parent_experiment_rip="N/A",parent_experiment_id="N/A",branch_time=bt)
+  error_flag = cmor_dataset_json("Test/test2.json")
   !  Define all axes that will be needed
 
   ilat = cmor_axis(  &
-       table='Tables/CMIP5_Amon',    &
+       table='Tables/CMIP6_Amon.json',    &
        table_entry='latitude',       &
        units='degrees_north',        &  
        length=lat,                   &
@@ -250,7 +227,7 @@ PROGRAM ipcc_test_code
        cell_bounds=bnds_lat)        
       
   ilon = cmor_axis(  &
-       table='Tables/CMIP5_Amon',    &
+       table='Tables/CMIP6_Amon.json',    &
        table_entry='longitude',      &
        length=lon,                   &
        units='degrees_east',         &
@@ -258,13 +235,13 @@ PROGRAM ipcc_test_code
        cell_bounds=bnds_lon)      
         
   ipres = cmor_axis(  &
-       table='Tables/CMIP5_Amon',    &
-       table_entry='plevs',       &
+       table='Tables/CMIP6_Amon.json',    &
+       table_entry='plev17',       &
        units='Pa',                   &
        length=lev2,                   &
        coord_vals=plevs)
   ilat2 = cmor_axis(  &
-       table='Tables/CMIP5_Lmon',        &
+       table='Tables/CMIP6_Lmon.json',        &
        table_entry='latitude',       &
        units='degrees_north',        &  
        length=lat,                   &
@@ -272,7 +249,7 @@ PROGRAM ipcc_test_code
        cell_bounds=bnds_lat)        
       
   ilon2 = cmor_axis(  &
-       table='Tables/CMIP5_Lmon',        &
+       table='Tables/CMIP6_Lmon.json',        &
        table_entry='longitude',      &
        length=lon,                   &
        units='degrees_east',         &
@@ -280,7 +257,7 @@ PROGRAM ipcc_test_code
        cell_bounds=bnds_lon)      
         
   itim2 = cmor_axis(  &
-       table='Tables/CMIP5_Lmon',        &
+       table='Tables/CMIP6_Lmon.json',        &
        table_entry='time',           &
        units='days since 2030-1-1',  &
        length=ntimes,                &
@@ -288,7 +265,7 @@ PROGRAM ipcc_test_code
 
 
   iht = cmor_axis(  &
-       table='Tables/CMIP5_Amon',    &
+       table='Tables/CMIP6_Amon.json',    &
        table_entry='height2m',       &
        units='m',                   &
        length=1,                   &
@@ -299,7 +276,7 @@ PROGRAM ipcc_test_code
   !   cmor_write (later, below).
 
   itim = cmor_axis(  &
-       table='Tables/CMIP5_Amon',    &
+       table='Tables/CMIP6_Amon.json',    &
        table_entry='time',           &
        units='days since 2030-1-1',  &
        length=ntimes,                &
@@ -311,7 +288,7 @@ PROGRAM ipcc_test_code
   zlev_bnds=(/ 0.,.2, .42, .62, .8, 1. /)
 
   ilev = cmor_axis(  &
-       table='Tables/CMIP5_Amon',    &
+       table='Tables/CMIP6_Amon.json',    &
        table_entry='standard_hybrid_sigma',       &
        length=lev,                   &
        units='1',&
@@ -356,7 +333,7 @@ PROGRAM ipcc_test_code
   !    (appearing in IPCC table A1c)
 
   var3d_ids(1) = cmor_variable(    &
-       table='Tables/CMIP5_Amon',  &
+       table='Tables/CMIP6_Amon.json',  &
        table_entry=entry3d(1),     &
        units=units3d(1),           &
        axis_ids=(/ ilon, ilat, ilev, itim /),  &
@@ -368,7 +345,7 @@ PROGRAM ipcc_test_code
   bt = 1.e28
   DO m=2,n3d
      var3d_ids(m) = cmor_variable(    &
-          table='Tables/CMIP5_Amon',  &
+          table='Tables/CMIP6_Amon.json',  &
           table_entry=entry3d(m),     &
           units=units3d(m),           &
           axis_ids=(/ ilon, ilat, ipres, itim /), &
@@ -382,7 +359,7 @@ PROGRAM ipcc_test_code
   DO m=1,n2d
      IF (m==2) THEN
         var2d_ids(m) = cmor_variable(    &
-             table='Tables/CMIP5_Amon',  &
+             table='Tables/CMIP6_Amon.json',  &
              table_entry=entry2d(m),     & 
              units=units2d(m),           & 
              axis_ids=(/ ilat, iht, ilon, itim /), &
@@ -392,7 +369,7 @@ PROGRAM ipcc_test_code
      ELSE IF (m==3) THEN
 
         var2d_ids(m) = cmor_variable(    &
-             table='Tables/CMIP5_Lmon',  &
+             table='Tables/CMIP6_Lmon.json',  &
              table_entry=entry2d(m),     & 
              units=units2d(m),           & 
              axis_ids=(/ ilon2, ilat2, itim2 /), &
@@ -403,7 +380,7 @@ PROGRAM ipcc_test_code
      ELSE
 
         var2d_ids(m) = cmor_variable(    &
-             table='Tables/CMIP5_Amon',  &
+             table='Tables/CMIP6_Amon.json',  &
              table_entry=entry2d(m),     & 
              units=units2d(m),           & 
              axis_ids=(/ ilon, ilat, itim /), &
diff --git a/Test/test_region.f90 b/Test/test_singleton_5D_tas.f90
old mode 100644
new mode 100755
similarity index 61%
copy from Test/test_region.f90
copy to Test/test_singleton_5D_tas.f90
index 4402984..9ea327f
--- a/Test/test_region.f90
+++ b/Test/test_singleton_5D_tas.f90
@@ -5,25 +5,33 @@ MODULE local_subs
 
   USE cmor_users_functions
   PRIVATE
-  PUBLIC read_coords, read_time, read_1d_input_files
+  PUBLIC read_coords, read_time, read_2d_input_files
 CONTAINS
   
-  SUBROUTINE read_coords(alats, bnds_lat)
+  SUBROUTINE read_coords(alats, alons, plevs, bnds_lat, bnds_lon)
 
     IMPLICIT NONE
     
     DOUBLE PRECISION, INTENT(OUT), DIMENSION(:) :: alats
+    REAL, INTENT(OUT), DIMENSION(:) :: alons
+    DOUBLE PRECISION, INTENT(OUT), DIMENSION(:) :: plevs
     DOUBLE PRECISION, INTENT(OUT), DIMENSION(:,:) :: bnds_lat
+    REAL, INTENT(OUT), DIMENSION(:,:) :: bnds_lon
     
     INTEGER :: i
     
+    DO i = 1, SIZE(alons)
+       alons(i) = (i-1)*360./SIZE(alons)
+       bnds_lon(1,i) = (i - 1.5)*360./SIZE(alons)
+       bnds_lon(2,i) = (i - 0.5)*360./SIZE(alons)
+    END DO
+    
     DO i = 1, SIZE(alats)
-       alats(i) = i*10
-       bnds_lat(1,i) = i*10. - 5.
-       bnds_lat(2,i) = i*10. + 5.
+       alats(i) = (size(alats)+1-i)*10
+       bnds_lat(1,i) = (size(alats)+1-i)*10 + 5.
+       bnds_lat(2,i) = (size(alats)+1-i)*10 - 5.
     END DO
-      
-    RETURN
+  
   END SUBROUTINE read_coords
 
   SUBROUTINE read_time(it, time, time_bnds)
@@ -42,11 +50,10 @@ CONTAINS
   END SUBROUTINE read_time
   
 include "reader_2D_3D.f90"
-
 END MODULE local_subs
 
 
-PROGRAM test_region
+PROGRAM ipcc_test_code
 !
 !   Purpose:   To serve as a generic example of an application that
 !       uses the "Climate Model Output Rewriter" (CMOR)
@@ -92,11 +99,13 @@ PROGRAM test_region
   !   dimension parameters:
   ! ---------------------------------
   INTEGER, PARAMETER :: ntimes = 2    ! number of time samples to process
-  INTEGER, PARAMETER :: reg = 4       ! number of regions 
+  INTEGER, PARAMETER :: lon = 4       ! number of longitude grid cells  
   INTEGER, PARAMETER :: lat = 3       ! number of latitude grid cells
-  INTEGER, PARAMETER :: n1d = 1       ! number of IPCC Table O1 fields to be
+  INTEGER, PARAMETER :: lev = 5       ! number of standard pressure levels
+  INTEGER, PARAMETER :: lev2 =17       ! number of standard pressure levels
+  INTEGER, PARAMETER :: n2d = 1       ! number of IPCC Table A1a fields to be
                                       !     output.
-  !
+
   !   Tables associating the user's variables with IPCC standard output 
   !   variables.  The user may choose to make this association in a 
   !   different way (e.g., by defining values of pointers that allow him 
@@ -106,37 +115,53 @@ PROGRAM test_region
 
   ! ----------------------------------
 
-                                ! My variable names for IPCC Table O1a fields
-  CHARACTER (LEN=5), DIMENSION(n1d) :: &
-                                 varin1d=(/ 'OFLUX' /)
+  CHARACTER (LEN=8), DIMENSION(n2d) :: &
+                          varin2d=(/ 'TSURF   ' /)
 
                                 ! Units appropriate to my data
-  CHARACTER (LEN=1), DIMENSION(n1d) :: &
-                                  units1d=(/ 'W' /)
+   CHARACTER (LEN=6), DIMENSION(n2d) :: &
+                          units2d=(/ 'K     '/)
 
-                     ! Corresponding IPCC Table O1a entry (variable name) 
-  CHARACTER (LEN=8), DIMENSION(n1d) :: entry1d = (/ 'htovgyre' /)
+   CHARACTER (LEN=4), DIMENSION(n2d) :: &
+                      positive2d= (/  '    '/)
 
+                     ! Corresponding IPCC Table A1a entry (variable name) 
+  CHARACTER (LEN=11), DIMENSION(n2d) :: &
+                        entry2d = (/ 'tasforecast'/)
 
 !  uninitialized variables used in communicating with CMOR:
 !  ---------------------------------------------------------
 
   INTEGER :: error_flag
-  INTEGER, DIMENSION(n1d) :: var1d_ids
-  REAL, DIMENSION(lat,reg) :: data1d
+  INTEGER :: znondim_id, zfactor_id
+  INTEGER, DIMENSION(n2d) :: var2d_ids
+  REAL, DIMENSION(lon,lat) :: data2d
+  REAL, DIMENSION(lon,lat,lev2) :: data3d
+  DOUBLE PRECISION, DIMENSION(lat,1,1,lon) :: scramble
   DOUBLE PRECISION, DIMENSION(lat) :: alats
+  REAL, DIMENSION(lon) :: alons
+  DOUBLE PRECISION, DIMENSION(lev2) :: plevs
   DOUBLE PRECISION, DIMENSION(1) :: time
   DOUBLE PRECISION, DIMENSION(2,1):: bnds_time
   DOUBLE PRECISION, DIMENSION(2,lat) :: bnds_lat
-  INTEGER :: ilat, ireg, itim
-  double precision bt
+  REAL, DIMENSION(2,lon) :: bnds_lon
+  DOUBLE PRECISION, DIMENSION(lev) :: zlevs
+  DOUBLE PRECISION, DIMENSION(lev+1) :: zlev_bnds
+  REAL, DIMENSION(lev) :: a_coeff
+  REAL, DIMENSION(lev) :: b_coeff
+  REAL :: p0
+  REAL, DIMENSION(lev+1) :: a_coeff_bnds
+  REAL, DIMENSION(lev+1) :: b_coeff_bnds
+  INTEGER :: ilon, ilat, ipres, ilev, itim, ilon2,ilat2,itim2
+  INTEGER :: iht, itk
 
   !  Other variables:
   !  ---------------------
   
-  INTEGER :: it, m  
+  INTEGER :: it, m, i, j
+  double precision bt
+
   bt=0.
-  
   ! ================================
   !  Execution begins here:
   ! ================================
@@ -155,7 +180,7 @@ PROGRAM test_region
   
   !  *** possible user-written call ***
   
-  call read_coords(alats, bnds_lat)
+  call read_coords(alats, alons, plevs, bnds_lat, bnds_lon)
   
   ! Specify path where tables can be found and indicate that existing 
   !    netCDF files should not be overwritten.
@@ -167,72 +192,62 @@ PROGRAM test_region
   !   experiment conditions, and provide information to be included as 
   !   attributes in all CF-netCDF files written as part of this dataset.
 
-  error_flag = cmor_dataset(                                   &
-       outpath='Test',                                         &
-       experiment_id='abrupt 4XCO2',           &
-       institution=                                            &
-       'GICC (Generic International Climate Center, ' //       &
-       'Geneva, Switzerland)',                                 &
-       source='GICCM1 (2002): ' //                             &
-       'atmosphere:  GICAM3 (gicam_0_brnchT_itea_2, T63L32); '// &
-       'ocean: MOM (mom3_ver_3.5.2, 2x3L15); '             //  &
-       'sea ice: GISIM4; land: GILSM2.5',                      &
-       calendar='360_day',                                      &
-       realization=1,                                          &
-       history='Output from archive/giccm_03_std_2xCO2_2256.', &
-       comment='Equilibrium reached after 30-year spin-up ' // &
-       'after which data were output starting with nominal '// &
-       'date of January 2030',                                 &
-       references='Model described by Koder and Tolkien ' //   &
-       '(J. Geophys. Res., 2001, 576-591).  Also '        //   &
-       'see http://www.GICC.su/giccm/doc/index.html '     //   &
-       ' 2XCO2 simulation described in Dorkey et al. '    //   &
-       '(Clim. Dyn., 2003, 323-357.)' , model_id="GICCM1", &
-       forcing='TO',contact="Barry Bonds",institute_id="PCMDI",&
-       parent_experiment_rip="N/A",parent_experiment_id="N/A",branch_time=bt)
-    
+  error_flag = cmor_dataset_json("Test/test2.json")
   !  Define all axes that will be needed
-  
+
   ilat = cmor_axis(  &
-       table='Tables/CMIP5_Omon',    &
+       table='Tables/CMIP6_excerpts.json',    &
        table_entry='latitude',       &
        units='degrees_north',        &  
        length=lat,                   &
        coord_vals=alats,             & 
        cell_bounds=bnds_lat)        
       
-  ireg = cmor_axis(  &
-       table='Tables/CMIP5_Omon',        &
-       table_entry='basin',         &
-       length=reg,                   &
-       units='none',                 &
-       coord_vals= (/ "atlantic_arctic_ocean", "indian_pacific_ocean ", "pacific_ocean        ", &
-       "global_ocean         " /) )   
+  ilon = cmor_axis(  &
+       table='Tables/CMIP6_excerpts.json',    &
+       table_entry='longitude',      &
+       length=lon,                   &
+       units='degrees_east',         &
+       coord_vals=alons,             &
+       cell_bounds=bnds_lon)      
         
+  itk = cmor_axis(  &
+       table='Tables/CMIP6_excerpts.json',    &
+       table_entry='forecast',       &
+       units='days since 2016-04-13',                   &
+       length=1,                   &
+       coord_vals=(/0.0/))
+
+
+  iht = cmor_axis(  &
+       table='Tables/CMIP6_excerpts.json',    &
+       table_entry='height2m',       &
+       units='m',                   &
+       length=1,                   &
+       coord_vals=(/3.0/))
+
   !   note that the time axis is defined next, but the time coordinate 
   !   values and bounds will be passed to cmor through function 
   !   cmor_write (later, below).
 
   itim = cmor_axis(  &
-       table='Tables/CMIP5_Omon',        &
+       table='Tables/CMIP6_excerpts.json',    &
        table_entry='time',           &
        units='days since 2030-1-1',  &
        length=ntimes,                &
        interval='1 month')
   
 
-  !  Define variables appearing in IPCC table O1a (functions of lat and reg)
-  
-  DO m=1,n1d
-     var1d_ids(m) = cmor_variable(    &
-          table='Tables/CMIP5_Omon',      &
-          table_entry=entry1d(m),     &
-          units=units1d(m),           &
-          axis_ids=(/ ilat, ireg, itim /), &
-          missing_value=1.0e28,       &
-          original_name=varin1d(m))
-  ENDDO
+  !  Define variables appearing in IPCC table A1a (2-d variables)
   
+  var2d_ids = cmor_variable(    &
+             table='Tables/CMIP6_excerpts.json',  &
+             table_entry=entry2d(1),     & 
+             units=units2d(1),           & 
+             axis_ids=(/ ilat, iht,  itk, ilon, itim /), &
+             missing_value=bt,       &
+             positive=positive2d(1),     &
+             original_name=varin2d(1))   
 
   PRINT*, ' '
   PRINT*, 'completed everything up to writing output fields '
@@ -260,44 +275,43 @@ PROGRAM test_region
      
     call read_time(it, time(1), bnds_time)
 
-    ! Cycle through the 1-d fields (functions of lat and region), 
-    ! and retrieve the requested variable and append each to the 
-    ! appropriate netCDF file.
+    print*, 'shape(data2d)',shape(data2d),varin2d(1)
+    print*, 'writing:',entry2d(1)
+    ! The user must write the code that fills the arrays of data
+    ! that will be passed to CMOR.  The following line is simply a
+    ! a place-holder for the user's code, which should replace it.
+           
+    call read_2d_input_files(it, varin2d(1), data2d)                  
+           
+    ! append a single time sample of data for a single field to 
+    ! the appropriate netCDF file.
+           
+
+    DO j=1,lat
+       DO i=1,lon
+          print *,i,j,data2d(i,j)
+          scramble(j,1,1,i) = data2d(i,j)
+       END DO
+    END DO
+    error_flag = cmor_write(                                  &
+         var_id        = var2d_ids(1),                        &
+         data          = scramble(:,1,1,:),                            &
+         ntimes_passed = 1,                                   &
+         time_vals     = time,                                &
+         time_bnds     = bnds_time  )
+
+    IF (error_flag < 0) THEN
+       ! write diagnostic messages to standard output device
+       write(*,*) ' Error encountered writing IPCC Table A1a ' &
+            // 'field ', entry2d(1), ', which I call ', varin2d(1)
+       write(*,*) ' Was processing time sample: ', time 
+              
+    END IF
 
-    DO m=1,n1d
-        
-        ! The user must write the code that fills the arrays of data
-        ! that will be passed to CMOR.  The following line is simply a
-        ! a place-holder for the user's code, which should replace it.
-
-        call read_1d_input_files(it, varin1d(m), data1d)
-       
-        ! append a single time sample of data for a single field to 
-        ! the appropriate netCDF file.
-        
-        error_flag = cmor_write(                                  &
-             var_id        = var1d_ids(m),                        &
-             data          = data1d,                              &
-             ntimes_passed = 1,                                   &
-             time_vals     = time,                                &
-             time_bnds     = bnds_time  )
-        
-        IF (error_flag < 0) THEN
-           ! write diagnostic messages to standard output device
-           write(*,*) ' Error encountered writing IPCC Table O ' &
-                // 'field ', entry1d(m), ', which I call ', varin1d(m)
-           write(*,*) ' Was processing time sample: ', time
-                      
-        END IF
-
-     END DO
-     
-     
   END DO time_loop
   
   !   Close all files opened by CMOR.
- 
-  print*, 'Ok wrote everythin' 
+  
   error_flag = cmor_close()  
 
   print*, ' '
@@ -307,5 +321,5 @@ PROGRAM test_region
   print*, ' '
   print*, '******************************'
   
-END PROGRAM test_region
+END PROGRAM ipcc_test_code
 
diff --git a/Test/test_site_ts.json b/Test/test_site_ts.json
new file mode 100644
index 0000000..c618eb2
--- /dev/null
+++ b/Test/test_site_ts.json
@@ -0,0 +1,62 @@
+{
+           "_control_vocabulary_file": "CMIP6_CV.json",
+           "_cmip6_option":           "CMIP6",
+
+    "activity_id":                  "CMIP",
+    "outpath":                      "CMIP6",
+    "experiment_id":                "piControl",
+    "calendar":                     "360_day",
+    "realization_index":            "1",
+    "initialization_index":         "1",
+    "physics_index":                "1",
+    "forcing_index":                "1",
+     "source_type":                      "AOGCM",
+     "sub_experiment":                      "none",
+     "sub_experiment_id":                      "none",
+     "parent_sub_experiment_id":                      "N/A",
+     "parent_mip_era":                      "N/A",
+     "mip_era":                      "CMIP6",
+    "contact ":                     "Python Coder (python at a.b.com) ",
+    "institution_id":                 "PCMDI",
+    "model_id":                     "GICCM1",
+    "history":                      "output from archivcl_A1.nce/giccm_03_std_2xCO2_2256.",
+    "comment":                      "equilibrium reached after 30-year spin-up ",
+    "references":                   "model described by Koder and Tolkien ",
+    "model_id":                     "pcmdi-10a", 
+    "parent_experiment_rip":        "r1i3p2",
+    "parent_experiment_id":         "lgm",
+    "parent_variant_label":            "r1i3p2",
+    "branch_time":                  "0",
+
+
+    "parent_activity_id":           "CMIP",
+    "parent_source_id":             "GFDL-CM2-1",
+    "parent_variant_label":            "r1i1p1f3",
+
+    "branch_method":                "standard",
+    "branch_time_in_child":         "00D0",
+    "branch_time_in_parent":        "3650.0D0",
+    "branch_time_units_in_parent":  "days since 1000-1-1",
+
+    "further_info_url":             "http://furtherinfo.es-doc.org/<mip_era><institution_id><source_id><experiment_id><sub_experiment_id><variant_label>",
+    "grid":                         "native atmosphere T63 gaussian grid (64x128 latxlon)",
+    "grid_label":                  "gn",
+    "grid_resolution":              "5 km",
+
+    "institution_id":               "CSIRO-BOM",
+    "institution":                  "Commonwealth Scientific and Industrial Research Organisation, Australia, and Bureau of Meteorology, Australia",
+
+    "references":                   "Model described by Koder and Tolkien (J. Geophys. Res.,2001, 576 - 591).  Also see http://www.GICC.su/giccm/doc/index.html  2XCO2 simulation described in Dorkey et al. '(Clim. Dyn., 2003, 323 - 357.)",
+    "run_variant":                  "forcing: black carbon aerosol only",
+    "source_id":                    "NICAM",
+    "source":                       "NICAM:",
+    "output_path_template":         "<activity_id><institution_id><source_id><experiment_id><variant_label><table><variable_id><grid_label><version>",
+    "output_file_template":         "<variable_id><table><experiment_id><source_id><variant_label><grid_label>",
+
+    "license":                      "One of 2 licenses: ----- CMIP6 model data produced by <Your CentreName> is licensed under a Creative Commons Attribution 'NonCommercial Share Alike' 4.0 International License (http://creativecommons.org/licenses/by/4.0/). Use of the data should be acknowledged following guidelines found at <what URL???> The data is hosted via the Earth System Grid Federation. Permissions beyond the scope of this license may be available at http://pcmdi.org/cmip5/terms [...]
+
+
+}
+
+
+
diff --git a/Test/test_site_ts.py b/Test/test_site_ts.py
index e2955c8..8134caa 100644
--- a/Test/test_site_ts.py
+++ b/Test/test_site_ts.py
@@ -2,19 +2,10 @@ import cmor
 import numpy
 
 def cmor_initialisation():
-    cmor.setup(inpath='//Users/doutriaux1',
+    cmor.setup(inpath='Tables',
                netcdf_file_action = cmor.CMOR_REPLACE_3,
                create_subdirectories = 0)
-    cmor.dataset('pre-industrial control', 'ukmo', 'HadCM3', '360_day',
-                 institute_id = 'ukmo',
-                 model_id = 'HadCM3',
-                 history = 'some global history',
-                 forcing = 'N/A',
-                 parent_experiment_id = 'N/A',
-                 parent_experiment_rip = 'N/A',
-                 branch_time = 0.,
-                 contact = 'bob',
-                 outpath = './out')
+    cmor.dataset_json("Test/test_site_ts.json")
 
 def setup_data():
     axes = [ {'table_entry': 'time1',
@@ -34,7 +25,7 @@ def setup_data():
     return values, axes
 
 def cmor_define_and_write(values, axes):
-    table = 'CMIP5_cfSites'
+    table = 'CMIP6_cfSites.json'
     cmor.load_table(table)
 
     axis_ids = list()
diff --git a/Test/test_sophie.f90 b/Test/test_sophie.f90
index 4e52af2..6eb3303 100644
--- a/Test/test_sophie.f90
+++ b/Test/test_sophie.f90
@@ -146,29 +146,7 @@ program testing
  error_flag = cmor_setup(inpath='Test', netcdf_file_action=j,&
       exit_control=k)
  print*,'Test code: done'
- error_flag = cmor_dataset(                                   &
-      outpath='Test',                                         &
-      experiment_id='lgm',           &
-      institution=                                            &
-      'GICC (Generic International Climate Center, ' //       &
-      'Geneva, Switzerland)',                                 &
-      source='GICCM1 (2002): ' //                             &
-      'atmosphere:  GICAM3 (gicam_0_brnchT_itea_2, T63L32); '// &
-      'ocean: MOM (mom3_ver_3.5.2, 2x3L15); '             //  &
-      'sea ice: GISIM4; land: GILSM2.5',                      &
-      calendar='360_day',                                      &
-      realization=1,                                          &
-      history='Output from archive/giccm_03_std_2xCO2_2256.', &
-      comment='Equilibrium reached after 30-year spin-up ' // &
-      'after which data were output starting with nominal '// &
-      'date of January 2030',                                 &
-      references='Model described by Koder and Tolkien ' //   &
-      '(J. Geophys. Res., 2001, 576-591).  Also '        //   &
-      'see http://www.GICC.su/giccm/doc/index.html '     //   &
-      ' 2XCO2 simulation described in Dorkey et al. '    //   &
-      '(Clim. Dyn., 2003, 323-357.)', model_id="GICCM1", &
-      forcing='TO',contact="Barry Bonds",institute_id="PCMDI",&
-       parent_experiment_rip="N/A",parent_experiment_id="N/A",branch_time=bt)
+ error_flag = cmor_dataset_json("Test/test2.json")
   
  print*, 'Test code: done 2 lalala'
 
@@ -177,7 +155,7 @@ program testing
 
  print*, 'Test code: ok calling axis stuff lat',alats
  ilat = cmor_axis(  &
-      table='Tables/CMIP5_Amon',    &
+      table='Tables/CMIP6_Amon.json',    &
       table_entry='latitude',       &
       units='degrees_north',        &  
       length=lat,                   &
@@ -186,7 +164,7 @@ program testing
 
  print*, 'Test code: ok calling axis stuff lon',ilat
  ilon = cmor_axis(  &
-      table='Tables/CMIP5_Amon',    &
+      table='Tables/CMIP6_Amon.json',    &
       table_entry='longitude',      &
       length=lon,                   &
       units='degrees_east',         &
@@ -194,7 +172,7 @@ program testing
       cell_bounds=bnds_lon)      
 
  ilat2 = cmor_axis(  &
-      table='Tables/CMIP5_fx',    &
+      table='Tables/CMIP6_fx.json',    &
       table_entry='latitude',       &
       units='degrees_north',        &  
       length=lat,                   &
@@ -203,7 +181,7 @@ program testing
 
  print*, 'Test code: ok calling axis stuff lon',ilat
  ilon2 = cmor_axis(  &
-      table='Tables/CMIP5_fx',    &
+      table='Tables/CMIP6_fx.json',    &
       table_entry='longitude',      &
       length=lon,                   &
       units='degrees_east',         &
@@ -212,8 +190,8 @@ program testing
 
  print*, 'Test code: ok calling axis stuff pressure',ilon
  ipres = cmor_axis(  &
-      table='Tables/CMIP5_Amon',    &
-      table_entry='plevs',       &
+      table='Tables/CMIP6_Amon.json',    &
+      table_entry='plev17',       &
       units='Pa',                   &
       length=lev2,                   &
       coord_vals=plevs)
@@ -224,7 +202,7 @@ program testing
 
  print*, 'Test code: ok calling axis stuff time',ipres,ntimes
  itim = cmor_axis(  &
-      table='Tables/CMIP5_Amon',    &
+      table='Tables/CMIP6_Amon.json',    &
       table_entry='time',           &
       units='days since 2030-1-1',  &
       length=ntimes,                &
@@ -237,7 +215,7 @@ program testing
 
  print*, 'Test code: ok calling axis stuff lev2',itim
  ilev = cmor_axis(  &
-      table='Tables/CMIP5_Amon',    &
+      table='Tables/CMIP6_Amon.json',    &
       table_entry='standard_hybrid_sigma',       &
       units="1",   &
       length=lev,                   &
@@ -291,7 +269,7 @@ program testing
  print*, 'Test code: var3d'
  missing = 1.e28
  var3d_ids(1) = cmor_variable(    &
-      table='Tables/CMIP5_Amon',  &
+      table='Tables/CMIP6_Amon.json',  &
       table_entry=entry3d(1),     &
       units=units3d(1),           &
       axis_ids=(/ ilon, ilat, ilev, itim /),  &
@@ -305,7 +283,7 @@ program testing
  DO m=2,n3d
     print*, 'Test code: var: ',entry3d(m)
     var3d_ids(m) = cmor_variable(    &
-         table='Tables/CMIP5_Amon',  &
+         table='Tables/CMIP6_Amon.json',  &
          table_entry=entry3d(m),     &
          units=units3d(m),           &
          axis_ids=(/ ilon, ilat, ipres, itim /), &
@@ -320,7 +298,7 @@ program testing
  DO m=1,n2d
     print*, 'Test code: var: ',entry2d(m)
     var2d_ids(m) = cmor_variable(    &
-         table='Tables/CMIP5_fx',  &
+         table='Tables/CMIP6_fx.json',  &
          table_entry=entry2d(m),     & 
          units=units2d(m),           & 
     !     axis_ids=(/ ilon, ilat, itim /), &
diff --git a/Test/test_station_data.f90 b/Test/test_station_data.f90
index 23748e0..949a976 100644
--- a/Test/test_station_data.f90
+++ b/Test/test_station_data.f90
@@ -157,29 +157,7 @@ program testing
   error_flag = cmor_setup(inpath='Test', netcdf_file_action=j,&
        exit_control=k)
   print*,'Test code: done'
-  error_flag = cmor_dataset(                                   &
-       outpath='Test',                                         &
-       experiment_id='abrupt 4XCO2',           &
-       institution=                                            &
-       'GICC (Generic International Climate Center, ' //       &
-       'Geneva, Switzerland)',                                 &
-       source='GICCM1 (2002): ' //                             &
-       'atmosphere:  GICAM3 (gicam_0_brnchT_itea_2, T63L32); '// &
-       'ocean: MOM (mom3_ver_3.5.2, 2x3L15); '             //  &
-       'sea ice: GISIM4; land: GILSM2.5',                      &
-       calendar='360_day',                                      &
-       realization=1,                                          &
-       history='Output from archive/giccm_03_std_2xCO2_2256.', &
-       comment='Equilibrium reached after 30-year spin-up ' // &
-       'after which data were output starting with nominal '// &
-       'date of January 2030',                                 &
-       references='Model described by Koder and Tolkien ' //   &
-       '(J. Geophys. Res., 2001, 576-591).  Also '        //   &
-       'see http://www.GICC.su/giccm/doc/index.html '     //   &
-       ' 2XCO2 simulation described in Dorkey et al. '    //   &
-       '(Clim. Dyn., 2003, 323-357.)', model_id="GICCM1", &
-       forcing='TO',contact="Barry Bonds",institute_id="PCMDI",&
-       parent_experiment_rip="N/A",parent_experiment_id="N/A",branch_time=bt)
+  error_flag = cmor_dataset_json("Test/test2.json")
   print*, 'Test code: done 2 lalala'
   
   call read_coords(alats, alons, plevs, bnds_lat, bnds_lon, station, st_lons, st_lats)
@@ -187,7 +165,7 @@ program testing
 
   print*, 'Test code: ok calling axis stuff station'
   ist = cmor_axis(  &
-       table='Tables/CMIP5_grids',    &
+       table='Tables/CMIP6_grids.json',    &
        table_entry='i_index',       &
        units=' ',        &  
        length=nst,                   &
@@ -196,8 +174,8 @@ program testing
    
   print*, 'Test code: ok calling axis stuff pressure',ist
   ipres = cmor_axis(  &
-       table='Tables/CMIP5_Amon',    &
-       table_entry='plevs',       &
+       table='Tables/CMIP6_Amon.json',    &
+       table_entry='plev17',       &
        units='Pa',                   &
        length=lev,                   &
        coord_vals=plevs)
@@ -208,14 +186,14 @@ program testing
 
   print*, 'Test code: ok calling axis stuff time',ipres
   itim = cmor_axis(  &
-       table='Tables/CMIP5_Amon',    &
+       table='Tables/CMIP6_Amon.json',    &
        table_entry='time',           &
        units='days since 2030-1-1',  &
        length=ntimes,                &
        interval='1 month')
         
   itim2 = cmor_axis(  &
-       table='Tables/CMIP5_Lmon',        &
+       table='Tables/CMIP6_Lmon.json',        &
        table_entry='time',           &
        units='days since 2030-1-1',  &
        length=ntimes,                &
@@ -227,7 +205,7 @@ program testing
   ! variables as assosiated to the station data.
   ! You do not set up lon/lat as axis variables for the station data     
   ! note - the first parameter has ot be an array (of dim=1 in this example)
-  igrid = cmor_load_table("Tables/CMIP5_grids")
+  igrid = cmor_load_table("Tables/CMIP6_grids.json")
   igrid = cmor_grid((/ist/), st_lats, st_lons)       
        
   write(*,'(a, 12f6.1)') 'lons: ',st_lons
@@ -242,7 +220,7 @@ program testing
      print*, 'Test code: var:  ',m,entry2d(m)
      if (m.eq.3) then 
      var2d_ids(m) = cmor_variable(    &
-          table='Tables/CMIP5_Lmon',  &
+          table='Tables/CMIP6_Lmon.json',  &
           table_entry=entry2d(m),     & 
           units=units2d(m),           & 
           axis_ids=(/ igrid, itim2 /), &
@@ -251,7 +229,7 @@ program testing
           original_name=varin2d(m)) 
   else  
      var2d_ids(m) = cmor_variable(    &
-          table='Tables/CMIP5_Amon',  &
+          table='Tables/CMIP6_Amon.json',  &
           table_entry=entry2d(m),     & 
           units=units2d(m),           & 
           axis_ids=(/ igrid, itim /), &
diff --git a/TestTables/CMIP6_3hr.json b/TestTables/CMIP6_3hr.json
new file mode 100644
index 0000000..f6f5af0
--- /dev/null
+++ b/TestTables/CMIP6_3hr.json
@@ -0,0 +1,2522 @@
+{
+    "Header": {
+        "product": "output", 
+        "approx_interval": "0.125000", 
+        "realm": "atmos", 
+        "cmor_version": "3.1", 
+        "Conventions": "CF-1.6 CMIP-6.0", 
+        "frequency": "3hr", 
+        "table_id": "Table 3hr", 
+        "data_specs_version": "01.beta.29", 
+        "mip_era": "CMIP6", 
+        "generic_levels": "", 
+        "missing_value": "1e20", 
+        "table_date": "14 June 2016"
+    }, 
+    "axis_entry": {
+        "typebare": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "bare_ground", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "tau": {
+            "requested": [
+                "0.15", 
+                "0.8", 
+                "2.45", 
+                "6.5", 
+                "16.2", 
+                "41.5", 
+                "100."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "0.0", 
+                "0.3", 
+                "0.3", 
+                "1.3", 
+                "1.3", 
+                "3.6", 
+                "3.6", 
+                "9.4", 
+                "9.4", 
+                "23.0", 
+                "23.0", 
+                "60.0", 
+                "60.0", 
+                "100000."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "cloud optical thickness", 
+            "standard_name": "atmosphere_optical_thickness_due_to_cloud", 
+            "value": "", 
+            "out_name": "tau", 
+            "type": "double", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "olayer100m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "0. 100.", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "50.0", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "100.0", 
+            "axis": "Z"
+        }, 
+        "spectband": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "Spectral Band", 
+            "standard_name": "wave_frequency", 
+            "value": "", 
+            "out_name": "spectband", 
+            "type": "double", 
+            "units": "s-1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "ocean_sigma_z": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "sigma: sigma eta: eta depth: depth depth_c: depth_c nsigma: nsigma zlev: zlev", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "sigma: sigma_bnds eta: eta depth: depth depth_c: depth_c nsigma: nsigma zlev: zlev_bnds", 
+            "bounds_values": "", 
+            "long_name": "ocean sigma over z coordinate", 
+            "standard_name": "ocean_sigma_z", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "for k <= nsigma: z(n,k,j,i) = eta(n,j,i) + sigma(k)*(min(depth_c,depth(j,i))+eta(n,j,i)) ; for k > nsigma: z(n,k,j,i) = zlev(k)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev19": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000.", 
+                "500.", 
+                "100."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "p220": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "44000. 0.0", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "22000.0", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev17": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev10": {
+            "requested": [
+                "100000.", 
+                "85000.", 
+                "70000.", 
+                "50000.", 
+                "25000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "site": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "site index", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "site", 
+            "type": "integer", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "smooth_level": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "a: a b1: b1 b2: b2 ztop: ztop zsurf1: zsurf1 zsurf2: zsurf2", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-200.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "a: a_bnds b1: b1_bnds b2: b2_bnds ztop: ztop zsurf1: zsurf1 zsurf2: zsurf2", 
+            "bounds_values": "", 
+            "long_name": "atmosphere smooth level vertical (SLEVE) coordinate", 
+            "standard_name": "atmosphere_sleve_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "m", 
+            "formula": "z = a*ztop + b1*zsurf1 + b2*zsurf2", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "800000.0", 
+            "axis": "Z"
+        }, 
+        "p840": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "100000. 68000.", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "84000.0", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "ocean_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "sigma: lev eta: eta depth: depth", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "sigma: lev_bnds eta: eta depth: depth", 
+            "bounds_values": "", 
+            "long_name": "ocean sigma coordinate", 
+            "standard_name": "ocean_sigma_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "z(n,k,j,i) = eta(n,j,i) + sigma(k)*(depth(j,i)+eta(n,j,i))", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "0.0", 
+            "axis": "Z"
+        }, 
+        "depth0m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "0.0", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "100.0", 
+            "axis": "Z"
+        }, 
+        "ocean_s": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "s: lev eta: eta depth: depth a: a_coeff b: b_coeff depth_c: depth_c", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "s: lev_bnds eta: eta depth: depth a: a b: b depth_c: depth_c", 
+            "bounds_values": "", 
+            "long_name": "ocean s-coordinate", 
+            "standard_name": "ocean_s_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "z(n,k,j,i) = eta(n,j,i)*(1+s(k)) + depth_c*s(k) + (depth(j,i)-depth_c)*C(k) n where n C(k)=(1-b)*sinh(a*s(k))/sinh(a) +n           b*(tanh(a*(s(k)+0.5))/(2*tanh(0.5*a)) - 0.5)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "0.0", 
+            "axis": "Z"
+        }, 
+        "plev4s": {
+            "requested": [
+                "85000.", 
+                "50000.", 
+                "20000.", 
+                "5000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "typec4pft": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "c4_plant_functional_types", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "plev3h": {
+            "requested": [
+                "10000.", 
+                "1000.", 
+                "100."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "height2m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "up", 
+            "must_have_bounds": "no", 
+            "valid_min": "1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "height", 
+            "standard_name": "height", 
+            "value": "2.0", 
+            "out_name": "height", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "10.0", 
+            "axis": "Z"
+        }, 
+        "time1": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "time", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "plev7h": {
+            "requested": [
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "25000.", 
+                "5000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "sza5": {
+            "requested": [
+                "0.", 
+                "20.", 
+                "40.", 
+                "60.", 
+                "80."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "solar zenith angle", 
+            "standard_name": "solar_zenith_angle", 
+            "value": "", 
+            "out_name": "sza", 
+            "type": "double", 
+            "units": "degree", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "depth_coord": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "ocean depth coordinate", 
+            "standard_name": "depth", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "12000.0", 
+            "axis": "Z"
+        }, 
+        "sdepth1": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "0.0 0.1", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "0.05", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "0.2", 
+            "axis": "Z"
+        }, 
+        "alternate_hybrid_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "ap: ap b: b ps: ps", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "ap: ap_bnds b: b_bnds ps: ps", 
+            "bounds_values": "", 
+            "long_name": "hybrid sigma pressure coordinate", 
+            "standard_name": "atmosphere_hybrid_sigma_pressure_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "1", 
+            "formula": "p = ap + b*ps", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "1.0", 
+            "axis": "Z"
+        }, 
+        "time2": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "time", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "yes", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "time3": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "Diurnal cycle: monthly mean of the diurnal cycle (1 hour steps).", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "oline": {
+            "requested": [
+                "barents_opening", 
+                "bering_strait", 
+                "canadian_archipelago", 
+                "denmark_strait", 
+                "drake_passage", 
+                "english_channel", 
+                "pacific_equatorial_undercurrent", 
+                "faroe_scotland_channel", 
+                "florida_bahamas_strait", 
+                "fram_strait", 
+                "iceland_faroe_channel", 
+                "indonesian_thoughflow", 
+                "mozambique_channel", 
+                "taiwan_luzon_straits", 
+                "windward_passage"
+            ], 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "ocean passage", 
+            "standard_name": "region", 
+            "value": "", 
+            "out_name": "line", 
+            "type": "character", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "plev14": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "25000.", 
+                "15000.", 
+                "10000.", 
+                "5000.", 
+                "2000.", 
+                "1000.", 
+                "500.", 
+                "100."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev8": {
+            "requested": [
+                "100000.", 
+                "85000.", 
+                "70000.", 
+                "50000.", 
+                "25000.", 
+                "10000.", 
+                "5000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "location": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "location index", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "loc", 
+            "type": "integer", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "latitude": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-90.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "latitude", 
+            "standard_name": "latitude", 
+            "value": "", 
+            "out_name": "lat", 
+            "type": "double", 
+            "units": "degrees_north", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "90.0", 
+            "axis": "Y"
+        }, 
+        "plev3": {
+            "requested": [
+                "85000.", 
+                "50000.", 
+                "25000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "basin": {
+            "requested": [
+                "atlantic_arctic_ocean", 
+                "indian_pacific_ocean", 
+                "global_ocean"
+            ], 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "ocean basin", 
+            "standard_name": "region", 
+            "value": "", 
+            "out_name": "basin", 
+            "type": "character", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "p700": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "700 hPa", 
+            "standard_name": "air_pressure", 
+            "value": "70000.", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev7": {
+            "requested": [
+                "90000.", 
+                "74000.", 
+                "62000.", 
+                "50000.", 
+                "37500.", 
+                "24500.", 
+                "9000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "100000.", 
+                "80000.", 
+                "80000.", 
+                "68000.", 
+                "68000.", 
+                "56000.", 
+                "56000.", 
+                "44000.", 
+                "44000.", 
+                "31000.", 
+                "31000.", 
+                "18000.", 
+                "18000.", 
+                " 0."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev4": {
+            "requested": [
+                "92500.", 
+                "85000.", 
+                "50000.", 
+                "25000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev23": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000.", 
+                "700.", 
+                "500.", 
+                "300.", 
+                "200.", 
+                "100.", 
+                "40."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev39": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "17000.", 
+                "15000.", 
+                "13000.", 
+                "11500.", 
+                "10000.", 
+                "9000.", 
+                "8000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1500.", 
+                "1000.", 
+                "700.", 
+                "500.", 
+                "300.", 
+                "200.", 
+                "150.", 
+                "100.", 
+                "70.", 
+                "50.", 
+                "40.", 
+                "30.", 
+                "20.", 
+                "15.", 
+                "10.", 
+                "7.", 
+                "5.", 
+                "3."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "typepever": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "primary_evergreen_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "typesdec": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "secondary_decidous_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "plev27": {
+            "requested": [
+                "100000.", 
+                "97500.", 
+                "95000.", 
+                "92500.", 
+                "90000.", 
+                "87500.", 
+                "85000.", 
+                "82500.", 
+                "80000.", 
+                "77500.", 
+                "75000.", 
+                "70000.", 
+                "65000.", 
+                "60000.", 
+                "55000.", 
+                "50000.", 
+                "45000.", 
+                "40000.", 
+                "35000.", 
+                "30000.", 
+                "25000.", 
+                "22500.", 
+                "20000.", 
+                "17500.", 
+                "15000.", 
+                "12500.", 
+                "10000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "alt40": {
+            "requested": [
+                "240.", 
+                "720.", 
+                "1200.", 
+                "1680.", 
+                "2160.", 
+                "2640.", 
+                "3120.", 
+                "3600.", 
+                "4080.", 
+                "4560.", 
+                "5040.", 
+                "5520.", 
+                "6000.", 
+                "6480.", 
+                "6960.", 
+                "7440.", 
+                "7920.", 
+                "8400.", 
+                "8880.", 
+                "9360.", 
+                "9840.", 
+                "10320.", 
+                "10800.", 
+                "11280.", 
+                "11760.", 
+                "12240.", 
+                "12720.", 
+                "13200.", 
+                "13680.", 
+                "14160.", 
+                "14640.", 
+                "15120.", 
+                "15600.", 
+                "16080.", 
+                "16560.", 
+                "17040.", 
+                "17520.", 
+                "18000.", 
+                "18480.", 
+                "18960."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "0.", 
+                "480.", 
+                "480.", 
+                "960.", 
+                "960.", 
+                "1440.", 
+                "1440.", 
+                "1920.", 
+                "1920.", 
+                "2400.", 
+                "2400.", 
+                "2880.", 
+                "2880.", 
+                "3360.", 
+                "3360.", 
+                "3840.", 
+                "3840.", 
+                "4320.", 
+                "4320.", 
+                "4800.", 
+                "4800.", 
+                "5280.", 
+                "5280.", 
+                "5760.", 
+                "5760.", 
+                "6240.", 
+                "6240.", 
+                "6720.", 
+                "6720.", 
+                "7200.", 
+                "7200.", 
+                "7680.", 
+                "7680.", 
+                "8160.", 
+                "8160.", 
+                "8640.", 
+                "8640.", 
+                "9120.", 
+                "9120.", 
+                "9600.", 
+                "9600.", 
+                "10080.", 
+                "10080.", 
+                "10560.", 
+                "10560.", 
+                "11040.", 
+                "11040.", 
+                "11520.", 
+                "11520.", 
+                "12000.", 
+                "12000.", 
+                "12480.", 
+                "12480.", 
+                "12960.", 
+                "12960.", 
+                "13440.", 
+                "13440.", 
+                "13920.", 
+                "13920.", 
+                "14400.", 
+                "14400.", 
+                "14880.", 
+                "14880.", 
+                "15360.", 
+                "15360.", 
+                "15840.", 
+                "15840.", 
+                "16320.", 
+                "16320.", 
+                "16800.", 
+                "16800.", 
+                "17280.", 
+                "17280.", 
+                "17760.", 
+                "17760.", 
+                "18240.", 
+                "18240.", 
+                "18720.", 
+                "18720.", 
+                "19200."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "altitude", 
+            "standard_name": "altitude", 
+            "value": "", 
+            "out_name": "alt40", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "time": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "time", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "plev7c": {
+            "requested": [
+                "90000.", 
+                "74000.", 
+                "62000.", 
+                "50000.", 
+                "37500.", 
+                "24500.", 
+                "9000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "height10m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "up", 
+            "must_have_bounds": "no", 
+            "valid_min": "1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "height", 
+            "standard_name": "height", 
+            "value": "10.0", 
+            "out_name": "height", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "30.0", 
+            "axis": "Z"
+        }, 
+        "dbze": {
+            "requested": [
+                "-47.5", 
+                "-42.5", 
+                "-37.5", 
+                "-32.5", 
+                "-27.5", 
+                "-22.5", 
+                "-17.5", 
+                "-12.5", 
+                "-7.5", 
+                "-2.5", 
+                "2.5", 
+                "7.5", 
+                "12.5", 
+                "17.5", 
+                "22.5"
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "-50", 
+                "-45", 
+                "-45", 
+                "-40", 
+                "-40", 
+                "-35", 
+                "-35", 
+                "-30", 
+                "-30", 
+                "-25", 
+                "-25", 
+                "-20", 
+                "-20", 
+                "-15", 
+                "-15", 
+                "-10", 
+                "-10", 
+                "-5", 
+                "-5", 
+                "0", 
+                "0", 
+                "5", 
+                "5", 
+                "10", 
+                "10", 
+                "15", 
+                "15", 
+                "20", 
+                "20", 
+                "25."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "CloudSat simulator equivalent radar reflectivity factor", 
+            "standard_name": "equivalent_reflectivity_factor", 
+            "value": "", 
+            "out_name": "dbze", 
+            "type": "double", 
+            "units": "dBZ", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "typesever": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "secondary_evergreen_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "rho": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "density++++?", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "rho", 
+            "type": "double", 
+            "units": "kg m-3", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "depth100m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "80.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "100.0", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "120.0", 
+            "axis": "Z"
+        }, 
+        "effectRadLi": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "Effective Radius of Liquid Aerosols", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "effectRadLi", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "sdepth": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "200.0", 
+            "axis": "Z"
+        }, 
+        "vegtype": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "plant functional type", 
+            "standard_name": "area_type", 
+            "value": "", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "typec3pft": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "c3_plant_functional_types", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "natural_log_pressure": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "p0: p0 lev: lev", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "p0: p0 lev: lev_bnds", 
+            "bounds_values": "", 
+            "long_name": "atmosphere natural log pressure coordinate", 
+            "standard_name": "atmosphere_ln_pressure_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "p = p0 * exp(-lev)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "20.0", 
+            "axis": "Z"
+        }, 
+        "scatratio": {
+            "requested": [
+                "0.005", 
+                "0.605", 
+                "2.1", 
+                "4.", 
+                "6.", 
+                "8.5", 
+                "12.5", 
+                "17.5", 
+                "22.5", 
+                "27.5", 
+                "35.", 
+                "45.", 
+                "55.", 
+                "70.", 
+                "50040."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "0.", 
+                "0.01", 
+                "0.01", 
+                "1.2", 
+                "1.2", 
+                "3.", 
+                "3.", 
+                "5.", 
+                "5.", 
+                "7.", 
+                "7.", 
+                "10.", 
+                "10.", 
+                "15.", 
+                "15.", 
+                "20.", 
+                "20.", 
+                "25.", 
+                "25.", 
+                "30.", 
+                "30.", 
+                "40.", 
+                "40.", 
+                "50.", 
+                "50.", 
+                "60.", 
+                "60.", 
+                "80.", 
+                "80.", 
+                "100000."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "lidar backscattering ratio", 
+            "standard_name": "backscattering_ratio", 
+            "value": "", 
+            "out_name": "scatratio", 
+            "type": "double", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "standard_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "ptop: ptop sigma: lev ps: ps", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "ptop: ptop sigma: lev_bnds ps: ps", 
+            "bounds_values": "", 
+            "long_name": "sigma coordinate", 
+            "standard_name": "atmosphere_sigma_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "p = ptop + sigma*(ps - ptop)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "1.0", 
+            "axis": "Z"
+        }, 
+        "typepdec": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "primary_deciduous_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "hybrid_height": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "a: lev b: b orog: orog", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "a: lev_bnds b: b_bnds orog: orog", 
+            "bounds_values": "", 
+            "long_name": "hybrid height coordinate", 
+            "standard_name": "atmosphere_hybrid_height_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "m", 
+            "formula": "z = a + b*orog", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "longitude": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "longitude", 
+            "standard_name": "longitude", 
+            "value": "", 
+            "out_name": "lon", 
+            "type": "double", 
+            "units": "degrees_east", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "360.0", 
+            "axis": "X"
+        }, 
+        "effectRadIc": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "Effective Radius of Ice Aerosols", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "effectRadIc", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "p1000": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "1000 hPa", 
+            "standard_name": "air_pressure", 
+            "value": "100000.", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "p500": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "500 hPa", 
+            "standard_name": "air_pressure", 
+            "value": "50000.", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "ocean_double_sigma": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "sigma: sigma depth: depth z1: z1 z2: z2 a: a_coeff href: href k_c: k_c", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "sigma: sigma_bnds depth: depth z1: z1 z2: z2 a: a href: href k_c: k_c", 
+            "bounds_values": "", 
+            "long_name": "ocean double sigma coordinate", 
+            "standard_name": "ocean_double_sigma", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "for k <= k_c:n z(k,j,i)= sigma(k)*f(j,i) n for k > k_c:n z(k,j,i)= f(j,i) + (sigma(k)-1)*(depth(j,i)-f(j,i)) n f(j,i)= 0.5*(z1+ z2) + 0.5*(z1-z2)* tanh(2*a/(z1-z2)*(depth(j,i)-href))", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plevs": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "standard_hybrid_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "p0: p0 a: a b: b ps: ps", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "p0: p0 a: a_bnds b: b_bnds ps: ps", 
+            "bounds_values": "", 
+            "long_name": "hybrid sigma pressure coordinate", 
+            "standard_name": "atmosphere_hybrid_sigma_pressure_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "1", 
+            "formula": "p = a*p0 + b*ps", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "1.0", 
+            "axis": "Z"
+        }, 
+        "p560": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "68000. 44000.", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "56000.0", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }
+    }, 
+    "variable_entry": {
+        "prc": {
+            "comment": "Convective precipitation at surface; includes both liquid and solid phases.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Convective Precipitation", 
+            "standard_name": "convective_precipitation_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "prc", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "tas": {
+            "comment": "near-surface (usually, 2 meter) air temperature", 
+            "dimensions": "longitude latitude time1 height2m", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Near-Surface Air Temperature", 
+            "standard_name": "air_temperature", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "K", 
+            "out_name": "tas", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "prsn": {
+            "comment": "at surface; includes precipitation of all forms of water in the solid phase", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Snowfall Flux", 
+            "standard_name": "snowfall_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "prsn", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "rsuscs": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "valid_min": "", 
+            "long_name": "Surface Upwelling Clear-Sky Shortwave Radiation", 
+            "standard_name": "surface_upwelling_shortwave_flux_in_air", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "rsuscs", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "depth_c": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: depth_c", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "huss": {
+            "comment": "Near-surface (usually, 2 meter) specific humidity.", 
+            "dimensions": "longitude latitude time1 height2m", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Near-Surface Specific Humidity", 
+            "standard_name": "specific_humidity", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "1.0", 
+            "out_name": "huss", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "hfss": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "valid_min": "", 
+            "long_name": "Surface Upward Sensible Heat Flux", 
+            "standard_name": "surface_upward_sensible_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "hfss", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "ap_bnds": {
+            "units": "Pa", 
+            "long_name": "vertical coordinate formula term: ap(k+1/2)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "ap": {
+            "units": "Pa", 
+            "long_name": "vertical coordinate formula term: ap(k)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "href": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: href", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "orog": {
+            "units": "m", 
+            "long_name": "Surface Altitude", 
+            "type": "real", 
+            "dimensions": "longitude latitude"
+        }, 
+        "rldscs": {
+            "comment": "Surface downwelling clear-sky longwave radiation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "down", 
+            "valid_min": "", 
+            "long_name": "Surface Downwelling Clear-Sky Longwave Radiation", 
+            "standard_name": "surface_downwelling_longwave_flux_in_air_assuming_clear_sky", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "rldscs", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "zlev": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: zlev(k)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "tslsi": {
+            "comment": "'skin' temperature of all surfaces except open ocean.", 
+            "dimensions": "longitude latitude time1", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Surface Temperature Where Land or Sea Ice", 
+            "standard_name": "surface_temperature", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: point", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "K", 
+            "out_name": "tslsi", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "rsdsdiff": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Surface Diffuse Downwelling Shortwave Radiation", 
+            "standard_name": "surface_diffuse_downwelling_shortwave_flux_in_air", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "rsdsdiff", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "pr": {
+            "comment": "includes both liquid and solid phases", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Precipitation", 
+            "standard_name": "precipitation_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "pr", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "ps": {
+            "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", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Surface Air Pressure", 
+            "standard_name": "surface_air_pressure", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "Pa", 
+            "out_name": "ps", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "rlus": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "valid_min": "", 
+            "long_name": "Surface Upwelling Longwave Radiation", 
+            "standard_name": "surface_upwelling_longwave_flux_in_air", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "rlus", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "rlds": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "down", 
+            "valid_min": "", 
+            "long_name": "Surface Downwelling Longwave Radiation", 
+            "standard_name": "surface_downwelling_longwave_flux_in_air", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "rlds", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "sigma_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: sigma(k+1/2)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "mrsos": {
+            "comment": "The mass of water in all phases in the upper 10cm of the  soil layer.", 
+            "dimensions": "longitude latitude time1 sdepth1", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Moisture in Upper Portion of Soil Column", 
+            "standard_name": "moisture_content_of_soil_layer", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: point area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2", 
+            "out_name": "mrsos", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "clt": {
+            "comment": "cloud area fraction", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Total Cloud Fraction", 
+            "standard_name": "cloud_area_fraction_in_atmosphere_layer", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "1.0", 
+            "out_name": "clt", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "vas": {
+            "comment": "Northward component of the near surface wind", 
+            "dimensions": "longitude latitude time1 height10m", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Northward Near-Surface Wind Speed", 
+            "standard_name": "northward_wind", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "m s-1", 
+            "out_name": "vas", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "ptop": {
+            "units": "Pa", 
+            "long_name": "pressure at top of model", 
+            "type": "", 
+            "dimensions": ""
+        }, 
+        "uas": {
+            "comment": "Eastward component of the near-surface (usually, 10 meters)  wind", 
+            "dimensions": "longitude latitude time1 height10m", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Eastward Near-Surface Wind Speed", 
+            "standard_name": "eastward_wind", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "m s-1", 
+            "out_name": "uas", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "b_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: b(k+1/2)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "tso": {
+            "comment": "temperature of surface of open ocean, sampled synoptically.", 
+            "dimensions": "longitude latitude time1", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Sea Surface Temperature", 
+            "standard_name": "sea_surface_temperature", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: point area: mean where sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "K", 
+            "out_name": "tso", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "nsigma": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: nsigma", 
+            "type": "integer", 
+            "dimensions": ""
+        }, 
+        "rsds": {
+            "comment": "surface solar irradiance for UV calculations", 
+            "dimensions": "longitude latitude time", 
+            "positive": "down", 
+            "valid_min": "", 
+            "long_name": "Surface Downwelling Shortwave Radiation", 
+            "standard_name": "surface_downwelling_shortwave_flux_in_air", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "rsds", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "ztop": {
+            "units": "m", 
+            "long_name": "height of top of model", 
+            "type": "", 
+            "dimensions": ""
+        }, 
+        "zlev_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: zlev(k+1/2)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "z1": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: z1", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "z2": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: z2", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "a": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: a(k)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "p0": {
+            "units": "Pa", 
+            "long_name": "vertical coordinate formula term: reference pressure", 
+            "type": "", 
+            "dimensions": ""
+        }, 
+        "b": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: b(k)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "mrro": {
+            "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", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Total Runoff", 
+            "standard_name": "runoff_flux", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "mrro", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "depth": {
+            "units": "m", 
+            "long_name": "Sea Floor Depth: formula term: thetao", 
+            "type": "real", 
+            "dimensions": "longitude latitude"
+        }, 
+        "eta": {
+            "units": "m", 
+            "long_name": "Sea Surface Height formula term: thetao", 
+            "type": "real", 
+            "dimensions": "longitude latitude time"
+        }, 
+        "hfls": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "valid_min": "", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "hfls", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "rsdscs": {
+            "comment": "surface solar irradiance clear sky for UV calculations", 
+            "dimensions": "longitude latitude time", 
+            "positive": "down", 
+            "valid_min": "", 
+            "long_name": "Surface Downwelling Clear-Sky Shortwave Radiation", 
+            "standard_name": "surface_downwelling_shortwave_flux_in_air_assuming_clear_sky", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "rsdscs", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "rsus": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "valid_min": "", 
+            "long_name": "Surface Upwelling Shortwave Radiation", 
+            "standard_name": "surface_upwelling_shortwave_flux_in_air", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "rsus", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "k_c": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: k_c", 
+            "type": "integer", 
+            "dimensions": ""
+        }, 
+        "sigma": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: sigma(k)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "a_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: a(k+1/2)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }
+    }
+}
diff --git a/TestTables/CMIP6_6hrLev.json b/TestTables/CMIP6_6hrLev.json
new file mode 100644
index 0000000..c86fe03
--- /dev/null
+++ b/TestTables/CMIP6_6hrLev.json
@@ -0,0 +1,2278 @@
+{
+    "Header": {
+        "product": "output", 
+        "approx_interval": "0.250000", 
+        "realm": "atmos", 
+        "cmor_version": "3.1", 
+        "Conventions": "CF-1.6 CMIP-6.0", 
+        "frequency": "6hr", 
+        "table_id": "Table 6hrLev", 
+        "data_specs_version": "01.beta.29", 
+        "mip_era": "CMIP6", 
+        "generic_levels": "alevel", 
+        "missing_value": "1e20", 
+        "table_date": "14 June 2016"
+    }, 
+    "axis_entry": {
+        "typebare": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "bare_ground", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "tau": {
+            "requested": [
+                "0.15", 
+                "0.8", 
+                "2.45", 
+                "6.5", 
+                "16.2", 
+                "41.5", 
+                "100."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "0.0", 
+                "0.3", 
+                "0.3", 
+                "1.3", 
+                "1.3", 
+                "3.6", 
+                "3.6", 
+                "9.4", 
+                "9.4", 
+                "23.0", 
+                "23.0", 
+                "60.0", 
+                "60.0", 
+                "100000."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "cloud optical thickness", 
+            "standard_name": "atmosphere_optical_thickness_due_to_cloud", 
+            "value": "", 
+            "out_name": "tau", 
+            "type": "double", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "olayer100m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "0. 100.", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "50.0", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "100.0", 
+            "axis": "Z"
+        }, 
+        "spectband": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "Spectral Band", 
+            "standard_name": "wave_frequency", 
+            "value": "", 
+            "out_name": "spectband", 
+            "type": "double", 
+            "units": "s-1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "ocean_sigma_z": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "sigma: sigma eta: eta depth: depth depth_c: depth_c nsigma: nsigma zlev: zlev", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "sigma: sigma_bnds eta: eta depth: depth depth_c: depth_c nsigma: nsigma zlev: zlev_bnds", 
+            "bounds_values": "", 
+            "long_name": "ocean sigma over z coordinate", 
+            "standard_name": "ocean_sigma_z", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "for k <= nsigma: z(n,k,j,i) = eta(n,j,i) + sigma(k)*(min(depth_c,depth(j,i))+eta(n,j,i)) ; for k > nsigma: z(n,k,j,i) = zlev(k)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev19": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000.", 
+                "500.", 
+                "100."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "p220": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "44000. 0.0", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "22000.0", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev17": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev10": {
+            "requested": [
+                "100000.", 
+                "85000.", 
+                "70000.", 
+                "50000.", 
+                "25000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "site": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "site index", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "site", 
+            "type": "integer", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "smooth_level": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "a: a b1: b1 b2: b2 ztop: ztop zsurf1: zsurf1 zsurf2: zsurf2", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-200.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "a: a_bnds b1: b1_bnds b2: b2_bnds ztop: ztop zsurf1: zsurf1 zsurf2: zsurf2", 
+            "bounds_values": "", 
+            "long_name": "atmosphere smooth level vertical (SLEVE) coordinate", 
+            "standard_name": "atmosphere_sleve_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "m", 
+            "formula": "z = a*ztop + b1*zsurf1 + b2*zsurf2", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "800000.0", 
+            "axis": "Z"
+        }, 
+        "p840": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "100000. 68000.", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "84000.0", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "ocean_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "sigma: lev eta: eta depth: depth", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "sigma: lev_bnds eta: eta depth: depth", 
+            "bounds_values": "", 
+            "long_name": "ocean sigma coordinate", 
+            "standard_name": "ocean_sigma_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "z(n,k,j,i) = eta(n,j,i) + sigma(k)*(depth(j,i)+eta(n,j,i))", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "0.0", 
+            "axis": "Z"
+        }, 
+        "depth0m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "0.0", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "100.0", 
+            "axis": "Z"
+        }, 
+        "ocean_s": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "s: lev eta: eta depth: depth a: a_coeff b: b_coeff depth_c: depth_c", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "s: lev_bnds eta: eta depth: depth a: a b: b depth_c: depth_c", 
+            "bounds_values": "", 
+            "long_name": "ocean s-coordinate", 
+            "standard_name": "ocean_s_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "z(n,k,j,i) = eta(n,j,i)*(1+s(k)) + depth_c*s(k) + (depth(j,i)-depth_c)*C(k) n where n C(k)=(1-b)*sinh(a*s(k))/sinh(a) +n           b*(tanh(a*(s(k)+0.5))/(2*tanh(0.5*a)) - 0.5)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "0.0", 
+            "axis": "Z"
+        }, 
+        "plev4s": {
+            "requested": [
+                "85000.", 
+                "50000.", 
+                "20000.", 
+                "5000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "typec4pft": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "c4_plant_functional_types", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "plev3h": {
+            "requested": [
+                "10000.", 
+                "1000.", 
+                "100."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "height2m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "up", 
+            "must_have_bounds": "no", 
+            "valid_min": "1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "height", 
+            "standard_name": "height", 
+            "value": "2.0", 
+            "out_name": "height", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "10.0", 
+            "axis": "Z"
+        }, 
+        "time1": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "time", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "plev7h": {
+            "requested": [
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "25000.", 
+                "5000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "sza5": {
+            "requested": [
+                "0.", 
+                "20.", 
+                "40.", 
+                "60.", 
+                "80."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "solar zenith angle", 
+            "standard_name": "solar_zenith_angle", 
+            "value": "", 
+            "out_name": "sza", 
+            "type": "double", 
+            "units": "degree", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "depth_coord": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "ocean depth coordinate", 
+            "standard_name": "depth", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "12000.0", 
+            "axis": "Z"
+        }, 
+        "sdepth1": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "0.0 0.1", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "0.05", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "0.2", 
+            "axis": "Z"
+        }, 
+        "alternate_hybrid_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "ap: ap b: b ps: ps", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "ap: ap_bnds b: b_bnds ps: ps", 
+            "bounds_values": "", 
+            "long_name": "hybrid sigma pressure coordinate", 
+            "standard_name": "atmosphere_hybrid_sigma_pressure_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "1", 
+            "formula": "p = ap + b*ps", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "1.0", 
+            "axis": "Z"
+        }, 
+        "time2": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "time", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "yes", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "time3": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "Diurnal cycle: monthly mean of the diurnal cycle (1 hour steps).", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "oline": {
+            "requested": [
+                "barents_opening", 
+                "bering_strait", 
+                "canadian_archipelago", 
+                "denmark_strait", 
+                "drake_passage", 
+                "english_channel", 
+                "pacific_equatorial_undercurrent", 
+                "faroe_scotland_channel", 
+                "florida_bahamas_strait", 
+                "fram_strait", 
+                "iceland_faroe_channel", 
+                "indonesian_thoughflow", 
+                "mozambique_channel", 
+                "taiwan_luzon_straits", 
+                "windward_passage"
+            ], 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "ocean passage", 
+            "standard_name": "region", 
+            "value": "", 
+            "out_name": "line", 
+            "type": "character", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "plev14": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "25000.", 
+                "15000.", 
+                "10000.", 
+                "5000.", 
+                "2000.", 
+                "1000.", 
+                "500.", 
+                "100."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev8": {
+            "requested": [
+                "100000.", 
+                "85000.", 
+                "70000.", 
+                "50000.", 
+                "25000.", 
+                "10000.", 
+                "5000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "location": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "location index", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "loc", 
+            "type": "integer", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "latitude": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-90.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "latitude", 
+            "standard_name": "latitude", 
+            "value": "", 
+            "out_name": "lat", 
+            "type": "double", 
+            "units": "degrees_north", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "90.0", 
+            "axis": "Y"
+        }, 
+        "plev3": {
+            "requested": [
+                "85000.", 
+                "50000.", 
+                "25000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "basin": {
+            "requested": [
+                "atlantic_arctic_ocean", 
+                "indian_pacific_ocean", 
+                "global_ocean"
+            ], 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "ocean basin", 
+            "standard_name": "region", 
+            "value": "", 
+            "out_name": "basin", 
+            "type": "character", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "p700": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "700 hPa", 
+            "standard_name": "air_pressure", 
+            "value": "70000.", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev7": {
+            "requested": [
+                "90000.", 
+                "74000.", 
+                "62000.", 
+                "50000.", 
+                "37500.", 
+                "24500.", 
+                "9000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "100000.", 
+                "80000.", 
+                "80000.", 
+                "68000.", 
+                "68000.", 
+                "56000.", 
+                "56000.", 
+                "44000.", 
+                "44000.", 
+                "31000.", 
+                "31000.", 
+                "18000.", 
+                "18000.", 
+                " 0."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev4": {
+            "requested": [
+                "92500.", 
+                "85000.", 
+                "50000.", 
+                "25000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev23": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000.", 
+                "700.", 
+                "500.", 
+                "300.", 
+                "200.", 
+                "100.", 
+                "40."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev39": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "17000.", 
+                "15000.", 
+                "13000.", 
+                "11500.", 
+                "10000.", 
+                "9000.", 
+                "8000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1500.", 
+                "1000.", 
+                "700.", 
+                "500.", 
+                "300.", 
+                "200.", 
+                "150.", 
+                "100.", 
+                "70.", 
+                "50.", 
+                "40.", 
+                "30.", 
+                "20.", 
+                "15.", 
+                "10.", 
+                "7.", 
+                "5.", 
+                "3."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "typepever": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "primary_evergreen_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "typesdec": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "secondary_decidous_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "plev27": {
+            "requested": [
+                "100000.", 
+                "97500.", 
+                "95000.", 
+                "92500.", 
+                "90000.", 
+                "87500.", 
+                "85000.", 
+                "82500.", 
+                "80000.", 
+                "77500.", 
+                "75000.", 
+                "70000.", 
+                "65000.", 
+                "60000.", 
+                "55000.", 
+                "50000.", 
+                "45000.", 
+                "40000.", 
+                "35000.", 
+                "30000.", 
+                "25000.", 
+                "22500.", 
+                "20000.", 
+                "17500.", 
+                "15000.", 
+                "12500.", 
+                "10000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "alt40": {
+            "requested": [
+                "240.", 
+                "720.", 
+                "1200.", 
+                "1680.", 
+                "2160.", 
+                "2640.", 
+                "3120.", 
+                "3600.", 
+                "4080.", 
+                "4560.", 
+                "5040.", 
+                "5520.", 
+                "6000.", 
+                "6480.", 
+                "6960.", 
+                "7440.", 
+                "7920.", 
+                "8400.", 
+                "8880.", 
+                "9360.", 
+                "9840.", 
+                "10320.", 
+                "10800.", 
+                "11280.", 
+                "11760.", 
+                "12240.", 
+                "12720.", 
+                "13200.", 
+                "13680.", 
+                "14160.", 
+                "14640.", 
+                "15120.", 
+                "15600.", 
+                "16080.", 
+                "16560.", 
+                "17040.", 
+                "17520.", 
+                "18000.", 
+                "18480.", 
+                "18960."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "0.", 
+                "480.", 
+                "480.", 
+                "960.", 
+                "960.", 
+                "1440.", 
+                "1440.", 
+                "1920.", 
+                "1920.", 
+                "2400.", 
+                "2400.", 
+                "2880.", 
+                "2880.", 
+                "3360.", 
+                "3360.", 
+                "3840.", 
+                "3840.", 
+                "4320.", 
+                "4320.", 
+                "4800.", 
+                "4800.", 
+                "5280.", 
+                "5280.", 
+                "5760.", 
+                "5760.", 
+                "6240.", 
+                "6240.", 
+                "6720.", 
+                "6720.", 
+                "7200.", 
+                "7200.", 
+                "7680.", 
+                "7680.", 
+                "8160.", 
+                "8160.", 
+                "8640.", 
+                "8640.", 
+                "9120.", 
+                "9120.", 
+                "9600.", 
+                "9600.", 
+                "10080.", 
+                "10080.", 
+                "10560.", 
+                "10560.", 
+                "11040.", 
+                "11040.", 
+                "11520.", 
+                "11520.", 
+                "12000.", 
+                "12000.", 
+                "12480.", 
+                "12480.", 
+                "12960.", 
+                "12960.", 
+                "13440.", 
+                "13440.", 
+                "13920.", 
+                "13920.", 
+                "14400.", 
+                "14400.", 
+                "14880.", 
+                "14880.", 
+                "15360.", 
+                "15360.", 
+                "15840.", 
+                "15840.", 
+                "16320.", 
+                "16320.", 
+                "16800.", 
+                "16800.", 
+                "17280.", 
+                "17280.", 
+                "17760.", 
+                "17760.", 
+                "18240.", 
+                "18240.", 
+                "18720.", 
+                "18720.", 
+                "19200."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "altitude", 
+            "standard_name": "altitude", 
+            "value": "", 
+            "out_name": "alt40", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "time": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "time", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "plev7c": {
+            "requested": [
+                "90000.", 
+                "74000.", 
+                "62000.", 
+                "50000.", 
+                "37500.", 
+                "24500.", 
+                "9000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "height10m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "up", 
+            "must_have_bounds": "no", 
+            "valid_min": "1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "height", 
+            "standard_name": "height", 
+            "value": "10.0", 
+            "out_name": "height", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "30.0", 
+            "axis": "Z"
+        }, 
+        "dbze": {
+            "requested": [
+                "-47.5", 
+                "-42.5", 
+                "-37.5", 
+                "-32.5", 
+                "-27.5", 
+                "-22.5", 
+                "-17.5", 
+                "-12.5", 
+                "-7.5", 
+                "-2.5", 
+                "2.5", 
+                "7.5", 
+                "12.5", 
+                "17.5", 
+                "22.5"
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "-50", 
+                "-45", 
+                "-45", 
+                "-40", 
+                "-40", 
+                "-35", 
+                "-35", 
+                "-30", 
+                "-30", 
+                "-25", 
+                "-25", 
+                "-20", 
+                "-20", 
+                "-15", 
+                "-15", 
+                "-10", 
+                "-10", 
+                "-5", 
+                "-5", 
+                "0", 
+                "0", 
+                "5", 
+                "5", 
+                "10", 
+                "10", 
+                "15", 
+                "15", 
+                "20", 
+                "20", 
+                "25."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "CloudSat simulator equivalent radar reflectivity factor", 
+            "standard_name": "equivalent_reflectivity_factor", 
+            "value": "", 
+            "out_name": "dbze", 
+            "type": "double", 
+            "units": "dBZ", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "typesever": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "secondary_evergreen_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "rho": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "density++++?", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "rho", 
+            "type": "double", 
+            "units": "kg m-3", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "depth100m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "80.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "100.0", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "120.0", 
+            "axis": "Z"
+        }, 
+        "effectRadLi": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "Effective Radius of Liquid Aerosols", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "effectRadLi", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "sdepth": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "200.0", 
+            "axis": "Z"
+        }, 
+        "vegtype": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "plant functional type", 
+            "standard_name": "area_type", 
+            "value": "", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "typec3pft": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "c3_plant_functional_types", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "natural_log_pressure": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "p0: p0 lev: lev", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "p0: p0 lev: lev_bnds", 
+            "bounds_values": "", 
+            "long_name": "atmosphere natural log pressure coordinate", 
+            "standard_name": "atmosphere_ln_pressure_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "p = p0 * exp(-lev)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "20.0", 
+            "axis": "Z"
+        }, 
+        "scatratio": {
+            "requested": [
+                "0.005", 
+                "0.605", 
+                "2.1", 
+                "4.", 
+                "6.", 
+                "8.5", 
+                "12.5", 
+                "17.5", 
+                "22.5", 
+                "27.5", 
+                "35.", 
+                "45.", 
+                "55.", 
+                "70.", 
+                "50040."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "0.", 
+                "0.01", 
+                "0.01", 
+                "1.2", 
+                "1.2", 
+                "3.", 
+                "3.", 
+                "5.", 
+                "5.", 
+                "7.", 
+                "7.", 
+                "10.", 
+                "10.", 
+                "15.", 
+                "15.", 
+                "20.", 
+                "20.", 
+                "25.", 
+                "25.", 
+                "30.", 
+                "30.", 
+                "40.", 
+                "40.", 
+                "50.", 
+                "50.", 
+                "60.", 
+                "60.", 
+                "80.", 
+                "80.", 
+                "100000."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "lidar backscattering ratio", 
+            "standard_name": "backscattering_ratio", 
+            "value": "", 
+            "out_name": "scatratio", 
+            "type": "double", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "standard_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "ptop: ptop sigma: lev ps: ps", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "ptop: ptop sigma: lev_bnds ps: ps", 
+            "bounds_values": "", 
+            "long_name": "sigma coordinate", 
+            "standard_name": "atmosphere_sigma_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "p = ptop + sigma*(ps - ptop)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "1.0", 
+            "axis": "Z"
+        }, 
+        "typepdec": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "primary_deciduous_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "hybrid_height": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "a: lev b: b orog: orog", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "a: lev_bnds b: b_bnds orog: orog", 
+            "bounds_values": "", 
+            "long_name": "hybrid height coordinate", 
+            "standard_name": "atmosphere_hybrid_height_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "m", 
+            "formula": "z = a + b*orog", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "longitude": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "longitude", 
+            "standard_name": "longitude", 
+            "value": "", 
+            "out_name": "lon", 
+            "type": "double", 
+            "units": "degrees_east", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "360.0", 
+            "axis": "X"
+        }, 
+        "effectRadIc": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "Effective Radius of Ice Aerosols", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "effectRadIc", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "p1000": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "1000 hPa", 
+            "standard_name": "air_pressure", 
+            "value": "100000.", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "p500": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "500 hPa", 
+            "standard_name": "air_pressure", 
+            "value": "50000.", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "ocean_double_sigma": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "sigma: sigma depth: depth z1: z1 z2: z2 a: a_coeff href: href k_c: k_c", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "sigma: sigma_bnds depth: depth z1: z1 z2: z2 a: a href: href k_c: k_c", 
+            "bounds_values": "", 
+            "long_name": "ocean double sigma coordinate", 
+            "standard_name": "ocean_double_sigma", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "for k <= k_c:n z(k,j,i)= sigma(k)*f(j,i) n for k > k_c:n z(k,j,i)= f(j,i) + (sigma(k)-1)*(depth(j,i)-f(j,i)) n f(j,i)= 0.5*(z1+ z2) + 0.5*(z1-z2)* tanh(2*a/(z1-z2)*(depth(j,i)-href))", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plevs": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "standard_hybrid_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "p0: p0 a: a b: b ps: ps", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "p0: p0 a: a_bnds b: b_bnds ps: ps", 
+            "bounds_values": "", 
+            "long_name": "hybrid sigma pressure coordinate", 
+            "standard_name": "atmosphere_hybrid_sigma_pressure_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "1", 
+            "formula": "p = a*p0 + b*ps", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "1.0", 
+            "axis": "Z"
+        }, 
+        "p560": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "68000. 44000.", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "56000.0", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }
+    }, 
+    "variable_entry": {
+        "va": {
+            "comment": "", 
+            "dimensions": "longitude latitude alevel time1", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Northward Wind", 
+            "standard_name": "northward_wind", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "m s-1", 
+            "out_name": "va", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "depth_c": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: depth_c", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "hus": {
+            "comment": "", 
+            "dimensions": "longitude latitude alevel time1", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Specific Humidity", 
+            "standard_name": "specific_humidity", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "1.0", 
+            "out_name": "hus", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "ap_bnds": {
+            "units": "Pa", 
+            "long_name": "vertical coordinate formula term: ap(k+1/2)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "ap": {
+            "units": "Pa", 
+            "long_name": "vertical coordinate formula term: ap(k)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "href": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: href", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "orog": {
+            "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", 
+            "positive": "", 
+            "valid_min": "-700", 
+            "long_name": "Surface Altitude", 
+            "standard_name": "surface_altitude", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "m", 
+            "out_name": "orog", 
+            "type": "real", 
+            "valid_max": "1.00E+04", 
+            "ok_max_mean_abs": ""
+        }, 
+        "zlev": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: zlev(k)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "zmlwaero": {
+            "comment": "longwave heating rate due to volcanic aerosols to be diagnosed through double radiation call, zonal average values required", 
+            "dimensions": "latitude alevel time1", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Zonal mean longwave heating rate due to volcanic aerosols", 
+            "standard_name": "longwave heating rate due to volcanic aerosols", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "K s-1", 
+            "out_name": "zmlwaero", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "ps": {
+            "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", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Surface Air Pressure", 
+            "standard_name": "surface_air_pressure", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "Pa", 
+            "out_name": "ps", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "pmlev": {
+            "comment": "The atmospheric pressure at the model layer midpoints for all times and levels in the associated output variables", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "0.0", 
+            "long_name": "Air Pressure", 
+            "standard_name": "air_pressure", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "Pa", 
+            "out_name": "pmlev", 
+            "type": "real", 
+            "valid_max": "1000000.0", 
+            "ok_max_mean_abs": ""
+        }, 
+        "sigma_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: sigma(k+1/2)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "ptop": {
+            "units": "Pa", 
+            "long_name": "pressure at top of model", 
+            "type": "", 
+            "dimensions": ""
+        }, 
+        "ta": {
+            "comment": "", 
+            "dimensions": "longitude latitude alevel time1", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Air Temperature", 
+            "standard_name": "air_temperature", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "K", 
+            "out_name": "ta", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "b_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: b(k+1/2)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "nsigma": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: nsigma", 
+            "type": "integer", 
+            "dimensions": ""
+        }, 
+        "zmswaero": {
+            "comment": "shortwave heating rate due to volcanic aerosols to be diagnosed through double radiation call, zonal average values required", 
+            "dimensions": "latitude alevel time1", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Zonal mean shortwave heating rate due to volcanic aerosols", 
+            "standard_name": "shortwave heating rate due to volcanic aerosols", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "K s-1", 
+            "out_name": "zmswaero", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "ztop": {
+            "units": "m", 
+            "long_name": "height of top of model", 
+            "type": "", 
+            "dimensions": ""
+        }, 
+        "zlev_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: zlev(k+1/2)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "z1": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: z1", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "z2": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: z2", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "a": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: a(k)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "p0": {
+            "units": "Pa", 
+            "long_name": "vertical coordinate formula term: reference pressure", 
+            "type": "", 
+            "dimensions": ""
+        }, 
+        "b": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: b(k)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "ua": {
+            "comment": "", 
+            "dimensions": "longitude latitude alevel time1", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Eastward Wind", 
+            "standard_name": "eastward_wind", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "m s-1", 
+            "out_name": "ua", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "depth": {
+            "units": "m", 
+            "long_name": "Sea Floor Depth: formula term: thetao", 
+            "type": "real", 
+            "dimensions": "longitude latitude"
+        }, 
+        "eta": {
+            "units": "m", 
+            "long_name": "Sea Surface Height formula term: thetao", 
+            "type": "real", 
+            "dimensions": "longitude latitude time"
+        }, 
+        "k_c": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: k_c", 
+            "type": "integer", 
+            "dimensions": ""
+        }, 
+        "sigma": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: sigma(k)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "a_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: a(k+1/2)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }
+    }
+}
diff --git a/TestTables/CMIP6_6hrPlev.json b/TestTables/CMIP6_6hrPlev.json
new file mode 100644
index 0000000..2e683fc
--- /dev/null
+++ b/TestTables/CMIP6_6hrPlev.json
@@ -0,0 +1,2273 @@
+{
+    "Header": {
+        "product": "output", 
+        "approx_interval": "0.250000", 
+        "realm": "atmos", 
+        "cmor_version": "3.1", 
+        "Conventions": "CF-1.6 CMIP-6.0", 
+        "frequency": "6hr", 
+        "table_id": "Table 6hrPlev", 
+        "data_specs_version": "01.beta.29", 
+        "mip_era": "CMIP6", 
+        "generic_levels": "", 
+        "missing_value": "1e20", 
+        "table_date": "14 June 2016"
+    }, 
+    "axis_entry": {
+        "typebare": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "bare_ground", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "tau": {
+            "requested": [
+                "0.15", 
+                "0.8", 
+                "2.45", 
+                "6.5", 
+                "16.2", 
+                "41.5", 
+                "100."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "0.0", 
+                "0.3", 
+                "0.3", 
+                "1.3", 
+                "1.3", 
+                "3.6", 
+                "3.6", 
+                "9.4", 
+                "9.4", 
+                "23.0", 
+                "23.0", 
+                "60.0", 
+                "60.0", 
+                "100000."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "cloud optical thickness", 
+            "standard_name": "atmosphere_optical_thickness_due_to_cloud", 
+            "value": "", 
+            "out_name": "tau", 
+            "type": "double", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "olayer100m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "0. 100.", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "50.0", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "100.0", 
+            "axis": "Z"
+        }, 
+        "spectband": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "Spectral Band", 
+            "standard_name": "wave_frequency", 
+            "value": "", 
+            "out_name": "spectband", 
+            "type": "double", 
+            "units": "s-1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "ocean_sigma_z": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "sigma: sigma eta: eta depth: depth depth_c: depth_c nsigma: nsigma zlev: zlev", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "sigma: sigma_bnds eta: eta depth: depth depth_c: depth_c nsigma: nsigma zlev: zlev_bnds", 
+            "bounds_values": "", 
+            "long_name": "ocean sigma over z coordinate", 
+            "standard_name": "ocean_sigma_z", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "for k <= nsigma: z(n,k,j,i) = eta(n,j,i) + sigma(k)*(min(depth_c,depth(j,i))+eta(n,j,i)) ; for k > nsigma: z(n,k,j,i) = zlev(k)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev19": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000.", 
+                "500.", 
+                "100."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "p220": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "44000. 0.0", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "22000.0", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev17": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev10": {
+            "requested": [
+                "100000.", 
+                "85000.", 
+                "70000.", 
+                "50000.", 
+                "25000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "site": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "site index", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "site", 
+            "type": "integer", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "smooth_level": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "a: a b1: b1 b2: b2 ztop: ztop zsurf1: zsurf1 zsurf2: zsurf2", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-200.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "a: a_bnds b1: b1_bnds b2: b2_bnds ztop: ztop zsurf1: zsurf1 zsurf2: zsurf2", 
+            "bounds_values": "", 
+            "long_name": "atmosphere smooth level vertical (SLEVE) coordinate", 
+            "standard_name": "atmosphere_sleve_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "m", 
+            "formula": "z = a*ztop + b1*zsurf1 + b2*zsurf2", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "800000.0", 
+            "axis": "Z"
+        }, 
+        "p840": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "100000. 68000.", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "84000.0", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "ocean_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "sigma: lev eta: eta depth: depth", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "sigma: lev_bnds eta: eta depth: depth", 
+            "bounds_values": "", 
+            "long_name": "ocean sigma coordinate", 
+            "standard_name": "ocean_sigma_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "z(n,k,j,i) = eta(n,j,i) + sigma(k)*(depth(j,i)+eta(n,j,i))", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "0.0", 
+            "axis": "Z"
+        }, 
+        "depth0m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "0.0", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "100.0", 
+            "axis": "Z"
+        }, 
+        "ocean_s": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "s: lev eta: eta depth: depth a: a_coeff b: b_coeff depth_c: depth_c", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "s: lev_bnds eta: eta depth: depth a: a b: b depth_c: depth_c", 
+            "bounds_values": "", 
+            "long_name": "ocean s-coordinate", 
+            "standard_name": "ocean_s_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "z(n,k,j,i) = eta(n,j,i)*(1+s(k)) + depth_c*s(k) + (depth(j,i)-depth_c)*C(k) n where n C(k)=(1-b)*sinh(a*s(k))/sinh(a) +n           b*(tanh(a*(s(k)+0.5))/(2*tanh(0.5*a)) - 0.5)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "0.0", 
+            "axis": "Z"
+        }, 
+        "plev4s": {
+            "requested": [
+                "85000.", 
+                "50000.", 
+                "20000.", 
+                "5000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "typec4pft": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "c4_plant_functional_types", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "plev3h": {
+            "requested": [
+                "10000.", 
+                "1000.", 
+                "100."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "height2m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "up", 
+            "must_have_bounds": "no", 
+            "valid_min": "1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "height", 
+            "standard_name": "height", 
+            "value": "2.0", 
+            "out_name": "height", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "10.0", 
+            "axis": "Z"
+        }, 
+        "time1": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "time", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "plev7h": {
+            "requested": [
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "25000.", 
+                "5000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "sza5": {
+            "requested": [
+                "0.", 
+                "20.", 
+                "40.", 
+                "60.", 
+                "80."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "solar zenith angle", 
+            "standard_name": "solar_zenith_angle", 
+            "value": "", 
+            "out_name": "sza", 
+            "type": "double", 
+            "units": "degree", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "depth_coord": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "ocean depth coordinate", 
+            "standard_name": "depth", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "12000.0", 
+            "axis": "Z"
+        }, 
+        "sdepth1": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "0.0 0.1", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "0.05", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "0.2", 
+            "axis": "Z"
+        }, 
+        "alternate_hybrid_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "ap: ap b: b ps: ps", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "ap: ap_bnds b: b_bnds ps: ps", 
+            "bounds_values": "", 
+            "long_name": "hybrid sigma pressure coordinate", 
+            "standard_name": "atmosphere_hybrid_sigma_pressure_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "1", 
+            "formula": "p = ap + b*ps", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "1.0", 
+            "axis": "Z"
+        }, 
+        "time2": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "time", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "yes", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "time3": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "Diurnal cycle: monthly mean of the diurnal cycle (1 hour steps).", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "oline": {
+            "requested": [
+                "barents_opening", 
+                "bering_strait", 
+                "canadian_archipelago", 
+                "denmark_strait", 
+                "drake_passage", 
+                "english_channel", 
+                "pacific_equatorial_undercurrent", 
+                "faroe_scotland_channel", 
+                "florida_bahamas_strait", 
+                "fram_strait", 
+                "iceland_faroe_channel", 
+                "indonesian_thoughflow", 
+                "mozambique_channel", 
+                "taiwan_luzon_straits", 
+                "windward_passage"
+            ], 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "ocean passage", 
+            "standard_name": "region", 
+            "value": "", 
+            "out_name": "line", 
+            "type": "character", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "plev14": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "25000.", 
+                "15000.", 
+                "10000.", 
+                "5000.", 
+                "2000.", 
+                "1000.", 
+                "500.", 
+                "100."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev8": {
+            "requested": [
+                "100000.", 
+                "85000.", 
+                "70000.", 
+                "50000.", 
+                "25000.", 
+                "10000.", 
+                "5000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "location": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "location index", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "loc", 
+            "type": "integer", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "latitude": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-90.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "latitude", 
+            "standard_name": "latitude", 
+            "value": "", 
+            "out_name": "lat", 
+            "type": "double", 
+            "units": "degrees_north", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "90.0", 
+            "axis": "Y"
+        }, 
+        "plev3": {
+            "requested": [
+                "85000.", 
+                "50000.", 
+                "25000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "basin": {
+            "requested": [
+                "atlantic_arctic_ocean", 
+                "indian_pacific_ocean", 
+                "global_ocean"
+            ], 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "ocean basin", 
+            "standard_name": "region", 
+            "value": "", 
+            "out_name": "basin", 
+            "type": "character", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "p700": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "700 hPa", 
+            "standard_name": "air_pressure", 
+            "value": "70000.", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev7": {
+            "requested": [
+                "90000.", 
+                "74000.", 
+                "62000.", 
+                "50000.", 
+                "37500.", 
+                "24500.", 
+                "9000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "100000.", 
+                "80000.", 
+                "80000.", 
+                "68000.", 
+                "68000.", 
+                "56000.", 
+                "56000.", 
+                "44000.", 
+                "44000.", 
+                "31000.", 
+                "31000.", 
+                "18000.", 
+                "18000.", 
+                " 0."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev4": {
+            "requested": [
+                "92500.", 
+                "85000.", 
+                "50000.", 
+                "25000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev23": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000.", 
+                "700.", 
+                "500.", 
+                "300.", 
+                "200.", 
+                "100.", 
+                "40."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev39": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "17000.", 
+                "15000.", 
+                "13000.", 
+                "11500.", 
+                "10000.", 
+                "9000.", 
+                "8000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1500.", 
+                "1000.", 
+                "700.", 
+                "500.", 
+                "300.", 
+                "200.", 
+                "150.", 
+                "100.", 
+                "70.", 
+                "50.", 
+                "40.", 
+                "30.", 
+                "20.", 
+                "15.", 
+                "10.", 
+                "7.", 
+                "5.", 
+                "3."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "typepever": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "primary_evergreen_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "typesdec": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "secondary_decidous_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "plev27": {
+            "requested": [
+                "100000.", 
+                "97500.", 
+                "95000.", 
+                "92500.", 
+                "90000.", 
+                "87500.", 
+                "85000.", 
+                "82500.", 
+                "80000.", 
+                "77500.", 
+                "75000.", 
+                "70000.", 
+                "65000.", 
+                "60000.", 
+                "55000.", 
+                "50000.", 
+                "45000.", 
+                "40000.", 
+                "35000.", 
+                "30000.", 
+                "25000.", 
+                "22500.", 
+                "20000.", 
+                "17500.", 
+                "15000.", 
+                "12500.", 
+                "10000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "alt40": {
+            "requested": [
+                "240.", 
+                "720.", 
+                "1200.", 
+                "1680.", 
+                "2160.", 
+                "2640.", 
+                "3120.", 
+                "3600.", 
+                "4080.", 
+                "4560.", 
+                "5040.", 
+                "5520.", 
+                "6000.", 
+                "6480.", 
+                "6960.", 
+                "7440.", 
+                "7920.", 
+                "8400.", 
+                "8880.", 
+                "9360.", 
+                "9840.", 
+                "10320.", 
+                "10800.", 
+                "11280.", 
+                "11760.", 
+                "12240.", 
+                "12720.", 
+                "13200.", 
+                "13680.", 
+                "14160.", 
+                "14640.", 
+                "15120.", 
+                "15600.", 
+                "16080.", 
+                "16560.", 
+                "17040.", 
+                "17520.", 
+                "18000.", 
+                "18480.", 
+                "18960."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "0.", 
+                "480.", 
+                "480.", 
+                "960.", 
+                "960.", 
+                "1440.", 
+                "1440.", 
+                "1920.", 
+                "1920.", 
+                "2400.", 
+                "2400.", 
+                "2880.", 
+                "2880.", 
+                "3360.", 
+                "3360.", 
+                "3840.", 
+                "3840.", 
+                "4320.", 
+                "4320.", 
+                "4800.", 
+                "4800.", 
+                "5280.", 
+                "5280.", 
+                "5760.", 
+                "5760.", 
+                "6240.", 
+                "6240.", 
+                "6720.", 
+                "6720.", 
+                "7200.", 
+                "7200.", 
+                "7680.", 
+                "7680.", 
+                "8160.", 
+                "8160.", 
+                "8640.", 
+                "8640.", 
+                "9120.", 
+                "9120.", 
+                "9600.", 
+                "9600.", 
+                "10080.", 
+                "10080.", 
+                "10560.", 
+                "10560.", 
+                "11040.", 
+                "11040.", 
+                "11520.", 
+                "11520.", 
+                "12000.", 
+                "12000.", 
+                "12480.", 
+                "12480.", 
+                "12960.", 
+                "12960.", 
+                "13440.", 
+                "13440.", 
+                "13920.", 
+                "13920.", 
+                "14400.", 
+                "14400.", 
+                "14880.", 
+                "14880.", 
+                "15360.", 
+                "15360.", 
+                "15840.", 
+                "15840.", 
+                "16320.", 
+                "16320.", 
+                "16800.", 
+                "16800.", 
+                "17280.", 
+                "17280.", 
+                "17760.", 
+                "17760.", 
+                "18240.", 
+                "18240.", 
+                "18720.", 
+                "18720.", 
+                "19200."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "altitude", 
+            "standard_name": "altitude", 
+            "value": "", 
+            "out_name": "alt40", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "time": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "time", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "plev7c": {
+            "requested": [
+                "90000.", 
+                "74000.", 
+                "62000.", 
+                "50000.", 
+                "37500.", 
+                "24500.", 
+                "9000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "height10m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "up", 
+            "must_have_bounds": "no", 
+            "valid_min": "1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "height", 
+            "standard_name": "height", 
+            "value": "10.0", 
+            "out_name": "height", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "30.0", 
+            "axis": "Z"
+        }, 
+        "dbze": {
+            "requested": [
+                "-47.5", 
+                "-42.5", 
+                "-37.5", 
+                "-32.5", 
+                "-27.5", 
+                "-22.5", 
+                "-17.5", 
+                "-12.5", 
+                "-7.5", 
+                "-2.5", 
+                "2.5", 
+                "7.5", 
+                "12.5", 
+                "17.5", 
+                "22.5"
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "-50", 
+                "-45", 
+                "-45", 
+                "-40", 
+                "-40", 
+                "-35", 
+                "-35", 
+                "-30", 
+                "-30", 
+                "-25", 
+                "-25", 
+                "-20", 
+                "-20", 
+                "-15", 
+                "-15", 
+                "-10", 
+                "-10", 
+                "-5", 
+                "-5", 
+                "0", 
+                "0", 
+                "5", 
+                "5", 
+                "10", 
+                "10", 
+                "15", 
+                "15", 
+                "20", 
+                "20", 
+                "25."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "CloudSat simulator equivalent radar reflectivity factor", 
+            "standard_name": "equivalent_reflectivity_factor", 
+            "value": "", 
+            "out_name": "dbze", 
+            "type": "double", 
+            "units": "dBZ", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "typesever": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "secondary_evergreen_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "rho": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "density++++?", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "rho", 
+            "type": "double", 
+            "units": "kg m-3", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "depth100m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "80.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "100.0", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "120.0", 
+            "axis": "Z"
+        }, 
+        "effectRadLi": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "Effective Radius of Liquid Aerosols", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "effectRadLi", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "sdepth": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "200.0", 
+            "axis": "Z"
+        }, 
+        "vegtype": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "plant functional type", 
+            "standard_name": "area_type", 
+            "value": "", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "typec3pft": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "c3_plant_functional_types", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "natural_log_pressure": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "p0: p0 lev: lev", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "p0: p0 lev: lev_bnds", 
+            "bounds_values": "", 
+            "long_name": "atmosphere natural log pressure coordinate", 
+            "standard_name": "atmosphere_ln_pressure_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "p = p0 * exp(-lev)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "20.0", 
+            "axis": "Z"
+        }, 
+        "scatratio": {
+            "requested": [
+                "0.005", 
+                "0.605", 
+                "2.1", 
+                "4.", 
+                "6.", 
+                "8.5", 
+                "12.5", 
+                "17.5", 
+                "22.5", 
+                "27.5", 
+                "35.", 
+                "45.", 
+                "55.", 
+                "70.", 
+                "50040."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "0.", 
+                "0.01", 
+                "0.01", 
+                "1.2", 
+                "1.2", 
+                "3.", 
+                "3.", 
+                "5.", 
+                "5.", 
+                "7.", 
+                "7.", 
+                "10.", 
+                "10.", 
+                "15.", 
+                "15.", 
+                "20.", 
+                "20.", 
+                "25.", 
+                "25.", 
+                "30.", 
+                "30.", 
+                "40.", 
+                "40.", 
+                "50.", 
+                "50.", 
+                "60.", 
+                "60.", 
+                "80.", 
+                "80.", 
+                "100000."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "lidar backscattering ratio", 
+            "standard_name": "backscattering_ratio", 
+            "value": "", 
+            "out_name": "scatratio", 
+            "type": "double", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "standard_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "ptop: ptop sigma: lev ps: ps", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "ptop: ptop sigma: lev_bnds ps: ps", 
+            "bounds_values": "", 
+            "long_name": "sigma coordinate", 
+            "standard_name": "atmosphere_sigma_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "p = ptop + sigma*(ps - ptop)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "1.0", 
+            "axis": "Z"
+        }, 
+        "typepdec": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "primary_deciduous_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "hybrid_height": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "a: lev b: b orog: orog", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "a: lev_bnds b: b_bnds orog: orog", 
+            "bounds_values": "", 
+            "long_name": "hybrid height coordinate", 
+            "standard_name": "atmosphere_hybrid_height_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "m", 
+            "formula": "z = a + b*orog", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "longitude": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "longitude", 
+            "standard_name": "longitude", 
+            "value": "", 
+            "out_name": "lon", 
+            "type": "double", 
+            "units": "degrees_east", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "360.0", 
+            "axis": "X"
+        }, 
+        "effectRadIc": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "Effective Radius of Ice Aerosols", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "effectRadIc", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "p1000": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "1000 hPa", 
+            "standard_name": "air_pressure", 
+            "value": "100000.", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "p500": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "500 hPa", 
+            "standard_name": "air_pressure", 
+            "value": "50000.", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "ocean_double_sigma": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "sigma: sigma depth: depth z1: z1 z2: z2 a: a_coeff href: href k_c: k_c", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "sigma: sigma_bnds depth: depth z1: z1 z2: z2 a: a href: href k_c: k_c", 
+            "bounds_values": "", 
+            "long_name": "ocean double sigma coordinate", 
+            "standard_name": "ocean_double_sigma", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "for k <= k_c:n z(k,j,i)= sigma(k)*f(j,i) n for k > k_c:n z(k,j,i)= f(j,i) + (sigma(k)-1)*(depth(j,i)-f(j,i)) n f(j,i)= 0.5*(z1+ z2) + 0.5*(z1-z2)* tanh(2*a/(z1-z2)*(depth(j,i)-href))", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plevs": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "standard_hybrid_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "p0: p0 a: a b: b ps: ps", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "p0: p0 a: a_bnds b: b_bnds ps: ps", 
+            "bounds_values": "", 
+            "long_name": "hybrid sigma pressure coordinate", 
+            "standard_name": "atmosphere_hybrid_sigma_pressure_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "1", 
+            "formula": "p = a*p0 + b*ps", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "1.0", 
+            "axis": "Z"
+        }, 
+        "p560": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "68000. 44000.", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "56000.0", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }
+    }, 
+    "variable_entry": {
+        "va": {
+            "comment": "", 
+            "dimensions": "longitude latitude plev3 time1", 
+            "positive": "", 
+            "valid_min": "-80.0", 
+            "long_name": "Northward Wind", 
+            "standard_name": "northward_wind", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "m s-1", 
+            "out_name": "va", 
+            "type": "real", 
+            "valid_max": "80.0", 
+            "ok_max_mean_abs": ""
+        }, 
+        "depth_c": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: depth_c", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "ua200": {
+            "comment": "Zonal wind (positive eastwards) at 200hPa", 
+            "dimensions": "longitude latitude time p200", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Eastward Wind", 
+            "standard_name": "eastward_wind", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "m s-1", 
+            "out_name": "ua200", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "ap_bnds": {
+            "units": "Pa", 
+            "long_name": "vertical coordinate formula term: ap(k+1/2)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "ap": {
+            "units": "Pa", 
+            "long_name": "vertical coordinate formula term: ap(k)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "href": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: href", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "orog": {
+            "units": "m", 
+            "long_name": "Surface Altitude", 
+            "type": "real", 
+            "dimensions": "longitude latitude"
+        }, 
+        "zlev": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: zlev(k)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "ps": {
+            "units": "Pa", 
+            "long_name": "Surface Air Pressure", 
+            "type": "real", 
+            "dimensions": "longitude latitude time"
+        }, 
+        "ua850": {
+            "comment": "Zonal wind on the 850 hPa surface", 
+            "dimensions": "longitude latitude time p850", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Eastward Wind at 850 hPa", 
+            "standard_name": "eastward_wind", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "m s-1", 
+            "out_name": "ua850", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "sigma_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: sigma(k+1/2)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "ptop": {
+            "units": "Pa", 
+            "long_name": "pressure at top of model", 
+            "type": "", 
+            "dimensions": ""
+        }, 
+        "ta": {
+            "comment": "", 
+            "dimensions": "longitude latitude plev3 time1", 
+            "positive": "", 
+            "valid_min": "144.0", 
+            "long_name": "Air Temperature", 
+            "standard_name": "air_temperature", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "K", 
+            "out_name": "ta", 
+            "type": "real", 
+            "valid_max": "330.0", 
+            "ok_max_mean_abs": ""
+        }, 
+        "b_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: b(k+1/2)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "psl": {
+            "comment": "Sea Level Pressure", 
+            "dimensions": "longitude latitude time1", 
+            "positive": "", 
+            "valid_min": "92500.0", 
+            "long_name": "Sea Level Pressure", 
+            "standard_name": "air_pressure_at_sea_level", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "Pa", 
+            "out_name": "psl", 
+            "type": "real", 
+            "valid_max": "113000.0", 
+            "ok_max_mean_abs": ""
+        }, 
+        "va850": {
+            "comment": "Northward component of the wind at 850hPa", 
+            "dimensions": "longitude latitude time p850", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Northward Wind", 
+            "standard_name": "northward_wind", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "m s-1", 
+            "out_name": "va850", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "nsigma": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: nsigma", 
+            "type": "integer", 
+            "dimensions": ""
+        }, 
+        "ztop": {
+            "units": "m", 
+            "long_name": "height of top of model", 
+            "type": "", 
+            "dimensions": ""
+        }, 
+        "zlev_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: zlev(k+1/2)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "z1": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: z1", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "z2": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: z2", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "a": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: a(k)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "p0": {
+            "units": "Pa", 
+            "long_name": "vertical coordinate formula term: reference pressure", 
+            "type": "", 
+            "dimensions": ""
+        }, 
+        "b": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: b(k)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "ua": {
+            "comment": "", 
+            "dimensions": "longitude latitude plev3 time1", 
+            "positive": "", 
+            "valid_min": "-90.0", 
+            "long_name": "Eastward Wind", 
+            "standard_name": "eastward_wind", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "m s-1", 
+            "out_name": "ua", 
+            "type": "real", 
+            "valid_max": "145.0", 
+            "ok_max_mean_abs": ""
+        }, 
+        "depth": {
+            "units": "m", 
+            "long_name": "Sea Floor Depth: formula term: thetao", 
+            "type": "real", 
+            "dimensions": "longitude latitude"
+        }, 
+        "eta": {
+            "units": "m", 
+            "long_name": "Sea Surface Height formula term: thetao", 
+            "type": "real", 
+            "dimensions": "longitude latitude time"
+        }, 
+        "va200": {
+            "comment": "Northward component of the wind", 
+            "dimensions": "longitude latitude time p200", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Northward Wind", 
+            "standard_name": "northward_wind", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "m s-1", 
+            "out_name": "va200", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "k_c": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: k_c", 
+            "type": "integer", 
+            "dimensions": ""
+        }, 
+        "sigma": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: sigma(k)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "a_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: a(k+1/2)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }
+    }
+}
diff --git a/TestTables/CMIP6_6hrPlevpt.json b/TestTables/CMIP6_6hrPlevpt.json
new file mode 100644
index 0000000..4ba4819
--- /dev/null
+++ b/TestTables/CMIP6_6hrPlevpt.json
@@ -0,0 +1,2273 @@
+{
+    "Header": {
+        "product": "output", 
+        "approx_interval": "0.250000", 
+        "realm": "", 
+        "cmor_version": "3.1", 
+        "Conventions": "CF-1.6 CMIP-6.0", 
+        "frequency": "6hr", 
+        "table_id": "Table 6hrPlevpt", 
+        "data_specs_version": "01.beta.29", 
+        "mip_era": "CMIP6", 
+        "generic_levels": "", 
+        "missing_value": "1e20", 
+        "table_date": "14 June 2016"
+    }, 
+    "axis_entry": {
+        "typebare": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "bare_ground", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "tau": {
+            "requested": [
+                "0.15", 
+                "0.8", 
+                "2.45", 
+                "6.5", 
+                "16.2", 
+                "41.5", 
+                "100."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "0.0", 
+                "0.3", 
+                "0.3", 
+                "1.3", 
+                "1.3", 
+                "3.6", 
+                "3.6", 
+                "9.4", 
+                "9.4", 
+                "23.0", 
+                "23.0", 
+                "60.0", 
+                "60.0", 
+                "100000."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "cloud optical thickness", 
+            "standard_name": "atmosphere_optical_thickness_due_to_cloud", 
+            "value": "", 
+            "out_name": "tau", 
+            "type": "double", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "olayer100m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "0. 100.", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "50.0", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "100.0", 
+            "axis": "Z"
+        }, 
+        "spectband": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "Spectral Band", 
+            "standard_name": "wave_frequency", 
+            "value": "", 
+            "out_name": "spectband", 
+            "type": "double", 
+            "units": "s-1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "ocean_sigma_z": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "sigma: sigma eta: eta depth: depth depth_c: depth_c nsigma: nsigma zlev: zlev", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "sigma: sigma_bnds eta: eta depth: depth depth_c: depth_c nsigma: nsigma zlev: zlev_bnds", 
+            "bounds_values": "", 
+            "long_name": "ocean sigma over z coordinate", 
+            "standard_name": "ocean_sigma_z", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "for k <= nsigma: z(n,k,j,i) = eta(n,j,i) + sigma(k)*(min(depth_c,depth(j,i))+eta(n,j,i)) ; for k > nsigma: z(n,k,j,i) = zlev(k)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev19": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000.", 
+                "500.", 
+                "100."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "p220": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "44000. 0.0", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "22000.0", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev17": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev10": {
+            "requested": [
+                "100000.", 
+                "85000.", 
+                "70000.", 
+                "50000.", 
+                "25000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "site": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "site index", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "site", 
+            "type": "integer", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "smooth_level": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "a: a b1: b1 b2: b2 ztop: ztop zsurf1: zsurf1 zsurf2: zsurf2", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-200.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "a: a_bnds b1: b1_bnds b2: b2_bnds ztop: ztop zsurf1: zsurf1 zsurf2: zsurf2", 
+            "bounds_values": "", 
+            "long_name": "atmosphere smooth level vertical (SLEVE) coordinate", 
+            "standard_name": "atmosphere_sleve_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "m", 
+            "formula": "z = a*ztop + b1*zsurf1 + b2*zsurf2", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "800000.0", 
+            "axis": "Z"
+        }, 
+        "p840": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "100000. 68000.", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "84000.0", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "ocean_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "sigma: lev eta: eta depth: depth", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "sigma: lev_bnds eta: eta depth: depth", 
+            "bounds_values": "", 
+            "long_name": "ocean sigma coordinate", 
+            "standard_name": "ocean_sigma_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "z(n,k,j,i) = eta(n,j,i) + sigma(k)*(depth(j,i)+eta(n,j,i))", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "0.0", 
+            "axis": "Z"
+        }, 
+        "depth0m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "0.0", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "100.0", 
+            "axis": "Z"
+        }, 
+        "ocean_s": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "s: lev eta: eta depth: depth a: a_coeff b: b_coeff depth_c: depth_c", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "s: lev_bnds eta: eta depth: depth a: a b: b depth_c: depth_c", 
+            "bounds_values": "", 
+            "long_name": "ocean s-coordinate", 
+            "standard_name": "ocean_s_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "z(n,k,j,i) = eta(n,j,i)*(1+s(k)) + depth_c*s(k) + (depth(j,i)-depth_c)*C(k) n where n C(k)=(1-b)*sinh(a*s(k))/sinh(a) +n           b*(tanh(a*(s(k)+0.5))/(2*tanh(0.5*a)) - 0.5)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "0.0", 
+            "axis": "Z"
+        }, 
+        "plev4s": {
+            "requested": [
+                "85000.", 
+                "50000.", 
+                "20000.", 
+                "5000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "typec4pft": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "c4_plant_functional_types", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "plev3h": {
+            "requested": [
+                "10000.", 
+                "1000.", 
+                "100."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "height2m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "up", 
+            "must_have_bounds": "no", 
+            "valid_min": "1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "height", 
+            "standard_name": "height", 
+            "value": "2.0", 
+            "out_name": "height", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "10.0", 
+            "axis": "Z"
+        }, 
+        "time1": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "time", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "plev7h": {
+            "requested": [
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "25000.", 
+                "5000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "sza5": {
+            "requested": [
+                "0.", 
+                "20.", 
+                "40.", 
+                "60.", 
+                "80."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "solar zenith angle", 
+            "standard_name": "solar_zenith_angle", 
+            "value": "", 
+            "out_name": "sza", 
+            "type": "double", 
+            "units": "degree", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "depth_coord": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "ocean depth coordinate", 
+            "standard_name": "depth", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "12000.0", 
+            "axis": "Z"
+        }, 
+        "sdepth1": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "0.0 0.1", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "0.05", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "0.2", 
+            "axis": "Z"
+        }, 
+        "alternate_hybrid_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "ap: ap b: b ps: ps", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "ap: ap_bnds b: b_bnds ps: ps", 
+            "bounds_values": "", 
+            "long_name": "hybrid sigma pressure coordinate", 
+            "standard_name": "atmosphere_hybrid_sigma_pressure_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "1", 
+            "formula": "p = ap + b*ps", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "1.0", 
+            "axis": "Z"
+        }, 
+        "time2": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "time", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "yes", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "time3": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "Diurnal cycle: monthly mean of the diurnal cycle (1 hour steps).", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "oline": {
+            "requested": [
+                "barents_opening", 
+                "bering_strait", 
+                "canadian_archipelago", 
+                "denmark_strait", 
+                "drake_passage", 
+                "english_channel", 
+                "pacific_equatorial_undercurrent", 
+                "faroe_scotland_channel", 
+                "florida_bahamas_strait", 
+                "fram_strait", 
+                "iceland_faroe_channel", 
+                "indonesian_thoughflow", 
+                "mozambique_channel", 
+                "taiwan_luzon_straits", 
+                "windward_passage"
+            ], 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "ocean passage", 
+            "standard_name": "region", 
+            "value": "", 
+            "out_name": "line", 
+            "type": "character", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "plev14": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "25000.", 
+                "15000.", 
+                "10000.", 
+                "5000.", 
+                "2000.", 
+                "1000.", 
+                "500.", 
+                "100."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev8": {
+            "requested": [
+                "100000.", 
+                "85000.", 
+                "70000.", 
+                "50000.", 
+                "25000.", 
+                "10000.", 
+                "5000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "location": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "location index", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "loc", 
+            "type": "integer", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "latitude": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-90.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "latitude", 
+            "standard_name": "latitude", 
+            "value": "", 
+            "out_name": "lat", 
+            "type": "double", 
+            "units": "degrees_north", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "90.0", 
+            "axis": "Y"
+        }, 
+        "plev3": {
+            "requested": [
+                "85000.", 
+                "50000.", 
+                "25000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "basin": {
+            "requested": [
+                "atlantic_arctic_ocean", 
+                "indian_pacific_ocean", 
+                "global_ocean"
+            ], 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "ocean basin", 
+            "standard_name": "region", 
+            "value": "", 
+            "out_name": "basin", 
+            "type": "character", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "p700": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "700 hPa", 
+            "standard_name": "air_pressure", 
+            "value": "70000.", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev7": {
+            "requested": [
+                "90000.", 
+                "74000.", 
+                "62000.", 
+                "50000.", 
+                "37500.", 
+                "24500.", 
+                "9000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "100000.", 
+                "80000.", 
+                "80000.", 
+                "68000.", 
+                "68000.", 
+                "56000.", 
+                "56000.", 
+                "44000.", 
+                "44000.", 
+                "31000.", 
+                "31000.", 
+                "18000.", 
+                "18000.", 
+                " 0."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev4": {
+            "requested": [
+                "92500.", 
+                "85000.", 
+                "50000.", 
+                "25000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev23": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000.", 
+                "700.", 
+                "500.", 
+                "300.", 
+                "200.", 
+                "100.", 
+                "40."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev39": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "17000.", 
+                "15000.", 
+                "13000.", 
+                "11500.", 
+                "10000.", 
+                "9000.", 
+                "8000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1500.", 
+                "1000.", 
+                "700.", 
+                "500.", 
+                "300.", 
+                "200.", 
+                "150.", 
+                "100.", 
+                "70.", 
+                "50.", 
+                "40.", 
+                "30.", 
+                "20.", 
+                "15.", 
+                "10.", 
+                "7.", 
+                "5.", 
+                "3."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "typepever": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "primary_evergreen_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "typesdec": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "secondary_decidous_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "plev27": {
+            "requested": [
+                "100000.", 
+                "97500.", 
+                "95000.", 
+                "92500.", 
+                "90000.", 
+                "87500.", 
+                "85000.", 
+                "82500.", 
+                "80000.", 
+                "77500.", 
+                "75000.", 
+                "70000.", 
+                "65000.", 
+                "60000.", 
+                "55000.", 
+                "50000.", 
+                "45000.", 
+                "40000.", 
+                "35000.", 
+                "30000.", 
+                "25000.", 
+                "22500.", 
+                "20000.", 
+                "17500.", 
+                "15000.", 
+                "12500.", 
+                "10000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "alt40": {
+            "requested": [
+                "240.", 
+                "720.", 
+                "1200.", 
+                "1680.", 
+                "2160.", 
+                "2640.", 
+                "3120.", 
+                "3600.", 
+                "4080.", 
+                "4560.", 
+                "5040.", 
+                "5520.", 
+                "6000.", 
+                "6480.", 
+                "6960.", 
+                "7440.", 
+                "7920.", 
+                "8400.", 
+                "8880.", 
+                "9360.", 
+                "9840.", 
+                "10320.", 
+                "10800.", 
+                "11280.", 
+                "11760.", 
+                "12240.", 
+                "12720.", 
+                "13200.", 
+                "13680.", 
+                "14160.", 
+                "14640.", 
+                "15120.", 
+                "15600.", 
+                "16080.", 
+                "16560.", 
+                "17040.", 
+                "17520.", 
+                "18000.", 
+                "18480.", 
+                "18960."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "0.", 
+                "480.", 
+                "480.", 
+                "960.", 
+                "960.", 
+                "1440.", 
+                "1440.", 
+                "1920.", 
+                "1920.", 
+                "2400.", 
+                "2400.", 
+                "2880.", 
+                "2880.", 
+                "3360.", 
+                "3360.", 
+                "3840.", 
+                "3840.", 
+                "4320.", 
+                "4320.", 
+                "4800.", 
+                "4800.", 
+                "5280.", 
+                "5280.", 
+                "5760.", 
+                "5760.", 
+                "6240.", 
+                "6240.", 
+                "6720.", 
+                "6720.", 
+                "7200.", 
+                "7200.", 
+                "7680.", 
+                "7680.", 
+                "8160.", 
+                "8160.", 
+                "8640.", 
+                "8640.", 
+                "9120.", 
+                "9120.", 
+                "9600.", 
+                "9600.", 
+                "10080.", 
+                "10080.", 
+                "10560.", 
+                "10560.", 
+                "11040.", 
+                "11040.", 
+                "11520.", 
+                "11520.", 
+                "12000.", 
+                "12000.", 
+                "12480.", 
+                "12480.", 
+                "12960.", 
+                "12960.", 
+                "13440.", 
+                "13440.", 
+                "13920.", 
+                "13920.", 
+                "14400.", 
+                "14400.", 
+                "14880.", 
+                "14880.", 
+                "15360.", 
+                "15360.", 
+                "15840.", 
+                "15840.", 
+                "16320.", 
+                "16320.", 
+                "16800.", 
+                "16800.", 
+                "17280.", 
+                "17280.", 
+                "17760.", 
+                "17760.", 
+                "18240.", 
+                "18240.", 
+                "18720.", 
+                "18720.", 
+                "19200."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "altitude", 
+            "standard_name": "altitude", 
+            "value": "", 
+            "out_name": "alt40", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "time": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "time", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "plev7c": {
+            "requested": [
+                "90000.", 
+                "74000.", 
+                "62000.", 
+                "50000.", 
+                "37500.", 
+                "24500.", 
+                "9000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "height10m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "up", 
+            "must_have_bounds": "no", 
+            "valid_min": "1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "height", 
+            "standard_name": "height", 
+            "value": "10.0", 
+            "out_name": "height", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "30.0", 
+            "axis": "Z"
+        }, 
+        "dbze": {
+            "requested": [
+                "-47.5", 
+                "-42.5", 
+                "-37.5", 
+                "-32.5", 
+                "-27.5", 
+                "-22.5", 
+                "-17.5", 
+                "-12.5", 
+                "-7.5", 
+                "-2.5", 
+                "2.5", 
+                "7.5", 
+                "12.5", 
+                "17.5", 
+                "22.5"
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "-50", 
+                "-45", 
+                "-45", 
+                "-40", 
+                "-40", 
+                "-35", 
+                "-35", 
+                "-30", 
+                "-30", 
+                "-25", 
+                "-25", 
+                "-20", 
+                "-20", 
+                "-15", 
+                "-15", 
+                "-10", 
+                "-10", 
+                "-5", 
+                "-5", 
+                "0", 
+                "0", 
+                "5", 
+                "5", 
+                "10", 
+                "10", 
+                "15", 
+                "15", 
+                "20", 
+                "20", 
+                "25."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "CloudSat simulator equivalent radar reflectivity factor", 
+            "standard_name": "equivalent_reflectivity_factor", 
+            "value": "", 
+            "out_name": "dbze", 
+            "type": "double", 
+            "units": "dBZ", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "typesever": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "secondary_evergreen_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "rho": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "density++++?", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "rho", 
+            "type": "double", 
+            "units": "kg m-3", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "depth100m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "80.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "100.0", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "120.0", 
+            "axis": "Z"
+        }, 
+        "effectRadLi": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "Effective Radius of Liquid Aerosols", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "effectRadLi", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "sdepth": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "200.0", 
+            "axis": "Z"
+        }, 
+        "vegtype": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "plant functional type", 
+            "standard_name": "area_type", 
+            "value": "", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "typec3pft": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "c3_plant_functional_types", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "natural_log_pressure": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "p0: p0 lev: lev", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "p0: p0 lev: lev_bnds", 
+            "bounds_values": "", 
+            "long_name": "atmosphere natural log pressure coordinate", 
+            "standard_name": "atmosphere_ln_pressure_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "p = p0 * exp(-lev)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "20.0", 
+            "axis": "Z"
+        }, 
+        "scatratio": {
+            "requested": [
+                "0.005", 
+                "0.605", 
+                "2.1", 
+                "4.", 
+                "6.", 
+                "8.5", 
+                "12.5", 
+                "17.5", 
+                "22.5", 
+                "27.5", 
+                "35.", 
+                "45.", 
+                "55.", 
+                "70.", 
+                "50040."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "0.", 
+                "0.01", 
+                "0.01", 
+                "1.2", 
+                "1.2", 
+                "3.", 
+                "3.", 
+                "5.", 
+                "5.", 
+                "7.", 
+                "7.", 
+                "10.", 
+                "10.", 
+                "15.", 
+                "15.", 
+                "20.", 
+                "20.", 
+                "25.", 
+                "25.", 
+                "30.", 
+                "30.", 
+                "40.", 
+                "40.", 
+                "50.", 
+                "50.", 
+                "60.", 
+                "60.", 
+                "80.", 
+                "80.", 
+                "100000."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "lidar backscattering ratio", 
+            "standard_name": "backscattering_ratio", 
+            "value": "", 
+            "out_name": "scatratio", 
+            "type": "double", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "standard_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "ptop: ptop sigma: lev ps: ps", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "ptop: ptop sigma: lev_bnds ps: ps", 
+            "bounds_values": "", 
+            "long_name": "sigma coordinate", 
+            "standard_name": "atmosphere_sigma_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "p = ptop + sigma*(ps - ptop)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "1.0", 
+            "axis": "Z"
+        }, 
+        "typepdec": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "primary_deciduous_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "hybrid_height": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "a: lev b: b orog: orog", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "a: lev_bnds b: b_bnds orog: orog", 
+            "bounds_values": "", 
+            "long_name": "hybrid height coordinate", 
+            "standard_name": "atmosphere_hybrid_height_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "m", 
+            "formula": "z = a + b*orog", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "longitude": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "longitude", 
+            "standard_name": "longitude", 
+            "value": "", 
+            "out_name": "lon", 
+            "type": "double", 
+            "units": "degrees_east", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "360.0", 
+            "axis": "X"
+        }, 
+        "effectRadIc": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "Effective Radius of Ice Aerosols", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "effectRadIc", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "p1000": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "1000 hPa", 
+            "standard_name": "air_pressure", 
+            "value": "100000.", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "p500": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "500 hPa", 
+            "standard_name": "air_pressure", 
+            "value": "50000.", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "ocean_double_sigma": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "sigma: sigma depth: depth z1: z1 z2: z2 a: a_coeff href: href k_c: k_c", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "sigma: sigma_bnds depth: depth z1: z1 z2: z2 a: a href: href k_c: k_c", 
+            "bounds_values": "", 
+            "long_name": "ocean double sigma coordinate", 
+            "standard_name": "ocean_double_sigma", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "for k <= k_c:n z(k,j,i)= sigma(k)*f(j,i) n for k > k_c:n z(k,j,i)= f(j,i) + (sigma(k)-1)*(depth(j,i)-f(j,i)) n f(j,i)= 0.5*(z1+ z2) + 0.5*(z1-z2)* tanh(2*a/(z1-z2)*(depth(j,i)-href))", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plevs": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "standard_hybrid_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "p0: p0 a: a b: b ps: ps", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "p0: p0 a: a_bnds b: b_bnds ps: ps", 
+            "bounds_values": "", 
+            "long_name": "hybrid sigma pressure coordinate", 
+            "standard_name": "atmosphere_hybrid_sigma_pressure_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "1", 
+            "formula": "p = a*p0 + b*ps", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "1.0", 
+            "axis": "Z"
+        }, 
+        "p560": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "68000. 44000.", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "56000.0", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }
+    }, 
+    "variable_entry": {
+        "va": {
+            "comment": "", 
+            "dimensions": "longitude latitude plev3 time1", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Northward Wind", 
+            "standard_name": "northward_wind", 
+            "modeling_realm": "", 
+            "cell_measures": "time: point", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "m s-1", 
+            "out_name": "va", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "lwsffluxaero": {
+            "comment": "downwelling longwave  flux  due to volcanic aerosols at the surface to be diagnosed through double radiation call", 
+            "dimensions": "longitude latitude time1", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Longwave flux  due to volcanic aerosols at the surface", 
+            "standard_name": "longwave  flux  due to volcanic aerosols at the surface", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "Wm-2", 
+            "out_name": "lwsffluxaero", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "depth_c": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: depth_c", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "ap_bnds": {
+            "units": "Pa", 
+            "long_name": "vertical coordinate formula term: ap(k+1/2)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "ap": {
+            "units": "Pa", 
+            "long_name": "vertical coordinate formula term: ap(k)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "href": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: href", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "orog": {
+            "units": "m", 
+            "long_name": "Surface Altitude", 
+            "type": "real", 
+            "dimensions": "longitude latitude"
+        }, 
+        "zlev": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: zlev(k)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "ps": {
+            "units": "Pa", 
+            "long_name": "Surface Air Pressure", 
+            "type": "real", 
+            "dimensions": "longitude latitude time"
+        }, 
+        "sigma_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: sigma(k+1/2)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "swsffluxaero": {
+            "comment": "shortwave heating rate due to volcanic aerosols to be diagnosed through double radiation call, zonal average values required", 
+            "dimensions": "longitude latitude time1", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Shortwave heating rate due to volcanic aerosols", 
+            "standard_name": "shortwave  flux due to volcanic aerosols at  the surface", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "Wm-2", 
+            "out_name": "swsffluxaero", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "ptop": {
+            "units": "Pa", 
+            "long_name": "pressure at top of model", 
+            "type": "", 
+            "dimensions": ""
+        }, 
+        "ta": {
+            "comment": "", 
+            "dimensions": "longitude latitude plev3 time1", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Air Temperature", 
+            "standard_name": "air_temperature", 
+            "modeling_realm": "", 
+            "cell_measures": "time: point", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "K", 
+            "out_name": "ta", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "b_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: b(k+1/2)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "psl": {
+            "comment": "Sea Level Pressure", 
+            "dimensions": "longitude latitude time1", 
+            "positive": "", 
+            "valid_min": "92500.0", 
+            "long_name": "Sea Level Pressure", 
+            "standard_name": "air_pressure_at_sea_level", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "Pa", 
+            "out_name": "psl", 
+            "type": "real", 
+            "valid_max": "113000.0", 
+            "ok_max_mean_abs": ""
+        }, 
+        "nsigma": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: nsigma", 
+            "type": "integer", 
+            "dimensions": ""
+        }, 
+        "lwtoafluxaerocs": {
+            "comment": "downwelling longwave flux due to volcanic aerosols at TOA under clear sky to be diagnosed through double radiation call", 
+            "dimensions": "longitude latitude time1", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Longwave flux due to volcanic aerosols at TOA under clear sky", 
+            "standard_name": "longwave flux due to volcanic aerosols at TOA under clear sky", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "Wm-2", 
+            "out_name": "lwtoafluxaerocs", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "ztop": {
+            "units": "m", 
+            "long_name": "height of top of model", 
+            "type": "", 
+            "dimensions": ""
+        }, 
+        "zlev_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: zlev(k+1/2)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "z1": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: z1", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "z2": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: z2", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "a": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: a(k)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "p0": {
+            "units": "Pa", 
+            "long_name": "vertical coordinate formula term: reference pressure", 
+            "type": "", 
+            "dimensions": ""
+        }, 
+        "b": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: b(k)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "ua": {
+            "comment": "", 
+            "dimensions": "longitude latitude plev3 time1", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Eastward Wind", 
+            "standard_name": "eastward_wind", 
+            "modeling_realm": "", 
+            "cell_measures": "time: point", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "m s-1", 
+            "out_name": "ua", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "depth": {
+            "units": "m", 
+            "long_name": "Sea Floor Depth: formula term: thetao", 
+            "type": "real", 
+            "dimensions": "longitude latitude"
+        }, 
+        "eta": {
+            "units": "m", 
+            "long_name": "Sea Surface Height formula term: thetao", 
+            "type": "real", 
+            "dimensions": "longitude latitude time"
+        }, 
+        "swtoafluxaerocs": {
+            "comment": "downwelling shortwave flux due to volcanic aerosols at TOA under clear sky to be diagnosed through double radiation call", 
+            "dimensions": "longitude latitude time1", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Shortwave flux due to volcanic aerosols at TOA under clear sky", 
+            "standard_name": "shortwave flux due to volcanic aerosols at TOA under clear sky", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "Wm-2", 
+            "out_name": "swtoafluxaerocs", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "k_c": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: k_c", 
+            "type": "integer", 
+            "dimensions": ""
+        }, 
+        "sigma": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: sigma(k)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "a_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: a(k+1/2)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }
+    }
+}
diff --git a/TestTables/CMIP6_Amon.json b/TestTables/CMIP6_Amon.json
new file mode 100644
index 0000000..ae8ba1b
--- /dev/null
+++ b/TestTables/CMIP6_Amon.json
@@ -0,0 +1,3417 @@
+{
+    "Header": {
+        "product": "output", 
+        "approx_interval": "30.00000", 
+        "realm": "atmos atmosChem", 
+        "cmor_version": "3.1", 
+        "Conventions": "CF-1.6 CMIP-6.0", 
+        "frequency": "mon", 
+        "table_id": "Table Amon", 
+        "data_specs_version": "01.beta.29", 
+        "mip_era": "CMIP6", 
+        "generic_levels": "alevel alevhalf", 
+        "missing_value": "1e20", 
+        "table_date": "14 June 2016"
+    }, 
+    "axis_entry": {
+        "typebare": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "bare_ground", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "tau": {
+            "requested": [
+                "0.15", 
+                "0.8", 
+                "2.45", 
+                "6.5", 
+                "16.2", 
+                "41.5", 
+                "100."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "0.0", 
+                "0.3", 
+                "0.3", 
+                "1.3", 
+                "1.3", 
+                "3.6", 
+                "3.6", 
+                "9.4", 
+                "9.4", 
+                "23.0", 
+                "23.0", 
+                "60.0", 
+                "60.0", 
+                "100000."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "cloud optical thickness", 
+            "standard_name": "atmosphere_optical_thickness_due_to_cloud", 
+            "value": "", 
+            "out_name": "tau", 
+            "type": "double", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "olayer100m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "0. 100.", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "50.0", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "100.0", 
+            "axis": "Z"
+        }, 
+        "spectband": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "Spectral Band", 
+            "standard_name": "wave_frequency", 
+            "value": "", 
+            "out_name": "spectband", 
+            "type": "double", 
+            "units": "s-1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "ocean_sigma_z": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "sigma: sigma eta: eta depth: depth depth_c: depth_c nsigma: nsigma zlev: zlev", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "sigma: sigma_bnds eta: eta depth: depth depth_c: depth_c nsigma: nsigma zlev: zlev_bnds", 
+            "bounds_values": "", 
+            "long_name": "ocean sigma over z coordinate", 
+            "standard_name": "ocean_sigma_z", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "for k <= nsigma: z(n,k,j,i) = eta(n,j,i) + sigma(k)*(min(depth_c,depth(j,i))+eta(n,j,i)) ; for k > nsigma: z(n,k,j,i) = zlev(k)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev19": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000.", 
+                "500.", 
+                "100."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "p220": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "44000. 0.0", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "22000.0", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev17": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev10": {
+            "requested": [
+                "100000.", 
+                "85000.", 
+                "70000.", 
+                "50000.", 
+                "25000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "site": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "site index", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "site", 
+            "type": "integer", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "smooth_level": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "a: a b1: b1 b2: b2 ztop: ztop zsurf1: zsurf1 zsurf2: zsurf2", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-200.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "a: a_bnds b1: b1_bnds b2: b2_bnds ztop: ztop zsurf1: zsurf1 zsurf2: zsurf2", 
+            "bounds_values": "", 
+            "long_name": "atmosphere smooth level vertical (SLEVE) coordinate", 
+            "standard_name": "atmosphere_sleve_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "m", 
+            "formula": "z = a*ztop + b1*zsurf1 + b2*zsurf2", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "800000.0", 
+            "axis": "Z"
+        }, 
+        "p840": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "100000. 68000.", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "84000.0", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "ocean_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "sigma: lev eta: eta depth: depth", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "sigma: lev_bnds eta: eta depth: depth", 
+            "bounds_values": "", 
+            "long_name": "ocean sigma coordinate", 
+            "standard_name": "ocean_sigma_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "z(n,k,j,i) = eta(n,j,i) + sigma(k)*(depth(j,i)+eta(n,j,i))", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "0.0", 
+            "axis": "Z"
+        }, 
+        "depth0m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "0.0", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "100.0", 
+            "axis": "Z"
+        }, 
+        "ocean_s": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "s: lev eta: eta depth: depth a: a_coeff b: b_coeff depth_c: depth_c", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "s: lev_bnds eta: eta depth: depth a: a b: b depth_c: depth_c", 
+            "bounds_values": "", 
+            "long_name": "ocean s-coordinate", 
+            "standard_name": "ocean_s_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "z(n,k,j,i) = eta(n,j,i)*(1+s(k)) + depth_c*s(k) + (depth(j,i)-depth_c)*C(k) n where n C(k)=(1-b)*sinh(a*s(k))/sinh(a) +n           b*(tanh(a*(s(k)+0.5))/(2*tanh(0.5*a)) - 0.5)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "0.0", 
+            "axis": "Z"
+        }, 
+        "plev4s": {
+            "requested": [
+                "85000.", 
+                "50000.", 
+                "20000.", 
+                "5000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "typec4pft": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "c4_plant_functional_types", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "plev3h": {
+            "requested": [
+                "10000.", 
+                "1000.", 
+                "100."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "height2m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "up", 
+            "must_have_bounds": "no", 
+            "valid_min": "1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "height", 
+            "standard_name": "height", 
+            "value": "2.0", 
+            "out_name": "height", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "10.0", 
+            "axis": "Z"
+        }, 
+        "time1": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "time", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "plev7h": {
+            "requested": [
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "25000.", 
+                "5000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "sza5": {
+            "requested": [
+                "0.", 
+                "20.", 
+                "40.", 
+                "60.", 
+                "80."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "solar zenith angle", 
+            "standard_name": "solar_zenith_angle", 
+            "value": "", 
+            "out_name": "sza", 
+            "type": "double", 
+            "units": "degree", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "depth_coord": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "ocean depth coordinate", 
+            "standard_name": "depth", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "12000.0", 
+            "axis": "Z"
+        }, 
+        "sdepth1": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "0.0 0.1", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "0.05", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "0.2", 
+            "axis": "Z"
+        }, 
+        "alternate_hybrid_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "ap: ap b: b ps: ps", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "ap: ap_bnds b: b_bnds ps: ps", 
+            "bounds_values": "", 
+            "long_name": "hybrid sigma pressure coordinate", 
+            "standard_name": "atmosphere_hybrid_sigma_pressure_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "1", 
+            "formula": "p = ap + b*ps", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "1.0", 
+            "axis": "Z"
+        }, 
+        "time2": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "time", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "yes", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "time3": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "Diurnal cycle: monthly mean of the diurnal cycle (1 hour steps).", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "oline": {
+            "requested": [
+                "barents_opening", 
+                "bering_strait", 
+                "canadian_archipelago", 
+                "denmark_strait", 
+                "drake_passage", 
+                "english_channel", 
+                "pacific_equatorial_undercurrent", 
+                "faroe_scotland_channel", 
+                "florida_bahamas_strait", 
+                "fram_strait", 
+                "iceland_faroe_channel", 
+                "indonesian_thoughflow", 
+                "mozambique_channel", 
+                "taiwan_luzon_straits", 
+                "windward_passage"
+            ], 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "ocean passage", 
+            "standard_name": "region", 
+            "value": "", 
+            "out_name": "line", 
+            "type": "character", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "plev14": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "25000.", 
+                "15000.", 
+                "10000.", 
+                "5000.", 
+                "2000.", 
+                "1000.", 
+                "500.", 
+                "100."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev8": {
+            "requested": [
+                "100000.", 
+                "85000.", 
+                "70000.", 
+                "50000.", 
+                "25000.", 
+                "10000.", 
+                "5000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "location": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "location index", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "loc", 
+            "type": "integer", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "latitude": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-90.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "latitude", 
+            "standard_name": "latitude", 
+            "value": "", 
+            "out_name": "lat", 
+            "type": "double", 
+            "units": "degrees_north", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "90.0", 
+            "axis": "Y"
+        }, 
+        "plev3": {
+            "requested": [
+                "85000.", 
+                "50000.", 
+                "25000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "basin": {
+            "requested": [
+                "atlantic_arctic_ocean", 
+                "indian_pacific_ocean", 
+                "global_ocean"
+            ], 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "ocean basin", 
+            "standard_name": "region", 
+            "value": "", 
+            "out_name": "basin", 
+            "type": "character", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "p700": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "700 hPa", 
+            "standard_name": "air_pressure", 
+            "value": "70000.", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev7": {
+            "requested": [
+                "90000.", 
+                "74000.", 
+                "62000.", 
+                "50000.", 
+                "37500.", 
+                "24500.", 
+                "9000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "100000.", 
+                "80000.", 
+                "80000.", 
+                "68000.", 
+                "68000.", 
+                "56000.", 
+                "56000.", 
+                "44000.", 
+                "44000.", 
+                "31000.", 
+                "31000.", 
+                "18000.", 
+                "18000.", 
+                " 0."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev4": {
+            "requested": [
+                "92500.", 
+                "85000.", 
+                "50000.", 
+                "25000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev23": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000.", 
+                "700.", 
+                "500.", 
+                "300.", 
+                "200.", 
+                "100.", 
+                "40."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev39": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "17000.", 
+                "15000.", 
+                "13000.", 
+                "11500.", 
+                "10000.", 
+                "9000.", 
+                "8000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1500.", 
+                "1000.", 
+                "700.", 
+                "500.", 
+                "300.", 
+                "200.", 
+                "150.", 
+                "100.", 
+                "70.", 
+                "50.", 
+                "40.", 
+                "30.", 
+                "20.", 
+                "15.", 
+                "10.", 
+                "7.", 
+                "5.", 
+                "3."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "typepever": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "primary_evergreen_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "typesdec": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "secondary_decidous_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "plev27": {
+            "requested": [
+                "100000.", 
+                "97500.", 
+                "95000.", 
+                "92500.", 
+                "90000.", 
+                "87500.", 
+                "85000.", 
+                "82500.", 
+                "80000.", 
+                "77500.", 
+                "75000.", 
+                "70000.", 
+                "65000.", 
+                "60000.", 
+                "55000.", 
+                "50000.", 
+                "45000.", 
+                "40000.", 
+                "35000.", 
+                "30000.", 
+                "25000.", 
+                "22500.", 
+                "20000.", 
+                "17500.", 
+                "15000.", 
+                "12500.", 
+                "10000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "alt40": {
+            "requested": [
+                "240.", 
+                "720.", 
+                "1200.", 
+                "1680.", 
+                "2160.", 
+                "2640.", 
+                "3120.", 
+                "3600.", 
+                "4080.", 
+                "4560.", 
+                "5040.", 
+                "5520.", 
+                "6000.", 
+                "6480.", 
+                "6960.", 
+                "7440.", 
+                "7920.", 
+                "8400.", 
+                "8880.", 
+                "9360.", 
+                "9840.", 
+                "10320.", 
+                "10800.", 
+                "11280.", 
+                "11760.", 
+                "12240.", 
+                "12720.", 
+                "13200.", 
+                "13680.", 
+                "14160.", 
+                "14640.", 
+                "15120.", 
+                "15600.", 
+                "16080.", 
+                "16560.", 
+                "17040.", 
+                "17520.", 
+                "18000.", 
+                "18480.", 
+                "18960."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "0.", 
+                "480.", 
+                "480.", 
+                "960.", 
+                "960.", 
+                "1440.", 
+                "1440.", 
+                "1920.", 
+                "1920.", 
+                "2400.", 
+                "2400.", 
+                "2880.", 
+                "2880.", 
+                "3360.", 
+                "3360.", 
+                "3840.", 
+                "3840.", 
+                "4320.", 
+                "4320.", 
+                "4800.", 
+                "4800.", 
+                "5280.", 
+                "5280.", 
+                "5760.", 
+                "5760.", 
+                "6240.", 
+                "6240.", 
+                "6720.", 
+                "6720.", 
+                "7200.", 
+                "7200.", 
+                "7680.", 
+                "7680.", 
+                "8160.", 
+                "8160.", 
+                "8640.", 
+                "8640.", 
+                "9120.", 
+                "9120.", 
+                "9600.", 
+                "9600.", 
+                "10080.", 
+                "10080.", 
+                "10560.", 
+                "10560.", 
+                "11040.", 
+                "11040.", 
+                "11520.", 
+                "11520.", 
+                "12000.", 
+                "12000.", 
+                "12480.", 
+                "12480.", 
+                "12960.", 
+                "12960.", 
+                "13440.", 
+                "13440.", 
+                "13920.", 
+                "13920.", 
+                "14400.", 
+                "14400.", 
+                "14880.", 
+                "14880.", 
+                "15360.", 
+                "15360.", 
+                "15840.", 
+                "15840.", 
+                "16320.", 
+                "16320.", 
+                "16800.", 
+                "16800.", 
+                "17280.", 
+                "17280.", 
+                "17760.", 
+                "17760.", 
+                "18240.", 
+                "18240.", 
+                "18720.", 
+                "18720.", 
+                "19200."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "altitude", 
+            "standard_name": "altitude", 
+            "value": "", 
+            "out_name": "alt40", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "time": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "time", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "plev7c": {
+            "requested": [
+                "90000.", 
+                "74000.", 
+                "62000.", 
+                "50000.", 
+                "37500.", 
+                "24500.", 
+                "9000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "height10m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "up", 
+            "must_have_bounds": "no", 
+            "valid_min": "1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "height", 
+            "standard_name": "height", 
+            "value": "10.0", 
+            "out_name": "height", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "30.0", 
+            "axis": "Z"
+        }, 
+        "dbze": {
+            "requested": [
+                "-47.5", 
+                "-42.5", 
+                "-37.5", 
+                "-32.5", 
+                "-27.5", 
+                "-22.5", 
+                "-17.5", 
+                "-12.5", 
+                "-7.5", 
+                "-2.5", 
+                "2.5", 
+                "7.5", 
+                "12.5", 
+                "17.5", 
+                "22.5"
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "-50", 
+                "-45", 
+                "-45", 
+                "-40", 
+                "-40", 
+                "-35", 
+                "-35", 
+                "-30", 
+                "-30", 
+                "-25", 
+                "-25", 
+                "-20", 
+                "-20", 
+                "-15", 
+                "-15", 
+                "-10", 
+                "-10", 
+                "-5", 
+                "-5", 
+                "0", 
+                "0", 
+                "5", 
+                "5", 
+                "10", 
+                "10", 
+                "15", 
+                "15", 
+                "20", 
+                "20", 
+                "25."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "CloudSat simulator equivalent radar reflectivity factor", 
+            "standard_name": "equivalent_reflectivity_factor", 
+            "value": "", 
+            "out_name": "dbze", 
+            "type": "double", 
+            "units": "dBZ", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "typesever": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "secondary_evergreen_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "rho": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "density++++?", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "rho", 
+            "type": "double", 
+            "units": "kg m-3", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "depth100m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "80.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "100.0", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "120.0", 
+            "axis": "Z"
+        }, 
+        "effectRadLi": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "Effective Radius of Liquid Aerosols", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "effectRadLi", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "sdepth": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "200.0", 
+            "axis": "Z"
+        }, 
+        "vegtype": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "plant functional type", 
+            "standard_name": "area_type", 
+            "value": "", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "typec3pft": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "c3_plant_functional_types", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "natural_log_pressure": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "p0: p0 lev: lev", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "p0: p0 lev: lev_bnds", 
+            "bounds_values": "", 
+            "long_name": "atmosphere natural log pressure coordinate", 
+            "standard_name": "atmosphere_ln_pressure_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "p = p0 * exp(-lev)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "20.0", 
+            "axis": "Z"
+        }, 
+        "scatratio": {
+            "requested": [
+                "0.005", 
+                "0.605", 
+                "2.1", 
+                "4.", 
+                "6.", 
+                "8.5", 
+                "12.5", 
+                "17.5", 
+                "22.5", 
+                "27.5", 
+                "35.", 
+                "45.", 
+                "55.", 
+                "70.", 
+                "50040."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "0.", 
+                "0.01", 
+                "0.01", 
+                "1.2", 
+                "1.2", 
+                "3.", 
+                "3.", 
+                "5.", 
+                "5.", 
+                "7.", 
+                "7.", 
+                "10.", 
+                "10.", 
+                "15.", 
+                "15.", 
+                "20.", 
+                "20.", 
+                "25.", 
+                "25.", 
+                "30.", 
+                "30.", 
+                "40.", 
+                "40.", 
+                "50.", 
+                "50.", 
+                "60.", 
+                "60.", 
+                "80.", 
+                "80.", 
+                "100000."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "lidar backscattering ratio", 
+            "standard_name": "backscattering_ratio", 
+            "value": "", 
+            "out_name": "scatratio", 
+            "type": "double", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "standard_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "ptop: ptop sigma: lev ps: ps", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "ptop: ptop sigma: lev_bnds ps: ps", 
+            "bounds_values": "", 
+            "long_name": "sigma coordinate", 
+            "standard_name": "atmosphere_sigma_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "p = ptop + sigma*(ps - ptop)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "1.0", 
+            "axis": "Z"
+        }, 
+        "typepdec": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "primary_deciduous_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "hybrid_height": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "a: lev b: b orog: orog", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "a: lev_bnds b: b_bnds orog: orog", 
+            "bounds_values": "", 
+            "long_name": "hybrid height coordinate", 
+            "standard_name": "atmosphere_hybrid_height_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "m", 
+            "formula": "z = a + b*orog", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "longitude": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "longitude", 
+            "standard_name": "longitude", 
+            "value": "", 
+            "out_name": "lon", 
+            "type": "double", 
+            "units": "degrees_east", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "360.0", 
+            "axis": "X"
+        }, 
+        "effectRadIc": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "Effective Radius of Ice Aerosols", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "effectRadIc", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "p1000": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "1000 hPa", 
+            "standard_name": "air_pressure", 
+            "value": "100000.", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "p500": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "500 hPa", 
+            "standard_name": "air_pressure", 
+            "value": "50000.", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "ocean_double_sigma": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "sigma: sigma depth: depth z1: z1 z2: z2 a: a_coeff href: href k_c: k_c", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "sigma: sigma_bnds depth: depth z1: z1 z2: z2 a: a href: href k_c: k_c", 
+            "bounds_values": "", 
+            "long_name": "ocean double sigma coordinate", 
+            "standard_name": "ocean_double_sigma", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "for k <= k_c:n z(k,j,i)= sigma(k)*f(j,i) n for k > k_c:n z(k,j,i)= f(j,i) + (sigma(k)-1)*(depth(j,i)-f(j,i)) n f(j,i)= 0.5*(z1+ z2) + 0.5*(z1-z2)* tanh(2*a/(z1-z2)*(depth(j,i)-href))", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plevs": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "standard_hybrid_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "p0: p0 a: a b: b ps: ps", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "p0: p0 a: a_bnds b: b_bnds ps: ps", 
+            "bounds_values": "", 
+            "long_name": "hybrid sigma pressure coordinate", 
+            "standard_name": "atmosphere_hybrid_sigma_pressure_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "1", 
+            "formula": "p = a*p0 + b*ps", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "1.0", 
+            "axis": "Z"
+        }, 
+        "p560": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "68000. 44000.", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "56000.0", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }
+    }, 
+    "variable_entry": {
+        "sci": {
+            "comment": "Fraction of time that shallow convection occurs in the grid cell.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Fraction of Time Shallow Convection Occurs", 
+            "standard_name": "shallow_convection_time_fraction", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "1.0", 
+            "out_name": "sci", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "depth_c": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: depth_c", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "tro3": {
+            "comment": "Mole fraction of ozone (O3)", 
+            "dimensions": "longitude latitude plev17 time", 
+            "positive": "", 
+            "valid_min": "-419.2", 
+            "long_name": "Mole Fraction of O3", 
+            "standard_name": "mole_fraction_of_ozone_in_air", 
+            "modeling_realm": "atmos atmosChem", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "-149.1", 
+            "units": "1e-09", 
+            "out_name": "tro3", 
+            "type": "real", 
+            "valid_max": "1.162e+04", 
+            "ok_max_mean_abs": "7558"
+        }, 
+        "rsutcs": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "valid_min": "0", 
+            "long_name": "TOA Outgoing Clear-Sky Shortwave Radiation", 
+            "standard_name": "toa_outgoing_shortwave_flux_assuming_clear_sky", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "54.7", 
+            "units": "W m-2", 
+            "out_name": "rsutcs", 
+            "type": "real", 
+            "valid_max": "444", 
+            "ok_max_mean_abs": "73.36"
+        }, 
+        "rldscs": {
+            "comment": "Surface downwelling clear-sky longwave radiation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "down", 
+            "valid_min": "33.55", 
+            "long_name": "Surface Downwelling Clear-Sky Longwave Radiation", 
+            "standard_name": "surface_downwelling_longwave_flux_in_air_assuming_clear_sky", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "238.6", 
+            "units": "W m-2", 
+            "out_name": "rldscs", 
+            "type": "real", 
+            "valid_max": "543.6", 
+            "ok_max_mean_abs": "293.8"
+        }, 
+        "n2oglobal": {
+            "comment": "Global mean Nitrous Oxide (N2O)", 
+            "dimensions": "time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Global Mean Mole Fraction of N2O", 
+            "standard_name": "mole_fraction_of_nitrous_oxide_in_air", 
+            "modeling_realm": "atmos atmosChem", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "1e-09", 
+            "out_name": "n2oglobal", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "cli": {
+            "comment": "Includes both large-scale and convective cloud. This is calculated as the mass of cloud ice in the grid cell divided by the mass of air (including the water in all phases) in the grid cell. It includes precipitating hydrometeors ONLY if the precipitating hydrometeors affect the calculation of radiative transfer in model.", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Mass Fraction of Cloud Ice", 
+            "standard_name": "mass_fraction_of_cloud_ice_in_air", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg kg-1", 
+            "out_name": "cli", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "ts": {
+            "comment": "Temperature of the lower boundary of the atmosphere", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "176.8", 
+            "long_name": "Surface Temperature", 
+            "standard_name": "surface_temperature", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "262.8", 
+            "units": "K", 
+            "out_name": "ts", 
+            "type": "real", 
+            "valid_max": "339.6", 
+            "ok_max_mean_abs": "293.3"
+        }, 
+        "clt": {
+            "comment": "cloud area fraction", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "-0.0001822", 
+            "long_name": "Total Cloud Fraction", 
+            "standard_name": "cloud_area_fraction_in_atmosphere_layer", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "39.37", 
+            "units": "1.0", 
+            "out_name": "clt", 
+            "type": "real", 
+            "valid_max": "105", 
+            "ok_max_mean_abs": "84.98"
+        }, 
+        "clw": {
+            "comment": "Includes both large-scale and convective cloud. Calculate as the mass of cloud liquid water in the grid cell divided by the mass of air (including the water in all phases) in the grid cells. Precipitating hydrometeors are included ONLY if the precipitating hydrometeors affect the calculation of radiative transfer in model.", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Mass Fraction of Cloud Liquid Water", 
+            "standard_name": "mass_fraction_of_cloud_liquid_water_in_air", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg kg-1", 
+            "out_name": "clw", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "ta": {
+            "comment": "", 
+            "dimensions": "longitude latitude plev17 time", 
+            "positive": "", 
+            "valid_min": "157.1", 
+            "long_name": "Air Temperature", 
+            "standard_name": "air_temperature", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "194.3", 
+            "units": "K", 
+            "out_name": "ta", 
+            "type": "real", 
+            "valid_max": "336.3", 
+            "ok_max_mean_abs": "299.8"
+        }, 
+        "psl": {
+            "comment": "Sea Level Pressure", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "9.122e+04", 
+            "long_name": "Sea Level Pressure", 
+            "standard_name": "air_pressure_at_sea_level", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "9.57e+04", 
+            "units": "Pa", 
+            "out_name": "psl", 
+            "type": "real", 
+            "valid_max": "1.137e+05", 
+            "ok_max_mean_abs": "1.063e+05"
+        }, 
+        "nsigma": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: nsigma", 
+            "type": "integer", 
+            "dimensions": ""
+        }, 
+        "co2Clim": {
+            "comment": "Mole fraction of Carbon Dioxide in the Atmosphere", 
+            "dimensions": "longitude latitude plev17 time2", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Mole Fraction of CO2", 
+            "standard_name": "mole_fraction_of_carbon_dioxide_in_air", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean within years time: mean over years", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "1e-06", 
+            "out_name": "co2Clim", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "sfcWind": {
+            "comment": "near-surface (usually, 10 meters) wind speed.", 
+            "dimensions": "longitude latitude time height10m", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Near-Surface Wind Speed", 
+            "standard_name": "wind_speed", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "m s-1", 
+            "out_name": "sfcWind", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "ch4Clim": {
+            "comment": "Climatology of methane mole fraction", 
+            "dimensions": "longitude latitude plev17 time2", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Mole Fraction of CH4", 
+            "standard_name": "mole_fraction_of_methane_in_air", 
+            "modeling_realm": "atmos atmosChem", 
+            "cell_measures": "time: mean within years time: mean over years", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "1e-09", 
+            "out_name": "ch4Clim", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "clwvi": {
+            "comment": "Mass of condensed (liquid + ice) water in the column divided by the area of the column (not just the area of the cloudy portion of the column). Includes precipitating hydrometeors ONLY if the precipitating hydrometeors affect the calculation of radiative transfer in model.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "-3.827e-06", 
+            "long_name": "Condensed Water Path", 
+            "standard_name": "atmosphere_cloud_condensed_water_content", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "-0.03549", 
+            "units": "kg m-2", 
+            "out_name": "clwvi", 
+            "type": "real", 
+            "valid_max": "3.364", 
+            "ok_max_mean_abs": "0.2846"
+        }, 
+        "rsdscs": {
+            "comment": "surface solar irradiance clear sky for UV calculations", 
+            "dimensions": "longitude latitude time", 
+            "positive": "down", 
+            "valid_min": "-1.748e+30", 
+            "long_name": "Surface Downwelling Clear-Sky Shortwave Radiation", 
+            "standard_name": "surface_downwelling_shortwave_flux_in_air_assuming_clear_sky", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "206.9", 
+            "units": "W m-2", 
+            "out_name": "rsdscs", 
+            "type": "real", 
+            "valid_max": "522.4", 
+            "ok_max_mean_abs": "239"
+        }, 
+        "huss": {
+            "comment": "Near-surface (usually, 2 meter) specific humidity.", 
+            "dimensions": "longitude latitude time height2m", 
+            "positive": "", 
+            "valid_min": "-7.21e-06", 
+            "long_name": "Near-Surface Specific Humidity", 
+            "standard_name": "specific_humidity", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0.006391", 
+            "units": "1.0", 
+            "out_name": "huss", 
+            "type": "real", 
+            "valid_max": "0.02992", 
+            "ok_max_mean_abs": "0.008749"
+        }, 
+        "rtmt": {
+            "comment": "Net Downward Radiative Flux at Top of Model : I.e., at the top of that portion of the atmosphere where dynamics are explicitly treated by the model. This is reported only if it differs from the net downward radiative flux at the top of the atmosphere.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "down", 
+            "valid_min": "-232.8", 
+            "long_name": "Net Downward Flux at Top of Model", 
+            "standard_name": "net_downward_radiative_flux_at_top_of_atmosphere_model", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "76.91", 
+            "units": "W m-2", 
+            "out_name": "rtmt", 
+            "type": "real", 
+            "valid_max": "218.7", 
+            "ok_max_mean_abs": "89.25"
+        }, 
+        "evspsbl": {
+            "comment": "Evaporation at surface: flux of water into the atmosphere due to conversion of both liquid and solid phases to vapor (from underlying surface and vegetation)", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Evaporation", 
+            "standard_name": "water_evaporation_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "evspsbl", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "orog": {
+            "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", 
+            "positive": "", 
+            "valid_min": "-700", 
+            "long_name": "Surface Altitude", 
+            "standard_name": "surface_altitude", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "m", 
+            "out_name": "orog", 
+            "type": "real", 
+            "valid_max": "1.00E+04", 
+            "ok_max_mean_abs": ""
+        }, 
+        "co2": {
+            "comment": "", 
+            "dimensions": "longitude latitude plev17 time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Mole Fraction of CO2", 
+            "standard_name": "mole_fraction_of_carbon_dioxide_in_air", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "mole mole-1", 
+            "out_name": "co2", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "cfc11global": {
+            "comment": "", 
+            "dimensions": "time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Global Mean Mole Fraction of CFC11", 
+            "standard_name": "mole_fraction_of_cfc11_in_air", 
+            "modeling_realm": "atmos atmosChem", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "1e-12", 
+            "out_name": "cfc11global", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "rlds": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "down", 
+            "valid_min": "30.71", 
+            "long_name": "Surface Downwelling Longwave Radiation", 
+            "standard_name": "surface_downwelling_longwave_flux_in_air", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "271.2", 
+            "units": "W m-2", 
+            "out_name": "rlds", 
+            "type": "real", 
+            "valid_max": "520.5", 
+            "ok_max_mean_abs": "323.6"
+        }, 
+        "sigma_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: sigma(k+1/2)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "ch4globalClim": {
+            "comment": "Climatology of Global Mean Mole Fraction of CH4", 
+            "dimensions": "time2", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Global Mean Mole Fraction of CH4", 
+            "standard_name": "mole_fraction_of_methane_in_air", 
+            "modeling_realm": "atmos atmosChem", 
+            "cell_measures": "time: mean within years time: mean over years", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "1e-09", 
+            "out_name": "ch4globalClim", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "tauv": {
+            "comment": "Downward northward wind stress at the surface", 
+            "dimensions": "longitude latitude time", 
+            "positive": "down", 
+            "valid_min": "-2.472", 
+            "long_name": "Surface Downward Northward Wind Stress", 
+            "standard_name": "surface_downward_northward_stress", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "0.01447", 
+            "units": "Pa", 
+            "out_name": "tauv", 
+            "type": "real", 
+            "valid_max": "2.527", 
+            "ok_max_mean_abs": "0.08134"
+        }, 
+        "ptop": {
+            "units": "Pa", 
+            "long_name": "pressure at top of model", 
+            "type": "", 
+            "dimensions": ""
+        }, 
+        "rlut": {
+            "comment": "at the top of the atmosphere (to be compared with satellite measurements)", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "valid_min": "67.48", 
+            "long_name": "TOA Outgoing Longwave Radiation", 
+            "standard_name": "toa_outgoing_longwave_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "207.4", 
+            "units": "W m-2", 
+            "out_name": "rlut", 
+            "type": "real", 
+            "valid_max": "383.2", 
+            "ok_max_mean_abs": "234.4"
+        }, 
+        "rsdt": {
+            "comment": "Shortwave radiation incident at the top of the atmosphere", 
+            "dimensions": "longitude latitude time", 
+            "positive": "down", 
+            "valid_min": "0", 
+            "long_name": "TOA Incident Shortwave Radiation", 
+            "standard_name": "toa_incoming_shortwave_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "282.6", 
+            "units": "W m-2", 
+            "out_name": "rsdt", 
+            "type": "real", 
+            "valid_max": "580.4", 
+            "ok_max_mean_abs": "315.8"
+        }, 
+        "rsds": {
+            "comment": "surface solar irradiance for UV calculations", 
+            "dimensions": "longitude latitude time", 
+            "positive": "down", 
+            "valid_min": "-0.002946", 
+            "long_name": "Surface Downwelling Shortwave Radiation", 
+            "standard_name": "surface_downwelling_shortwave_flux_in_air", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "143.9", 
+            "units": "W m-2", 
+            "out_name": "rsds", 
+            "type": "real", 
+            "valid_max": "524.4", 
+            "ok_max_mean_abs": "181.6"
+        }, 
+        "ztop": {
+            "units": "m", 
+            "long_name": "height of top of model", 
+            "type": "", 
+            "dimensions": ""
+        }, 
+        "z1": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: z1", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "sbl": {
+            "comment": "The snow and ice sublimation flux is the loss of snow and ice mass from the surface resulting from their conversion to water vapor that enters the atmosphere.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "-0.004959", 
+            "long_name": "Surface Snow and Ice Sublimation Flux", 
+            "standard_name": "surface_snow_and_ice_sublimation_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "-5.521e-05", 
+            "units": "kg m-2 s-1", 
+            "out_name": "sbl", 
+            "type": "real", 
+            "valid_max": "0.0009936", 
+            "ok_max_mean_abs": "9.61e-05"
+        }, 
+        "cfc113global": {
+            "comment": "", 
+            "dimensions": "time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Global Mean Mole Fraction of CFC113", 
+            "standard_name": "mole_fraction_of_cfc113_in_air", 
+            "modeling_realm": "atmos atmosChem", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "1e-12", 
+            "out_name": "cfc113global", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "eta": {
+            "units": "m", 
+            "long_name": "Sea Surface Height formula term: thetao", 
+            "type": "real", 
+            "dimensions": "longitude latitude time"
+        }, 
+        "rsus": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "valid_min": "-0.006589", 
+            "long_name": "Surface Upwelling Shortwave Radiation", 
+            "standard_name": "surface_upwelling_shortwave_flux_in_air", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "26.22", 
+            "units": "W m-2", 
+            "out_name": "rsus", 
+            "type": "real", 
+            "valid_max": "422.2", 
+            "ok_max_mean_abs": "43.77"
+        }, 
+        "cfc12global": {
+            "comment": "", 
+            "dimensions": "time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Global Mean Mole Fraction of CFC12", 
+            "standard_name": "mole_fraction_of_cfc12_in_air", 
+            "modeling_realm": "atmos atmosChem", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "1e-12", 
+            "out_name": "cfc12global", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "rsut": {
+            "comment": "at the top of the atmosphere", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "valid_min": "-0.02689", 
+            "long_name": "TOA Outgoing Shortwave Radiation", 
+            "standard_name": "toa_outgoing_shortwave_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "96.72", 
+            "units": "W m-2", 
+            "out_name": "rsut", 
+            "type": "real", 
+            "valid_max": "421.9", 
+            "ok_max_mean_abs": "114.1"
+        }, 
+        "ci": {
+            "comment": "Fraction of time that convection occurs in the grid cell.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Fraction of Time Convection Occurs", 
+            "standard_name": "convection_time_fraction", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "1.0", 
+            "out_name": "ci", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "n2oClim": {
+            "comment": "Climatology of Nitrous Oxide (N2O)", 
+            "dimensions": "longitude latitude plev17 time2", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Mole Fraction of N2O", 
+            "standard_name": "mole_fraction_of_nitrous_oxide_in_air", 
+            "modeling_realm": "atmos atmosChem", 
+            "cell_measures": "time: mean within years time: mean over years", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "1e-09", 
+            "out_name": "n2oClim", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "co2massClim": {
+            "comment": "Climatology of total atmospheric mass of Carbon Dioxide", 
+            "dimensions": "time2", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Total Atmospheric Mass of CO2", 
+            "standard_name": "atmosphere_mass_of_carbon_dioxide", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean within years time: mean over years", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "kg", 
+            "out_name": "co2massClim", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "cl": {
+            "comment": "Percentage cloud cover, including both large-scale and convective cloud.", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Cloud Area Fraction", 
+            "standard_name": "cloud_area_fraction_in_atmosphere_layer", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "-0.04479", 
+            "units": "%", 
+            "out_name": "cl", 
+            "type": "real", 
+            "valid_max": "105", 
+            "ok_max_mean_abs": "26.07"
+        }, 
+        "n2oglobalClim": {
+            "comment": "Climatology of global mean Nitrous Oxide (N2O)", 
+            "dimensions": "time2", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Global Mean Mole Fraction of N2O", 
+            "standard_name": "mole_fraction_of_nitrous_oxide_in_air", 
+            "modeling_realm": "atmos atmosChem", 
+            "cell_measures": "time: mean within years time: mean over years", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "1e-09", 
+            "out_name": "n2oglobalClim", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "rlutcs": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "valid_min": "70.59", 
+            "long_name": "TOA Outgoing Clear-Sky Longwave Radiation", 
+            "standard_name": "toa_outgoing_longwave_flux_assuming_clear_sky", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "228.9", 
+            "units": "W m-2", 
+            "out_name": "rlutcs", 
+            "type": "real", 
+            "valid_max": "377.5", 
+            "ok_max_mean_abs": "260.4"
+        }, 
+        "href": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: href", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "hfls": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "valid_min": "-76.77", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "50.39", 
+            "units": "W m-2", 
+            "out_name": "hfls", 
+            "type": "real", 
+            "valid_max": "790.7", 
+            "ok_max_mean_abs": "73.2"
+        }, 
+        "co2mass": {
+            "comment": "Total atmospheric mass of Carbon Dioxide", 
+            "dimensions": "time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Total Atmospheric Mass of CO2", 
+            "standard_name": "atmosphere_mass_of_carbon_dioxide", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "kg", 
+            "out_name": "co2mass", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "pr": {
+            "comment": "includes both liquid and solid phases", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Precipitation", 
+            "standard_name": "precipitation_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "2.156e-05", 
+            "units": "kg m-2 s-1", 
+            "out_name": "pr", 
+            "type": "real", 
+            "valid_max": "0.001254", 
+            "ok_max_mean_abs": "3.215e-05"
+        }, 
+        "ps": {
+            "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", 
+            "positive": "", 
+            "valid_min": "4.791e+04", 
+            "long_name": "Surface Air Pressure", 
+            "standard_name": "surface_air_pressure", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "9.165e+04", 
+            "units": "Pa", 
+            "out_name": "ps", 
+            "type": "real", 
+            "valid_max": "1.119e+05", 
+            "ok_max_mean_abs": "1.019e+05"
+        }, 
+        "rlus": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "valid_min": "43.75", 
+            "long_name": "Surface Upwelling Longwave Radiation", 
+            "standard_name": "surface_upwelling_longwave_flux_in_air", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "325.6", 
+            "units": "W m-2", 
+            "out_name": "rlus", 
+            "type": "real", 
+            "valid_max": "658", 
+            "ok_max_mean_abs": "376.3"
+        }, 
+        "z2": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: z2", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "vas": {
+            "comment": "Northward component of the near surface wind", 
+            "dimensions": "longitude latitude time height10m", 
+            "positive": "", 
+            "valid_min": "-18.04", 
+            "long_name": "Northward Near-Surface Wind", 
+            "standard_name": "northward_wind", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "1.065", 
+            "units": "m s-1", 
+            "out_name": "vas", 
+            "type": "real", 
+            "valid_max": "22.84", 
+            "ok_max_mean_abs": "2.678"
+        }, 
+        "wap": {
+            "comment": "Omega (vertical velocity in pressure coordinates, positive downwards)", 
+            "dimensions": "longitude latitude plev17 time", 
+            "positive": "", 
+            "valid_min": "-1.126", 
+            "long_name": "omega (=dp/dt)", 
+            "standard_name": "lagrangian_tendency_of_air_pressure", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "-0.005083", 
+            "units": "Pa s-1", 
+            "out_name": "wap", 
+            "type": "real", 
+            "valid_max": "2.319", 
+            "ok_max_mean_abs": "0.04256"
+        }, 
+        "a": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: a(k)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "zg": {
+            "comment": "", 
+            "dimensions": "longitude latitude plev17 time", 
+            "positive": "", 
+            "valid_min": "-719.7", 
+            "long_name": "Geopotential Height", 
+            "standard_name": "geopotential_height", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "-113.4", 
+            "units": "m", 
+            "out_name": "zg", 
+            "type": "real", 
+            "valid_max": "3.437e+04", 
+            "ok_max_mean_abs": "3.299e+04"
+        }, 
+        "hurs": {
+            "comment": "The relative humidity with respect to liquid water for T> 0 C, and with respect to ice for T<0 C.", 
+            "dimensions": "longitude latitude time height2m", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Near-Surface Relative Humidity", 
+            "standard_name": "relative_humidity", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "%", 
+            "out_name": "hurs", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "pfull": {
+            "comment": "Air pressure on model levels", 
+            "dimensions": "longitude latitude alevel time2", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Pressure on Model Levels", 
+            "standard_name": "air_pressure", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean within years time: mean over years", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "Pa", 
+            "out_name": "pfull", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "ch4global": {
+            "comment": "Global Mean Mole Fraction of CH4", 
+            "dimensions": "time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Global Mean Mole Fraction of CH4", 
+            "standard_name": "mole_fraction_of_methane_in_air", 
+            "modeling_realm": "atmos atmosChem", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "1e-09", 
+            "out_name": "ch4global", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "hur": {
+            "comment": "The relative humidity with respect to liquid water for T> 0 C, and with respect to ice for T<0 C.", 
+            "dimensions": "longitude latitude plev17 time", 
+            "positive": "", 
+            "valid_min": "-2.642", 
+            "long_name": "Relative Humidity", 
+            "standard_name": "relative_humidity", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "-10.31", 
+            "units": "%", 
+            "out_name": "hur", 
+            "type": "real", 
+            "valid_max": "135.7", 
+            "ok_max_mean_abs": "97"
+        }, 
+        "hus": {
+            "comment": "", 
+            "dimensions": "longitude latitude plev17 time", 
+            "positive": "", 
+            "valid_min": "-0.000299", 
+            "long_name": "Specific Humidity", 
+            "standard_name": "specific_humidity", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "-0.0003539", 
+            "units": "1.0", 
+            "out_name": "hus", 
+            "type": "real", 
+            "valid_max": "0.02841", 
+            "ok_max_mean_abs": "0.01041"
+        }, 
+        "p0": {
+            "units": "Pa", 
+            "long_name": "vertical coordinate formula term: reference pressure", 
+            "type": "", 
+            "dimensions": ""
+        }, 
+        "b": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: b(k)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "mc": {
+            "comment": "The net mass flux should represent the difference between the updraft and downdraft components.  The flux is computed as the mass divided by the area of the grid cell.", 
+            "dimensions": "longitude latitude alevhalf time", 
+            "positive": "up", 
+            "valid_min": "", 
+            "long_name": "Convective Mass Flux", 
+            "standard_name": "atmosphere_net_upward_convective_mass_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "mc", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "fco2antt": {
+            "comment": "This is requested only for the emission-driven coupled carbon climate model runs.  Does not include natural fire sources but, includes all anthropogenic sources, including fossil fuel use, cement production, agricultural burning, and sources associated with anthropogenic land use change excluding forest regrowth.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "valid_min": "", 
+            "long_name": "Carbon Mass Flux into Atmosphere Due to All Anthropogenic Emissions of CO2", 
+            "standard_name": "tendency_of_atmosphere_mass_content_of_carbon_dioxide_expressed_as_carbon_due_to_anthropogenic_emission", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg  m-2 s-1", 
+            "out_name": "fco2antt", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "ch4": {
+            "comment": "", 
+            "dimensions": "longitude latitude plev17 time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Mole Fraction of CH4", 
+            "standard_name": "mole_fraction_of_methane_in_air", 
+            "modeling_realm": "atmos atmosChem", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "mole mole-1", 
+            "out_name": "ch4", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "tasmin": {
+            "comment": "minimum near-surface (usually, 2 meter) air temperature (add cell_method attribute 'time: min')", 
+            "dimensions": "longitude latitude time height2m", 
+            "positive": "", 
+            "valid_min": "182.8", 
+            "long_name": "Daily Minimum Near-Surface Air Temperature", 
+            "standard_name": "air_temperature", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: minimum within days time: mean over days", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "260.9", 
+            "units": "K", 
+            "out_name": "tasmin", 
+            "type": "real", 
+            "valid_max": "323", 
+            "ok_max_mean_abs": "290.6"
+        }, 
+        "tauu": {
+            "comment": "Downward eastward wind stress at the surface", 
+            "dimensions": "longitude latitude time", 
+            "positive": "down", 
+            "valid_min": "-2.729", 
+            "long_name": "Surface Downward Eastward Wind Stress", 
+            "standard_name": "surface_downward_eastward_stress", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "0.03979", 
+            "units": "Pa", 
+            "out_name": "tauu", 
+            "type": "real", 
+            "valid_max": "2.934", 
+            "ok_max_mean_abs": "0.1065"
+        }, 
+        "tasmax": {
+            "comment": "maximum near-surface (usually, 2 meter) air temperature (add cell_method attribute 'time: max')", 
+            "dimensions": "longitude latitude time height2m", 
+            "positive": "", 
+            "valid_min": "181.9", 
+            "long_name": "Daily Maximum Near-Surface Air Temperature", 
+            "standard_name": "air_temperature", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: maximum within days time: mean over days", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "264.9", 
+            "units": "K", 
+            "out_name": "tasmax", 
+            "type": "real", 
+            "valid_max": "341.9", 
+            "ok_max_mean_abs": "294"
+        }, 
+        "k_c": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: k_c", 
+            "type": "integer", 
+            "dimensions": ""
+        }, 
+        "ua": {
+            "comment": "", 
+            "dimensions": "longitude latitude plev17 time", 
+            "positive": "", 
+            "valid_min": "-68.65", 
+            "long_name": "Eastward Wind", 
+            "standard_name": "eastward_wind", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "1.101", 
+            "units": "m s-1", 
+            "out_name": "ua", 
+            "type": "real", 
+            "valid_max": "136.6", 
+            "ok_max_mean_abs": "22.42"
+        }, 
+        "a_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: a(k+1/2)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "va": {
+            "comment": "", 
+            "dimensions": "longitude latitude plev17 time", 
+            "positive": "", 
+            "valid_min": "-71.1", 
+            "long_name": "Northward Wind", 
+            "standard_name": "northward_wind", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "0.9886", 
+            "units": "m s-1", 
+            "out_name": "va", 
+            "type": "real", 
+            "valid_max": "69.93", 
+            "ok_max_mean_abs": "4.679"
+        }, 
+        "n2o": {
+            "comment": "", 
+            "dimensions": "longitude latitude plev17 time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Mole Fraction of N2O", 
+            "standard_name": "mole_fraction_of_nitrous_oxide_in_air", 
+            "modeling_realm": "atmos atmosChem", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "mole mole-1", 
+            "out_name": "n2o", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "prc": {
+            "comment": "Convective precipitation at surface; includes both liquid and solid phases.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Convective Precipitation", 
+            "standard_name": "convective_precipitation_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "-2.528e-06", 
+            "units": "kg m-2 s-1", 
+            "out_name": "prc", 
+            "type": "real", 
+            "valid_max": "0.0006323", 
+            "ok_max_mean_abs": "3.209e-05"
+        }, 
+        "tas": {
+            "comment": "near-surface (usually, 2 meter) air temperature", 
+            "dimensions": "longitude latitude time height2m", 
+            "positive": "", 
+            "valid_min": "180.6", 
+            "long_name": "Near-Surface Air Temperature", 
+            "standard_name": "air_temperature", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "262.4", 
+            "units": "K", 
+            "out_name": "tas", 
+            "type": "real", 
+            "valid_max": "335.1", 
+            "ok_max_mean_abs": "293"
+        }, 
+        "rsuscs": {
+            "comment": "Surface upwelling clear-sky shortwave radiation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "valid_min": "-0.01446", 
+            "long_name": "Surface Upwelling Clear-Sky Shortwave Radiation", 
+            "standard_name": "surface_upwelling_shortwave_flux_in_air_assuming_clear_sky", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "31.65", 
+            "units": "W m-2", 
+            "out_name": "rsuscs", 
+            "type": "real", 
+            "valid_max": "462.2", 
+            "ok_max_mean_abs": "61.59"
+        }, 
+        "uas": {
+            "comment": "Eastward component of the near-surface (usually, 10 meters)  wind", 
+            "dimensions": "longitude latitude time height10m", 
+            "positive": "", 
+            "valid_min": "-19.01", 
+            "long_name": "Eastward Near-Surface Wind", 
+            "standard_name": "eastward_wind", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "1.668", 
+            "units": "m s-1", 
+            "out_name": "uas", 
+            "type": "real", 
+            "valid_max": "18.68", 
+            "ok_max_mean_abs": "4.106"
+        }, 
+        "hfss": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "valid_min": "-264.5", 
+            "long_name": "Surface Upward Sensible Heat Flux", 
+            "standard_name": "surface_upward_sensible_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "10.7", 
+            "units": "W m-2", 
+            "out_name": "hfss", 
+            "type": "real", 
+            "valid_max": "844.8", 
+            "ok_max_mean_abs": "34.84"
+        }, 
+        "ap_bnds": {
+            "units": "Pa", 
+            "long_name": "vertical coordinate formula term: ap(k+1/2)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "ap": {
+            "units": "Pa", 
+            "long_name": "vertical coordinate formula term: ap(k)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "prw": {
+            "comment": "vertically integrated through the atmospheric column", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "-0.0006775", 
+            "long_name": "Water Vapor Path", 
+            "standard_name": "atmosphere_water_vapor_content", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "12.75", 
+            "units": "kg m-2", 
+            "out_name": "prw", 
+            "type": "real", 
+            "valid_max": "78.04", 
+            "ok_max_mean_abs": "23.09"
+        }, 
+        "prsn": {
+            "comment": "at surface; includes precipitation of all forms of water in the solid phase", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Snowfall Flux", 
+            "standard_name": "snowfall_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "1.449e-06", 
+            "units": "kg m-2 s-1", 
+            "out_name": "prsn", 
+            "type": "real", 
+            "valid_max": "0.0002987", 
+            "ok_max_mean_abs": "6.11e-06"
+        }, 
+        "zlev": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: zlev(k)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "fco2nat": {
+            "comment": "This is what the atmosphere sees (on its own grid).  This field should be equivalent to the combined natural fluxes of carbon  that account for natural exchanges between the atmosphere and land (nep) or ocean (fgco2) reservoirs.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "valid_min": "", 
+            "long_name": "Surface Carbon Mass Flux into the Atmosphere Due to Natural Sources", 
+            "standard_name": "surface_upward_mass_flux_of_carbon_dioxide_expressed_as_carbon_due_to_emission_from_natural_sources", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "fco2nat", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "b_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: b(k+1/2)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "phalf": {
+            "comment": "Air pressure on model half-levels", 
+            "dimensions": "longitude latitude alevhalf time2", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Pressure on Model Half-Levels", 
+            "standard_name": "air_pressure", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean within years time: mean over years", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "Pa", 
+            "out_name": "phalf", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "fco2fos": {
+            "comment": "This is the prescribed anthropogenic CO2 flux from fossil fuel use, including cement production, and flaring (but not from land-use changes, agricultural burning, forest regrowth, etc.)", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "valid_min": "", 
+            "long_name": "Carbon Mass Flux into Atmosphere Due to Fossil Fuel Emissions of CO2", 
+            "standard_name": "tendency_of_atmosphere_mass_content_of_carbon_dioxide_expressed_as_carbon_due_to_emission_from_fossil_fuel_combustion", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "fco2fos", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "hcfc22global": {
+            "comment": "", 
+            "dimensions": "time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Global Mean Mole Fraction of HCFC22", 
+            "standard_name": "mole_fraction_of_hcfc22_in_air", 
+            "modeling_realm": "atmos atmosChem", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "1e-12", 
+            "out_name": "hcfc22global", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "tro3Clim": {
+            "comment": "", 
+            "dimensions": "longitude latitude plev17 time2", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Mole Fraction of O3", 
+            "standard_name": "mole_fraction_of_ozone_in_air", 
+            "modeling_realm": "atmos atmosChem", 
+            "cell_measures": "time: mean within years time: mean over years", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "1e-09", 
+            "out_name": "tro3Clim", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "zlev_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: zlev(k+1/2)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "clivi": {
+            "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", 
+            "positive": "", 
+            "valid_min": "-1.872e-06", 
+            "long_name": "Ice Water Path", 
+            "standard_name": "atmosphere_mass_content_of_cloud_ice", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "-0.0348", 
+            "units": "kg m-2", 
+            "out_name": "clivi", 
+            "type": "real", 
+            "valid_max": "1.535", 
+            "ok_max_mean_abs": "0.1187"
+        }, 
+        "cct": {
+            "comment": "Where convective cloud is present in the grid cell, the instantaneous cloud top altitude should be that of the top of the highest level containing convective cloud. Missing data should be reported in the absence of convective cloud. The time mean should be calculated from these quantities averaging over occasions when convective cloud is present only, and should contain missing data for occasions when no convective cloud is present during the meaning period.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Air Pressure at Convective Cloud Top", 
+            "standard_name": "air_pressure_at_convective_cloud_top", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "Pa", 
+            "out_name": "cct", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "depth": {
+            "units": "m", 
+            "long_name": "Sea Floor Depth: formula term: thetao", 
+            "type": "real", 
+            "dimensions": "longitude latitude"
+        }, 
+        "sigma": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: sigma(k)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "ccb": {
+            "comment": "Where convective cloud is present in the grid cell, the instantaneous cloud base altitude should be that of the bottom of the lowest level containing convective cloud. Missing data should be reported in the absence of convective cloud. The time mean should be calculated from these quantities averaging over occasions when convective cloud is present only, and should contain missing data for occasions when no convective cloud is present during the meaning period. ", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Air Pressure at Convective Cloud Base", 
+            "standard_name": "air_pressure_at_convective_cloud_base", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "Pa", 
+            "out_name": "ccb", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }
+    }
+}
diff --git a/TestTables/CMIP6_AmonAdj.json b/TestTables/CMIP6_AmonAdj.json
new file mode 100644
index 0000000..e184643
--- /dev/null
+++ b/TestTables/CMIP6_AmonAdj.json
@@ -0,0 +1,2205 @@
+{
+    "Header": {
+        "product": "output", 
+        "approx_interval": "30.00000", 
+        "realm": "atmos", 
+        "cmor_version": "3.1", 
+        "Conventions": "CF-1.6 CMIP-6.0", 
+        "frequency": "mon", 
+        "table_id": "Table AmonAdj", 
+        "data_specs_version": "01.beta.29", 
+        "mip_era": "CMIP6", 
+        "generic_levels": "", 
+        "missing_value": "1e20", 
+        "table_date": "14 June 2016"
+    }, 
+    "axis_entry": {
+        "typebare": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "bare_ground", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "tau": {
+            "requested": [
+                "0.15", 
+                "0.8", 
+                "2.45", 
+                "6.5", 
+                "16.2", 
+                "41.5", 
+                "100."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "0.0", 
+                "0.3", 
+                "0.3", 
+                "1.3", 
+                "1.3", 
+                "3.6", 
+                "3.6", 
+                "9.4", 
+                "9.4", 
+                "23.0", 
+                "23.0", 
+                "60.0", 
+                "60.0", 
+                "100000."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "cloud optical thickness", 
+            "standard_name": "atmosphere_optical_thickness_due_to_cloud", 
+            "value": "", 
+            "out_name": "tau", 
+            "type": "double", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "olayer100m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "0. 100.", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "50.0", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "100.0", 
+            "axis": "Z"
+        }, 
+        "spectband": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "Spectral Band", 
+            "standard_name": "wave_frequency", 
+            "value": "", 
+            "out_name": "spectband", 
+            "type": "double", 
+            "units": "s-1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "ocean_sigma_z": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "sigma: sigma eta: eta depth: depth depth_c: depth_c nsigma: nsigma zlev: zlev", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "sigma: sigma_bnds eta: eta depth: depth depth_c: depth_c nsigma: nsigma zlev: zlev_bnds", 
+            "bounds_values": "", 
+            "long_name": "ocean sigma over z coordinate", 
+            "standard_name": "ocean_sigma_z", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "for k <= nsigma: z(n,k,j,i) = eta(n,j,i) + sigma(k)*(min(depth_c,depth(j,i))+eta(n,j,i)) ; for k > nsigma: z(n,k,j,i) = zlev(k)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev19": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000.", 
+                "500.", 
+                "100."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "p220": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "44000. 0.0", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "22000.0", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev17": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev10": {
+            "requested": [
+                "100000.", 
+                "85000.", 
+                "70000.", 
+                "50000.", 
+                "25000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "site": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "site index", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "site", 
+            "type": "integer", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "smooth_level": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "a: a b1: b1 b2: b2 ztop: ztop zsurf1: zsurf1 zsurf2: zsurf2", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-200.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "a: a_bnds b1: b1_bnds b2: b2_bnds ztop: ztop zsurf1: zsurf1 zsurf2: zsurf2", 
+            "bounds_values": "", 
+            "long_name": "atmosphere smooth level vertical (SLEVE) coordinate", 
+            "standard_name": "atmosphere_sleve_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "m", 
+            "formula": "z = a*ztop + b1*zsurf1 + b2*zsurf2", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "800000.0", 
+            "axis": "Z"
+        }, 
+        "p840": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "100000. 68000.", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "84000.0", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "ocean_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "sigma: lev eta: eta depth: depth", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "sigma: lev_bnds eta: eta depth: depth", 
+            "bounds_values": "", 
+            "long_name": "ocean sigma coordinate", 
+            "standard_name": "ocean_sigma_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "z(n,k,j,i) = eta(n,j,i) + sigma(k)*(depth(j,i)+eta(n,j,i))", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "0.0", 
+            "axis": "Z"
+        }, 
+        "depth0m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "0.0", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "100.0", 
+            "axis": "Z"
+        }, 
+        "ocean_s": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "s: lev eta: eta depth: depth a: a_coeff b: b_coeff depth_c: depth_c", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "s: lev_bnds eta: eta depth: depth a: a b: b depth_c: depth_c", 
+            "bounds_values": "", 
+            "long_name": "ocean s-coordinate", 
+            "standard_name": "ocean_s_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "z(n,k,j,i) = eta(n,j,i)*(1+s(k)) + depth_c*s(k) + (depth(j,i)-depth_c)*C(k) n where n C(k)=(1-b)*sinh(a*s(k))/sinh(a) +n           b*(tanh(a*(s(k)+0.5))/(2*tanh(0.5*a)) - 0.5)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "0.0", 
+            "axis": "Z"
+        }, 
+        "plev4s": {
+            "requested": [
+                "85000.", 
+                "50000.", 
+                "20000.", 
+                "5000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "typec4pft": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "c4_plant_functional_types", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "plev3h": {
+            "requested": [
+                "10000.", 
+                "1000.", 
+                "100."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "height2m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "up", 
+            "must_have_bounds": "no", 
+            "valid_min": "1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "height", 
+            "standard_name": "height", 
+            "value": "2.0", 
+            "out_name": "height", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "10.0", 
+            "axis": "Z"
+        }, 
+        "time1": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "time", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "plev7h": {
+            "requested": [
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "25000.", 
+                "5000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "sza5": {
+            "requested": [
+                "0.", 
+                "20.", 
+                "40.", 
+                "60.", 
+                "80."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "solar zenith angle", 
+            "standard_name": "solar_zenith_angle", 
+            "value": "", 
+            "out_name": "sza", 
+            "type": "double", 
+            "units": "degree", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "depth_coord": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "ocean depth coordinate", 
+            "standard_name": "depth", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "12000.0", 
+            "axis": "Z"
+        }, 
+        "sdepth1": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "0.0 0.1", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "0.05", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "0.2", 
+            "axis": "Z"
+        }, 
+        "alternate_hybrid_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "ap: ap b: b ps: ps", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "ap: ap_bnds b: b_bnds ps: ps", 
+            "bounds_values": "", 
+            "long_name": "hybrid sigma pressure coordinate", 
+            "standard_name": "atmosphere_hybrid_sigma_pressure_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "1", 
+            "formula": "p = ap + b*ps", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "1.0", 
+            "axis": "Z"
+        }, 
+        "time2": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "time", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "yes", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "time3": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "Diurnal cycle: monthly mean of the diurnal cycle (1 hour steps).", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "oline": {
+            "requested": [
+                "barents_opening", 
+                "bering_strait", 
+                "canadian_archipelago", 
+                "denmark_strait", 
+                "drake_passage", 
+                "english_channel", 
+                "pacific_equatorial_undercurrent", 
+                "faroe_scotland_channel", 
+                "florida_bahamas_strait", 
+                "fram_strait", 
+                "iceland_faroe_channel", 
+                "indonesian_thoughflow", 
+                "mozambique_channel", 
+                "taiwan_luzon_straits", 
+                "windward_passage"
+            ], 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "ocean passage", 
+            "standard_name": "region", 
+            "value": "", 
+            "out_name": "line", 
+            "type": "character", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "plev14": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "25000.", 
+                "15000.", 
+                "10000.", 
+                "5000.", 
+                "2000.", 
+                "1000.", 
+                "500.", 
+                "100."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev8": {
+            "requested": [
+                "100000.", 
+                "85000.", 
+                "70000.", 
+                "50000.", 
+                "25000.", 
+                "10000.", 
+                "5000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "location": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "location index", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "loc", 
+            "type": "integer", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "latitude": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-90.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "latitude", 
+            "standard_name": "latitude", 
+            "value": "", 
+            "out_name": "lat", 
+            "type": "double", 
+            "units": "degrees_north", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "90.0", 
+            "axis": "Y"
+        }, 
+        "plev3": {
+            "requested": [
+                "85000.", 
+                "50000.", 
+                "25000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "basin": {
+            "requested": [
+                "atlantic_arctic_ocean", 
+                "indian_pacific_ocean", 
+                "global_ocean"
+            ], 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "ocean basin", 
+            "standard_name": "region", 
+            "value": "", 
+            "out_name": "basin", 
+            "type": "character", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "p700": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "700 hPa", 
+            "standard_name": "air_pressure", 
+            "value": "70000.", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev7": {
+            "requested": [
+                "90000.", 
+                "74000.", 
+                "62000.", 
+                "50000.", 
+                "37500.", 
+                "24500.", 
+                "9000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "100000.", 
+                "80000.", 
+                "80000.", 
+                "68000.", 
+                "68000.", 
+                "56000.", 
+                "56000.", 
+                "44000.", 
+                "44000.", 
+                "31000.", 
+                "31000.", 
+                "18000.", 
+                "18000.", 
+                " 0."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev4": {
+            "requested": [
+                "92500.", 
+                "85000.", 
+                "50000.", 
+                "25000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev23": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000.", 
+                "700.", 
+                "500.", 
+                "300.", 
+                "200.", 
+                "100.", 
+                "40."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev39": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "17000.", 
+                "15000.", 
+                "13000.", 
+                "11500.", 
+                "10000.", 
+                "9000.", 
+                "8000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1500.", 
+                "1000.", 
+                "700.", 
+                "500.", 
+                "300.", 
+                "200.", 
+                "150.", 
+                "100.", 
+                "70.", 
+                "50.", 
+                "40.", 
+                "30.", 
+                "20.", 
+                "15.", 
+                "10.", 
+                "7.", 
+                "5.", 
+                "3."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "typepever": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "primary_evergreen_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "typesdec": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "secondary_decidous_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "plev27": {
+            "requested": [
+                "100000.", 
+                "97500.", 
+                "95000.", 
+                "92500.", 
+                "90000.", 
+                "87500.", 
+                "85000.", 
+                "82500.", 
+                "80000.", 
+                "77500.", 
+                "75000.", 
+                "70000.", 
+                "65000.", 
+                "60000.", 
+                "55000.", 
+                "50000.", 
+                "45000.", 
+                "40000.", 
+                "35000.", 
+                "30000.", 
+                "25000.", 
+                "22500.", 
+                "20000.", 
+                "17500.", 
+                "15000.", 
+                "12500.", 
+                "10000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "alt40": {
+            "requested": [
+                "240.", 
+                "720.", 
+                "1200.", 
+                "1680.", 
+                "2160.", 
+                "2640.", 
+                "3120.", 
+                "3600.", 
+                "4080.", 
+                "4560.", 
+                "5040.", 
+                "5520.", 
+                "6000.", 
+                "6480.", 
+                "6960.", 
+                "7440.", 
+                "7920.", 
+                "8400.", 
+                "8880.", 
+                "9360.", 
+                "9840.", 
+                "10320.", 
+                "10800.", 
+                "11280.", 
+                "11760.", 
+                "12240.", 
+                "12720.", 
+                "13200.", 
+                "13680.", 
+                "14160.", 
+                "14640.", 
+                "15120.", 
+                "15600.", 
+                "16080.", 
+                "16560.", 
+                "17040.", 
+                "17520.", 
+                "18000.", 
+                "18480.", 
+                "18960."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "0.", 
+                "480.", 
+                "480.", 
+                "960.", 
+                "960.", 
+                "1440.", 
+                "1440.", 
+                "1920.", 
+                "1920.", 
+                "2400.", 
+                "2400.", 
+                "2880.", 
+                "2880.", 
+                "3360.", 
+                "3360.", 
+                "3840.", 
+                "3840.", 
+                "4320.", 
+                "4320.", 
+                "4800.", 
+                "4800.", 
+                "5280.", 
+                "5280.", 
+                "5760.", 
+                "5760.", 
+                "6240.", 
+                "6240.", 
+                "6720.", 
+                "6720.", 
+                "7200.", 
+                "7200.", 
+                "7680.", 
+                "7680.", 
+                "8160.", 
+                "8160.", 
+                "8640.", 
+                "8640.", 
+                "9120.", 
+                "9120.", 
+                "9600.", 
+                "9600.", 
+                "10080.", 
+                "10080.", 
+                "10560.", 
+                "10560.", 
+                "11040.", 
+                "11040.", 
+                "11520.", 
+                "11520.", 
+                "12000.", 
+                "12000.", 
+                "12480.", 
+                "12480.", 
+                "12960.", 
+                "12960.", 
+                "13440.", 
+                "13440.", 
+                "13920.", 
+                "13920.", 
+                "14400.", 
+                "14400.", 
+                "14880.", 
+                "14880.", 
+                "15360.", 
+                "15360.", 
+                "15840.", 
+                "15840.", 
+                "16320.", 
+                "16320.", 
+                "16800.", 
+                "16800.", 
+                "17280.", 
+                "17280.", 
+                "17760.", 
+                "17760.", 
+                "18240.", 
+                "18240.", 
+                "18720.", 
+                "18720.", 
+                "19200."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "altitude", 
+            "standard_name": "altitude", 
+            "value": "", 
+            "out_name": "alt40", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "time": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "time", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "plev7c": {
+            "requested": [
+                "90000.", 
+                "74000.", 
+                "62000.", 
+                "50000.", 
+                "37500.", 
+                "24500.", 
+                "9000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "height10m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "up", 
+            "must_have_bounds": "no", 
+            "valid_min": "1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "height", 
+            "standard_name": "height", 
+            "value": "10.0", 
+            "out_name": "height", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "30.0", 
+            "axis": "Z"
+        }, 
+        "dbze": {
+            "requested": [
+                "-47.5", 
+                "-42.5", 
+                "-37.5", 
+                "-32.5", 
+                "-27.5", 
+                "-22.5", 
+                "-17.5", 
+                "-12.5", 
+                "-7.5", 
+                "-2.5", 
+                "2.5", 
+                "7.5", 
+                "12.5", 
+                "17.5", 
+                "22.5"
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "-50", 
+                "-45", 
+                "-45", 
+                "-40", 
+                "-40", 
+                "-35", 
+                "-35", 
+                "-30", 
+                "-30", 
+                "-25", 
+                "-25", 
+                "-20", 
+                "-20", 
+                "-15", 
+                "-15", 
+                "-10", 
+                "-10", 
+                "-5", 
+                "-5", 
+                "0", 
+                "0", 
+                "5", 
+                "5", 
+                "10", 
+                "10", 
+                "15", 
+                "15", 
+                "20", 
+                "20", 
+                "25."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "CloudSat simulator equivalent radar reflectivity factor", 
+            "standard_name": "equivalent_reflectivity_factor", 
+            "value": "", 
+            "out_name": "dbze", 
+            "type": "double", 
+            "units": "dBZ", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "typesever": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "secondary_evergreen_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "rho": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "density++++?", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "rho", 
+            "type": "double", 
+            "units": "kg m-3", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "depth100m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "80.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "100.0", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "120.0", 
+            "axis": "Z"
+        }, 
+        "effectRadLi": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "Effective Radius of Liquid Aerosols", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "effectRadLi", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "sdepth": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "200.0", 
+            "axis": "Z"
+        }, 
+        "vegtype": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "plant functional type", 
+            "standard_name": "area_type", 
+            "value": "", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "typec3pft": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "c3_plant_functional_types", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "natural_log_pressure": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "p0: p0 lev: lev", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "p0: p0 lev: lev_bnds", 
+            "bounds_values": "", 
+            "long_name": "atmosphere natural log pressure coordinate", 
+            "standard_name": "atmosphere_ln_pressure_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "p = p0 * exp(-lev)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "20.0", 
+            "axis": "Z"
+        }, 
+        "scatratio": {
+            "requested": [
+                "0.005", 
+                "0.605", 
+                "2.1", 
+                "4.", 
+                "6.", 
+                "8.5", 
+                "12.5", 
+                "17.5", 
+                "22.5", 
+                "27.5", 
+                "35.", 
+                "45.", 
+                "55.", 
+                "70.", 
+                "50040."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "0.", 
+                "0.01", 
+                "0.01", 
+                "1.2", 
+                "1.2", 
+                "3.", 
+                "3.", 
+                "5.", 
+                "5.", 
+                "7.", 
+                "7.", 
+                "10.", 
+                "10.", 
+                "15.", 
+                "15.", 
+                "20.", 
+                "20.", 
+                "25.", 
+                "25.", 
+                "30.", 
+                "30.", 
+                "40.", 
+                "40.", 
+                "50.", 
+                "50.", 
+                "60.", 
+                "60.", 
+                "80.", 
+                "80.", 
+                "100000."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "lidar backscattering ratio", 
+            "standard_name": "backscattering_ratio", 
+            "value": "", 
+            "out_name": "scatratio", 
+            "type": "double", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "standard_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "ptop: ptop sigma: lev ps: ps", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "ptop: ptop sigma: lev_bnds ps: ps", 
+            "bounds_values": "", 
+            "long_name": "sigma coordinate", 
+            "standard_name": "atmosphere_sigma_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "p = ptop + sigma*(ps - ptop)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "1.0", 
+            "axis": "Z"
+        }, 
+        "typepdec": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "primary_deciduous_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "hybrid_height": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "a: lev b: b orog: orog", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "a: lev_bnds b: b_bnds orog: orog", 
+            "bounds_values": "", 
+            "long_name": "hybrid height coordinate", 
+            "standard_name": "atmosphere_hybrid_height_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "m", 
+            "formula": "z = a + b*orog", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "longitude": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "longitude", 
+            "standard_name": "longitude", 
+            "value": "", 
+            "out_name": "lon", 
+            "type": "double", 
+            "units": "degrees_east", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "360.0", 
+            "axis": "X"
+        }, 
+        "effectRadIc": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "Effective Radius of Ice Aerosols", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "effectRadIc", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "p1000": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "1000 hPa", 
+            "standard_name": "air_pressure", 
+            "value": "100000.", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "p500": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "500 hPa", 
+            "standard_name": "air_pressure", 
+            "value": "50000.", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "ocean_double_sigma": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "sigma: sigma depth: depth z1: z1 z2: z2 a: a_coeff href: href k_c: k_c", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "sigma: sigma_bnds depth: depth z1: z1 z2: z2 a: a href: href k_c: k_c", 
+            "bounds_values": "", 
+            "long_name": "ocean double sigma coordinate", 
+            "standard_name": "ocean_double_sigma", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "for k <= k_c:n z(k,j,i)= sigma(k)*f(j,i) n for k > k_c:n z(k,j,i)= f(j,i) + (sigma(k)-1)*(depth(j,i)-f(j,i)) n f(j,i)= 0.5*(z1+ z2) + 0.5*(z1-z2)* tanh(2*a/(z1-z2)*(depth(j,i)-href))", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plevs": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "standard_hybrid_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "p0: p0 a: a b: b ps: ps", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "p0: p0 a: a_bnds b: b_bnds ps: ps", 
+            "bounds_values": "", 
+            "long_name": "hybrid sigma pressure coordinate", 
+            "standard_name": "atmosphere_hybrid_sigma_pressure_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "1", 
+            "formula": "p = a*p0 + b*ps", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "1.0", 
+            "axis": "Z"
+        }, 
+        "p560": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "68000. 44000.", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "56000.0", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }
+    }, 
+    "variable_entry": {
+        "depth_c": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: depth_c", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "ap_bnds": {
+            "units": "Pa", 
+            "long_name": "vertical coordinate formula term: ap(k+1/2)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "ap": {
+            "units": "Pa", 
+            "long_name": "vertical coordinate formula term: ap(k)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "href": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: href", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "orog": {
+            "units": "m", 
+            "long_name": "Surface Altitude", 
+            "type": "real", 
+            "dimensions": "longitude latitude"
+        }, 
+        "zlev": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: zlev(k)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "ps": {
+            "units": "Pa", 
+            "long_name": "Surface Air Pressure", 
+            "type": "real", 
+            "dimensions": "longitude latitude time"
+        }, 
+        "sigma_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: sigma(k+1/2)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "ptop": {
+            "units": "Pa", 
+            "long_name": "pressure at top of model", 
+            "type": "", 
+            "dimensions": ""
+        }, 
+        "b_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: b(k+1/2)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "tasAdjust": {
+            "comment": "", 
+            "dimensions": "longitude latitude time height2m", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Bias-Corrected Near-Surface Air Temperature", 
+            "standard_name": "air_temperature", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "K", 
+            "out_name": "tasAdjust", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "tsAdjust": {
+            "comment": "''skin'' temperature (i.e., SST for open ocean)", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Bias-Corrected Surface Temperature", 
+            "standard_name": "surface_temperature", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "K", 
+            "out_name": "tsAdjust", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "nsigma": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: nsigma", 
+            "type": "integer", 
+            "dimensions": ""
+        }, 
+        "ztop": {
+            "units": "m", 
+            "long_name": "height of top of model", 
+            "type": "", 
+            "dimensions": ""
+        }, 
+        "zlev_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: zlev(k+1/2)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "z1": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: z1", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "z2": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: z2", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "a": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: a(k)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "p0": {
+            "units": "Pa", 
+            "long_name": "vertical coordinate formula term: reference pressure", 
+            "type": "", 
+            "dimensions": ""
+        }, 
+        "b": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: b(k)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "prAdjust": {
+            "comment": "at surface; includes both liquid and solid phases from all types of clouds (both large-scale and convective)", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Bias-Corrected Precipitation", 
+            "standard_name": "precipitation_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "prAdjust", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "depth": {
+            "units": "m", 
+            "long_name": "Sea Floor Depth: formula term: thetao", 
+            "type": "real", 
+            "dimensions": "longitude latitude"
+        }, 
+        "eta": {
+            "units": "m", 
+            "long_name": "Sea Surface Height formula term: thetao", 
+            "type": "real", 
+            "dimensions": "longitude latitude time"
+        }, 
+        "pslAdjust": {
+            "comment": "not, in general, the same as surface pressure", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Bias-Corrected Sea Level Pressure", 
+            "standard_name": "air_pressure_at_sea_level", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "Pa", 
+            "out_name": "pslAdjust", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "k_c": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: k_c", 
+            "type": "integer", 
+            "dimensions": ""
+        }, 
+        "sigma": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: sigma(k)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "a_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: a(k+1/2)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }
+    }
+}
diff --git a/TestTables/CMIP6_Amon_json_hfls b/TestTables/CMIP6_Amon_json_hfls
new file mode 100644
index 0000000..d8c04f2
--- /dev/null
+++ b/TestTables/CMIP6_Amon_json_hfls
@@ -0,0 +1,7423 @@
+{
+    "Header": {
+        "#product": "output",
+        "missing_value": "1e20",
+        "approx_interval": "30.00000",
+        "#baseURL": "http://cmip-pcmdi.llnl.gov/CMIP6/dataLocation",
+        "cmor_version": "3.0",
+        "forcings": "N/A Nat Ant GHG SD SI SA TO SO Oz LU Sl Vl SS Ds BC MD OC AA",
+        "frequency": "mon",
+        "table_id": "Table Amon",
+        "table_date": "24 February 2016",
+        "modeling_realm": "atmos",
+        "generic_levels": "alevel alevhalf",
+        "activity_id": "CMIP6-XXXXX",
+        "data_specs_version": "3.0",
+        "Conventions": "CF-1.8 CMIP-6.0"
+    },
+    "experiments": {
+        "LfmipRa5": "Prescribed land conditions 30yr running mean; SSTs prescribed", 
+        "ssp245GHG": "*  Extension of well-mixed GHG-only run under SSP2-4.5. *  Models with interactive chemistry schemes should either turn off the chemistry or use a preindustrial climatology of stratospheric and tropospheric ozone in their radiation schemes.", 
+        "LIG": "main forcings : orbital parameters, ice-sheet, trace gases", 
+        "amipTot": "Same as amip, but the SST pattern anomaly climatology from sstPiFuture is applied, scaled to have a global mean increase of 4K. CO2 is quadrupled, and the increase in CO2 is seen by both the radiation scheme and vegetation.", 
+        "RfmipErfPiCntrl": "30-year atmosphere only integration using preindustrial conditions. Interactive vegetation", 
+        "Esmssp585wssp126landuse": "Additional land use policy sensitivity simulation for high radiative forcing scenario, keep all forcings the same as in C4MIP esmssp5-8.5 scenario except use SSP1-2.6 land use; emission driven", 
+        "WMFORCch4": "Same as CMIP6 historical but with CH4 at 1850", 
+        "Sspx45": "Future scenario with low radiative forcing by the end of century. Reaches about 3.7 W/m2 by 2100; fills gap in RCP forcing pathways between 4.5 and 2.6 W/m2. Concentration-driven.", 
+        "RFDOCo3": "Perturbation from 1850 control using 2014 aerosol and ozone precursor emissions (only ozone (trop+strat) interact with radiation)", 
+        "amip4xCO2": "As CMIP5/CFMIP-2.  AMIP experiment where SSTs are held at control values and the CO2 seen by the radiation scheme is quadrupled.", 
+        "RFDOCnox": "Perturbation from 1850 control using 2014 Nox emissions", 
+        "esm1pcbgcNdep": "Biogeochemically-coupled specified concentration simulation in which CO2 increases at a rate of 1% per year until quadrupling, plus an additional scenario of anthropogenic nitrogen deposition", 
+        "G6solarSlice2": "Time slice at 2100 (G6solar)", 
+        "FDBCKch4": "1850 control with doubled emissions of wetlands CH4", 
+        "futureSolarMin": "Future simulation using solar forcing running into a new Dalton/Maunder Minimum type", 
+        "HISTghg": "Historical WMGHG concentrations and halocarbons emissions, 1850 NTCF emissions", 
+        "G6sulfurSlice2": "Time slice at 2100 (G6sulfur)", 
+        "DcppC2": "Mechanisms and predictability of the hiatus and of similar long timescale variations of both signs", 
+        "AquaPlanet": "Aqua planet simulation", 
+        "RfmipHistAmip": "Prescribed anthropogenic aerosol optical properties, prescribed time-varying SSTs", 
+        "histNAT": "Historical natural-only run", 
+        "sstPi4xCO2Veg": "Same as sstPi but CO2 is quadrupled. The increase in CO2 is seen by both the radiation scheme and vegetation.", 
+        "WMFORCn20": "Same as CMIP6 historical but with N2O at 1850", 
+        "RfmipErf4xco2": "As in RFMIP-ERF-PI-Cntrl but with 4xCO2", 
+        "AMIP20C": "Extended AMIP run that covers 1850-2014. All natural and anthropogenic historical forcings as used in CMIP6 Historical Simulation will be included. AGCM resolution as CMIP6 Historical Simulation. The HadISST data will be used.", 
+        "offlwaqua4K": "As CMIP5/CFMIP-2 aqua4K experiment, but with cloud-radiative effects switched off in the LW radiation code.", 
+        "NRLSens": "sensitivity experiment using a different spectral solar irradiance (NRLSSI) forcing than the CMIP6 historical simulation", 
+        "histGHG": "* Historical well-mixed GHG-only run. * Models with interactive chemistry schemes should either turn off the chemistry or use a preindustrial climatology of stratospheric and tropospheric ozone in their radiation schemes.  This will ensure that ozone is fixed in all these simulations, and simulated responses in models with and without coupled chemistry are comparable.", 
+        "LfmipRao1": "Prescribed land conditions 30yr running mean", 
+        "amip4K": "As CMIP5/CFMIP-2.  AMIP experiment where SSTs are subject to a uniform warming of 4K.", 
+        "G6solar": "Using solar irradiance reduction, return the radiative forcing from a background of the ScenarioMIP high forcing to the ScenarioMIP middle forcing.", 
+        "G7cirrusSlice1": "Time slice at 2020 (ScenarioMIP Tier 1 high forcing scenario + cirrus thinning according to G7cirrus)", 
+        "Ssp126": "Future scenario with low radiative forcing by the end of century. Following approximately RCP2.6 global forcing pathway but with new forcing based on SSP1. Concentration-driven.", 
+        "G1ext": "Beginning from a preindustrial control run, simultaneously quadruple the CO2 concentration and reduce the solar constant such that the TOA radiative flux remains within +/m0.1 W/m2.", 
+        "histALL": "* Enlarging ensemble size of the CMIP6 hisorical simulations (2015-2020 under SSP2-4.5 of ScenarioMIP) to at least three members. * DCPP: DCPP proposes a 10 member ensemble of histALL up to 2030 also extended with SSP2-4.5. * Please provide output data up to 2014 as 'CMIP6 historical' and 2015-2020 (or 2030 for DCPP) as SSP2-4.5 of ScenarioMIP.", 
+        "abruptSm4": "Same as above, except solar constant is reduced by 4%", 
+        "RfmipErfGhg": "As in RFMIP-ERF-PI-Cntrl but with present-day greenhouse gases", 
+        "Ssp585withism": "Future climate from ScenarioMIP SSP5-8.5 simulation that includes interactive ice sheets. Set up would follow the standard SSP5-8.5 experiment, and therefore may first require that the Historical Simulation is performed first with a coupled AOGCM-ISM setting", 
+        "HISTghgntcfhc1950": "Historical WMGHG concentrations and NTCF emissions, 1950 halocarbons, start 1950", 
+        "HistAmo": "Pacemaker 20th century historical run that includes all forcing as used in CMIP6 Historical Simulation, and the observational historical SST is restored in the AMO domain (0o-70oN, 70oW-0o)", 
+        "Coupled": "Coupled integrations, at least one with constant 1950's forcing (CTL) and one or more with historic and then RCP4.5 (as in Forced_Atmos_Land, EXP).", 
+        "PlioExp": "main forcings : trace gases, orography, ice-sheet", 
+        "RfmipHistAmipNudged": "Prescribed anthropogenic aerosol optical properties, prescribed time-varying SSTs, winds nudged to reanalysis", 
+        "histSOL": "Historical solar-only transient simulation using  settings from CMIP6 historical simulation but fixed GHG&ODS (1850 level)", 
+        "LmipF": "Land only simulations", 
+        "aquaControl": "As CMIP5/CFMIP-2.  Aquaplanet (no land) experiment with no seasonal cycle forced with specified zonally symmetric SSTs.", 
+        "G4solarExt": "Using solar irradiance reduction, return the radiative forcing from a background of the ScenarioMIP high forcing overshoot extension (years 2101-2300) to the ScenarioMIP middle forcing.", 
+        "histSOZ": "* Historical stratospheric-ozone-only. *  In models with coupled chemistry, the chemistry scheme should be turned off, and the simulated ensemble mean monthly mean 3D stratospheric ozone concentrations from the histALL simulations should be prescribed. Tropospheric ozone should be fixed at 3D long-term monthly mean piControl values, with a value of 100 ppbv ozone concentration in this piControl climatology used to separate the troposphere from the stratosphere. * In m [...]
+        "Ssp437": "Additional ensemble members for future scenario with high radiative forcing by the end of century.Reaches about 7.0 W/m2 by 2100; fills gap in RCP forcing pathways between 6.0 and 8.5 W/m2. Concentration-driven.", 
+        "LmipH": "Land only simulations", 
+        "HISTsstghg": "Historical WMGHG concentrations and halocarbons emissions, 1850 tropospheric ozone precursors  emissions", 
+        "LfmipCao4": "Prescribed land conditions 1980-2014 climate", 
+        "Volshort20eqiniDcppC21": "As VolShort20EQfull, but as decadal prediction runs. Joint experiment with DCPP, forcing input and implementation of the forcing fully comply with the VolMIP protocol", 
+        "LandcoverManageLnd": "Factorial set of land only experiments with increasingly realistic treatment of land management; derivatives of LMIP-hist (LS3MIP)", 
+        "RfmipIrfAer": "Request for specialized diagnostics: Full snapshots of spectrally-resolved aerosol optical properties for single days at PI and PD, along with model-specific direct aerosol IRF.", 
+        "DcppA": "Decadal hindcasts begun each year from 1960 to present", 
+        "DcppB": "Ongoing decadal forecasts", 
+        "G4sulfurExt": "Using equatorial SO2 injection, return the radiative forcing from a background of the ScenarioMIP high forcing overshoot extension (years 2101-2300) to the ScenarioMIP middle forcing.", 
+        "HISTghgntcf": "Transient historical GHG-only + NTCF precursors (aerosols radiatively active)", 
+        "HistallEstaer2": "Historical ALL forcing run with alternate estimates of aerosol concentrations/emissions", 
+        "midHolocene": "main forcings : trace gases, orbital parameters, dust", 
+        "1pctCO2": "DECK: 1pctCO2", 
+        "amipMinus4K": "AMIP experiment where SSTs are subject to a uniform cooling of 4K.", 
+        "offlwamip": "As CMIP5/CFMIP-2 amip experiment, but with cloud-radiative effects switched off in the LW radiation code.", 
+        "HistNolulccLnd": "Historical land only simulation with land use held at 1850; no human activity; derivative of LMIP-hist (LS3MIP)", 
+        "PdrFull01": "Changes in precipitation from various drivers of climate change. Dedicated simulations with CO2, CH4, solar irradiance changes and different aerosol types, to investigate the degree of difference in mean and extreme precipitation between the drivers. Combination of slab ocean/full ocean and fixed SST. Also, perturb aerosols regionally, to investigate the precipitation impact of the longitudinal shift in aerosol loading across models.", 
+        "LfmipHp10": "Initialized pseudo-observations land", 
+        "FDBCKss": "1850 control with doubled sea salt emissions", 
+        "NTCFRESPbc": "Perturbation: Only black carbon emissions as in NTCFRESP-SSP3-7ntcf", 
+        "PdrFull02": "Regional simulations", 
+        "HistNolulcc02": "Same as CMIP6 historical but with land cover held at 1850, no human activity; concentration driven", 
+        "Ssp126wssp37landuse": "Additional land use policy sensitivity simulation for low radiative forcing scenario, keep all forcings the same as ScenarioMIP SSP1-2.6 (afforestation scenario), but replace land use from SSP3-7 (afforestation) scenario; concentration-driven", 
+        "sstPi4K": "Same as sstPi but with SSTs uniformly increased by 4K", 
+        "HistallEstnat2": "Historical ALL forcing run with alternates estimate of solar and volcanic forcing", 
+        "HistNolulcc01": "Same as CMIP6 historical but with land cover held at 1850, no human activity; concentration driven", 
+        "FDBCKnox": "1850 control with doubled emissions of lightning Nox", 
+        "VolLongC19thC": "Early 19th century cluster of strong tropical volcanic eruptions, including the 1809 event of unknown location, and the 1815 Tambora and 1835 Cosigueina eruptions.", 
+        "NTCFRESPo3ch4": "Perturbation: All ozone precursors kept the same as in NTCFRESP-SSP3-7ntcf", 
+        "sstPi": "Same as standard amip experiment, but with monthly-varying SSTs and sea-ice taken from a segment of each model's own piControl run.", 
+        "NTCFRESPcntrl": "Control: SSP3-7, using SST from NTCFRESP-SSP3-7", 
+        "NTCFRESPnox": "Perturbation: All aerosol precursor emissions (but not NOx) as in NTCFRESP-SSP3-7ntcf", 
+        "G6sulfate": "Using equatorial SO2 injection, return the radiative forcing from a background of the ScenarioMIP high forcing to the ScenarioMIP middle forcing.", 
+        "G4Ssa": "Against a background of RCP6.0, a layer of stratospheric aerosols is injected into the lower stratosphere at a rate of 8 Tg SO2 per year.  The distribution of sulfate aerosols will be precomputed and provided to all modeling groups.", 
+        "RfmipHistAer": "Prescribed anthropogenic aerosol optical properties. Changes in aerosols only.", 
+        "water": "1xCO2 experiment, parallel to piControl, forced over the ocean by surface net freshwater flux anomalies obtained from the CMIP5 ensemble mean of 1pctCO2 experiments at the time of 2xCO2", 
+        "ssp245AER": "Extension of aerosol-only run under SSP2-4.5", 
+        "Ssp585Ext": "Extension of SSP5_85 to 2300, in style of CMIP5 extension. Assumes emissions eventually decline from 2100 levels to produce stabilized forcing by 2300.", 
+        "Abrupt05xco2": "Identical to the DECK abrupt4xCO2, but at 0.5xCO2", 
+        "amipPiForcing": "Identical to standard AMIP experiment but from 1870-present with constant pre-industrial forcing levels (anthro & natural)", 
+        "RfmipErfLu": "As in RFMIP-ERF-PI-Cntrl but with present-day land use", 
+        "esm1pccouNdep": "Fully-coupled specified concentration simulation in which CO2 increases at a rate of 1% per year until quadrupling, plus an additional scenario of anthropogenic nitrogen deposition", 
+        "RfmipHistNat": "Prescribed anthropogenic aerosol optical properties. Natural forcings.", 
+        "NtcfrespSsp37": "Reference: SSP3-7 (to be performed under ScenarioMIP)", 
+        "Esmssp585extbgc": "Emission-driven future scenario simulation extension to 2300 biogeochemically-coupled", 
+        "aqua4K": "As CMIP5/CFMIP-2.  Aquaplanet experiment where SSTs are subject to a uniform warming of 4K.", 
+        "allFAF": "1xCO2 experiment, parallel to piControl, forced over the ocean simultaneously by surface windstress (as in the wind experiment), net heat flux (as in the heat experiment) and net freshwater flux (as in the water experiment) anomalies obtained from the CMIP5 ensemble mean of 1pctCO2 experiments at the time of 2xCO2, using a passive tracer to prevent negative climate feedback on the heat flux applied", 
+        "G7cirrus": "Against a background of the ScenarioMIP high forcing, reduce cirrus cloud optical depth by a constant amount", 
+        "ssp245SOZ": "* Extension of stratospheric-ozone-only run under SSP2-4.5 *   In models with coupled chemistry, the chemistry scheme should be turned off, and the simulated ensemble mean monthly mean 3D stratospheric ozone concentrations from the SSP2-4.5 simulations should be prescribed. Tropospheric ozone should be fixed at 3D long-term monthly mean piControl values, with a value of 100 ppbv ozone concentration in this piControl climatology used to separate the troposphere from  [...]
+        "NtcfrespSsp37ntcf": "Perturbation: SSP3 with reduced NTCF (aerosol and tropospheric ozone precursors, including methane)", 
+        "histVLC": "Historical volcanic-only run", 
+        "G6Slice1": "Time slice at 2020 (ScenarioMIP Tier 1 high forcing scenario)", 
+        "Ssp126Over": "21st century overshoot scenario relative to SSP1_26. Specific design to be finalized with IAM groups within next several months.", 
+        "1pctCo2forcedism": "Idealized 1%/yr CO2 increase to 4xC02 over 140yrs and kept constant at 4xCO2 for an additional 200 to 400 yrs simulation with ice sheets forced 'offline' with DECK 1pctCO2.", 
+        "AMIP": "DECK: AMIP", 
+        "DHLD": "The topography of the highlands in Africa, N. America and S. America TP is modified by setting surface elevations to a certain height (500m).Same model as DECK.", 
+        "VolShort20EQfull": "1991 Pinatubo forcing as used in the CMIP6 historical simulations.  Requires special diagnostics of parameterized and resolved wave forcings, radiative and latent heating rates. A large number of ensemble members is required to address internal atmospheric variability.", 
+        "DtipDsh": "Surface sensible heat released at the elevation above 500m over the TIP is not allowed to heat the atmosphere.Same model as DECK.", 
+        "IdealizedGlobalDeforest": "Idealized transient global deforestation with all other forcings held constant", 
+        "passiveheat": "1xCO2 experiment, parallel to piControl, with a flux of passive tracer added at the ocean surface at the same rate as the surface net heat flux anomaly applied in the FAFMIP heat experiment.", 
+        "OmipA": "Global ocean - sea-ice coupled experiment forced with the Coordinated Ocean - ice Reference Experiments inter-annually varying atmopsheric data sets for the 1948-2009 period. The 62-year forcing period is repeated for no less than 5 cycles.", 
+        "RfmipErfAerx01": "As in RFMIP-ERF-AER but with present-day changes scaled by 0.1", 
+        "RfmipErfAnthro": "As in RFMIP-ERF-PI-Cntrl but with present-day anthropogenic forcing (greenhouse gases, aerosols and land-use)", 
+        "esmhistbgc": "Emission-driven historical simulation,  biogeochemically-coupled", 
+        "Ssp58501": "Future scenario with high radiative forcing by the end of century. Following approximately RCP8.5 global forcing pathway but with new forcing based on SSP5. Concentration-driven.", 
+        "ForcedAtmosLand2100": "Extend Forced_Atmos_land to 2100 with agreed forcings", 
+        "Esmssp585bgc": "Emission-driven future scenario simulation,  biogeochemically-coupled", 
+        "FDBCKdms": "1850 control with doubled emissions of DMS", 
+        "Ssp37wssp126landuse01": "Additional land use policy sensitivity simulation for high radiative forcing scenario, keep all forcings the same as ScenarioMIP SSP3-7 (deforestation scenario), but replace land use from SSP1-2.6 (afforestation) scenario; concentration-driven", 
+        "LuNtcf": "Time slice at 2050 and/or 2090 for SSP1 and SSP3 to test emissions variations with high and low Land Use emissions (dust/N2O/soil NO/NH3/Fires/CH4)- land use change experiment under LUMIP with AerChemMIP diagnostics", 
+        "Ssp37wssp126landuse02": "Additional land use policy sensitivity simulation for high radiative forcing scenario, keep all forcings the same as SSP3-7 (deforestation scenario), but replace land use from SSP1-2.6 (afforestation) scenario; concentration-driven", 
+        "VolLongS100HL": "Idealized high-latitude (60oN) eruption emitting 100 Tg of SO2 over five months. The eruption's strength and length roughly correspond to that of the 1783-84 Laki eruption.", 
+        "EsmhistbgcNolulcc": "Same as esmhistbgc (C4MIP) but with land cover held at 1850, no human activity; emission-driven", 
+        "abrupt2xCO2": "Identical to the DECK abrupt4xCO2, but at 2xCO2", 
+        "RFDOCntcf": "Perturbation from 1850 control using 2014 aerosol and ozone precursor emissions (all aerosols interact with radiation)", 
+        "esm1pcrad": "Radiatively-coupled specified concentration simulation in which CO2 increases at a rate of 1% per year until quadrupling", 
+        "sstPi4xCO2": "Same as sstPi but CO2 as seen by the radiation scheme is quadrupled.", 
+        "IdealizedRegDeforest": "Paired idealized timeslice control and deforestation experiments for specific regions (tropical, boreal, temperate?, TBD)", 
+        "sstPiFuture": "Same as sstPi but a seasonally varying monthly mean climatology of the SST pattern anomaly taken from years 91-140 of each model's own abrupt4xCO2 minus piControl is scaled to have a global mean increase of 4K and applied.", 
+        "RfmipIrfGhgBase": "Offline radiation calculations with specified surface and atmospheric conditions. No clouds or aerosols.", 
+        "Ssp58502": "Future scenario with high radiative forcing by the end of century. Reaches about 7.0 W/m2 by 2100; fills gap in RCP forcing pathways between 6.0 and 8.5 W/m2. Concentration-driven.", 
+        "lgm": "main forcings : ice-sheet; trace gases, orbital parameters dust (forcing, or feedback if dust cycle represented in model)", 
+        "HISTsstghgntcfhc1950": "Historical WMGHG concentrations and NTCF emissions, 1950 halocarbons", 
+        "heat": "1xCO2 experiment, parallel to piControl, forced over the ocean by surface net heat flux anomalies obtained from the CMIP5 ensemble mean of 1pctCO2 experiments at the time of 2xCO2, using a passive tracer to prevent negative climate feedback on the heat flux applied", 
+        "FDBCKdust": "1850 control with doubled dust emissions", 
+        "offlwamip4K": "As CMIP5/CFMIP-2 amip4K experiment, but with cloud-radiative effects switched off in the LW radiation code.", 
+        "RfmipIrfIndgas": "Offline radiation calculations varying one greenhouse gas at a time.", 
+        "G1extSlice1": "Time slice at 1850 (picontrol) for G1ext to examine radiative forcing of abrupt4xCO2", 
+        "G1extSlice2": "Time slice at 1949 (picontrol) for G1ext to examine radiative forcing of abrupt4xCO2 + G1", 
+        "HistIpo": "Pacemaker 20th century historical run that includes all forcing as used in CMIP6 Historical Simulation, and the observational historical SST is restored in the tropical lobe of the IPO domain (20oS-20oN, 175oE-75oW). The HadISST data will be used.", 
+        "RFDOCbc": "Perturbation from 1850 control using 2014 BC emissions", 
+        "ForcedAtmosLand": "Forced global atmosphere-land simulations using SST and sea-ice forcings (using methodology based on Mizuta et al beyond present day), and aerosol concentrations (not emissions) to constrain model spread, with RCP4.5 or similar for the projected forcings", 
+        "RfmipIrfCo2": "Offline radiation calculations varying CO2 from 0.5x to 8x PI values", 
+        "RfmipHistAll": "Prescribed anthropogenic aerosol optical properties. All forcings.", 
+        "piControlforcedism": "Pre-industrial control simulation for 'offline' ice sheets.", 
+        "Esmssp585": "Emissions-driven future scenario simulation", 
+        "RFDOCch4": "Perturbation from 1850 control using 2014 CH4 concentrations", 
+        "LfmipCao1": "Prescribed land conditions 1980-2014 climate", 
+        "DcppC1": "Mechanisms and predictability of the hiatus and of similar long timescale variations of both signs", 
+        "historical": "CMIP6 historical", 
+        "DcppC3": "Effects of volcanoes on decadal prediction and predictability of forced and internal variability components", 
+        "control": "DECK: control", 
+        "SwitchOn4xco2": "Switch on 4XCo2", 
+        "Ssp126Ext": "Extension of SSP1_26 to 2300, in style of CMIP5 extension. Extends negative emissions level reached in 2100 to produce slowly declining forcing.", 
+        "amipFuture": "As CMIP5/CFMIP-2.  AMIP experiment where SSTs are subject to a composite SST warming pattern derived from coupled models, scaled to a global mean of 4K.", 
+        "LfmipCa5": "Prescribed land conditions 1980-2014 climate; SSTs prescribed", 
+        "RFDOCn2o": "Perturbation from 1850 control using 2014 N2O concentrations", 
+        "RfmipErfHistall": "Time-varying forcing. SST and sea ice fixed at preindustrial control. Interactive vegetation", 
+        "RFDOCods": "Perturbation from 1850 control using 2014 ODSs concentrations", 
+        "Sspx60": "Future scenario with medium radiative forcing by the end of century. Following approximately RCP4.5 global forcing pathway but with new forcing based on SSP. Concentration-driven.", 
+        "DTIP": "The topography of the TIP is modified by setting surface elevations to 500m; to understand the combined thermal and mechanical forcing of the TIP. Same model as DECK.", 
+        "VolShort20EQslab": "As VolShort20EQfull, but with a slab ocean", 
+        "RfmipErfAer": "As in RFMIP-ERF-PI-Cntrl but with with present-day aerosols and ozone", 
+        "RfmipErfHistnat": "Time-varying forcing from volcanos, solar variability, etc. SST and sea ice fixed at preindustrial control. Interactive vegetation", 
+        "RfmipErfAerx2": "As in RFMIP-ERF-AER but with present-day changes scaled by 2", 
+        "piControlwithism": "Pre-industrial control simulation that includes interactive ice sheets.", 
+        "Ssp370": "Future scenario with medium radiative forcing by the end of century. Following approximately RCP6.0 global forcing pathway but with new forcing based on SSP. Concentration-driven.", 
+        "RfmipHistFixedsst": "Prescribed anthropogenic aerosol optical properties. All forcings.", 
+        "aqua4xCO2": "As CMIP5/CFMIP-2.  Aquaplanet experiment where SSTs are held at control values and the CO2 seen by the radiation scheme is quadrupled.", 
+        "RfmipErfHistaer": "Time-varying forcing by aerosols. SST and sea ice fixed at preindustrial control. Interactive vegetation", 
+        "VolShort20EQstrat": "As VolShort20EQfull, but with prescribed aerosol heating rates in the stratosphere. Complimentary experiment to VolShort20EQstrat.", 
+        "1pctCo2withism": "Idealized 1%/yr CO2 increase to 4xC02 over 140yrs and kept constant at 4xCO2 for an additional 200 to 400 yrs simulation that includes interactive ice sheets.", 
+        "abrupt4xCO2": "DECK: abrupt4xCO2", 
+        "Ssp585Over": "Extension of SSP5_85 to 2300. Assumes emissions decline linearly from 2100 to SSP1_26 levels by 2200, which is expected to produce substantial overshoot in radiative forcing.", 
+        "NTCFRESPo3": "Perturbation: All ozone precursors except methane kept the same as in NTCFRESP-SSP3-7ntcf", 
+        "RFDOCcntrl": "Perturbation from 1850 control using 1850 aerosol and ozone precursor emissions (all aerosols interact with radiation)", 
+        "esm1pcbgc": "Biogeochemically-coupled specified concentration simulation in which CO2 increases at a rate of 1% per year until quadrupling", 
+        "abruptSp4": "Conceptually similar to abrupt 4xCO2 DECK experiment, except that the solar constant (not CO2) is abruptly increased by 4%.", 
+        "RfmipErfHistghg": "Time-varying forcing by GHGs. SST and sea ice fixed at preindustrial control. Interactive vegetation", 
+        "LfmipRao4": "Prescribed land conditions 30yr running mean", 
+        "VolLongS100EQ": "Idealized equatorial eruption corresponding to an initial emission of 100 Tg of SO2. This eruption has a magnitude roughly corresponding to the 1815 Tambora eruption, the largest historical tropical eruption, which was linked to the so-called 'year without a summer' in 1816", 
+        "HISTsstghgntcf": "Transient historical GHG-only + NTCF precursors (aerosols radiatively active)", 
+        "sstPiTot": "As sstPiFuture, but CO2 is quadrupled, and the increase in CO2 is seen by both the radiation scheme and vegetation.", 
+        "FDBCKvoc": "1850 control with doubled emissions of biogenic VOCs", 
+        "FDBCKfire": "1850 control with doubled emissions of fires", 
+        "Ssp585forcedism": "Future climate from standard ScenarioMIP SSP5-8.5 simulation is used to force the ice sheet 'offline'. Set up would follow the standard SSP5-8.5 experiment, and therefore may first require that an 'offline' ice sheet Historical Simulation is performed first.", 
+        "G7cirrusSlice2": "Time slice at 2100 (ScenarioMIP Tier 1 high forcing scenario + cirrus thinning according to G7cirrus)", 
+        "offlwaquaControl": "As CMIP5/CFMIP-2 aquaControl experiment, but with cloud-radiative effects switched off in the LW radiation code.", 
+        "HISTsstghgntcf1850": "Historical WMGHG concentrations and halocarbons emissions, 1850 NTCF emissions", 
+        "RFDOCcovoc": "Perturbation from 1850 control using 2014 CO/VOC emissions", 
+        "Solaronly": "Historical solar-only transient simulation using  settings from CMIP6 historical simulation but fixed GHG&ODS (1850 level)", 
+        "past1000": "main forcings : trace gases, volcanoes, solar variability, land use", 
+        "OmpiB": "Same as the OMIP experiment except that it is not initialized with observed climatologies; rather it is initialized with results from at least a 1000-year spin up of the coupled physical-biogeochemical models. Also it includes radiocarbon to evaluate deep-ocean circulation.", 
+        "HistaerHistaerchem": "*  Historical anthropogenic-Aerosols-only run. *  Please select one of two experimental designs for ESMs without (histAER) or with (histAERchem) interactive chemistory shemes (see the proposal for details).", 
+        "VolShort20EQsurf": "As VolShort20EQfull, but with prescribed surface cooling patterns or net  surface flux changes. Complimentary experiment to VolShort20EQstrat.", 
+        "PdrFsst": "Fixed SST simulations", 
+        "amip": "This CFMIP amip experiment is the same as the DECK amip experiment, but will contain any additional outputs which are required as control variables for the amip4K, amip4xCO2, amipFuture and amipMinus4K experiments which are not included in the AMIP DECK experiment.  This experiment will not be required if all of the proposed CFMIP variables are included in the AMIP DECK Experiment.", 
+        "wind": "1xCO2 experiment, parallel to piControl, forced over the ocean by surface windstress anomalies obtained from the CMIP5 ensemble mean of 1pctCO2 experiments at the time of 2xCO2"
+    }, 
+    "axis_entry": {
+        "olayer100m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "value": "50.0", 
+            "z_bounds_factors": "", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "axis": "Z"
+        }, 
+        "ocean_sigma_z": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "sigma: sigma eta: eta depth: depth depth_c: depth_c nsigma: nsigma zlev: zlev", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "value": "", 
+            "z_bounds_factors": "sigma: sigma_bnds eta: eta depth: depth depth_c: depth_c nsigma: nsigma zlev: zlev_bnds", 
+            "long_name": "ocean sigma over z coordinate", 
+            "standard_name": "ocean_sigma_z", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "for k <= nsigma: z(n,k,j,i) = eta(n,j,i) + sigma(k)*(min(depth_c,depth(j,i))+eta(n,j,i)) ; for k > nsigma: z(n,k,j,i) = zlev(k)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "axis": "Z"
+        }, 
+        "smooth_level": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "a: a b1: b1 b2: b2 ztop: ztop zsurf1: zsurf1 zsurf2: zsurf2", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "value": "", 
+            "z_bounds_factors": "a: a_bnds b1: b1_bnds b2: b2_bnds ztop: ztop zsurf1: zsurf1 zsurf2: zsurf2", 
+            "long_name": "atmosphere smooth level vertical (SLEVE) coordinate", 
+            "standard_name": "atmosphere_sleve_coordinate", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "m", 
+            "formula": "z = a*ztop + b1*zsurf1 + b2*zsurf2", 
+            "climatology": "", 
+            "tolerance": "", 
+            "axis": "Z"
+        }, 
+        "ocean_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "sigma: lev eta: eta depth: depth", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "value": "", 
+            "z_bounds_factors": "sigma: lev_bnds eta: eta depth: depth", 
+            "long_name": "ocean sigma coordinate", 
+            "standard_name": "ocean_sigma_coordinate", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "z(n,k,j,i) = eta(n,j,i) + sigma(k)*(depth(j,i)+eta(n,j,i))", 
+            "climatology": "", 
+            "tolerance": "", 
+            "axis": "Z"
+        }, 
+        "depth0m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "value": "0.0", 
+            "z_bounds_factors": "", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "axis": "Z"
+        }, 
+        "ocean_s": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "s: lev eta: eta depth: depth a: a_coeff b: b_coeff depth_c: depth_c", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "value": "", 
+            "z_bounds_factors": "s: lev_bnds eta: eta depth: depth a: a b: b depth_c: depth_c", 
+            "long_name": "ocean s-coordinate", 
+            "standard_name": "ocean_s_coordinate", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "z(n,k,j,i) = eta(n,j,i)*(1+s(k)) + depth_c*s(k) + (depth(j,i)-depth_c)*C(k) \n where \n C(k)=(1-b)*sinh(a*s(k))/sinh(a) +\n           b*(tanh(a*(s(k)+0.5))/(2*tanh(0.5*a)) - 0.5)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "axis": "Z"
+        }, 
+        "height2m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "up", 
+            "must_have_bounds": "no", 
+            "value": "2.0", 
+            "z_bounds_factors": "", 
+            "long_name": "height", 
+            "standard_name": "height", 
+            "out_name": "height", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "axis": "Z"
+        }, 
+        "depth_coord": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "value": "", 
+            "z_bounds_factors": "", 
+            "long_name": "ocean depth coordinate", 
+            "standard_name": "depth", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "axis": "Z"
+        }, 
+        "alternate_hybrid_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "ap: ap b: b ps: ps", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "value": "", 
+            "z_bounds_factors": "ap: ap_bnds b: b_bnds ps: ps", 
+            "long_name": "hybrid sigma pressure coordinate", 
+            "standard_name": "atmosphere_hybrid_sigma_pressure_coordinate", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "1", 
+            "formula": "p = ap + b*ps", 
+            "climatology": "", 
+            "tolerance": "", 
+            "axis": "Z"
+        }, 
+        "time2": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "value": "", 
+            "z_bounds_factors": "", 
+            "long_name": "time", 
+            "standard_name": "time", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "yes", 
+            "tolerance": "", 
+            "axis": "T"
+        }, 
+        "oline": {
+            "requested": [
+                "barents_opening", 
+                "bering_strait", 
+                "canadian_archipelago", 
+                "denmark_strait", 
+                "drake_passage", 
+                "english_channel", 
+                "pacific_equatorial_undercurrent", 
+                "faroe_scotland_channel", 
+                "florida_bahamas_strait", 
+                "fram_strait", 
+                "iceland_faroe_channel", 
+                "indonesian_thoughflow", 
+                "mozambique_channel", 
+                "taiwan_luzon_straits", 
+                "windward_passage"
+            ], 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "value": "", 
+            "z_bounds_factors": "", 
+            "long_name": "ocean passage", 
+            "standard_name": "region", 
+            "out_name": "line", 
+            "type": "character", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "axis": ""
+        }, 
+        "latitude": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "value": "", 
+            "z_bounds_factors": "", 
+            "long_name": "latitude", 
+            "standard_name": "latitude", 
+            "out_name": "lat", 
+            "type": "double", 
+            "units": "degrees_north", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "axis": "Y"
+        }, 
+        "basin": {
+            "requested": [
+                "atlantic_arctic_ocean", 
+                "indian_pacific_ocean", 
+                "global_ocean"
+            ], 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "value": "", 
+            "z_bounds_factors": "", 
+            "long_name": "ocean basin", 
+            "standard_name": "region", 
+            "out_name": "basin", 
+            "type": "character", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "axis": ""
+        }, 
+        "height10m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "up", 
+            "must_have_bounds": "no", 
+            "value": "10.0", 
+            "z_bounds_factors": "", 
+            "long_name": "height", 
+            "standard_name": "height", 
+            "out_name": "height", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "axis": "Z"
+        }, 
+        "standard_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "ptop: ptop sigma: lev ps: ps", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "value": "", 
+            "z_bounds_factors": "ptop: ptop sigma: lev_bnds ps: ps", 
+            "long_name": "sigma coordinate", 
+            "standard_name": "atmosphere_sigma_coordinate", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "p = ptop + sigma*(ps - ptop)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "axis": "Z"
+        }, 
+        "rho": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "value": "", 
+            "z_bounds_factors": "", 
+            "long_name": "density++++?", 
+            "standard_name": "", 
+            "out_name": "rho", 
+            "type": "double", 
+            "units": "kg m-3", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "axis": "Z"
+        }, 
+        "depth100m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "value": "100.0", 
+            "z_bounds_factors": "", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "axis": "Z"
+        }, 
+        "natural_log_pressure": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "p0: p0 lev: lev", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "value": "", 
+            "z_bounds_factors": "p0: p0 lev: lev_bnds", 
+            "long_name": "atmosphere natural log pressure coordinate", 
+            "standard_name": "atmosphere_ln_pressure_coordinate", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "p = p0 * exp(-lev)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "axis": "Z"
+        }, 
+        "hybrid_height": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "a: lev b: b orog: orog", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "value": "", 
+            "z_bounds_factors": "a: lev_bnds b: b_bnds orog: orog", 
+            "long_name": "hybrid height coordinate", 
+            "standard_name": "atmosphere_hybrid_height_coordinate", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "m", 
+            "formula": "z = a + b*orog", 
+            "climatology": "", 
+            "tolerance": "", 
+            "axis": "Z"
+        }, 
+        "longitude": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "value": "", 
+            "z_bounds_factors": "", 
+            "long_name": "longitude", 
+            "standard_name": "longitude", 
+            "out_name": "lon", 
+            "type": "double", 
+            "units": "degrees_east", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "axis": "X"
+        }, 
+        "time": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "value": "", 
+            "z_bounds_factors": "", 
+            "long_name": "time", 
+            "standard_name": "time", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "axis": "T"
+        }, 
+        "ocean_double_sigma": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "sigma: sigma depth: depth z1: z1 z2: z2 a: a_coeff href: href k_c: k_c", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "value": "", 
+            "z_bounds_factors": "sigma: sigma_bnds depth: depth z1: z1 z2: z2 a: a href: href k_c: k_c", 
+            "long_name": "ocean double sigma coordinate", 
+            "standard_name": "ocean_double_sigma", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "for k <= k_c:\n z(k,j,i)= sigma(k)*f(j,i) \n for k > k_c:\n z(k,j,i)= f(j,i) + (sigma(k)-1)*(depth(j,i)-f(j,i)) \n f(j,i)= 0.5*(z1+ z2) + 0.5*(z1-z2)* tanh(2*a/(z1-z2)*(depth(j,i)-href))", 
+            "climatology": "", 
+            "tolerance": "", 
+            "axis": "Z"
+        }, 
+        "plevs": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "value": "", 
+            "z_bounds_factors": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "axis": "Z"
+        }, 
+        "standard_hybrid_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "p0: p0 a: a b: b ps: ps", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "value": "", 
+            "z_bounds_factors": "p0: p0 a: a_bnds b: b_bnds ps: ps", 
+            "long_name": "hybrid sigma pressure coordinate", 
+            "standard_name": "atmosphere_hybrid_sigma_pressure_coordinate", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "1", 
+            "formula": "p = a*p0 + b*ps", 
+            "climatology": "", 
+            "tolerance": "", 
+            "axis": "Z"
+        }
+    }, 
+    "variable_entry": {
+        "sci": {
+            "comment": "Fraction of time that shallow convection occurs in the grid cell.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "long_name": "Fraction of Time Shallow Convection Occurs", 
+            "standard_name": "shallow_convection_time_fraction", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "1", 
+            "out_name": "sci", 
+            "type": "real", 
+        }, 
+        "depth_c": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: depth_c", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "tro3": {
+            "comment": "", 
+            "dimensions": "longitude latitude plevs time", 
+            "positive": "", 
+            "long_name": "Mole Fraction of O3", 
+            "standard_name": "mole_fraction_of_ozone_in_air", 
+            "modeling_realm": "atmos atmosChem", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "0.000000001", 
+            "out_name": "tro3", 
+            "type": "real", 
+        }, 
+        "rsutcs": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "TOA Outgoing Clear-Sky Shortwave Radiation", 
+            "standard_name": "toa_outgoing_shortwave_flux_assuming_clear_sky", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "rsutcs", 
+            "type": "real", 
+        }, 
+        "rldscs": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "down", 
+            "long_name": "Surface Downwelling Clear-Sky Longwave Radiation", 
+            "standard_name": "surface_downwelling_longwave_flux_in_air_assuming_clear_sky", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "rldscs", 
+            "type": "real", 
+        }, 
+        "n2oglobal": {
+            "comment": "", 
+            "dimensions": "time", 
+            "positive": "", 
+            "long_name": "Global Mean Mole Fraction of N2O", 
+            "standard_name": "mole_fraction_of_nitrous_oxide_in_air", 
+            "modeling_realm": "atmos atmosChem", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "", 
+            "units": "0.000000001", 
+            "out_name": "n2oglobal", 
+            "type": "real", 
+        }, 
+        "cli": {
+            "comment": "Includes both large-scale and convective cloud. This is the mass of  cloud ice  in the grid cell divided by the mass of air (including the water in all phases) in the grid cell.  This includes precipitating hydrometeors ONLY if the precipitating hydrometeors affect the calculation of radiative transfer in model.", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "long_name": "Mass Fraction of Cloud Ice", 
+            "standard_name": "mass_fraction_of_cloud_ice_in_air", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "1", 
+            "out_name": "cli", 
+            "type": "real", 
+        }, 
+        "ts": {
+            "comment": "''skin'' temperature (i.e., SST for open ocean)", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "long_name": "Surface Temperature", 
+            "standard_name": "surface_temperature", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "K", 
+            "out_name": "ts", 
+            "type": "real", 
+        }, 
+        "clt": {
+            "comment": "For the whole atmospheric column, as seen from the surface or the top of the atmosphere. Include both large-scale and convective cloud.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "long_name": "Total Cloud Fraction", 
+            "standard_name": "cloud_area_fraction", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "%", 
+            "out_name": "clt", 
+            "type": "real", 
+        }, 
+        "clw": {
+            "comment": "Includes both large-scale and convective cloud.  This is the mass of  cloud liquid water in the grid cell divided by the mass of air (including the water in all phases) in the grid cell.  This includes precipitating hydrometeors ONLY if the precipitating hydrometeors affect the calculation of radiative transfer in model.", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "long_name": "Mass Fraction of Cloud Liquid Water", 
+            "standard_name": "mass_fraction_of_cloud_liquid_water_in_air", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "1", 
+            "out_name": "clw", 
+            "type": "real", 
+        }, 
+        "ta": {
+            "comment": "", 
+            "dimensions": "longitude latitude plevs time", 
+            "positive": "", 
+            "long_name": "Air Temperature", 
+            "standard_name": "air_temperature", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "K", 
+            "out_name": "ta", 
+            "type": "real", 
+        }, 
+        "psl": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "long_name": "Sea Level Pressure", 
+            "standard_name": "air_pressure_at_sea_level", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "Pa", 
+            "out_name": "psl", 
+            "type": "real", 
+        }, 
+        "nsigma": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: nsigma", 
+            "type": "integer", 
+            "dimensions": ""
+        }, 
+        "co2Clim": {
+            "comment": "", 
+            "dimensions": "longitude latitude plevs time2", 
+            "positive": "", 
+            "long_name": "Mole Fraction of CO2", 
+            "standard_name": "mole_fraction_of_carbon_dioxide_in_air", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean within years time: mean over years", 
+            "cell_methods": "area: areacella", 
+            "units": "0.000001", 
+            "out_name": "co2Clim", 
+            "type": "real", 
+        }, 
+        "sfcWind": {
+            "comment": "near-surface (usually, 10 meters) wind speed.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "long_name": "Near-Surface Wind Speed", 
+            "standard_name": "wind_speed", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "", 
+            "units": "m s-1", 
+            "out_name": "sfcWind", 
+            "type": "real", 
+        }, 
+        "ch4Clim": {
+            "comment": "", 
+            "dimensions": "longitude latitude plevs time2", 
+            "positive": "", 
+            "long_name": "Mole Fraction of CH4", 
+            "standard_name": "mole_fraction_of_methane_in_air", 
+            "modeling_realm": "atmos atmosChem", 
+            "cell_measures": "time: mean within years time: mean over years", 
+            "cell_methods": "area: areacella", 
+            "units": "0.000000001", 
+            "out_name": "ch4Clim", 
+            "type": "real", 
+        }, 
+        "clwvi": {
+            "comment": "Mass of condensed (liquid + ice) water in the column divided by the area of the column (not just the area of the cloudy portion of the column). Includes precipitating hydrometeors ONLY if the precipitating hydrometeors affect the calculation of radiative transfer in model.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "long_name": "Condensed Water Path", 
+            "standard_name": "atmosphere_cloud_condensed_water_content", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "kg m-2", 
+            "out_name": "clwvi", 
+            "type": "real", 
+        }, 
+        "rsdscs": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "down", 
+            "long_name": "Surface Downwelling Clear-Sky Shortwave Radiation", 
+            "standard_name": "surface_downwelling_shortwave_flux_in_air_assuming_clear_sky", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "rsdscs", 
+            "type": "real", 
+        }, 
+        "huss": {
+            "comment": "near-surface (usually, 2 meter) specific humidity.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "long_name": "Near-Surface Specific Humidity", 
+            "standard_name": "specific_humidity", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "1", 
+            "out_name": "huss", 
+            "type": "real", 
+        }, 
+        "rtmt": {
+            "comment": "i.e., at the top of that portion of the atmosphere where dynamics are explicitly treated by the model. This is reported only if it differs from the net downward radiative flux at the top of the atmosphere.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "down", 
+            "long_name": "Net Downward Flux at Top of Model", 
+            "standard_name": "net_downward_radiative_flux_at_top_of_atmosphere_model", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "rtmt", 
+            "type": "real", 
+        }, 
+        "evspsbl": {
+            "comment": "at surface; flux of water into the atmosphere due to conversion of both liquid and solid phases to vapor (from underlying surface and vegetation)", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "long_name": "Evaporation", 
+            "standard_name": "water_evaporation_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "kg m-2 s-1", 
+            "out_name": "evspsbl", 
+            "type": "real", 
+        }, 
+        "a_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: a(k+1/2)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "co2": {
+            "comment": "", 
+            "dimensions": "longitude latitude plevs time", 
+            "positive": "", 
+            "long_name": "Mole Fraction of CO2", 
+            "standard_name": "mole_fraction_of_carbon_dioxide_in_air", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "0.000001", 
+            "out_name": "co2", 
+            "type": "real", 
+        }, 
+        "cfc11global": {
+            "comment": "", 
+            "dimensions": "time", 
+            "positive": "", 
+            "long_name": "Global Mean Mole Fraction of CFC11", 
+            "standard_name": "mole_fraction_of_cfc11_in_air", 
+            "modeling_realm": "atmos atmosChem", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "", 
+            "units": "1E-012", 
+            "out_name": "cfc11global", 
+            "type": "real", 
+        }, 
+        "rlds": {
+            "comment": "This is the 3-hour mean flux.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "down", 
+            "long_name": "Surface Downwelling Longwave Radiation", 
+            "standard_name": "surface_downwelling_longwave_flux_in_air", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "rlds", 
+            "type": "real", 
+        }, 
+        "sigma_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: sigma(k+1/2)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "ch4globalClim": {
+            "comment": "", 
+            "dimensions": "time2", 
+            "positive": "", 
+            "long_name": "Global Mean Mole Fraction of CH4", 
+            "standard_name": "mole_fraction_of_methane_in_air", 
+            "modeling_realm": "atmos atmosChem", 
+            "cell_measures": "time: mean within years time: mean over years", 
+            "cell_methods": "", 
+            "units": "0.000000001", 
+            "out_name": "ch4globalClim", 
+            "type": "real", 
+        }, 
+        "tauv": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "down", 
+            "long_name": "Surface Downward Northward Wind Stress", 
+            "standard_name": "surface_downward_northward_stress", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "", 
+            "units": "Pa", 
+            "out_name": "tauv", 
+            "type": "real", 
+        }, 
+        "rlut": {
+            "comment": "at the top of the atmosphere.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "TOA Outgoing Longwave Radiation", 
+            "standard_name": "toa_outgoing_longwave_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "rlut", 
+            "type": "real", 
+        }, 
+        "rsdt": {
+            "comment": "at the top of the atmosphere", 
+            "dimensions": "longitude latitude time", 
+            "positive": "down", 
+            "long_name": "TOA Incident Shortwave Radiation", 
+            "standard_name": "toa_incoming_shortwave_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "rsdt", 
+            "type": "real", 
+        }, 
+        "rsds": {
+            "comment": "This is the 3-hour mean flux.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "down", 
+            "long_name": "Surface Downwelling Shortwave Radiation", 
+            "standard_name": "surface_downwelling_shortwave_flux_in_air", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "rsds", 
+            "type": "real", 
+        }, 
+        "z1": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: z1", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "sbl": {
+            "comment": "The snow and ice sublimation flux is the loss of snow and ice mass from the surface resulting from their conversion to water vapor that enters the atmosphere.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "long_name": "Surface Snow and Ice Sublimation Flux", 
+            "standard_name": "surface_snow_and_ice_sublimation_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "kg m-2 s-1", 
+            "out_name": "sbl", 
+            "type": "real", 
+        }, 
+        "cfc113global": {
+            "comment": "", 
+            "dimensions": "time", 
+            "positive": "", 
+            "long_name": "Global Mean Mole Fraction of CFC113", 
+            "standard_name": "mole_fraction_of_cfc113_in_air", 
+            "modeling_realm": "atmos atmosChem", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "", 
+            "units": "1E-012", 
+            "out_name": "cfc113global", 
+            "type": "real", 
+        }, 
+        "rsus": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upwelling Shortwave Radiation", 
+            "standard_name": "surface_upwelling_shortwave_flux_in_air", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "rsus", 
+            "type": "real", 
+        }, 
+        "cfc12global": {
+            "comment": "", 
+            "dimensions": "time", 
+            "positive": "", 
+            "long_name": "Global Mean Mole Fraction of CFC12", 
+            "standard_name": "mole_fraction_of_cfc12_in_air", 
+            "modeling_realm": "atmos atmosChem", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "", 
+            "units": "1E-012", 
+            "out_name": "cfc12global", 
+            "type": "real", 
+        }, 
+        "rsut": {
+            "comment": "at the top of the atmosphere", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "TOA Outgoing Shortwave Radiation", 
+            "standard_name": "toa_outgoing_shortwave_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "rsut", 
+            "type": "real", 
+        }, 
+        "ci": {
+            "comment": "Fraction of time that convection occurs in the grid cell .", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "long_name": "Fraction of Time Convection Occurs", 
+            "standard_name": "convection_time_fraction", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "1", 
+            "out_name": "ci", 
+            "type": "real", 
+        }, 
+        "n2oClim": {
+            "comment": "", 
+            "dimensions": "longitude latitude plevs time2", 
+            "positive": "", 
+            "long_name": "Mole Fraction of N2O", 
+            "standard_name": "mole_fraction_of_nitrous_oxide_in_air", 
+            "modeling_realm": "atmos atmosChem", 
+            "cell_measures": "time: mean within years time: mean over years", 
+            "cell_methods": "area: areacella", 
+            "units": "0.000000001", 
+            "out_name": "n2oClim", 
+            "type": "real", 
+        }, 
+        "co2massClim": {
+            "comment": "", 
+            "dimensions": "time2", 
+            "positive": "", 
+            "long_name": "Total Atmospheric Mass of CO2", 
+            "standard_name": "atmosphere_mass_of_carbon_dioxide", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean within years time: mean over years", 
+            "cell_methods": "", 
+            "units": "kg", 
+            "out_name": "co2massClim", 
+            "type": "real", 
+        }, 
+        "cl": {
+            "comment": "Includes both large-scale and convective cloud.", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "long_name": "Cloud Area Fraction", 
+            "standard_name": "cloud_area_fraction_in_atmosphere_layer", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "%", 
+            "out_name": "cl", 
+            "type": "real", 
+        }, 
+        "n2oglobalClim": {
+            "comment": "", 
+            "dimensions": "time2", 
+            "positive": "", 
+            "long_name": "Global Mean Mole Fraction of N2O", 
+            "standard_name": "mole_fraction_of_nitrous_oxide_in_air", 
+            "modeling_realm": "atmos atmosChem", 
+            "cell_measures": "time: mean within years time: mean over years", 
+            "cell_methods": "", 
+            "units": "0.000000001", 
+            "out_name": "n2oglobalClim", 
+            "type": "real", 
+        }, 
+        "rlutcs": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "TOA Outgoing Clear-Sky Longwave Radiation", 
+            "standard_name": "toa_outgoing_longwave_flux_assuming_clear_sky", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "rlutcs", 
+            "type": "real", 
+        }, 
+        "href": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: href", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+
+
+        "hfls0": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls0", 
+            "type": "real", 
+        }, 
+
+        "hfls1": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls1", 
+            "type": "real", 
+        }, 
+
+        "hfls2": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls2", 
+            "type": "real", 
+        }, 
+
+        "hfls3": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls3", 
+            "type": "real", 
+        }, 
+
+        "hfls4": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls4", 
+            "type": "real", 
+        }, 
+
+        "hfls5": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls5", 
+            "type": "real", 
+        }, 
+
+        "hfls6": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls6", 
+            "type": "real", 
+        }, 
+
+        "hfls7": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls7", 
+            "type": "real", 
+        }, 
+
+        "hfls8": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls8", 
+            "type": "real", 
+        }, 
+
+        "hfls9": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls9", 
+            "type": "real", 
+        }, 
+
+        "hfls10": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls10", 
+            "type": "real", 
+        }, 
+
+        "hfls11": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls11", 
+            "type": "real", 
+        }, 
+
+        "hfls12": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls12", 
+            "type": "real", 
+        }, 
+
+        "hfls13": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls13", 
+            "type": "real", 
+        }, 
+
+        "hfls14": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls14", 
+            "type": "real", 
+        }, 
+
+        "hfls15": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls15", 
+            "type": "real", 
+        }, 
+
+        "hfls16": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls16", 
+            "type": "real", 
+        }, 
+
+        "hfls17": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls17", 
+            "type": "real", 
+        }, 
+
+        "hfls18": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls18", 
+            "type": "real", 
+        }, 
+
+        "hfls19": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls19", 
+            "type": "real", 
+        }, 
+
+        "hfls20": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls20", 
+            "type": "real", 
+        }, 
+
+        "hfls21": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls21", 
+            "type": "real", 
+        }, 
+
+        "hfls22": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls22", 
+            "type": "real", 
+        }, 
+
+        "hfls23": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls23", 
+            "type": "real", 
+        }, 
+
+        "hfls24": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls24", 
+            "type": "real", 
+        }, 
+
+        "hfls25": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls25", 
+            "type": "real", 
+        }, 
+
+        "hfls26": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls26", 
+            "type": "real", 
+        }, 
+
+        "hfls27": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls27", 
+            "type": "real", 
+        }, 
+
+        "hfls28": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls28", 
+            "type": "real", 
+        }, 
+
+        "hfls29": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls29", 
+            "type": "real", 
+        }, 
+
+        "hfls30": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls30", 
+            "type": "real", 
+        }, 
+
+        "hfls31": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls31", 
+            "type": "real", 
+        }, 
+
+        "hfls32": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls32", 
+            "type": "real", 
+        }, 
+
+        "hfls33": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls33", 
+            "type": "real", 
+        }, 
+
+        "hfls34": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls34", 
+            "type": "real", 
+        }, 
+
+        "hfls35": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls35", 
+            "type": "real", 
+        }, 
+
+        "hfls36": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls36", 
+            "type": "real", 
+        }, 
+
+        "hfls37": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls37", 
+            "type": "real", 
+        }, 
+
+        "hfls38": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls38", 
+            "type": "real", 
+        }, 
+
+        "hfls39": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls39", 
+            "type": "real", 
+        }, 
+
+        "hfls40": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls40", 
+            "type": "real", 
+        }, 
+
+        "hfls41": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls41", 
+            "type": "real", 
+        }, 
+
+        "hfls42": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls42", 
+            "type": "real", 
+        }, 
+
+        "hfls43": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls43", 
+            "type": "real", 
+        }, 
+
+        "hfls44": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls44", 
+            "type": "real", 
+        }, 
+
+        "hfls45": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls45", 
+            "type": "real", 
+        }, 
+
+        "hfls46": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls46", 
+            "type": "real", 
+        }, 
+
+        "hfls47": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls47", 
+            "type": "real", 
+        }, 
+
+        "hfls48": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls48", 
+            "type": "real", 
+        }, 
+
+        "hfls49": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls49", 
+            "type": "real", 
+        }, 
+
+        "hfls50": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls50", 
+            "type": "real", 
+        }, 
+
+        "hfls51": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls51", 
+            "type": "real", 
+        }, 
+
+        "hfls52": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls52", 
+            "type": "real", 
+        }, 
+
+        "hfls53": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls53", 
+            "type": "real", 
+        }, 
+
+        "hfls54": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls54", 
+            "type": "real", 
+        }, 
+
+        "hfls55": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls55", 
+            "type": "real", 
+        }, 
+
+        "hfls56": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls56", 
+            "type": "real", 
+        }, 
+
+        "hfls57": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls57", 
+            "type": "real", 
+        }, 
+
+        "hfls58": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls58", 
+            "type": "real", 
+        }, 
+
+        "hfls59": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls59", 
+            "type": "real", 
+        }, 
+
+        "hfls60": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls60", 
+            "type": "real", 
+        }, 
+
+        "hfls61": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls61", 
+            "type": "real", 
+        }, 
+
+        "hfls62": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls62", 
+            "type": "real", 
+        }, 
+
+        "hfls63": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls63", 
+            "type": "real", 
+        }, 
+
+        "hfls64": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls64", 
+            "type": "real", 
+        }, 
+
+        "hfls65": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls65", 
+            "type": "real", 
+        }, 
+
+        "hfls66": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls66", 
+            "type": "real", 
+        }, 
+
+        "hfls67": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls67", 
+            "type": "real", 
+        }, 
+
+        "hfls68": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls68", 
+            "type": "real", 
+        }, 
+
+        "hfls69": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls69", 
+            "type": "real", 
+        }, 
+
+        "hfls70": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls70", 
+            "type": "real", 
+        }, 
+
+        "hfls71": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls71", 
+            "type": "real", 
+        }, 
+
+        "hfls72": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls72", 
+            "type": "real", 
+        }, 
+
+        "hfls73": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls73", 
+            "type": "real", 
+        }, 
+
+        "hfls74": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls74", 
+            "type": "real", 
+        }, 
+
+        "hfls75": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls75", 
+            "type": "real", 
+        }, 
+
+        "hfls76": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls76", 
+            "type": "real", 
+        }, 
+
+        "hfls77": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls77", 
+            "type": "real", 
+        }, 
+
+        "hfls78": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls78", 
+            "type": "real", 
+        }, 
+
+        "hfls79": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls79", 
+            "type": "real", 
+        }, 
+
+        "hfls80": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls80", 
+            "type": "real", 
+        }, 
+
+        "hfls81": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls81", 
+            "type": "real", 
+        }, 
+
+        "hfls82": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls82", 
+            "type": "real", 
+        }, 
+
+        "hfls83": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls83", 
+            "type": "real", 
+        }, 
+
+        "hfls84": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls84", 
+            "type": "real", 
+        }, 
+
+        "hfls85": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls85", 
+            "type": "real", 
+        }, 
+
+        "hfls86": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls86", 
+            "type": "real", 
+        }, 
+
+        "hfls87": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls87", 
+            "type": "real", 
+        }, 
+
+        "hfls88": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls88", 
+            "type": "real", 
+        }, 
+
+        "hfls89": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls89", 
+            "type": "real", 
+        }, 
+
+        "hfls90": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls90", 
+            "type": "real", 
+        }, 
+
+        "hfls91": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls91", 
+            "type": "real", 
+        }, 
+
+        "hfls92": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls92", 
+            "type": "real", 
+        }, 
+
+        "hfls93": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls93", 
+            "type": "real", 
+        }, 
+
+        "hfls94": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls94", 
+            "type": "real", 
+        }, 
+
+        "hfls95": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls95", 
+            "type": "real", 
+        }, 
+
+        "hfls96": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls96", 
+            "type": "real", 
+        }, 
+
+        "hfls97": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls97", 
+            "type": "real", 
+        }, 
+
+        "hfls98": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls98", 
+            "type": "real", 
+        }, 
+
+        "hfls99": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls99", 
+            "type": "real", 
+        }, 
+
+        "hfls100": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls100", 
+            "type": "real", 
+        }, 
+
+        "hfls101": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls101", 
+            "type": "real", 
+        }, 
+
+        "hfls102": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls102", 
+            "type": "real", 
+        }, 
+
+        "hfls103": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls103", 
+            "type": "real", 
+        }, 
+
+        "hfls104": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls104", 
+            "type": "real", 
+        }, 
+
+        "hfls105": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls105", 
+            "type": "real", 
+        }, 
+
+        "hfls106": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls106", 
+            "type": "real", 
+        }, 
+
+        "hfls107": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls107", 
+            "type": "real", 
+        }, 
+
+        "hfls108": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls108", 
+            "type": "real", 
+        }, 
+
+        "hfls109": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls109", 
+            "type": "real", 
+        }, 
+
+        "hfls110": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls110", 
+            "type": "real", 
+        }, 
+
+        "hfls111": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls111", 
+            "type": "real", 
+        }, 
+
+        "hfls112": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls112", 
+            "type": "real", 
+        }, 
+
+        "hfls113": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls113", 
+            "type": "real", 
+        }, 
+
+        "hfls114": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls114", 
+            "type": "real", 
+        }, 
+
+        "hfls115": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls115", 
+            "type": "real", 
+        }, 
+
+        "hfls116": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls116", 
+            "type": "real", 
+        }, 
+
+        "hfls117": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls117", 
+            "type": "real", 
+        }, 
+
+        "hfls118": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls118", 
+            "type": "real", 
+        }, 
+
+        "hfls119": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls119", 
+            "type": "real", 
+        }, 
+
+        "hfls120": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls120", 
+            "type": "real", 
+        }, 
+
+        "hfls121": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls121", 
+            "type": "real", 
+        }, 
+
+        "hfls122": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls122", 
+            "type": "real", 
+        }, 
+
+        "hfls123": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls123", 
+            "type": "real", 
+        }, 
+
+        "hfls124": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls124", 
+            "type": "real", 
+        }, 
+
+        "hfls125": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls125", 
+            "type": "real", 
+        }, 
+
+        "hfls126": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls126", 
+            "type": "real", 
+        }, 
+
+        "hfls127": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls127", 
+            "type": "real", 
+        }, 
+
+        "hfls128": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls128", 
+            "type": "real", 
+        }, 
+
+        "hfls129": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls129", 
+            "type": "real", 
+        }, 
+
+        "hfls130": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls130", 
+            "type": "real", 
+        }, 
+
+        "hfls131": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls131", 
+            "type": "real", 
+        }, 
+
+        "hfls132": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls132", 
+            "type": "real", 
+        }, 
+
+        "hfls133": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls133", 
+            "type": "real", 
+        }, 
+
+        "hfls134": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls134", 
+            "type": "real", 
+        }, 
+
+        "hfls135": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls135", 
+            "type": "real", 
+        }, 
+
+        "hfls136": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls136", 
+            "type": "real", 
+        }, 
+
+        "hfls137": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls137", 
+            "type": "real", 
+        }, 
+
+        "hfls138": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls138", 
+            "type": "real", 
+        }, 
+
+        "hfls139": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls139", 
+            "type": "real", 
+        }, 
+
+        "hfls140": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls140", 
+            "type": "real", 
+        }, 
+
+        "hfls141": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls141", 
+            "type": "real", 
+        }, 
+
+        "hfls142": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls142", 
+            "type": "real", 
+        }, 
+
+        "hfls143": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls143", 
+            "type": "real", 
+        }, 
+
+        "hfls144": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls144", 
+            "type": "real", 
+        }, 
+
+        "hfls145": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls145", 
+            "type": "real", 
+        }, 
+
+        "hfls146": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls146", 
+            "type": "real", 
+        }, 
+
+        "hfls147": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls147", 
+            "type": "real", 
+        }, 
+
+        "hfls148": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls148", 
+            "type": "real", 
+        }, 
+
+        "hfls149": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls149", 
+            "type": "real", 
+        }, 
+
+        "hfls150": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls150", 
+            "type": "real", 
+        }, 
+
+        "hfls151": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls151", 
+            "type": "real", 
+        }, 
+
+        "hfls152": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls152", 
+            "type": "real", 
+        }, 
+
+        "hfls153": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls153", 
+            "type": "real", 
+        }, 
+
+        "hfls154": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls154", 
+            "type": "real", 
+        }, 
+
+        "hfls155": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls155", 
+            "type": "real", 
+        }, 
+
+        "hfls156": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls156", 
+            "type": "real", 
+        }, 
+
+        "hfls157": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls157", 
+            "type": "real", 
+        }, 
+
+        "hfls158": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls158", 
+            "type": "real", 
+        }, 
+
+        "hfls159": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls159", 
+            "type": "real", 
+        }, 
+
+        "hfls160": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls160", 
+            "type": "real", 
+        }, 
+
+        "hfls161": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls161", 
+            "type": "real", 
+        }, 
+
+        "hfls162": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls162", 
+            "type": "real", 
+        }, 
+
+        "hfls163": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls163", 
+            "type": "real", 
+        }, 
+
+        "hfls164": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls164", 
+            "type": "real", 
+        }, 
+
+        "hfls165": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls165", 
+            "type": "real", 
+        }, 
+
+        "hfls166": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls166", 
+            "type": "real", 
+        }, 
+
+        "hfls167": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls167", 
+            "type": "real", 
+        }, 
+
+        "hfls168": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls168", 
+            "type": "real", 
+        }, 
+
+        "hfls169": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls169", 
+            "type": "real", 
+        }, 
+
+        "hfls170": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls170", 
+            "type": "real", 
+        }, 
+
+        "hfls171": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls171", 
+            "type": "real", 
+        }, 
+
+        "hfls172": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls172", 
+            "type": "real", 
+        }, 
+
+        "hfls173": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls173", 
+            "type": "real", 
+        }, 
+
+        "hfls174": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls174", 
+            "type": "real", 
+        }, 
+
+        "hfls175": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls175", 
+            "type": "real", 
+        }, 
+
+        "hfls176": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls176", 
+            "type": "real", 
+        }, 
+
+        "hfls177": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls177", 
+            "type": "real", 
+        }, 
+
+        "hfls178": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls178", 
+            "type": "real", 
+        }, 
+
+        "hfls179": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls179", 
+            "type": "real", 
+        }, 
+
+        "hfls180": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls180", 
+            "type": "real", 
+        }, 
+
+        "hfls181": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls181", 
+            "type": "real", 
+        }, 
+
+        "hfls182": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls182", 
+            "type": "real", 
+        }, 
+
+        "hfls183": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls183", 
+            "type": "real", 
+        }, 
+
+        "hfls184": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls184", 
+            "type": "real", 
+        }, 
+
+        "hfls185": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls185", 
+            "type": "real", 
+        }, 
+
+        "hfls186": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls186", 
+            "type": "real", 
+        }, 
+
+        "hfls187": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls187", 
+            "type": "real", 
+        }, 
+
+        "hfls188": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls188", 
+            "type": "real", 
+        }, 
+
+        "hfls189": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls189", 
+            "type": "real", 
+        }, 
+
+        "hfls190": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls190", 
+            "type": "real", 
+        }, 
+
+        "hfls191": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls191", 
+            "type": "real", 
+        }, 
+
+        "hfls192": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls192", 
+            "type": "real", 
+        }, 
+
+        "hfls193": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls193", 
+            "type": "real", 
+        }, 
+
+        "hfls194": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls194", 
+            "type": "real", 
+        }, 
+
+        "hfls195": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls195", 
+            "type": "real", 
+        }, 
+
+        "hfls196": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls196", 
+            "type": "real", 
+        }, 
+
+        "hfls197": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls197", 
+            "type": "real", 
+        }, 
+
+        "hfls198": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls198", 
+            "type": "real", 
+        }, 
+
+        "hfls199": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls199", 
+            "type": "real", 
+        }, 
+
+        "hfls200": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls200", 
+            "type": "real", 
+        }, 
+
+        "hfls201": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls201", 
+            "type": "real", 
+        }, 
+
+        "hfls202": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls202", 
+            "type": "real", 
+        }, 
+
+        "hfls203": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls203", 
+            "type": "real", 
+        }, 
+
+        "hfls204": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls204", 
+            "type": "real", 
+        }, 
+
+        "hfls205": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls205", 
+            "type": "real", 
+        }, 
+
+        "hfls206": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls206", 
+            "type": "real", 
+        }, 
+
+        "hfls207": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls207", 
+            "type": "real", 
+        }, 
+
+        "hfls208": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls208", 
+            "type": "real", 
+        }, 
+
+        "hfls209": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls209", 
+            "type": "real", 
+        }, 
+
+        "hfls210": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls210", 
+            "type": "real", 
+        }, 
+
+        "hfls211": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls211", 
+            "type": "real", 
+        }, 
+
+        "hfls212": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls212", 
+            "type": "real", 
+        }, 
+
+        "hfls213": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls213", 
+            "type": "real", 
+        }, 
+
+        "hfls214": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls214", 
+            "type": "real", 
+        }, 
+
+        "hfls215": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls215", 
+            "type": "real", 
+        }, 
+
+        "hfls216": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls216", 
+            "type": "real", 
+        }, 
+
+        "hfls217": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls217", 
+            "type": "real", 
+        }, 
+
+        "hfls218": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls218", 
+            "type": "real", 
+        }, 
+
+        "hfls219": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls219", 
+            "type": "real", 
+        }, 
+
+        "hfls220": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls220", 
+            "type": "real", 
+        }, 
+
+        "hfls221": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls221", 
+            "type": "real", 
+        }, 
+
+        "hfls222": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls222", 
+            "type": "real", 
+        }, 
+
+        "hfls223": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls223", 
+            "type": "real", 
+        }, 
+
+        "hfls224": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls224", 
+            "type": "real", 
+        }, 
+
+        "hfls225": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls225", 
+            "type": "real", 
+        }, 
+
+        "hfls226": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls226", 
+            "type": "real", 
+        }, 
+
+        "hfls227": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls227", 
+            "type": "real", 
+        }, 
+
+        "hfls228": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls228", 
+            "type": "real", 
+        }, 
+
+        "hfls229": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls229", 
+            "type": "real", 
+        }, 
+
+        "hfls230": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls230", 
+            "type": "real", 
+        }, 
+
+        "hfls231": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls231", 
+            "type": "real", 
+        }, 
+
+        "hfls232": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls232", 
+            "type": "real", 
+        }, 
+
+        "hfls233": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls233", 
+            "type": "real", 
+        }, 
+
+        "hfls234": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls234", 
+            "type": "real", 
+        }, 
+
+        "hfls235": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls235", 
+            "type": "real", 
+        }, 
+
+        "hfls236": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls236", 
+            "type": "real", 
+        }, 
+
+        "hfls237": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls237", 
+            "type": "real", 
+        }, 
+
+        "hfls238": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls238", 
+            "type": "real", 
+        }, 
+
+        "hfls239": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls239", 
+            "type": "real", 
+        }, 
+
+        "hfls240": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls240", 
+            "type": "real", 
+        }, 
+
+        "hfls241": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls241", 
+            "type": "real", 
+        }, 
+
+        "hfls242": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls242", 
+            "type": "real", 
+        }, 
+
+        "hfls243": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls243", 
+            "type": "real", 
+        }, 
+
+        "hfls244": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls244", 
+            "type": "real", 
+        }, 
+
+        "hfls245": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls245", 
+            "type": "real", 
+        }, 
+
+        "hfls246": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls246", 
+            "type": "real", 
+        }, 
+
+        "hfls247": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls247", 
+            "type": "real", 
+        }, 
+
+        "hfls248": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls248", 
+            "type": "real", 
+        }, 
+
+        "hfls249": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls249", 
+            "type": "real", 
+        }, 
+
+        "hfls250": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls250", 
+            "type": "real", 
+        }, 
+
+        "hfls251": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls251", 
+            "type": "real", 
+        }, 
+
+        "hfls252": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls252", 
+            "type": "real", 
+        }, 
+
+        "hfls253": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls253", 
+            "type": "real", 
+        }, 
+
+        "hfls254": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls254", 
+            "type": "real", 
+        }, 
+
+        "hfls255": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls255", 
+            "type": "real", 
+        }, 
+
+        "hfls256": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls256", 
+            "type": "real", 
+        }, 
+
+        "hfls257": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls257", 
+            "type": "real", 
+        }, 
+
+        "hfls258": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls258", 
+            "type": "real", 
+        }, 
+
+        "hfls259": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls259", 
+            "type": "real", 
+        }, 
+
+        "hfls260": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls260", 
+            "type": "real", 
+        }, 
+
+        "hfls261": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls261", 
+            "type": "real", 
+        }, 
+
+        "hfls262": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls262", 
+            "type": "real", 
+        }, 
+
+        "hfls263": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls263", 
+            "type": "real", 
+        }, 
+
+        "hfls264": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls264", 
+            "type": "real", 
+        }, 
+
+        "hfls265": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls265", 
+            "type": "real", 
+        }, 
+
+        "hfls266": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls266", 
+            "type": "real", 
+        }, 
+
+        "hfls267": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls267", 
+            "type": "real", 
+        }, 
+
+        "hfls268": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls268", 
+            "type": "real", 
+        }, 
+
+        "hfls269": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls269", 
+            "type": "real", 
+        }, 
+
+        "hfls270": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls270", 
+            "type": "real", 
+        }, 
+
+        "hfls271": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls271", 
+            "type": "real", 
+        }, 
+
+        "hfls272": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls272", 
+            "type": "real", 
+        }, 
+
+        "hfls273": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls273", 
+            "type": "real", 
+        }, 
+
+        "hfls274": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls274", 
+            "type": "real", 
+        }, 
+
+        "hfls275": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls275", 
+            "type": "real", 
+        }, 
+
+        "hfls276": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls276", 
+            "type": "real", 
+        }, 
+
+        "hfls277": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls277", 
+            "type": "real", 
+        }, 
+
+        "hfls278": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls278", 
+            "type": "real", 
+        }, 
+
+        "hfls279": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls279", 
+            "type": "real", 
+        }, 
+
+        "hfls280": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls280", 
+            "type": "real", 
+        }, 
+
+        "hfls281": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls281", 
+            "type": "real", 
+        }, 
+
+        "hfls282": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls282", 
+            "type": "real", 
+        }, 
+
+        "hfls283": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls283", 
+            "type": "real", 
+        }, 
+
+        "hfls284": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls284", 
+            "type": "real", 
+        }, 
+
+        "hfls285": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls285", 
+            "type": "real", 
+        }, 
+
+        "hfls286": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls286", 
+            "type": "real", 
+        }, 
+
+        "hfls287": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls287", 
+            "type": "real", 
+        }, 
+
+        "hfls288": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls288", 
+            "type": "real", 
+        }, 
+
+        "hfls289": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls289", 
+            "type": "real", 
+        }, 
+
+        "hfls290": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls290", 
+            "type": "real", 
+        }, 
+
+        "hfls291": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls291", 
+            "type": "real", 
+        }, 
+
+        "hfls292": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls292", 
+            "type": "real", 
+        }, 
+
+        "hfls293": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls293", 
+            "type": "real", 
+        }, 
+
+        "hfls294": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls294", 
+            "type": "real", 
+        }, 
+
+        "hfls295": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls295", 
+            "type": "real", 
+        }, 
+
+        "hfls296": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls296", 
+            "type": "real", 
+        }, 
+
+        "hfls297": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls297", 
+            "type": "real", 
+        }, 
+
+        "hfls298": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls298", 
+            "type": "real", 
+        }, 
+
+        "hfls299": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls299", 
+            "type": "real", 
+        }, 
+
+        "hfls300": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls300", 
+            "type": "real", 
+        }, 
+
+        "hfls301": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls301", 
+            "type": "real", 
+        }, 
+
+        "hfls302": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls302", 
+            "type": "real", 
+        }, 
+
+        "hfls303": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls303", 
+            "type": "real", 
+        }, 
+
+        "hfls304": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls304", 
+            "type": "real", 
+        }, 
+
+        "hfls305": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls305", 
+            "type": "real", 
+        }, 
+
+        "hfls306": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls306", 
+            "type": "real", 
+        }, 
+
+        "hfls307": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls307", 
+            "type": "real", 
+        }, 
+
+        "hfls308": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls308", 
+            "type": "real", 
+        }, 
+
+        "hfls309": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls309", 
+            "type": "real", 
+        }, 
+
+        "hfls310": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls310", 
+            "type": "real", 
+        }, 
+
+        "hfls311": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls311", 
+            "type": "real", 
+        }, 
+
+        "hfls312": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls312", 
+            "type": "real", 
+        }, 
+
+        "hfls313": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls313", 
+            "type": "real", 
+        }, 
+
+        "hfls314": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls314", 
+            "type": "real", 
+        }, 
+
+        "hfls315": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls315", 
+            "type": "real", 
+        }, 
+
+        "hfls316": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls316", 
+            "type": "real", 
+        }, 
+
+        "hfls317": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls317", 
+            "type": "real", 
+        }, 
+
+        "hfls318": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls318", 
+            "type": "real", 
+        }, 
+
+        "hfls319": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls319", 
+            "type": "real", 
+        }, 
+
+        "hfls320": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls320", 
+            "type": "real", 
+        }, 
+
+        "hfls321": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls321", 
+            "type": "real", 
+        }, 
+
+        "hfls322": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls322", 
+            "type": "real", 
+        }, 
+
+        "hfls323": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls323", 
+            "type": "real", 
+        }, 
+
+        "hfls324": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls324", 
+            "type": "real", 
+        }, 
+
+        "hfls325": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls325", 
+            "type": "real", 
+        }, 
+
+        "hfls326": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls326", 
+            "type": "real", 
+        }, 
+
+        "hfls327": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls327", 
+            "type": "real", 
+        }, 
+
+        "hfls328": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls328", 
+            "type": "real", 
+        }, 
+
+        "hfls329": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls329", 
+            "type": "real", 
+        }, 
+
+        "hfls330": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls330", 
+            "type": "real", 
+        }, 
+
+        "hfls331": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls331", 
+            "type": "real", 
+        }, 
+
+        "hfls332": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls332", 
+            "type": "real", 
+        }, 
+
+        "hfls333": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls333", 
+            "type": "real", 
+        }, 
+
+        "hfls334": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls334", 
+            "type": "real", 
+        }, 
+
+        "hfls335": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls335", 
+            "type": "real", 
+        }, 
+
+        "hfls336": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls336", 
+            "type": "real", 
+        }, 
+
+        "hfls337": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls337", 
+            "type": "real", 
+        }, 
+
+        "hfls338": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls338", 
+            "type": "real", 
+        }, 
+
+        "hfls339": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls339", 
+            "type": "real", 
+        }, 
+
+        "hfls340": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls340", 
+            "type": "real", 
+        }, 
+
+        "hfls341": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls341", 
+            "type": "real", 
+        }, 
+
+        "hfls342": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls342", 
+            "type": "real", 
+        }, 
+
+        "hfls343": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls343", 
+            "type": "real", 
+        }, 
+
+        "hfls344": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls344", 
+            "type": "real", 
+        }, 
+
+        "hfls345": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls345", 
+            "type": "real", 
+        }, 
+
+        "hfls346": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls346", 
+            "type": "real", 
+        }, 
+
+        "hfls347": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls347", 
+            "type": "real", 
+        }, 
+
+        "hfls348": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls348", 
+            "type": "real", 
+        }, 
+
+        "hfls349": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls349", 
+            "type": "real", 
+        }, 
+
+        "hfls350": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls350", 
+            "type": "real", 
+        }, 
+
+        "hfls351": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls351", 
+            "type": "real", 
+        }, 
+
+        "hfls352": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls352", 
+            "type": "real", 
+        }, 
+
+        "hfls353": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls353", 
+            "type": "real", 
+        }, 
+
+        "hfls354": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls354", 
+            "type": "real", 
+        }, 
+
+        "hfls355": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls355", 
+            "type": "real", 
+        }, 
+
+        "hfls356": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls356", 
+            "type": "real", 
+        }, 
+
+        "hfls357": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls357", 
+            "type": "real", 
+        }, 
+
+        "hfls358": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls358", 
+            "type": "real", 
+        }, 
+
+        "hfls359": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls359", 
+            "type": "real", 
+        }, 
+
+        "hfls360": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls360", 
+            "type": "real", 
+        }, 
+
+        "hfls361": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls361", 
+            "type": "real", 
+        }, 
+
+        "hfls362": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls362", 
+            "type": "real", 
+        }, 
+
+        "hfls363": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls363", 
+            "type": "real", 
+        }, 
+
+        "hfls364": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls364", 
+            "type": "real", 
+        }, 
+
+        "hfls365": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls365", 
+            "type": "real", 
+        }, 
+
+        "hfls366": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls366", 
+            "type": "real", 
+        }, 
+
+        "hfls367": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls367", 
+            "type": "real", 
+        }, 
+
+        "hfls368": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls368", 
+            "type": "real", 
+        }, 
+
+        "hfls369": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls369", 
+            "type": "real", 
+        }, 
+
+        "hfls370": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls370", 
+            "type": "real", 
+        }, 
+
+        "hfls371": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls371", 
+            "type": "real", 
+        }, 
+
+        "hfls372": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls372", 
+            "type": "real", 
+        }, 
+
+        "hfls373": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls373", 
+            "type": "real", 
+        }, 
+
+        "hfls374": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls374", 
+            "type": "real", 
+        }, 
+
+        "hfls375": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls375", 
+            "type": "real", 
+        }, 
+
+        "hfls376": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls376", 
+            "type": "real", 
+        }, 
+
+        "hfls377": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls377", 
+            "type": "real", 
+        }, 
+
+        "hfls378": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls378", 
+            "type": "real", 
+        }, 
+
+        "hfls379": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls379", 
+            "type": "real", 
+        }, 
+
+        "hfls380": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls380", 
+            "type": "real", 
+        }, 
+
+        "hfls381": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls381", 
+            "type": "real", 
+        }, 
+
+        "hfls382": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls382", 
+            "type": "real", 
+        }, 
+
+        "hfls383": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls383", 
+            "type": "real", 
+        }, 
+
+        "hfls384": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls384", 
+            "type": "real", 
+        }, 
+
+        "hfls385": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls385", 
+            "type": "real", 
+        }, 
+
+        "hfls386": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls386", 
+            "type": "real", 
+        }, 
+
+        "hfls387": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls387", 
+            "type": "real", 
+        }, 
+
+        "hfls388": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls388", 
+            "type": "real", 
+        }, 
+
+        "hfls389": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls389", 
+            "type": "real", 
+        }, 
+
+        "hfls390": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls390", 
+            "type": "real", 
+        }, 
+
+        "hfls391": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls391", 
+            "type": "real", 
+        }, 
+
+        "hfls392": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls392", 
+            "type": "real", 
+        }, 
+
+        "hfls393": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls393", 
+            "type": "real", 
+        }, 
+
+        "hfls394": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls394", 
+            "type": "real", 
+        }, 
+
+        "hfls395": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls395", 
+            "type": "real", 
+        }, 
+
+        "hfls396": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls396", 
+            "type": "real", 
+        }, 
+
+        "hfls397": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls397", 
+            "type": "real", 
+        }, 
+
+        "hfls398": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls398", 
+            "type": "real", 
+        }, 
+
+        "hfls399": {
+            "comment": "includes both evaporation and sublimation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfls399", 
+            "type": "real", 
+        }, 
+
+
+        "co2mass": {
+            "comment": "", 
+            "dimensions": "time", 
+            "positive": "", 
+            "long_name": "Total Atmospheric Mass of CO2", 
+            "standard_name": "atmosphere_mass_of_carbon_dioxide", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "", 
+            "units": "kg", 
+            "out_name": "co2mass", 
+            "type": "real", 
+        }, 
+        "pr": {
+            "comment": "at surface; includes both liquid and solid phases from all types of clouds (both large-scale and convective)", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "long_name": "Precipitation", 
+            "standard_name": "precipitation_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "kg m-2 s-1", 
+            "out_name": "pr", 
+            "type": "real", 
+        }, 
+        "ps": {
+            "comment": "surface pressure, not mean sea level pressure", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "long_name": "Surface Air Pressure", 
+            "standard_name": "surface_air_pressure", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "Pa", 
+            "out_name": "ps", 
+            "type": "real", 
+        }, 
+        "rlus": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upwelling Longwave Radiation", 
+            "standard_name": "surface_upwelling_longwave_flux_in_air", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "rlus", 
+            "type": "real", 
+        }, 
+        "z2": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: z2", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "vas": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "long_name": "Northward Near-Surface Wind", 
+            "standard_name": "northward_wind", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "", 
+            "units": "m s-1", 
+            "out_name": "vas", 
+            "type": "real", 
+        }, 
+        "wap": {
+            "comment": "commonly referred to as ''omega'', this represents the vertical component of velocity in pressure coordinates (positive down)", 
+            "dimensions": "longitude latitude plevs time", 
+            "positive": "", 
+            "long_name": "omega (=dp/dt)", 
+            "standard_name": "lagrangian_tendency_of_air_pressure", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "Pa s-1", 
+            "out_name": "wap", 
+            "type": "real", 
+        }, 
+        "a": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: a(k)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "zg": {
+            "comment": "", 
+            "dimensions": "longitude latitude plevs time", 
+            "positive": "", 
+            "long_name": "Geopotential Height", 
+            "standard_name": "geopotential_height", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "m", 
+            "out_name": "zg", 
+            "type": "real", 
+        }, 
+        "hurs": {
+            "comment": "This is the relative humidity with respect to liquid water for T> 0 C, and with respect to ice for T<0 C.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "long_name": "Near-Surface Relative Humidity", 
+            "standard_name": "relative_humidity", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "%", 
+            "out_name": "hurs", 
+            "type": "real", 
+        }, 
+        "tsAdjust": {
+            "comment": "''skin'' temperature (i.e., SST for open ocean)", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "long_name": "Bias-Corrected Surface Temperature", 
+            "standard_name": "surface_temperature", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "K", 
+            "out_name": "tsAdjust", 
+            "type": "real", 
+        }, 
+        "pfull": {
+            "comment": "", 
+            "dimensions": "longitude latitude alevel time2", 
+            "positive": "", 
+            "long_name": "Pressure on Model Levels", 
+            "standard_name": "air_pressure", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean within years time: mean over years", 
+            "cell_methods": "area: areacella", 
+            "units": "Pa", 
+            "out_name": "pfull", 
+            "type": "real", 
+        }, 
+        "ch4global": {
+            "comment": "", 
+            "dimensions": "time", 
+            "positive": "", 
+            "long_name": "Global Mean Mole Fraction of CH4", 
+            "standard_name": "mole_fraction_of_methane_in_air", 
+            "modeling_realm": "atmos atmosChem", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "", 
+            "units": "0.000000001", 
+            "out_name": "ch4global", 
+            "type": "real", 
+        }, 
+        "hur": {
+            "comment": "This is the relative humidity with respect to liquid water for T> 0 C, and with respect to ice for T<0 C.", 
+            "dimensions": "longitude latitude plevs time", 
+            "positive": "", 
+            "long_name": "Relative Humidity", 
+            "standard_name": "relative_humidity", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "%", 
+            "out_name": "hur", 
+            "type": "real", 
+        }, 
+        "hus": {
+            "comment": "", 
+            "dimensions": "longitude latitude plevs time", 
+            "positive": "", 
+            "long_name": "Specific Humidity", 
+            "standard_name": "specific_humidity", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "1", 
+            "out_name": "hus", 
+            "type": "real", 
+        }, 
+        "p0": {
+            "units": "Pa", 
+            "long_name": "vertical coordinate formula term: reference pressure", 
+            "type": "", 
+            "dimensions": ""
+        }, 
+        "b": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: b(k)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "mc": {
+            "comment": "The net mass flux should represent the difference between the updraft and downdraft components.  The flux is computed as the mass divided by the area of the grid cell.", 
+            "dimensions": "longitude latitude alevhalf time", 
+            "positive": "up", 
+            "long_name": "Convective Mass Flux", 
+            "standard_name": "atmosphere_net_upward_convective_mass_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "kg m-2 s-1", 
+            "out_name": "mc", 
+            "type": "real", 
+        }, 
+        "fco2antt": {
+            "comment": "This is requested only for the emission-driven coupled carbon climate model runs.  Does not include natural fire sources but, includes all anthropogenic sources, including fossil fuel use, cement production, agricultural burning, and sources associated with anthropogenic land use change excluding forest regrowth.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Carbon Mass Flux into Atmosphere Due to All Anthropogenic Emissions of CO2", 
+            "standard_name": "tendency_of_atmosphere_mass_content_of_carbon_dioxide_expressed_as_carbon_due_to_anthropogenic_emission", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "kg  m-2 s-1", 
+            "out_name": "fco2antt", 
+            "type": "real", 
+        }, 
+        "ch4": {
+            "comment": "", 
+            "dimensions": "longitude latitude plevs time", 
+            "positive": "", 
+            "long_name": "Mole Fraction of CH4", 
+            "standard_name": "mole_fraction_of_methane_in_air", 
+            "modeling_realm": "atmos atmosChem", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "0.000000001", 
+            "out_name": "ch4", 
+            "type": "real", 
+        }, 
+        "tasmin": {
+            "comment": "minimum near-surface (usually, 2 meter) air temperature (add cell_method attribute time: min)", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "long_name": "Daily Minimum Near-Surface Air Temperature", 
+            "standard_name": "air_temperature", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: minimum within days time: mean over days", 
+            "cell_methods": "area: areacella", 
+            "units": "K", 
+            "out_name": "tasmin", 
+            "type": "real", 
+        }, 
+        "tauu": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "down", 
+            "long_name": "Surface Downward Eastward Wind Stress", 
+            "standard_name": "surface_downward_eastward_stress", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "", 
+            "units": "Pa", 
+            "out_name": "tauu", 
+            "type": "real", 
+        }, 
+        "tasmax": {
+            "comment": "maximum near-surface (usually, 2 meter) air temperature (add cell_method attribute time: max)", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "long_name": "Daily Maximum Near-Surface Air Temperature", 
+            "standard_name": "air_temperature", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: maximum within days time: mean over days", 
+            "cell_methods": "area: areacella", 
+            "units": "K", 
+            "out_name": "tasmax", 
+            "type": "real", 
+        }, 
+        "pslAdjust": {
+            "comment": "not, in general, the same as surface pressure", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "long_name": "Bias-Corrected Sea Level Pressure", 
+            "standard_name": "air_pressure_at_sea_level", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "Pa", 
+            "out_name": "pslAdjust", 
+            "type": "real", 
+        }, 
+        "k_c": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: k_c", 
+            "type": "integer", 
+            "dimensions": ""
+        }, 
+        "ua": {
+            "comment": "", 
+            "dimensions": "longitude latitude plevs time", 
+            "positive": "", 
+            "long_name": "Eastward Wind", 
+            "standard_name": "eastward_wind", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "", 
+            "units": "m s-1", 
+            "out_name": "ua", 
+            "type": "real", 
+        }, 
+        "orog": {
+            "comment": "height above the geoid; as defined here, ''the geoid'' is a surface of constant geopotential that, if the ocean were at rest, would coincide with mean sea level. Under this definition, the geoid changes as the mean volume of the ocean changes (e.g., due to glacial melt, or global warming of the ocean).  Report here the height above the present-day geoid.  Over ocean, report as 0.0", 
+            "dimensions": "longitude latitude", 
+            "positive": "", 
+            "long_name": "Surface Altitude", 
+            "standard_name": "surface_altitude", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "", 
+            "cell_methods": "", 
+            "units": "m", 
+            "out_name": "orog", 
+            "type": "real", 
+        }, 
+        "va": {
+            "comment": "", 
+            "dimensions": "longitude latitude plevs time", 
+            "positive": "", 
+            "long_name": "Northward Wind", 
+            "standard_name": "northward_wind", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "", 
+            "units": "m s-1", 
+            "out_name": "va", 
+            "type": "real", 
+        }, 
+        "n2o": {
+            "comment": "", 
+            "dimensions": "longitude latitude plevs time", 
+            "positive": "", 
+            "long_name": "Mole Fraction of N2O", 
+            "standard_name": "mole_fraction_of_nitrous_oxide_in_air", 
+            "modeling_realm": "atmos atmosChem", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "0.000000001", 
+            "out_name": "n2o", 
+            "type": "real", 
+        }, 
+        "prc": {
+            "comment": "at surface; includes both liquid and solid phases.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "long_name": "Convective Precipitation", 
+            "standard_name": "convective_precipitation_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "kg m-2 s-1", 
+            "out_name": "prc", 
+            "type": "real", 
+        }, 
+        "tas": {
+            "comment": "near-surface (usually, 2 meter) air temperature", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "long_name": "Near-Surface Air Temperature", 
+            "standard_name": "air_temperature", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "K", 
+            "out_name": "tas", 
+            "type": "real", 
+        }, 
+        "rsuscs": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upwelling Clear-Sky Shortwave Radiation", 
+            "standard_name": "surface_upwelling_shortwave_flux_in_air_assuming_clear_sky", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "rsuscs", 
+            "type": "real", 
+        }, 
+        "uas": {
+            "comment": "near-surface (usually, 10 meters) eastward component of wind.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "long_name": "Eastward Near-Surface Wind", 
+            "standard_name": "eastward_wind", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "", 
+            "units": "m s-1", 
+            "out_name": "uas", 
+            "type": "real", 
+        }, 
+        "hfss": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Upward Sensible Heat Flux", 
+            "standard_name": "surface_upward_sensible_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "W m-2", 
+            "out_name": "hfss", 
+            "type": "real", 
+        }, 
+        "ap_bnds": {
+            "units": "Pa", 
+            "long_name": "vertical coordinate formula term: ap(k+1/2)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "ap": {
+            "units": "Pa", 
+            "long_name": "vertical coordinate formula term: ap(k)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "prw": {
+            "comment": "vertically integrated through the atmospheric column", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "long_name": "Water Vapor Path", 
+            "standard_name": "atmosphere_water_vapor_content", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "kg m-2", 
+            "out_name": "prw", 
+            "type": "real", 
+        }, 
+        "prsn": {
+            "comment": "at surface; includes precipitation of all forms of water in the solid phase", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "long_name": "Snowfall Flux", 
+            "standard_name": "snowfall_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "kg m-2 s-1", 
+            "out_name": "prsn", 
+            "type": "real", 
+        }, 
+        "zlev": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: zlev(k)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "fco2nat": {
+            "comment": "This is what the atmosphere sees (on its own grid).  This field should be equivalent to the combined natural fluxes of carbon (requested in the L_mon and O_mon tables) that account for natural exchanges between the atmosphere and land or ocean reservoirs (i.e., ''net ecosystem biospheric productivity'', for land, and ''air to sea CO2 flux'', for ocean.)", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Surface Carbon Mass Flux into the Atmosphere Due to Natural Sources", 
+            "standard_name": "surface_upward_mass_flux_of_carbon_dioxide_expressed_as_carbon_due_to_emission_from_natural_sources", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "kg m-2 s-1", 
+            "out_name": "fco2nat", 
+            "type": "real", 
+        }, 
+        "b_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: b(k+1/2)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "phalf": {
+            "comment": "", 
+            "dimensions": "longitude latitude alevhalf time2", 
+            "positive": "", 
+            "long_name": "Pressure on Model Half-Levels", 
+            "standard_name": "air_pressure", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean within years time: mean over years", 
+            "cell_methods": "area: areacella", 
+            "units": "Pa", 
+            "out_name": "phalf", 
+            "type": "real", 
+        }, 
+        "tasAdjust": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "long_name": "Bias-Corrected Near-Surface Air Temperature", 
+            "standard_name": "air_temperature", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "K", 
+            "out_name": "tasAdjust", 
+            "type": "real", 
+        }, 
+        "fco2fos": {
+            "comment": "This is the prescribed anthropogenic CO2 flux from fossil fuel use, including cement production, and flaring (but not from land-use changes, agricultural burning, forest regrowth, etc.)", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "long_name": "Carbon Mass Flux into Atmosphere Due to Fossil Fuel Emissions of CO2", 
+            "standard_name": "tendency_of_atmosphere_mass_content_of_carbon_dioxide_expressed_as_carbon_due_to_emission_from_fossil_fuel_combustion", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "kg m-2 s-1", 
+            "out_name": "fco2fos", 
+            "type": "real", 
+        }, 
+        "hcfc22global": {
+            "comment": "", 
+            "dimensions": "time", 
+            "positive": "", 
+            "long_name": "Global Mean Mole Fraction of HCFC22", 
+            "standard_name": "mole_fraction_of_hcfc22_in_air", 
+            "modeling_realm": "atmos atmosChem", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "", 
+            "units": "1E-012", 
+            "out_name": "hcfc22global", 
+            "type": "real", 
+        }, 
+        "tro3Clim": {
+            "comment": "", 
+            "dimensions": "longitude latitude plevs time2", 
+            "positive": "", 
+            "long_name": "Mole Fraction of O3", 
+            "standard_name": "mole_fraction_of_ozone_in_air", 
+            "modeling_realm": "atmos atmosChem", 
+            "cell_measures": "time: mean within years time: mean over years", 
+            "cell_methods": "area: areacella", 
+            "units": "0.000000001", 
+            "out_name": "tro3Clim", 
+            "type": "real", 
+        }, 
+        "zlev_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: zlev(k+1/2)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "clivi": {
+            "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", 
+            "positive": "", 
+            "long_name": "Ice Water Path", 
+            "standard_name": "atmosphere_mass_content_of_cloud_ice", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "kg m-2", 
+            "out_name": "clivi", 
+            "type": "real", 
+        }, 
+        "prAdjust": {
+            "comment": "at surface; includes both liquid and solid phases from all types of clouds (both large-scale and convective)", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "long_name": "Bias-Corrected Precipitation", 
+            "standard_name": "precipitation_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "kg m-2 s-1", 
+            "out_name": "prAdjust", 
+            "type": "real", 
+        }, 
+        "cct": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "long_name": "Air Pressure at Convective Cloud Top", 
+            "standard_name": "air_pressure_at_convective_cloud_top", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "Pa", 
+            "out_name": "cct", 
+            "type": "real", 
+        }, 
+        "sigma": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: sigma(k)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "ccb": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "long_name": "Air Pressure at Convective Cloud Base", 
+            "standard_name": "air_pressure_at_convective_cloud_base", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "units": "Pa", 
+            "out_name": "ccb", 
+            "type": "real", 
+        }
+    }
+}
diff --git a/TestTables/CMIP6_CCMI1_hourly.json b/TestTables/CMIP6_CCMI1_hourly.json
new file mode 100644
index 0000000..dec0aab
--- /dev/null
+++ b/TestTables/CMIP6_CCMI1_hourly.json
@@ -0,0 +1,2380 @@
+{
+    "Header": {
+        "product": "output", 
+        "approx_interval": "0.017361", 
+        "realm": "", 
+        "cmor_version": "3.1", 
+        "Conventions": "CF-1.6 CMIP-6.0", 
+        "frequency": "hr", 
+        "table_id": "Table CCMI1_hourly", 
+        "data_specs_version": "01.beta.29", 
+        "mip_era": "CMIP6", 
+        "generic_levels": "", 
+        "missing_value": "1e20", 
+        "table_date": "14 June 2016"
+    }, 
+    "axis_entry": {
+        "typebare": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "bare_ground", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "tau": {
+            "requested": [
+                "0.15", 
+                "0.8", 
+                "2.45", 
+                "6.5", 
+                "16.2", 
+                "41.5", 
+                "100."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "0.0", 
+                "0.3", 
+                "0.3", 
+                "1.3", 
+                "1.3", 
+                "3.6", 
+                "3.6", 
+                "9.4", 
+                "9.4", 
+                "23.0", 
+                "23.0", 
+                "60.0", 
+                "60.0", 
+                "100000."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "cloud optical thickness", 
+            "standard_name": "atmosphere_optical_thickness_due_to_cloud", 
+            "value": "", 
+            "out_name": "tau", 
+            "type": "double", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "olayer100m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "0. 100.", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "50.0", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "100.0", 
+            "axis": "Z"
+        }, 
+        "spectband": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "Spectral Band", 
+            "standard_name": "wave_frequency", 
+            "value": "", 
+            "out_name": "spectband", 
+            "type": "double", 
+            "units": "s-1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "ocean_sigma_z": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "sigma: sigma eta: eta depth: depth depth_c: depth_c nsigma: nsigma zlev: zlev", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "sigma: sigma_bnds eta: eta depth: depth depth_c: depth_c nsigma: nsigma zlev: zlev_bnds", 
+            "bounds_values": "", 
+            "long_name": "ocean sigma over z coordinate", 
+            "standard_name": "ocean_sigma_z", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "for k <= nsigma: z(n,k,j,i) = eta(n,j,i) + sigma(k)*(min(depth_c,depth(j,i))+eta(n,j,i)) ; for k > nsigma: z(n,k,j,i) = zlev(k)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev19": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000.", 
+                "500.", 
+                "100."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "p220": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "44000. 0.0", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "22000.0", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev17": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev10": {
+            "requested": [
+                "100000.", 
+                "85000.", 
+                "70000.", 
+                "50000.", 
+                "25000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "site": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "site index", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "site", 
+            "type": "integer", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "smooth_level": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "a: a b1: b1 b2: b2 ztop: ztop zsurf1: zsurf1 zsurf2: zsurf2", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-200.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "a: a_bnds b1: b1_bnds b2: b2_bnds ztop: ztop zsurf1: zsurf1 zsurf2: zsurf2", 
+            "bounds_values": "", 
+            "long_name": "atmosphere smooth level vertical (SLEVE) coordinate", 
+            "standard_name": "atmosphere_sleve_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "m", 
+            "formula": "z = a*ztop + b1*zsurf1 + b2*zsurf2", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "800000.0", 
+            "axis": "Z"
+        }, 
+        "p840": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "100000. 68000.", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "84000.0", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "ocean_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "sigma: lev eta: eta depth: depth", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "sigma: lev_bnds eta: eta depth: depth", 
+            "bounds_values": "", 
+            "long_name": "ocean sigma coordinate", 
+            "standard_name": "ocean_sigma_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "z(n,k,j,i) = eta(n,j,i) + sigma(k)*(depth(j,i)+eta(n,j,i))", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "0.0", 
+            "axis": "Z"
+        }, 
+        "depth0m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "0.0", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "100.0", 
+            "axis": "Z"
+        }, 
+        "ocean_s": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "s: lev eta: eta depth: depth a: a_coeff b: b_coeff depth_c: depth_c", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "s: lev_bnds eta: eta depth: depth a: a b: b depth_c: depth_c", 
+            "bounds_values": "", 
+            "long_name": "ocean s-coordinate", 
+            "standard_name": "ocean_s_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "z(n,k,j,i) = eta(n,j,i)*(1+s(k)) + depth_c*s(k) + (depth(j,i)-depth_c)*C(k) n where n C(k)=(1-b)*sinh(a*s(k))/sinh(a) +n           b*(tanh(a*(s(k)+0.5))/(2*tanh(0.5*a)) - 0.5)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "0.0", 
+            "axis": "Z"
+        }, 
+        "plev4s": {
+            "requested": [
+                "85000.", 
+                "50000.", 
+                "20000.", 
+                "5000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "typec4pft": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "c4_plant_functional_types", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "plev3h": {
+            "requested": [
+                "10000.", 
+                "1000.", 
+                "100."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "height2m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "up", 
+            "must_have_bounds": "no", 
+            "valid_min": "1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "height", 
+            "standard_name": "height", 
+            "value": "2.0", 
+            "out_name": "height", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "10.0", 
+            "axis": "Z"
+        }, 
+        "time1": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "time", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "plev7h": {
+            "requested": [
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "25000.", 
+                "5000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "sza5": {
+            "requested": [
+                "0.", 
+                "20.", 
+                "40.", 
+                "60.", 
+                "80."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "solar zenith angle", 
+            "standard_name": "solar_zenith_angle", 
+            "value": "", 
+            "out_name": "sza", 
+            "type": "double", 
+            "units": "degree", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "depth_coord": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "ocean depth coordinate", 
+            "standard_name": "depth", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "12000.0", 
+            "axis": "Z"
+        }, 
+        "sdepth1": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "0.0 0.1", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "0.05", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "0.2", 
+            "axis": "Z"
+        }, 
+        "alternate_hybrid_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "ap: ap b: b ps: ps", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "ap: ap_bnds b: b_bnds ps: ps", 
+            "bounds_values": "", 
+            "long_name": "hybrid sigma pressure coordinate", 
+            "standard_name": "atmosphere_hybrid_sigma_pressure_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "1", 
+            "formula": "p = ap + b*ps", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "1.0", 
+            "axis": "Z"
+        }, 
+        "time2": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "time", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "yes", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "time3": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "Diurnal cycle: monthly mean of the diurnal cycle (1 hour steps).", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "oline": {
+            "requested": [
+                "barents_opening", 
+                "bering_strait", 
+                "canadian_archipelago", 
+                "denmark_strait", 
+                "drake_passage", 
+                "english_channel", 
+                "pacific_equatorial_undercurrent", 
+                "faroe_scotland_channel", 
+                "florida_bahamas_strait", 
+                "fram_strait", 
+                "iceland_faroe_channel", 
+                "indonesian_thoughflow", 
+                "mozambique_channel", 
+                "taiwan_luzon_straits", 
+                "windward_passage"
+            ], 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "ocean passage", 
+            "standard_name": "region", 
+            "value": "", 
+            "out_name": "line", 
+            "type": "character", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "plev14": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "25000.", 
+                "15000.", 
+                "10000.", 
+                "5000.", 
+                "2000.", 
+                "1000.", 
+                "500.", 
+                "100."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev8": {
+            "requested": [
+                "100000.", 
+                "85000.", 
+                "70000.", 
+                "50000.", 
+                "25000.", 
+                "10000.", 
+                "5000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "location": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "location index", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "loc", 
+            "type": "integer", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "latitude": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-90.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "latitude", 
+            "standard_name": "latitude", 
+            "value": "", 
+            "out_name": "lat", 
+            "type": "double", 
+            "units": "degrees_north", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "90.0", 
+            "axis": "Y"
+        }, 
+        "plev3": {
+            "requested": [
+                "85000.", 
+                "50000.", 
+                "25000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "basin": {
+            "requested": [
+                "atlantic_arctic_ocean", 
+                "indian_pacific_ocean", 
+                "global_ocean"
+            ], 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "ocean basin", 
+            "standard_name": "region", 
+            "value": "", 
+            "out_name": "basin", 
+            "type": "character", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "p700": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "700 hPa", 
+            "standard_name": "air_pressure", 
+            "value": "70000.", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev7": {
+            "requested": [
+                "90000.", 
+                "74000.", 
+                "62000.", 
+                "50000.", 
+                "37500.", 
+                "24500.", 
+                "9000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "100000.", 
+                "80000.", 
+                "80000.", 
+                "68000.", 
+                "68000.", 
+                "56000.", 
+                "56000.", 
+                "44000.", 
+                "44000.", 
+                "31000.", 
+                "31000.", 
+                "18000.", 
+                "18000.", 
+                " 0."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev4": {
+            "requested": [
+                "92500.", 
+                "85000.", 
+                "50000.", 
+                "25000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev23": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000.", 
+                "700.", 
+                "500.", 
+                "300.", 
+                "200.", 
+                "100.", 
+                "40."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev39": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "17000.", 
+                "15000.", 
+                "13000.", 
+                "11500.", 
+                "10000.", 
+                "9000.", 
+                "8000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1500.", 
+                "1000.", 
+                "700.", 
+                "500.", 
+                "300.", 
+                "200.", 
+                "150.", 
+                "100.", 
+                "70.", 
+                "50.", 
+                "40.", 
+                "30.", 
+                "20.", 
+                "15.", 
+                "10.", 
+                "7.", 
+                "5.", 
+                "3."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "typepever": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "primary_evergreen_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "typesdec": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "secondary_decidous_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "plev27": {
+            "requested": [
+                "100000.", 
+                "97500.", 
+                "95000.", 
+                "92500.", 
+                "90000.", 
+                "87500.", 
+                "85000.", 
+                "82500.", 
+                "80000.", 
+                "77500.", 
+                "75000.", 
+                "70000.", 
+                "65000.", 
+                "60000.", 
+                "55000.", 
+                "50000.", 
+                "45000.", 
+                "40000.", 
+                "35000.", 
+                "30000.", 
+                "25000.", 
+                "22500.", 
+                "20000.", 
+                "17500.", 
+                "15000.", 
+                "12500.", 
+                "10000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "alt40": {
+            "requested": [
+                "240.", 
+                "720.", 
+                "1200.", 
+                "1680.", 
+                "2160.", 
+                "2640.", 
+                "3120.", 
+                "3600.", 
+                "4080.", 
+                "4560.", 
+                "5040.", 
+                "5520.", 
+                "6000.", 
+                "6480.", 
+                "6960.", 
+                "7440.", 
+                "7920.", 
+                "8400.", 
+                "8880.", 
+                "9360.", 
+                "9840.", 
+                "10320.", 
+                "10800.", 
+                "11280.", 
+                "11760.", 
+                "12240.", 
+                "12720.", 
+                "13200.", 
+                "13680.", 
+                "14160.", 
+                "14640.", 
+                "15120.", 
+                "15600.", 
+                "16080.", 
+                "16560.", 
+                "17040.", 
+                "17520.", 
+                "18000.", 
+                "18480.", 
+                "18960."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "0.", 
+                "480.", 
+                "480.", 
+                "960.", 
+                "960.", 
+                "1440.", 
+                "1440.", 
+                "1920.", 
+                "1920.", 
+                "2400.", 
+                "2400.", 
+                "2880.", 
+                "2880.", 
+                "3360.", 
+                "3360.", 
+                "3840.", 
+                "3840.", 
+                "4320.", 
+                "4320.", 
+                "4800.", 
+                "4800.", 
+                "5280.", 
+                "5280.", 
+                "5760.", 
+                "5760.", 
+                "6240.", 
+                "6240.", 
+                "6720.", 
+                "6720.", 
+                "7200.", 
+                "7200.", 
+                "7680.", 
+                "7680.", 
+                "8160.", 
+                "8160.", 
+                "8640.", 
+                "8640.", 
+                "9120.", 
+                "9120.", 
+                "9600.", 
+                "9600.", 
+                "10080.", 
+                "10080.", 
+                "10560.", 
+                "10560.", 
+                "11040.", 
+                "11040.", 
+                "11520.", 
+                "11520.", 
+                "12000.", 
+                "12000.", 
+                "12480.", 
+                "12480.", 
+                "12960.", 
+                "12960.", 
+                "13440.", 
+                "13440.", 
+                "13920.", 
+                "13920.", 
+                "14400.", 
+                "14400.", 
+                "14880.", 
+                "14880.", 
+                "15360.", 
+                "15360.", 
+                "15840.", 
+                "15840.", 
+                "16320.", 
+                "16320.", 
+                "16800.", 
+                "16800.", 
+                "17280.", 
+                "17280.", 
+                "17760.", 
+                "17760.", 
+                "18240.", 
+                "18240.", 
+                "18720.", 
+                "18720.", 
+                "19200."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "altitude", 
+            "standard_name": "altitude", 
+            "value": "", 
+            "out_name": "alt40", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "time": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "time", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "plev7c": {
+            "requested": [
+                "90000.", 
+                "74000.", 
+                "62000.", 
+                "50000.", 
+                "37500.", 
+                "24500.", 
+                "9000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "height10m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "up", 
+            "must_have_bounds": "no", 
+            "valid_min": "1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "height", 
+            "standard_name": "height", 
+            "value": "10.0", 
+            "out_name": "height", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "30.0", 
+            "axis": "Z"
+        }, 
+        "dbze": {
+            "requested": [
+                "-47.5", 
+                "-42.5", 
+                "-37.5", 
+                "-32.5", 
+                "-27.5", 
+                "-22.5", 
+                "-17.5", 
+                "-12.5", 
+                "-7.5", 
+                "-2.5", 
+                "2.5", 
+                "7.5", 
+                "12.5", 
+                "17.5", 
+                "22.5"
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "-50", 
+                "-45", 
+                "-45", 
+                "-40", 
+                "-40", 
+                "-35", 
+                "-35", 
+                "-30", 
+                "-30", 
+                "-25", 
+                "-25", 
+                "-20", 
+                "-20", 
+                "-15", 
+                "-15", 
+                "-10", 
+                "-10", 
+                "-5", 
+                "-5", 
+                "0", 
+                "0", 
+                "5", 
+                "5", 
+                "10", 
+                "10", 
+                "15", 
+                "15", 
+                "20", 
+                "20", 
+                "25."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "CloudSat simulator equivalent radar reflectivity factor", 
+            "standard_name": "equivalent_reflectivity_factor", 
+            "value": "", 
+            "out_name": "dbze", 
+            "type": "double", 
+            "units": "dBZ", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "typesever": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "secondary_evergreen_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "rho": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "density++++?", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "rho", 
+            "type": "double", 
+            "units": "kg m-3", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "depth100m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "80.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "100.0", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "120.0", 
+            "axis": "Z"
+        }, 
+        "effectRadLi": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "Effective Radius of Liquid Aerosols", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "effectRadLi", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "sdepth": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "200.0", 
+            "axis": "Z"
+        }, 
+        "vegtype": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "plant functional type", 
+            "standard_name": "area_type", 
+            "value": "", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "typec3pft": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "c3_plant_functional_types", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "natural_log_pressure": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "p0: p0 lev: lev", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "p0: p0 lev: lev_bnds", 
+            "bounds_values": "", 
+            "long_name": "atmosphere natural log pressure coordinate", 
+            "standard_name": "atmosphere_ln_pressure_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "p = p0 * exp(-lev)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "20.0", 
+            "axis": "Z"
+        }, 
+        "scatratio": {
+            "requested": [
+                "0.005", 
+                "0.605", 
+                "2.1", 
+                "4.", 
+                "6.", 
+                "8.5", 
+                "12.5", 
+                "17.5", 
+                "22.5", 
+                "27.5", 
+                "35.", 
+                "45.", 
+                "55.", 
+                "70.", 
+                "50040."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "0.", 
+                "0.01", 
+                "0.01", 
+                "1.2", 
+                "1.2", 
+                "3.", 
+                "3.", 
+                "5.", 
+                "5.", 
+                "7.", 
+                "7.", 
+                "10.", 
+                "10.", 
+                "15.", 
+                "15.", 
+                "20.", 
+                "20.", 
+                "25.", 
+                "25.", 
+                "30.", 
+                "30.", 
+                "40.", 
+                "40.", 
+                "50.", 
+                "50.", 
+                "60.", 
+                "60.", 
+                "80.", 
+                "80.", 
+                "100000."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "lidar backscattering ratio", 
+            "standard_name": "backscattering_ratio", 
+            "value": "", 
+            "out_name": "scatratio", 
+            "type": "double", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "standard_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "ptop: ptop sigma: lev ps: ps", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "ptop: ptop sigma: lev_bnds ps: ps", 
+            "bounds_values": "", 
+            "long_name": "sigma coordinate", 
+            "standard_name": "atmosphere_sigma_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "p = ptop + sigma*(ps - ptop)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "1.0", 
+            "axis": "Z"
+        }, 
+        "typepdec": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "primary_deciduous_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "hybrid_height": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "a: lev b: b orog: orog", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "a: lev_bnds b: b_bnds orog: orog", 
+            "bounds_values": "", 
+            "long_name": "hybrid height coordinate", 
+            "standard_name": "atmosphere_hybrid_height_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "m", 
+            "formula": "z = a + b*orog", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "longitude": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "longitude", 
+            "standard_name": "longitude", 
+            "value": "", 
+            "out_name": "lon", 
+            "type": "double", 
+            "units": "degrees_east", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "360.0", 
+            "axis": "X"
+        }, 
+        "effectRadIc": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "Effective Radius of Ice Aerosols", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "effectRadIc", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "p1000": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "1000 hPa", 
+            "standard_name": "air_pressure", 
+            "value": "100000.", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "p500": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "500 hPa", 
+            "standard_name": "air_pressure", 
+            "value": "50000.", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "ocean_double_sigma": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "sigma: sigma depth: depth z1: z1 z2: z2 a: a_coeff href: href k_c: k_c", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "sigma: sigma_bnds depth: depth z1: z1 z2: z2 a: a href: href k_c: k_c", 
+            "bounds_values": "", 
+            "long_name": "ocean double sigma coordinate", 
+            "standard_name": "ocean_double_sigma", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "for k <= k_c:n z(k,j,i)= sigma(k)*f(j,i) n for k > k_c:n z(k,j,i)= f(j,i) + (sigma(k)-1)*(depth(j,i)-f(j,i)) n f(j,i)= 0.5*(z1+ z2) + 0.5*(z1-z2)* tanh(2*a/(z1-z2)*(depth(j,i)-href))", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plevs": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "standard_hybrid_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "p0: p0 a: a b: b ps: ps", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "p0: p0 a: a_bnds b: b_bnds ps: ps", 
+            "bounds_values": "", 
+            "long_name": "hybrid sigma pressure coordinate", 
+            "standard_name": "atmosphere_hybrid_sigma_pressure_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "1", 
+            "formula": "p = a*p0 + b*ps", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "1.0", 
+            "axis": "Z"
+        }, 
+        "p560": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "68000. 44000.", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "56000.0", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }
+    }, 
+    "variable_entry": {
+        "ccmiminute": {
+            "comment": "These are what each model believes the date/time (Gregorian calendar) to be at the middle of each time interval in the output (GMT, not local time).", 
+            "dimensions": "time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "CCMI Minute", 
+            "standard_name": "unset", 
+            "modeling_realm": "", 
+            "cell_measures": "", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "minute", 
+            "out_name": "ccmiminute", 
+            "type": "integer", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "stoo3": {
+            "comment": "(dry deposition includes gravitational settling, impact scavenging, and turbulent deposition).", 
+            "dimensions": "longitude latitude time1", 
+            "positive": "down", 
+            "valid_min": "0", 
+            "long_name": "Dry Deposition Rate of O3 in Stomata", 
+            "standard_name": "tendency_of_atmosphere_mass_content_of_ozone_due_to_dry_deposition_into_stomata", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "stoo3", 
+            "type": "real", 
+            "valid_max": "1000000", 
+            "ok_max_mean_abs": ""
+        }, 
+        "depth_c": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: depth_c", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "ap_bnds": {
+            "units": "Pa", 
+            "long_name": "vertical coordinate formula term: ap(k+1/2)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "ap": {
+            "units": "Pa", 
+            "long_name": "vertical coordinate formula term: ap(k)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "href": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: href", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "orog": {
+            "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", 
+            "positive": "", 
+            "valid_min": "-700", 
+            "long_name": "Surface Altitude", 
+            "standard_name": "surface_altitude", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "m", 
+            "out_name": "orog", 
+            "type": "real", 
+            "valid_max": "1.00E+04", 
+            "ok_max_mean_abs": ""
+        }, 
+        "zlev": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: zlev(k)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "ps": {
+            "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", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Surface Air Pressure", 
+            "standard_name": "surface_air_pressure", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "Pa", 
+            "out_name": "ps", 
+            "type": "real", 
+            "valid_max": "1000000", 
+            "ok_max_mean_abs": ""
+        }, 
+        "dryo3": {
+            "comment": "dry deposition includes gravitational settling, impact scavenging, and turbulent deposition.", 
+            "dimensions": "longitude latitude time1", 
+            "positive": "down", 
+            "valid_min": "0", 
+            "long_name": "Dry Deposition Rate of O3", 
+            "standard_name": "tendency_of_atmosphere_mass_content_of_ozone_due_to_dry_deposition", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "dryo3", 
+            "type": "real", 
+            "valid_max": "1000000", 
+            "ok_max_mean_abs": ""
+        }, 
+        "vmro3cnp": {
+            "comment": "", 
+            "dimensions": "longitude latitude time1", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Ozone Volume Mixing Ratio at Canopy Height", 
+            "standard_name": "mole_fraction_of_ozone_in_air", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "mole mole-1", 
+            "out_name": "vmro3cnp", 
+            "type": "real", 
+            "valid_max": "1", 
+            "ok_max_mean_abs": ""
+        }, 
+        "sfvmro3": {
+            "comment": "", 
+            "dimensions": "longitude latitude time1", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Ozone Volume Mixing Ratio in the Lowest Model Layer", 
+            "standard_name": "mole_fraction_of_ozone_in_air", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "mole mole-1", 
+            "out_name": "sfvmro3", 
+            "type": "real", 
+            "valid_max": "1", 
+            "ok_max_mean_abs": ""
+        }, 
+        "sigma_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: sigma(k+1/2)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "ccmimonth": {
+            "comment": "These are what each model believes the date/time (Gregorian calendar) to be at the middle of each time interval in the output (GMT, not local time).", 
+            "dimensions": "time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "CCMI Month", 
+            "standard_name": "unset", 
+            "modeling_realm": "", 
+            "cell_measures": "", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "month", 
+            "out_name": "ccmimonth", 
+            "type": "integer", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "sfvmrno2": {
+            "comment": "", 
+            "dimensions": "longitude latitude time1", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "NO2 Volume Mixing Ratio in the Lowest Model Layer", 
+            "standard_name": "mole_fraction_of_nitrogen_dioxide_in_air", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "mole mole-1", 
+            "out_name": "sfvmrno2", 
+            "type": "real", 
+            "valid_max": "1", 
+            "ok_max_mean_abs": ""
+        }, 
+        "ptop": {
+            "units": "Pa", 
+            "long_name": "pressure at top of model", 
+            "type": "", 
+            "dimensions": ""
+        }, 
+        "sfvmrco": {
+            "comment": "", 
+            "dimensions": "longitude latitude time1", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "CO Volume Mixing Ratio in the Lowest Model Layer", 
+            "standard_name": "mole_fraction_of_carbon_monoxide_in_air", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "mole mole-1", 
+            "out_name": "sfvmrco", 
+            "type": "real", 
+            "valid_max": "1", 
+            "ok_max_mean_abs": ""
+        }, 
+        "b_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: b(k+1/2)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "ccmiday": {
+            "comment": "These are what each model believes the date/time (Gregorian calendar) to be at the middle of each time interval in the output (GMT, not local time).", 
+            "dimensions": "time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "CCMI Day", 
+            "standard_name": "unset", 
+            "modeling_realm": "", 
+            "cell_measures": "", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "day", 
+            "out_name": "ccmiday", 
+            "type": "integer", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "ccmiyear": {
+            "comment": "These are what each model believes the date/time (Gregorian calendar) to be at the middle of each time interval in the output (GMT, not local time).", 
+            "dimensions": "time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "CCMI Year", 
+            "standard_name": "unset", 
+            "modeling_realm": "", 
+            "cell_measures": "", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "year", 
+            "out_name": "ccmiyear", 
+            "type": "integer", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "nsigma": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: nsigma", 
+            "type": "integer", 
+            "dimensions": ""
+        }, 
+        "ztop": {
+            "units": "m", 
+            "long_name": "height of top of model", 
+            "type": "", 
+            "dimensions": ""
+        }, 
+        "gsto": {
+            "comment": "(m2 is the projected leaf area)  Full units are mmol H2O/m^2 leaf area/sec.", 
+            "dimensions": "longitude latitude time1", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Stomatal Conductance of Water Vapour", 
+            "standard_name": "unset", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "mmol m-2 s-1", 
+            "out_name": "gsto", 
+            "type": "real", 
+            "valid_max": "1000000", 
+            "ok_max_mean_abs": ""
+        }, 
+        "ccmihour": {
+            "comment": "These are what each model believes the date/time (Gregorian calendar) to be at the middle of each time interval in the output (GMT, not local time).", 
+            "dimensions": "time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "CCMI Hour", 
+            "standard_name": "unset", 
+            "modeling_realm": "", 
+            "cell_measures": "", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "hour", 
+            "out_name": "ccmihour", 
+            "type": "integer", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "zlev_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: zlev(k+1/2)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "z1": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: z1", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "z2": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: z2", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "a": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: a(k)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "p0": {
+            "units": "Pa", 
+            "long_name": "vertical coordinate formula term: reference pressure", 
+            "type": "", 
+            "dimensions": ""
+        }, 
+        "b": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: b(k)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "sfmmrpm2p5": {
+            "comment": "", 
+            "dimensions": "longitude latitude time1", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "PM2.5 Mass Mixing Ratio in the Lowest Model Layer", 
+            "standard_name": "mass_fraction_of_pm2p5_ambient_aerosol_in_air", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg kg-1", 
+            "out_name": "sfmmrpm2p5", 
+            "type": "real", 
+            "valid_max": "1", 
+            "ok_max_mean_abs": ""
+        }, 
+        "depth": {
+            "units": "m", 
+            "long_name": "Sea Floor Depth: formula term: thetao", 
+            "type": "real", 
+            "dimensions": "longitude latitude"
+        }, 
+        "eta": {
+            "units": "m", 
+            "long_name": "Sea Surface Height formula term: thetao", 
+            "type": "real", 
+            "dimensions": "longitude latitude time"
+        }, 
+        "k_c": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: k_c", 
+            "type": "integer", 
+            "dimensions": ""
+        }, 
+        "sigma": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: sigma(k)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "a_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: a(k+1/2)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }
+    }
+}
diff --git a/TestTables/CMIP6_CCMI1_monthly.json b/TestTables/CMIP6_CCMI1_monthly.json
new file mode 100644
index 0000000..9fd4f19
--- /dev/null
+++ b/TestTables/CMIP6_CCMI1_monthly.json
@@ -0,0 +1,2341 @@
+{
+    "Header": {
+        "product": "output", 
+        "approx_interval": "30.00000", 
+        "realm": "atmos", 
+        "cmor_version": "3.1", 
+        "Conventions": "CF-1.6 CMIP-6.0", 
+        "frequency": "mon", 
+        "table_id": "Table CCMI1_monthly", 
+        "data_specs_version": "01.beta.29", 
+        "mip_era": "CMIP6", 
+        "generic_levels": "", 
+        "missing_value": "1e20", 
+        "table_date": "14 June 2016"
+    }, 
+    "axis_entry": {
+        "typebare": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "bare_ground", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "tau": {
+            "requested": [
+                "0.15", 
+                "0.8", 
+                "2.45", 
+                "6.5", 
+                "16.2", 
+                "41.5", 
+                "100."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "0.0", 
+                "0.3", 
+                "0.3", 
+                "1.3", 
+                "1.3", 
+                "3.6", 
+                "3.6", 
+                "9.4", 
+                "9.4", 
+                "23.0", 
+                "23.0", 
+                "60.0", 
+                "60.0", 
+                "100000."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "cloud optical thickness", 
+            "standard_name": "atmosphere_optical_thickness_due_to_cloud", 
+            "value": "", 
+            "out_name": "tau", 
+            "type": "double", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "olayer100m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "0. 100.", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "50.0", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "100.0", 
+            "axis": "Z"
+        }, 
+        "spectband": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "Spectral Band", 
+            "standard_name": "wave_frequency", 
+            "value": "", 
+            "out_name": "spectband", 
+            "type": "double", 
+            "units": "s-1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "ocean_sigma_z": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "sigma: sigma eta: eta depth: depth depth_c: depth_c nsigma: nsigma zlev: zlev", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "sigma: sigma_bnds eta: eta depth: depth depth_c: depth_c nsigma: nsigma zlev: zlev_bnds", 
+            "bounds_values": "", 
+            "long_name": "ocean sigma over z coordinate", 
+            "standard_name": "ocean_sigma_z", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "for k <= nsigma: z(n,k,j,i) = eta(n,j,i) + sigma(k)*(min(depth_c,depth(j,i))+eta(n,j,i)) ; for k > nsigma: z(n,k,j,i) = zlev(k)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev19": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000.", 
+                "500.", 
+                "100."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "p220": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "44000. 0.0", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "22000.0", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev17": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev10": {
+            "requested": [
+                "100000.", 
+                "85000.", 
+                "70000.", 
+                "50000.", 
+                "25000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "site": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "site index", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "site", 
+            "type": "integer", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "smooth_level": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "a: a b1: b1 b2: b2 ztop: ztop zsurf1: zsurf1 zsurf2: zsurf2", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-200.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "a: a_bnds b1: b1_bnds b2: b2_bnds ztop: ztop zsurf1: zsurf1 zsurf2: zsurf2", 
+            "bounds_values": "", 
+            "long_name": "atmosphere smooth level vertical (SLEVE) coordinate", 
+            "standard_name": "atmosphere_sleve_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "m", 
+            "formula": "z = a*ztop + b1*zsurf1 + b2*zsurf2", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "800000.0", 
+            "axis": "Z"
+        }, 
+        "p840": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "100000. 68000.", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "84000.0", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "ocean_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "sigma: lev eta: eta depth: depth", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "sigma: lev_bnds eta: eta depth: depth", 
+            "bounds_values": "", 
+            "long_name": "ocean sigma coordinate", 
+            "standard_name": "ocean_sigma_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "z(n,k,j,i) = eta(n,j,i) + sigma(k)*(depth(j,i)+eta(n,j,i))", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "0.0", 
+            "axis": "Z"
+        }, 
+        "depth0m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "0.0", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "100.0", 
+            "axis": "Z"
+        }, 
+        "ocean_s": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "s: lev eta: eta depth: depth a: a_coeff b: b_coeff depth_c: depth_c", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "s: lev_bnds eta: eta depth: depth a: a b: b depth_c: depth_c", 
+            "bounds_values": "", 
+            "long_name": "ocean s-coordinate", 
+            "standard_name": "ocean_s_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "z(n,k,j,i) = eta(n,j,i)*(1+s(k)) + depth_c*s(k) + (depth(j,i)-depth_c)*C(k) n where n C(k)=(1-b)*sinh(a*s(k))/sinh(a) +n           b*(tanh(a*(s(k)+0.5))/(2*tanh(0.5*a)) - 0.5)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "0.0", 
+            "axis": "Z"
+        }, 
+        "plev4s": {
+            "requested": [
+                "85000.", 
+                "50000.", 
+                "20000.", 
+                "5000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "typec4pft": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "c4_plant_functional_types", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "plev3h": {
+            "requested": [
+                "10000.", 
+                "1000.", 
+                "100."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "height2m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "up", 
+            "must_have_bounds": "no", 
+            "valid_min": "1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "height", 
+            "standard_name": "height", 
+            "value": "2.0", 
+            "out_name": "height", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "10.0", 
+            "axis": "Z"
+        }, 
+        "time1": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "time", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "plev7h": {
+            "requested": [
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "25000.", 
+                "5000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "sza5": {
+            "requested": [
+                "0.", 
+                "20.", 
+                "40.", 
+                "60.", 
+                "80."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "solar zenith angle", 
+            "standard_name": "solar_zenith_angle", 
+            "value": "", 
+            "out_name": "sza", 
+            "type": "double", 
+            "units": "degree", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "depth_coord": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "ocean depth coordinate", 
+            "standard_name": "depth", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "12000.0", 
+            "axis": "Z"
+        }, 
+        "sdepth1": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "0.0 0.1", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "0.05", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "0.2", 
+            "axis": "Z"
+        }, 
+        "alternate_hybrid_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "ap: ap b: b ps: ps", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "ap: ap_bnds b: b_bnds ps: ps", 
+            "bounds_values": "", 
+            "long_name": "hybrid sigma pressure coordinate", 
+            "standard_name": "atmosphere_hybrid_sigma_pressure_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "1", 
+            "formula": "p = ap + b*ps", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "1.0", 
+            "axis": "Z"
+        }, 
+        "time2": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "time", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "yes", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "time3": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "Diurnal cycle: monthly mean of the diurnal cycle (1 hour steps).", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "oline": {
+            "requested": [
+                "barents_opening", 
+                "bering_strait", 
+                "canadian_archipelago", 
+                "denmark_strait", 
+                "drake_passage", 
+                "english_channel", 
+                "pacific_equatorial_undercurrent", 
+                "faroe_scotland_channel", 
+                "florida_bahamas_strait", 
+                "fram_strait", 
+                "iceland_faroe_channel", 
+                "indonesian_thoughflow", 
+                "mozambique_channel", 
+                "taiwan_luzon_straits", 
+                "windward_passage"
+            ], 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "ocean passage", 
+            "standard_name": "region", 
+            "value": "", 
+            "out_name": "line", 
+            "type": "character", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "plev14": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "25000.", 
+                "15000.", 
+                "10000.", 
+                "5000.", 
+                "2000.", 
+                "1000.", 
+                "500.", 
+                "100."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev8": {
+            "requested": [
+                "100000.", 
+                "85000.", 
+                "70000.", 
+                "50000.", 
+                "25000.", 
+                "10000.", 
+                "5000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "location": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "location index", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "loc", 
+            "type": "integer", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "latitude": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-90.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "latitude", 
+            "standard_name": "latitude", 
+            "value": "", 
+            "out_name": "lat", 
+            "type": "double", 
+            "units": "degrees_north", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "90.0", 
+            "axis": "Y"
+        }, 
+        "plev3": {
+            "requested": [
+                "85000.", 
+                "50000.", 
+                "25000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "basin": {
+            "requested": [
+                "atlantic_arctic_ocean", 
+                "indian_pacific_ocean", 
+                "global_ocean"
+            ], 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "ocean basin", 
+            "standard_name": "region", 
+            "value": "", 
+            "out_name": "basin", 
+            "type": "character", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "p700": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "700 hPa", 
+            "standard_name": "air_pressure", 
+            "value": "70000.", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev7": {
+            "requested": [
+                "90000.", 
+                "74000.", 
+                "62000.", 
+                "50000.", 
+                "37500.", 
+                "24500.", 
+                "9000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "100000.", 
+                "80000.", 
+                "80000.", 
+                "68000.", 
+                "68000.", 
+                "56000.", 
+                "56000.", 
+                "44000.", 
+                "44000.", 
+                "31000.", 
+                "31000.", 
+                "18000.", 
+                "18000.", 
+                " 0."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev4": {
+            "requested": [
+                "92500.", 
+                "85000.", 
+                "50000.", 
+                "25000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev23": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000.", 
+                "700.", 
+                "500.", 
+                "300.", 
+                "200.", 
+                "100.", 
+                "40."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev39": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "17000.", 
+                "15000.", 
+                "13000.", 
+                "11500.", 
+                "10000.", 
+                "9000.", 
+                "8000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1500.", 
+                "1000.", 
+                "700.", 
+                "500.", 
+                "300.", 
+                "200.", 
+                "150.", 
+                "100.", 
+                "70.", 
+                "50.", 
+                "40.", 
+                "30.", 
+                "20.", 
+                "15.", 
+                "10.", 
+                "7.", 
+                "5.", 
+                "3."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "typepever": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "primary_evergreen_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "typesdec": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "secondary_decidous_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "plev27": {
+            "requested": [
+                "100000.", 
+                "97500.", 
+                "95000.", 
+                "92500.", 
+                "90000.", 
+                "87500.", 
+                "85000.", 
+                "82500.", 
+                "80000.", 
+                "77500.", 
+                "75000.", 
+                "70000.", 
+                "65000.", 
+                "60000.", 
+                "55000.", 
+                "50000.", 
+                "45000.", 
+                "40000.", 
+                "35000.", 
+                "30000.", 
+                "25000.", 
+                "22500.", 
+                "20000.", 
+                "17500.", 
+                "15000.", 
+                "12500.", 
+                "10000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "alt40": {
+            "requested": [
+                "240.", 
+                "720.", 
+                "1200.", 
+                "1680.", 
+                "2160.", 
+                "2640.", 
+                "3120.", 
+                "3600.", 
+                "4080.", 
+                "4560.", 
+                "5040.", 
+                "5520.", 
+                "6000.", 
+                "6480.", 
+                "6960.", 
+                "7440.", 
+                "7920.", 
+                "8400.", 
+                "8880.", 
+                "9360.", 
+                "9840.", 
+                "10320.", 
+                "10800.", 
+                "11280.", 
+                "11760.", 
+                "12240.", 
+                "12720.", 
+                "13200.", 
+                "13680.", 
+                "14160.", 
+                "14640.", 
+                "15120.", 
+                "15600.", 
+                "16080.", 
+                "16560.", 
+                "17040.", 
+                "17520.", 
+                "18000.", 
+                "18480.", 
+                "18960."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "0.", 
+                "480.", 
+                "480.", 
+                "960.", 
+                "960.", 
+                "1440.", 
+                "1440.", 
+                "1920.", 
+                "1920.", 
+                "2400.", 
+                "2400.", 
+                "2880.", 
+                "2880.", 
+                "3360.", 
+                "3360.", 
+                "3840.", 
+                "3840.", 
+                "4320.", 
+                "4320.", 
+                "4800.", 
+                "4800.", 
+                "5280.", 
+                "5280.", 
+                "5760.", 
+                "5760.", 
+                "6240.", 
+                "6240.", 
+                "6720.", 
+                "6720.", 
+                "7200.", 
+                "7200.", 
+                "7680.", 
+                "7680.", 
+                "8160.", 
+                "8160.", 
+                "8640.", 
+                "8640.", 
+                "9120.", 
+                "9120.", 
+                "9600.", 
+                "9600.", 
+                "10080.", 
+                "10080.", 
+                "10560.", 
+                "10560.", 
+                "11040.", 
+                "11040.", 
+                "11520.", 
+                "11520.", 
+                "12000.", 
+                "12000.", 
+                "12480.", 
+                "12480.", 
+                "12960.", 
+                "12960.", 
+                "13440.", 
+                "13440.", 
+                "13920.", 
+                "13920.", 
+                "14400.", 
+                "14400.", 
+                "14880.", 
+                "14880.", 
+                "15360.", 
+                "15360.", 
+                "15840.", 
+                "15840.", 
+                "16320.", 
+                "16320.", 
+                "16800.", 
+                "16800.", 
+                "17280.", 
+                "17280.", 
+                "17760.", 
+                "17760.", 
+                "18240.", 
+                "18240.", 
+                "18720.", 
+                "18720.", 
+                "19200."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "altitude", 
+            "standard_name": "altitude", 
+            "value": "", 
+            "out_name": "alt40", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "time": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "time", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "plev7c": {
+            "requested": [
+                "90000.", 
+                "74000.", 
+                "62000.", 
+                "50000.", 
+                "37500.", 
+                "24500.", 
+                "9000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "height10m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "up", 
+            "must_have_bounds": "no", 
+            "valid_min": "1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "height", 
+            "standard_name": "height", 
+            "value": "10.0", 
+            "out_name": "height", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "30.0", 
+            "axis": "Z"
+        }, 
+        "dbze": {
+            "requested": [
+                "-47.5", 
+                "-42.5", 
+                "-37.5", 
+                "-32.5", 
+                "-27.5", 
+                "-22.5", 
+                "-17.5", 
+                "-12.5", 
+                "-7.5", 
+                "-2.5", 
+                "2.5", 
+                "7.5", 
+                "12.5", 
+                "17.5", 
+                "22.5"
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "-50", 
+                "-45", 
+                "-45", 
+                "-40", 
+                "-40", 
+                "-35", 
+                "-35", 
+                "-30", 
+                "-30", 
+                "-25", 
+                "-25", 
+                "-20", 
+                "-20", 
+                "-15", 
+                "-15", 
+                "-10", 
+                "-10", 
+                "-5", 
+                "-5", 
+                "0", 
+                "0", 
+                "5", 
+                "5", 
+                "10", 
+                "10", 
+                "15", 
+                "15", 
+                "20", 
+                "20", 
+                "25."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "CloudSat simulator equivalent radar reflectivity factor", 
+            "standard_name": "equivalent_reflectivity_factor", 
+            "value": "", 
+            "out_name": "dbze", 
+            "type": "double", 
+            "units": "dBZ", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "typesever": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "secondary_evergreen_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "rho": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "density++++?", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "rho", 
+            "type": "double", 
+            "units": "kg m-3", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "depth100m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "80.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "100.0", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "120.0", 
+            "axis": "Z"
+        }, 
+        "effectRadLi": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "Effective Radius of Liquid Aerosols", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "effectRadLi", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "sdepth": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "200.0", 
+            "axis": "Z"
+        }, 
+        "vegtype": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "plant functional type", 
+            "standard_name": "area_type", 
+            "value": "", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "typec3pft": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "c3_plant_functional_types", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "natural_log_pressure": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "p0: p0 lev: lev", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "p0: p0 lev: lev_bnds", 
+            "bounds_values": "", 
+            "long_name": "atmosphere natural log pressure coordinate", 
+            "standard_name": "atmosphere_ln_pressure_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "p = p0 * exp(-lev)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "20.0", 
+            "axis": "Z"
+        }, 
+        "scatratio": {
+            "requested": [
+                "0.005", 
+                "0.605", 
+                "2.1", 
+                "4.", 
+                "6.", 
+                "8.5", 
+                "12.5", 
+                "17.5", 
+                "22.5", 
+                "27.5", 
+                "35.", 
+                "45.", 
+                "55.", 
+                "70.", 
+                "50040."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "0.", 
+                "0.01", 
+                "0.01", 
+                "1.2", 
+                "1.2", 
+                "3.", 
+                "3.", 
+                "5.", 
+                "5.", 
+                "7.", 
+                "7.", 
+                "10.", 
+                "10.", 
+                "15.", 
+                "15.", 
+                "20.", 
+                "20.", 
+                "25.", 
+                "25.", 
+                "30.", 
+                "30.", 
+                "40.", 
+                "40.", 
+                "50.", 
+                "50.", 
+                "60.", 
+                "60.", 
+                "80.", 
+                "80.", 
+                "100000."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "lidar backscattering ratio", 
+            "standard_name": "backscattering_ratio", 
+            "value": "", 
+            "out_name": "scatratio", 
+            "type": "double", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "standard_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "ptop: ptop sigma: lev ps: ps", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "ptop: ptop sigma: lev_bnds ps: ps", 
+            "bounds_values": "", 
+            "long_name": "sigma coordinate", 
+            "standard_name": "atmosphere_sigma_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "p = ptop + sigma*(ps - ptop)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "1.0", 
+            "axis": "Z"
+        }, 
+        "typepdec": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "primary_deciduous_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "hybrid_height": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "a: lev b: b orog: orog", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "a: lev_bnds b: b_bnds orog: orog", 
+            "bounds_values": "", 
+            "long_name": "hybrid height coordinate", 
+            "standard_name": "atmosphere_hybrid_height_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "m", 
+            "formula": "z = a + b*orog", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "longitude": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "longitude", 
+            "standard_name": "longitude", 
+            "value": "", 
+            "out_name": "lon", 
+            "type": "double", 
+            "units": "degrees_east", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "360.0", 
+            "axis": "X"
+        }, 
+        "effectRadIc": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "Effective Radius of Ice Aerosols", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "effectRadIc", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "p1000": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "1000 hPa", 
+            "standard_name": "air_pressure", 
+            "value": "100000.", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "p500": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "500 hPa", 
+            "standard_name": "air_pressure", 
+            "value": "50000.", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "ocean_double_sigma": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "sigma: sigma depth: depth z1: z1 z2: z2 a: a_coeff href: href k_c: k_c", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "sigma: sigma_bnds depth: depth z1: z1 z2: z2 a: a href: href k_c: k_c", 
+            "bounds_values": "", 
+            "long_name": "ocean double sigma coordinate", 
+            "standard_name": "ocean_double_sigma", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "for k <= k_c:n z(k,j,i)= sigma(k)*f(j,i) n for k > k_c:n z(k,j,i)= f(j,i) + (sigma(k)-1)*(depth(j,i)-f(j,i)) n f(j,i)= 0.5*(z1+ z2) + 0.5*(z1-z2)* tanh(2*a/(z1-z2)*(depth(j,i)-href))", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plevs": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "standard_hybrid_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "p0: p0 a: a b: b ps: ps", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "p0: p0 a: a_bnds b: b_bnds ps: ps", 
+            "bounds_values": "", 
+            "long_name": "hybrid sigma pressure coordinate", 
+            "standard_name": "atmosphere_hybrid_sigma_pressure_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "1", 
+            "formula": "p = a*p0 + b*ps", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "1.0", 
+            "axis": "Z"
+        }, 
+        "p560": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "68000. 44000.", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "56000.0", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }
+    }, 
+    "variable_entry": {
+        "depth_c": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: depth_c", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "ap_bnds": {
+            "units": "Pa", 
+            "long_name": "vertical coordinate formula term: ap(k+1/2)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "ap": {
+            "units": "Pa", 
+            "long_name": "vertical coordinate formula term: ap(k)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "href": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: href", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "orog": {
+            "units": "m", 
+            "long_name": "Surface Altitude", 
+            "type": "real", 
+            "dimensions": "longitude latitude"
+        }, 
+        "diabdrag": {
+            "comment": "Other sub-grid scale/numerical zonal drag excluding that already provided for the parameterized orographic and non-ororgraphic gravity waves. This would be used to calculate the total 'diabatic drag'. Contributions to this additional drag such Rayleigh friction and diffusion that can be calculated from the monthly mean wind fields should not be included, but details (e.g. coefficients) of the friction and/or diffusion used in the model should be provided separately.", 
+            "dimensions": "longitude latitude plev17 time", 
+            "positive": "", 
+            "valid_min": "-10000.0", 
+            "long_name": "Tendency of Eastward Wind from Numerical Artefacts", 
+            "standard_name": "tendency_of_eastward_wind_due_to_numerical_artefacts", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean longitude: mean", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "m s-2", 
+            "out_name": "diabdrag", 
+            "type": "real", 
+            "valid_max": "10000.0", 
+            "ok_max_mean_abs": ""
+        }, 
+        "zlev": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: zlev(k)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "ps": {
+            "units": "Pa", 
+            "long_name": "Surface Air Pressure", 
+            "type": "real", 
+            "dimensions": "longitude latitude time"
+        }, 
+        "tntlw": {
+            "comment": "longwave heating rates", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "-100.0", 
+            "long_name": "Longwave Heating Rate", 
+            "standard_name": "tendency_of_air_temperature_due_to_longwave_heating", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "K s-1", 
+            "out_name": "tntlw", 
+            "type": "real", 
+            "valid_max": "100.0", 
+            "ok_max_mean_abs": ""
+        }, 
+        "sigma_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: sigma(k+1/2)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "ptop": {
+            "units": "Pa", 
+            "long_name": "pressure at top of model", 
+            "type": "", 
+            "dimensions": ""
+        }, 
+        "accelnogw": {
+            "comment": "Eastward acceleration from the parameterized non-orographic gravity wave drag (NOGWD) derived either from daily means or 6hr fields (use instantaneous daily fields or 12 hr fields if the 6 hr data are not available). Use the accelerations as applied in your model.", 
+            "dimensions": "longitude latitude plev17 time", 
+            "positive": "", 
+            "valid_min": "-10000.0", 
+            "long_name": "Tendency of Eastward Wind from Non-Oro GWD", 
+            "standard_name": "tendency_of_eastward_wind_due_to_nonorographic_gravity_wave_drag", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean longitude: mean", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "m s-2", 
+            "out_name": "accelnogw", 
+            "type": "real", 
+            "valid_max": "10000.0", 
+            "ok_max_mean_abs": ""
+        }, 
+        "vmro3": {
+            "comment": "", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "0.0", 
+            "long_name": "Ozone Volume Mixing Ratio", 
+            "standard_name": "mole_fraction_of_ozone_in_air", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "mole mole-1", 
+            "out_name": "vmro3", 
+            "type": "real", 
+            "valid_max": "1.0", 
+            "ok_max_mean_abs": ""
+        }, 
+        "b_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: b(k+1/2)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "fy": {
+            "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": "longitude latitude plev17 time", 
+            "positive": "", 
+            "valid_min": "-10000.0", 
+            "long_name": "Northward EPF", 
+            "standard_name": "northward_eliassen_palm_flux_in_air", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean longitude: mean", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "m3 s-2", 
+            "out_name": "fy", 
+            "type": "real", 
+            "valid_max": "10000.0", 
+            "ok_max_mean_abs": ""
+        }, 
+        "fz": {
+            "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": "longitude latitude plev17 time", 
+            "positive": "", 
+            "valid_min": "-10000.0", 
+            "long_name": "Upward EPF", 
+            "standard_name": "upward_eliassen_palm_flux_in_air", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean longitude: mean", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "m3 s-2", 
+            "out_name": "fz", 
+            "type": "real", 
+            "valid_max": "10000.0", 
+            "ok_max_mean_abs": ""
+        }, 
+        "acceldivf": {
+            "comment": "Transformed Eulerian Mean Diagnostics Acceleration from the Eliassen-Palm flux divergence 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.2a of Andrews, Holton and Leovy text book.", 
+            "dimensions": "longitude latitude plev17 time", 
+            "positive": "", 
+            "valid_min": "-10000.0", 
+            "long_name": "Tendency of Eastward Wind from EPF Divergence", 
+            "standard_name": "tendency_of_eastward_wind_due_to_eliassen_palm_flux_divergence", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean longitude: mean", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "m s-2", 
+            "out_name": "acceldivf", 
+            "type": "real", 
+            "valid_max": "10000.0", 
+            "ok_max_mean_abs": ""
+        }, 
+        "nsigma": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: nsigma", 
+            "type": "integer", 
+            "dimensions": ""
+        }, 
+        "tntsw": {
+            "comment": "shortwave heating rates", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "-100.0", 
+            "long_name": "Shortwave Heating Rate", 
+            "standard_name": "tendency_of_air_temperature_due_to_shortwave_heating", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "K s-1", 
+            "out_name": "tntsw", 
+            "type": "real", 
+            "valid_max": "100.0", 
+            "ok_max_mean_abs": ""
+        }, 
+        "ztop": {
+            "units": "m", 
+            "long_name": "height of top of model", 
+            "type": "", 
+            "dimensions": ""
+        }, 
+        "zlev_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: zlev(k+1/2)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "z1": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: z1", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "z2": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: z2", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "a": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: a(k)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "p0": {
+            "units": "Pa", 
+            "long_name": "vertical coordinate formula term: reference pressure", 
+            "type": "", 
+            "dimensions": ""
+        }, 
+        "b": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: b(k)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "vstar": {
+            "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": "longitude latitude plev17 time", 
+            "positive": "", 
+            "valid_min": "-10000.0", 
+            "long_name": "Northward TEM air velocity", 
+            "standard_name": "northward_transformed_eulerian_mean_air_velocity", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean longitude: mean", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "m s-1", 
+            "out_name": "vstar", 
+            "type": "real", 
+            "valid_max": "10000.0", 
+            "ok_max_mean_abs": ""
+        }, 
+        "depth": {
+            "units": "m", 
+            "long_name": "Sea Floor Depth: formula term: thetao", 
+            "type": "real", 
+            "dimensions": "longitude latitude"
+        }, 
+        "eta": {
+            "units": "m", 
+            "long_name": "Sea Surface Height formula term: thetao", 
+            "type": "real", 
+            "dimensions": "longitude latitude time"
+        }, 
+        "wstar": {
+            "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": "longitude latitude plev17 time", 
+            "positive": "", 
+            "valid_min": "-10000.0", 
+            "long_name": "Upward TEM air velocity", 
+            "standard_name": "unset", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean longitude: mean", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "m s-1", 
+            "out_name": "wstar", 
+            "type": "real", 
+            "valid_max": "10000.0", 
+            "ok_max_mean_abs": ""
+        }, 
+        "accelogw": {
+            "comment": "Eastward acceleration from the parameterized orographic gravity wave drag (OGWD) derived either from daily means or 6hr fields (use instantaneous daily fields or 12 hr fields if the 6 hr data are not available). Use the accelerations as applied in your model.", 
+            "dimensions": "longitude latitude plev17 time", 
+            "positive": "", 
+            "valid_min": "-10000.0", 
+            "long_name": "Tendency of Eastward Wind from Oro-GWD", 
+            "standard_name": "tendency_of_eastward_wind_due_to_orographic_gravity_wave_drag", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean longitude: mean", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "m s-2", 
+            "out_name": "accelogw", 
+            "type": "real", 
+            "valid_max": "10000.0", 
+            "ok_max_mean_abs": ""
+        }, 
+        "k_c": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: k_c", 
+            "type": "integer", 
+            "dimensions": ""
+        }, 
+        "sigma": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: sigma(k)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "zmtnt": {
+            "comment": "The diabatic heating rates due to all the processes that may change potential temperature", 
+            "dimensions": "longitude latitude plev17 time", 
+            "positive": "", 
+            "valid_min": "-500.0", 
+            "long_name": "Zonal Mean Diabatic Heating Rates", 
+            "standard_name": "tendency_of_air_temperature_due_to_diabatic_processes", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean longitude: mean", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "K s-1", 
+            "out_name": "zmtnt", 
+            "type": "real", 
+            "valid_max": "500.0", 
+            "ok_max_mean_abs": ""
+        }, 
+        "a_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: a(k+1/2)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }
+    }
+}
diff --git a/TestTables/CMIP6_CORDEX_day.json b/TestTables/CMIP6_CORDEX_day.json
new file mode 100644
index 0000000..15178d7
--- /dev/null
+++ b/TestTables/CMIP6_CORDEX_day.json
@@ -0,0 +1,2154 @@
+{
+    "Header": {
+        "product": "output", 
+        "approx_interval": "1.00000", 
+        "realm": "atmos", 
+        "cmor_version": "3.1", 
+        "Conventions": "CF-1.6 CMIP-6.0", 
+        "frequency": "day", 
+        "table_id": "Table CORDEX_day", 
+        "data_specs_version": "01.beta.29", 
+        "mip_era": "CMIP6", 
+        "generic_levels": "", 
+        "missing_value": "1e20", 
+        "table_date": "14 June 2016"
+    }, 
+    "axis_entry": {
+        "typebare": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "bare_ground", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "tau": {
+            "requested": [
+                "0.15", 
+                "0.8", 
+                "2.45", 
+                "6.5", 
+                "16.2", 
+                "41.5", 
+                "100."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "0.0", 
+                "0.3", 
+                "0.3", 
+                "1.3", 
+                "1.3", 
+                "3.6", 
+                "3.6", 
+                "9.4", 
+                "9.4", 
+                "23.0", 
+                "23.0", 
+                "60.0", 
+                "60.0", 
+                "100000."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "cloud optical thickness", 
+            "standard_name": "atmosphere_optical_thickness_due_to_cloud", 
+            "value": "", 
+            "out_name": "tau", 
+            "type": "double", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "olayer100m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "0. 100.", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "50.0", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "100.0", 
+            "axis": "Z"
+        }, 
+        "spectband": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "Spectral Band", 
+            "standard_name": "wave_frequency", 
+            "value": "", 
+            "out_name": "spectband", 
+            "type": "double", 
+            "units": "s-1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "ocean_sigma_z": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "sigma: sigma eta: eta depth: depth depth_c: depth_c nsigma: nsigma zlev: zlev", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "sigma: sigma_bnds eta: eta depth: depth depth_c: depth_c nsigma: nsigma zlev: zlev_bnds", 
+            "bounds_values": "", 
+            "long_name": "ocean sigma over z coordinate", 
+            "standard_name": "ocean_sigma_z", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "for k <= nsigma: z(n,k,j,i) = eta(n,j,i) + sigma(k)*(min(depth_c,depth(j,i))+eta(n,j,i)) ; for k > nsigma: z(n,k,j,i) = zlev(k)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev19": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000.", 
+                "500.", 
+                "100."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "p220": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "44000. 0.0", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "22000.0", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev17": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev10": {
+            "requested": [
+                "100000.", 
+                "85000.", 
+                "70000.", 
+                "50000.", 
+                "25000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "site": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "site index", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "site", 
+            "type": "integer", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "smooth_level": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "a: a b1: b1 b2: b2 ztop: ztop zsurf1: zsurf1 zsurf2: zsurf2", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-200.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "a: a_bnds b1: b1_bnds b2: b2_bnds ztop: ztop zsurf1: zsurf1 zsurf2: zsurf2", 
+            "bounds_values": "", 
+            "long_name": "atmosphere smooth level vertical (SLEVE) coordinate", 
+            "standard_name": "atmosphere_sleve_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "m", 
+            "formula": "z = a*ztop + b1*zsurf1 + b2*zsurf2", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "800000.0", 
+            "axis": "Z"
+        }, 
+        "p840": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "100000. 68000.", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "84000.0", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "ocean_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "sigma: lev eta: eta depth: depth", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "sigma: lev_bnds eta: eta depth: depth", 
+            "bounds_values": "", 
+            "long_name": "ocean sigma coordinate", 
+            "standard_name": "ocean_sigma_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "z(n,k,j,i) = eta(n,j,i) + sigma(k)*(depth(j,i)+eta(n,j,i))", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "0.0", 
+            "axis": "Z"
+        }, 
+        "depth0m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "0.0", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "100.0", 
+            "axis": "Z"
+        }, 
+        "ocean_s": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "s: lev eta: eta depth: depth a: a_coeff b: b_coeff depth_c: depth_c", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "s: lev_bnds eta: eta depth: depth a: a b: b depth_c: depth_c", 
+            "bounds_values": "", 
+            "long_name": "ocean s-coordinate", 
+            "standard_name": "ocean_s_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "z(n,k,j,i) = eta(n,j,i)*(1+s(k)) + depth_c*s(k) + (depth(j,i)-depth_c)*C(k) n where n C(k)=(1-b)*sinh(a*s(k))/sinh(a) +n           b*(tanh(a*(s(k)+0.5))/(2*tanh(0.5*a)) - 0.5)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "0.0", 
+            "axis": "Z"
+        }, 
+        "plev4s": {
+            "requested": [
+                "85000.", 
+                "50000.", 
+                "20000.", 
+                "5000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "typec4pft": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "c4_plant_functional_types", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "plev3h": {
+            "requested": [
+                "10000.", 
+                "1000.", 
+                "100."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "height2m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "up", 
+            "must_have_bounds": "no", 
+            "valid_min": "1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "height", 
+            "standard_name": "height", 
+            "value": "2.0", 
+            "out_name": "height", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "10.0", 
+            "axis": "Z"
+        }, 
+        "time1": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "time", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "plev7h": {
+            "requested": [
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "25000.", 
+                "5000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "sza5": {
+            "requested": [
+                "0.", 
+                "20.", 
+                "40.", 
+                "60.", 
+                "80."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "solar zenith angle", 
+            "standard_name": "solar_zenith_angle", 
+            "value": "", 
+            "out_name": "sza", 
+            "type": "double", 
+            "units": "degree", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "depth_coord": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "ocean depth coordinate", 
+            "standard_name": "depth", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "12000.0", 
+            "axis": "Z"
+        }, 
+        "sdepth1": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "0.0 0.1", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "0.05", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "0.2", 
+            "axis": "Z"
+        }, 
+        "alternate_hybrid_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "ap: ap b: b ps: ps", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "ap: ap_bnds b: b_bnds ps: ps", 
+            "bounds_values": "", 
+            "long_name": "hybrid sigma pressure coordinate", 
+            "standard_name": "atmosphere_hybrid_sigma_pressure_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "1", 
+            "formula": "p = ap + b*ps", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "1.0", 
+            "axis": "Z"
+        }, 
+        "time2": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "time", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "yes", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "time3": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "Diurnal cycle: monthly mean of the diurnal cycle (1 hour steps).", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "oline": {
+            "requested": [
+                "barents_opening", 
+                "bering_strait", 
+                "canadian_archipelago", 
+                "denmark_strait", 
+                "drake_passage", 
+                "english_channel", 
+                "pacific_equatorial_undercurrent", 
+                "faroe_scotland_channel", 
+                "florida_bahamas_strait", 
+                "fram_strait", 
+                "iceland_faroe_channel", 
+                "indonesian_thoughflow", 
+                "mozambique_channel", 
+                "taiwan_luzon_straits", 
+                "windward_passage"
+            ], 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "ocean passage", 
+            "standard_name": "region", 
+            "value": "", 
+            "out_name": "line", 
+            "type": "character", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "plev14": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "25000.", 
+                "15000.", 
+                "10000.", 
+                "5000.", 
+                "2000.", 
+                "1000.", 
+                "500.", 
+                "100."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev8": {
+            "requested": [
+                "100000.", 
+                "85000.", 
+                "70000.", 
+                "50000.", 
+                "25000.", 
+                "10000.", 
+                "5000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "location": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "location index", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "loc", 
+            "type": "integer", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "latitude": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-90.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "latitude", 
+            "standard_name": "latitude", 
+            "value": "", 
+            "out_name": "lat", 
+            "type": "double", 
+            "units": "degrees_north", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "90.0", 
+            "axis": "Y"
+        }, 
+        "plev3": {
+            "requested": [
+                "85000.", 
+                "50000.", 
+                "25000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "basin": {
+            "requested": [
+                "atlantic_arctic_ocean", 
+                "indian_pacific_ocean", 
+                "global_ocean"
+            ], 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "ocean basin", 
+            "standard_name": "region", 
+            "value": "", 
+            "out_name": "basin", 
+            "type": "character", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "p700": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "700 hPa", 
+            "standard_name": "air_pressure", 
+            "value": "70000.", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev7": {
+            "requested": [
+                "90000.", 
+                "74000.", 
+                "62000.", 
+                "50000.", 
+                "37500.", 
+                "24500.", 
+                "9000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "100000.", 
+                "80000.", 
+                "80000.", 
+                "68000.", 
+                "68000.", 
+                "56000.", 
+                "56000.", 
+                "44000.", 
+                "44000.", 
+                "31000.", 
+                "31000.", 
+                "18000.", 
+                "18000.", 
+                " 0."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev4": {
+            "requested": [
+                "92500.", 
+                "85000.", 
+                "50000.", 
+                "25000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev23": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000.", 
+                "700.", 
+                "500.", 
+                "300.", 
+                "200.", 
+                "100.", 
+                "40."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev39": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "17000.", 
+                "15000.", 
+                "13000.", 
+                "11500.", 
+                "10000.", 
+                "9000.", 
+                "8000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1500.", 
+                "1000.", 
+                "700.", 
+                "500.", 
+                "300.", 
+                "200.", 
+                "150.", 
+                "100.", 
+                "70.", 
+                "50.", 
+                "40.", 
+                "30.", 
+                "20.", 
+                "15.", 
+                "10.", 
+                "7.", 
+                "5.", 
+                "3."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "typepever": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "primary_evergreen_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "typesdec": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "secondary_decidous_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "plev27": {
+            "requested": [
+                "100000.", 
+                "97500.", 
+                "95000.", 
+                "92500.", 
+                "90000.", 
+                "87500.", 
+                "85000.", 
+                "82500.", 
+                "80000.", 
+                "77500.", 
+                "75000.", 
+                "70000.", 
+                "65000.", 
+                "60000.", 
+                "55000.", 
+                "50000.", 
+                "45000.", 
+                "40000.", 
+                "35000.", 
+                "30000.", 
+                "25000.", 
+                "22500.", 
+                "20000.", 
+                "17500.", 
+                "15000.", 
+                "12500.", 
+                "10000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "alt40": {
+            "requested": [
+                "240.", 
+                "720.", 
+                "1200.", 
+                "1680.", 
+                "2160.", 
+                "2640.", 
+                "3120.", 
+                "3600.", 
+                "4080.", 
+                "4560.", 
+                "5040.", 
+                "5520.", 
+                "6000.", 
+                "6480.", 
+                "6960.", 
+                "7440.", 
+                "7920.", 
+                "8400.", 
+                "8880.", 
+                "9360.", 
+                "9840.", 
+                "10320.", 
+                "10800.", 
+                "11280.", 
+                "11760.", 
+                "12240.", 
+                "12720.", 
+                "13200.", 
+                "13680.", 
+                "14160.", 
+                "14640.", 
+                "15120.", 
+                "15600.", 
+                "16080.", 
+                "16560.", 
+                "17040.", 
+                "17520.", 
+                "18000.", 
+                "18480.", 
+                "18960."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "0.", 
+                "480.", 
+                "480.", 
+                "960.", 
+                "960.", 
+                "1440.", 
+                "1440.", 
+                "1920.", 
+                "1920.", 
+                "2400.", 
+                "2400.", 
+                "2880.", 
+                "2880.", 
+                "3360.", 
+                "3360.", 
+                "3840.", 
+                "3840.", 
+                "4320.", 
+                "4320.", 
+                "4800.", 
+                "4800.", 
+                "5280.", 
+                "5280.", 
+                "5760.", 
+                "5760.", 
+                "6240.", 
+                "6240.", 
+                "6720.", 
+                "6720.", 
+                "7200.", 
+                "7200.", 
+                "7680.", 
+                "7680.", 
+                "8160.", 
+                "8160.", 
+                "8640.", 
+                "8640.", 
+                "9120.", 
+                "9120.", 
+                "9600.", 
+                "9600.", 
+                "10080.", 
+                "10080.", 
+                "10560.", 
+                "10560.", 
+                "11040.", 
+                "11040.", 
+                "11520.", 
+                "11520.", 
+                "12000.", 
+                "12000.", 
+                "12480.", 
+                "12480.", 
+                "12960.", 
+                "12960.", 
+                "13440.", 
+                "13440.", 
+                "13920.", 
+                "13920.", 
+                "14400.", 
+                "14400.", 
+                "14880.", 
+                "14880.", 
+                "15360.", 
+                "15360.", 
+                "15840.", 
+                "15840.", 
+                "16320.", 
+                "16320.", 
+                "16800.", 
+                "16800.", 
+                "17280.", 
+                "17280.", 
+                "17760.", 
+                "17760.", 
+                "18240.", 
+                "18240.", 
+                "18720.", 
+                "18720.", 
+                "19200."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "altitude", 
+            "standard_name": "altitude", 
+            "value": "", 
+            "out_name": "alt40", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "time": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "time", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "plev7c": {
+            "requested": [
+                "90000.", 
+                "74000.", 
+                "62000.", 
+                "50000.", 
+                "37500.", 
+                "24500.", 
+                "9000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "height10m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "up", 
+            "must_have_bounds": "no", 
+            "valid_min": "1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "height", 
+            "standard_name": "height", 
+            "value": "10.0", 
+            "out_name": "height", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "30.0", 
+            "axis": "Z"
+        }, 
+        "dbze": {
+            "requested": [
+                "-47.5", 
+                "-42.5", 
+                "-37.5", 
+                "-32.5", 
+                "-27.5", 
+                "-22.5", 
+                "-17.5", 
+                "-12.5", 
+                "-7.5", 
+                "-2.5", 
+                "2.5", 
+                "7.5", 
+                "12.5", 
+                "17.5", 
+                "22.5"
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "-50", 
+                "-45", 
+                "-45", 
+                "-40", 
+                "-40", 
+                "-35", 
+                "-35", 
+                "-30", 
+                "-30", 
+                "-25", 
+                "-25", 
+                "-20", 
+                "-20", 
+                "-15", 
+                "-15", 
+                "-10", 
+                "-10", 
+                "-5", 
+                "-5", 
+                "0", 
+                "0", 
+                "5", 
+                "5", 
+                "10", 
+                "10", 
+                "15", 
+                "15", 
+                "20", 
+                "20", 
+                "25."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "CloudSat simulator equivalent radar reflectivity factor", 
+            "standard_name": "equivalent_reflectivity_factor", 
+            "value": "", 
+            "out_name": "dbze", 
+            "type": "double", 
+            "units": "dBZ", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "typesever": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "secondary_evergreen_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "rho": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "density++++?", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "rho", 
+            "type": "double", 
+            "units": "kg m-3", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "depth100m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "80.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "100.0", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "120.0", 
+            "axis": "Z"
+        }, 
+        "effectRadLi": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "Effective Radius of Liquid Aerosols", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "effectRadLi", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "sdepth": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "200.0", 
+            "axis": "Z"
+        }, 
+        "vegtype": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "plant functional type", 
+            "standard_name": "area_type", 
+            "value": "", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "typec3pft": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "c3_plant_functional_types", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "natural_log_pressure": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "p0: p0 lev: lev", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "p0: p0 lev: lev_bnds", 
+            "bounds_values": "", 
+            "long_name": "atmosphere natural log pressure coordinate", 
+            "standard_name": "atmosphere_ln_pressure_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "p = p0 * exp(-lev)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "20.0", 
+            "axis": "Z"
+        }, 
+        "scatratio": {
+            "requested": [
+                "0.005", 
+                "0.605", 
+                "2.1", 
+                "4.", 
+                "6.", 
+                "8.5", 
+                "12.5", 
+                "17.5", 
+                "22.5", 
+                "27.5", 
+                "35.", 
+                "45.", 
+                "55.", 
+                "70.", 
+                "50040."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "0.", 
+                "0.01", 
+                "0.01", 
+                "1.2", 
+                "1.2", 
+                "3.", 
+                "3.", 
+                "5.", 
+                "5.", 
+                "7.", 
+                "7.", 
+                "10.", 
+                "10.", 
+                "15.", 
+                "15.", 
+                "20.", 
+                "20.", 
+                "25.", 
+                "25.", 
+                "30.", 
+                "30.", 
+                "40.", 
+                "40.", 
+                "50.", 
+                "50.", 
+                "60.", 
+                "60.", 
+                "80.", 
+                "80.", 
+                "100000."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "lidar backscattering ratio", 
+            "standard_name": "backscattering_ratio", 
+            "value": "", 
+            "out_name": "scatratio", 
+            "type": "double", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "standard_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "ptop: ptop sigma: lev ps: ps", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "ptop: ptop sigma: lev_bnds ps: ps", 
+            "bounds_values": "", 
+            "long_name": "sigma coordinate", 
+            "standard_name": "atmosphere_sigma_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "p = ptop + sigma*(ps - ptop)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "1.0", 
+            "axis": "Z"
+        }, 
+        "typepdec": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "primary_deciduous_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "hybrid_height": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "a: lev b: b orog: orog", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "a: lev_bnds b: b_bnds orog: orog", 
+            "bounds_values": "", 
+            "long_name": "hybrid height coordinate", 
+            "standard_name": "atmosphere_hybrid_height_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "m", 
+            "formula": "z = a + b*orog", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "longitude": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "longitude", 
+            "standard_name": "longitude", 
+            "value": "", 
+            "out_name": "lon", 
+            "type": "double", 
+            "units": "degrees_east", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "360.0", 
+            "axis": "X"
+        }, 
+        "effectRadIc": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "Effective Radius of Ice Aerosols", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "effectRadIc", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "p1000": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "1000 hPa", 
+            "standard_name": "air_pressure", 
+            "value": "100000.", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "p500": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "500 hPa", 
+            "standard_name": "air_pressure", 
+            "value": "50000.", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "ocean_double_sigma": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "sigma: sigma depth: depth z1: z1 z2: z2 a: a_coeff href: href k_c: k_c", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "sigma: sigma_bnds depth: depth z1: z1 z2: z2 a: a href: href k_c: k_c", 
+            "bounds_values": "", 
+            "long_name": "ocean double sigma coordinate", 
+            "standard_name": "ocean_double_sigma", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "for k <= k_c:n z(k,j,i)= sigma(k)*f(j,i) n for k > k_c:n z(k,j,i)= f(j,i) + (sigma(k)-1)*(depth(j,i)-f(j,i)) n f(j,i)= 0.5*(z1+ z2) + 0.5*(z1-z2)* tanh(2*a/(z1-z2)*(depth(j,i)-href))", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plevs": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "standard_hybrid_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "p0: p0 a: a b: b ps: ps", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "p0: p0 a: a_bnds b: b_bnds ps: ps", 
+            "bounds_values": "", 
+            "long_name": "hybrid sigma pressure coordinate", 
+            "standard_name": "atmosphere_hybrid_sigma_pressure_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "1", 
+            "formula": "p = a*p0 + b*ps", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "1.0", 
+            "axis": "Z"
+        }, 
+        "p560": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "68000. 44000.", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "56000.0", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }
+    }, 
+    "variable_entry": {
+        "depth_c": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: depth_c", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "ta500": {
+            "comment": "", 
+            "dimensions": "longitude latitude time plev500", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Air Temperature", 
+            "standard_name": "air_temperature", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "K", 
+            "out_name": "ta500", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "ap_bnds": {
+            "units": "Pa", 
+            "long_name": "vertical coordinate formula term: ap(k+1/2)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "ap": {
+            "units": "Pa", 
+            "long_name": "vertical coordinate formula term: ap(k)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "href": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: href", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "orog": {
+            "units": "m", 
+            "long_name": "Surface Altitude", 
+            "type": "real", 
+            "dimensions": "longitude latitude"
+        }, 
+        "zlev": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: zlev(k)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "ps": {
+            "units": "Pa", 
+            "long_name": "Surface Air Pressure", 
+            "type": "real", 
+            "dimensions": "longitude latitude time"
+        }, 
+        "sigma_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: sigma(k+1/2)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "ptop": {
+            "units": "Pa", 
+            "long_name": "pressure at top of model", 
+            "type": "", 
+            "dimensions": ""
+        }, 
+        "b_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: b(k+1/2)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "nsigma": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: nsigma", 
+            "type": "integer", 
+            "dimensions": ""
+        }, 
+        "ztop": {
+            "units": "m", 
+            "long_name": "height of top of model", 
+            "type": "", 
+            "dimensions": ""
+        }, 
+        "zlev_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: zlev(k+1/2)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "z1": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: z1", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "z2": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: z2", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "a": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: a(k)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "p0": {
+            "units": "Pa", 
+            "long_name": "vertical coordinate formula term: reference pressure", 
+            "type": "", 
+            "dimensions": ""
+        }, 
+        "b": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: b(k)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "depth": {
+            "units": "m", 
+            "long_name": "Sea Floor Depth: formula term: thetao", 
+            "type": "real", 
+            "dimensions": "longitude latitude"
+        }, 
+        "eta": {
+            "units": "m", 
+            "long_name": "Sea Surface Height formula term: thetao", 
+            "type": "real", 
+            "dimensions": "longitude latitude time"
+        }, 
+        "k_c": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: k_c", 
+            "type": "integer", 
+            "dimensions": ""
+        }, 
+        "sigma": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: sigma(k)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "a_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: a(k+1/2)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }
+    }
+}
diff --git a/TestTables/CMIP6_CV.json b/TestTables/CMIP6_CV.json
new file mode 100644
index 0000000..1d5d14f
--- /dev/null
+++ b/TestTables/CMIP6_CV.json
@@ -0,0 +1,2393 @@
+{
+"CV": {
+    "required_global_attributes": 
+        [
+        "variant_label",
+        "activity_id",
+        "branch_method",
+        "Conventions",
+        "creation_date",
+        "mip_era",
+        "data_specs_version",
+        "experiment_id",
+        "experiment",
+        "forcing_index",
+        "further_info_url",
+        "frequency",
+        "grid",
+        "grid_label",
+        "grid_resolution",
+        "initialization_index",
+        "institution",
+        "institution_id",
+        "license",
+        "physics_index",
+        "product",
+        "realization_index",
+        "realm",
+        "variant_label",
+        "source",
+        "source_id",
+        "source_type",
+        "sub_experiment",
+        "sub_experiment_id",
+        "table_id",
+        "tracking_id",
+        "variable_id"
+        ],
+
+
+    "variant_label": [ "^r[[:digit:]]\\{1,\\}i[[:digit:]]\\{1,\\}p[[:digit:]]\\{1,\\}f[[:digit:]]\\{1,\\}$" ],
+
+    "sub_experiment_id": [ "^s[[:digit:]]\\{4,4\\}$", "none" ],
+
+    "product": [ "output" ] ,
+
+    "mip_era": [ "CMIP6" ],
+
+    "frequency": [ "3hr", "6hr", "day", "fx", "mon", "monClim", "subhr", "yr" ],
+
+    "further_info_url": [ "http://furtherinfo.es-doc.org/[[:alpha:]]\\{1,\\}" ],
+
+    "activity_id": [
+        "DECK",
+        "AerChemMIP", 
+        "C4MIP", 
+        "CFMIP", 
+        "CMIP", 
+        "CORDEX", 
+        "DAMIP", 
+        "DCPP", 
+        "DynVar", 
+        "FAFMIP", 
+        "GMMIP", 
+        "GeoMIP", 
+        "HighResMIP", 
+        "ISMIP6", 
+        "LS3MIP", 
+        "LUMIP", 
+        "OMIP", 
+        "PDRMIP", 
+        "PMIP", 
+        "RFMIP", 
+        "SIMIP", 
+        "ScenarioMIP", 
+        "SolarMIP", 
+        "VIACSAB", 
+        "VolMIP",
+        "LS3MIP LUMIP",
+        "RFMIP, AerChemMIP",
+        "ScenarioMIP AerChemMIP",
+        "ScenarioMIP AerChemMIP LUMIP"
+        ],
+
+
+    "source_ids": {
+        "ACCESS1-0": "ACCESS1.0: adaptation of unified model with interactive chemistry (ca. 2012)" ,
+        "AWI-CM": "AWI-CM:",
+        "BCC": "BCC:",
+        "BESM": "BESM:",
+        "BNU": "BNU:",
+        "CAMS-CSM": "CAMS-CSM:",
+        "CAS-ESM": "CAS-ESM:",
+        "CESM1-CAM5": "CESM1 (CAM5): model version ca. 2009",
+        "CESS-THU": "CESS-THU:",
+        "CMCC": "CMCC:",
+        "CNRM": "CNRM:",
+        "CanESM": "CanESM:",
+        "EC-Earth": "EC-Earth:",
+        "FGOALS": "FGOALS:",
+        "FIO": "FIO:",
+        "GFDL-CM2-1": "GFDL CM2.1",
+        "GISS": "GISS:",
+        "HadGEM3": "HadGEM3:",
+        "IITM": "IITM:",
+        "INM": "INM:",
+        "IPSL": "IPSL:",
+        "KMA-ACE": "KMA-ACE:",
+        "MIROC-ESM": "MIROC-ESM:",
+        "MIROC6-CGCM": "MIROC6-CGCM:",
+        "MPI-ESM": "MPI-ESM:",
+        "MRI-AGCM3-xS": "MRI-AGCM3-xS:",
+        "MRI-ESM1-x": "MRI-ESM1-x:",
+        "NICAM": "NICAM:",
+        "NUIST-CSM": "NUIST-CSM:",
+        "NorESM": "NorESM:",
+        "UKESM": "UKESM:",
+        "UKESM--KMA": "UKESM--KMA:"
+        },
+
+    "institution_ids": {
+            "NOAA-GFDL":"NOAA Geophysical Fluid Dynamics Laboratory",
+            "BCC":"Beijing Climate Center,China Meteorological Administration,China",
+            "BNU":"GCESS,BNU,Beijing,China",
+            "CCCma":"Canadian Centre for Climate Modelling and Analysis, Victoria, BC, Canada",
+            "CMCC":"Centro Euro-Mediterraneo per i Cambiamenti Climatici, Bologna, Italy",
+            "CNRM-CERFACS":"Centre National de Recherches Meteorologiques, Meteo-France, Toulouse, France) and CERFACS (Centre Europeen de Recherches et de Formation Avancee en Calcul Scientifique, Toulouse, France",
+            "COLA-CFS":"Center for Ocean-Land-Atmosphere Studies, Calverton, MD",
+            "CSIRO-BOM":"Commonwealth Scientific and Industrial Research Organisation, Australia, and Bureau of Meteorology, Australia",
+            "CSIRO-QCCCE":"Australian Commonwealth Scientific and Industrial Research Organization (CSIRO) Marine and Atmospheric Research (Melbourne, Australia) in collaboration with the Queensland Climate Change Centre of Excellence (QCCCE) (Brisbane, Australia)",
+            "FIO":"The First Institution of Oceanography,SOA,Qingdao,China",
+            "ICHEC":"European Earth System Model",
+            "INM":"Institute for Numerical Mathematics, Moscow, Russia",
+            "IPSL":"Institut Pierre Simon Laplace, Paris, France",
+            "LASG-CESS":"Institute of Atmospheric Physics, Chinese Academy of Sciences, Beijing, China and Tsinghua University",
+            "LASG-IAP":"Institute of Atmospheric Physics, Chinese Academy of Sciences,Beijing,China",
+            "MIROC":"AORI (Atmosphere and Ocean Research Institute, The University of Tokyo, Chiba, Japan), NIES (National Institute for Environmental Studies, Ibaraki, Japan), JAMSTEC (Japan Agency for Marine-Earth Science and Technology, Kanagawa, Japan)",
+            "MIROC":"JAMSTEC (Japan Agency for Marine-Earth Science and Technology, Kanagawa, Japan), AORI (Atmosphere and Ocean Research Institute, The University of Tokyo, Chiba, Japan), and NIES (National Institute for Environmental Studies, Ibaraki, Japan)",
+            "MOHC":"Met Office Hadley Centre, Fitzroy Road, Exeter, Devon, EX1 3PB, UK.",
+            "MPI-M":"Max Planck Institute for Meteorology",
+            "MRI":"Meteorological Research Institute, Tsukuba, Japan",
+            "NASA-GISS":"Goddard Institute for Space Studies, New York, NY",
+            "NASA-GMAO":"Global Modeling and Assimilation Office, NASA Goddard Space Flight Center, Greenbelt, MD 20771",
+            "NCAR":"National Center for Atmospheric Research, Boulder, CO, USA",
+            "NCC":"Norwegian Climate Centre",
+            "NICAM":"Nonhydrostatic Icosahedral Atmospheric Model (NICAM) Group (RIGC-JAMSTEC/AORI-U.Tokyo/AICS-RIKEN,Japan)",
+            "NIMR-KMA":"National Institute of Meteorological Research, Seoul, South Korea",
+            "NOAA-GFDL":"NOAA GFDL, 201 Forrestal Rd, Princeton, NJ, 08540",
+            "NOAA-NCEP":"National Centers for Environmental Prediction, Camp Springs, MD",
+            "NSF-DOE-NCAR":"National Center for Atmospheric Research, Boulder, CO, USA",
+            "NSF-DOE-NCAR":"PNNL (Pacific Northwest National Laboratory) Richland, WA, USA/NCAR (National Center for Atmospheric Research) Boulder, CO, USA",
+            "NSF-DOE-NCAR":"NSF/DOE NCAR (National Center for Atmospheric Research) Boulder, CO, USA"
+    },
+
+    "grid_labels": {
+
+        "gs1x1":     { "grid_resolution":"1x1" },
+        "gs1x1 gn":  { "grid_resolution":"1x1" },
+        "gs1x1 gr":  { "grid_resolution":"1x1" },
+        "gn": { "grid_resolution":[  "5 km",   "10 km",   "25 km",   "50 km",   "100 km", "250 km", 
+                "500 km", "1000 km", "2500 km", "5000 km", "10000 km" ] },
+        "gr":  { "grid_resolution":[  "5 km",   "10 km",   "25 km",   "50 km",   "100 km", "250 km", 
+                "500 km", "1000 km", "2500 km", "5000 km", "10000 km" ] }
+
+    },
+
+    "#license": [ "CMIP6 model data produced by [[:alpha:]]\\{1,\\} is licensed under a Creative Commons Attribution \\“[NonCommercial] Share Alike\\” 4.0 International License \\(http\\://creativecommons.org/licenses/by/4.0/). Use of the data should be acknowledged following guidelines found at https://pcmdi.llnl.gov/home/CMIP6/citation.html. The data is made available via the Earth System Grid Federation. [Permissions beyond the scope of this license may be available at [[:alpha:]]\\{1 [...]
+
+
+    "experiment_ids": { 
+
+        "hist-piNTCF": {
+                               "experiment":                "historical forcing, but with pre-industrial NTCF emissions",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "AerChemMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM AER CHEM",
+                               "additional_source_type":    ""
+
+                          },
+
+        "hist-piAer": {
+                               "experiment":                "historical forcing, but with pre-industrial aerosol emissions",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "AerChemMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM AER",
+                               "additional_source_type":    "CHEM"
+
+                          },
+
+        "hist-1950HC": {
+                               "experiment":                "historical forcing, but with1950s halocarbon concentrations; initialized in 1950",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "AerChemMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM AER CHEM",
+                               "additional_source_type":    ""
+
+                          },
+
+        "histSST": {
+                               "experiment":                "historical prescribed SSTs and historical forcing",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "AerChemMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM AER",
+                               "additional_source_type":    "CHEM"
+
+                          },
+
+        "histSST-piNTCF": {
+                               "experiment":                "historical SSTs and historical forcing, but with pre-industrial NTCF emissions",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "AerChemMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM AER CHEM",
+                               "additional_source_type":    ""
+
+                          },
+
+        "histSST-piAer": {
+                               "experiment":                "historical SSTs and historical forcing, but with pre-industrial aerosol emissions",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "AerChemMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM AER",
+                               "additional_source_type":    "CHEM"
+
+                          },
+
+        "histSST-piO3": {
+                               "experiment":                "historical SSTs and historical forcing, but with pre-industrial ozone precursor emissions",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "AerChemMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM AER CHEM",
+                               "additional_source_type":    ""
+
+                          },
+
+        "histSST-1950HC": {
+                               "experiment":                "historical SSTs and historical forcing, but with1950 halocarbon concentrations",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "AerChemMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM AER CHEM",
+                               "additional_source_type":    ""
+
+                          },
+
+        "histSST-piCH4": {
+                               "experiment":                "historical SSTs and historical forcing, but with pre-industrial methane concentrations",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "AerChemMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM AER CHEM",
+                               "additional_source_type":    ""
+
+                          },
+
+        "histSST-piN2O": {
+                               "experiment":                "historical SSTs and historical forcings, but with pre-industrial N2O concentrations",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "AerChemMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM AER CHEM",
+                               "additional_source_type":    ""
+
+                          },
+
+        "ssp370": {
+                               "experiment":                "Gap-filling scenario reaching 7.0 based on SSP3",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "ScenarioMIP AerChemMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM AER",
+                               "additional_source_type":    "CHEM"
+
+                          },
+
+        "ssp370-lowNTCF": {
+                               "experiment":                "SSP3-7.0, with low NTCF emissions",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "AerChemMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM AER",
+                               "additional_source_type":    "CHEM"
+
+                          },
+
+        "ssp370SST": {
+                               "experiment":                "SSP3-7.0, with  SSTs prescribed from ssp370",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "AerChemMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM AER",
+                               "additional_source_type":    "CHEM"
+
+                          },
+
+        "ssp370SST-lowNTCF": {
+                               "experiment":                "SSP3-7.0, prescribed SSTs, with low NTCF emissions",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "AerChemMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM AER CHEM",
+                               "additional_source_type":    ""
+
+                          },
+
+        "ssp370SST-lowAer": {
+                               "experiment":                "SSP3-7.0, prescribed SSTs, with low aerosol emissions",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "AerChemMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM AER",
+                               "additional_source_type":    "CHEM"
+
+                          },
+
+        "ssp370SST-lowBC": {
+                               "experiment":                "SSP3-7.0, prescribed SSTs, with low black carbon emissions",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "AerChemMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM AER",
+                               "additional_source_type":    "CHEM"
+
+                          },
+
+        "ssp370SST-lowO3": {
+                               "experiment":                "SSP3-7.0, prescribed SSTs, with low ozone precursor emissions",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "AerChemMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM AER CHEM",
+                               "additional_source_type":    ""
+
+                          },
+
+        "ssp370SST-lowCH4": {
+                               "experiment":                "SSP3-7.0, prescribed SSTs, with low methane concentrations",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "AerChemMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM AER CHEM",
+                               "additional_source_type":    ""
+
+                          },
+
+        "ssp370SST-lowLu": {
+                               "experiment":                "SSP3-7.0, prescribed SSTs, with low land-use change",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "AerChemMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM AER",
+                               "additional_source_type":    "CHEM"
+
+                          },
+
+        "piClim-control": {
+                               "experiment":                "pre-industrial with prescribed climatological SSTs",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "RFMIP, AerChemMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM AER",
+                               "additional_source_type":    "CHEM"
+
+                          },
+
+        "piClim-NTCF": {
+                               "experiment":                "pre-industrial climatolgical SSTs and forcing, but with 2014 NTCF emissions",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "AerChemMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM AER CHEM",
+                               "additional_source_type":    ""
+
+                          },
+
+        "piClim-aer": {
+                               "experiment":                "pre-industrial climatological SSTs and forcing, but 2014 aerosol emissions",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "AerChemMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM AER",
+                               "additional_source_type":    "CHEM"
+
+                          },
+
+        "piClim-BC": {
+                               "experiment":                "pre-industrial climatological SSTs and forcing, but with 2014 black carbon emissions",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "AerChemMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM AER",
+                               "additional_source_type":    "CHEM"
+
+                          },
+
+        "piClim-O3": {
+                               "experiment":                "pre-industrial climatological SSTs and forcing, but with 2014 ozone precursor emissions",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "AerChemMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM AER CHEM",
+                               "additional_source_type":    ""
+
+                          },
+
+        "piClim-CH4": {
+                               "experiment":                "pre-industrial climatological SSTs and forcing, but with 2014 methane concentrations (including chemistry)",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "AerChemMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM AER CHEM",
+                               "additional_source_type":    ""
+
+                          },
+
+        "piClim-N2O": {
+                               "experiment":                "pre-industrial climatological SSTs and forcing, but with 2014 N2O concentrations (including chemistry)",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "AerChemMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM AER CHEM",
+                               "additional_source_type":    ""
+
+                          },
+
+        "piClim-HC": {
+                               "experiment":                "pre-industrial climatological SSTs and forcing, but with 2014 halocarbon concentrations (including chemistry)",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "AerChemMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM AER CHEM",
+                               "additional_source_type":    ""
+
+                          },
+
+        "piClim-NOX": {
+                               "experiment":                "pre-industrial climatological SSTs and forcing, but with 2014 NOx emissions",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "AerChemMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM AER CHEM",
+                               "additional_source_type":    ""
+
+                          },
+
+        "piClim-VOC": {
+                               "experiment":                "pre-industrial climatological SSTs and forcing, but with 2014 VOC emissions",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "AerChemMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM AER CHEM",
+                               "additional_source_type":    ""
+
+                          },
+
+        "piClim-2xdust": {
+                               "experiment":                "pre-industrial climatological SSTs and forcing, but with doubled emissions of dust",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "AerChemMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM AER",
+                               "additional_source_type":    "CHEM"
+
+                          },
+
+        "piClim-2xss": {
+                               "experiment":                "pre-industrial climatological SSTs and forcing, but with doubled emissions of sea salt",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "AerChemMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM AER",
+                               "additional_source_type":    "CHEM"
+
+                          },
+
+        "piClim-2xDMS": {
+                               "experiment":                "pre-industrial climatological SSTs and forcing, but with doubled emissions of DMS",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "AerChemMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM AER",
+                               "additional_source_type":    "CHEM"
+
+                          },
+
+        "piClim-2xfire": {
+                               "experiment":                "pre-industrial climatological SSTs and forcing, but with doubled emissions from fires",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "AerChemMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM AER",
+                               "additional_source_type":    "CHEM"
+
+                          },
+
+        "piClim-2xNOX": {
+                               "experiment":                "pre-industrial climatological SSTs and forcing, but with doubled production of NOX due to lightning",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "AerChemMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM AER CHEM",
+                               "additional_source_type":    ""
+
+                          },
+
+        "piClim-2xVOC": {
+                               "experiment":                "pre-industrial climatological SSTs and forcing, but with doubled emissions of biogenic VOCs",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "AerChemMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM AER CHEM",
+                               "additional_source_type":    ""
+
+                          },
+
+        "1pctCO2-bgc": {
+                               "experiment":                "biogeochemically-coupled version of 1 percent per year increasing CO2 experiment",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "C4MIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM BGM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "1pctCO2Ndep": {
+                               "experiment":                "1 percent per year increasing CO2 experient with increasing N-deposition",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "C4MIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM BGM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "1pctCO2Ndep-bgc": {
+                               "experiment":                "biogeochemically-coupled version of 1 percent per year increasing CO2 experiment with increasing N-deposition",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "C4MIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM BGM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "1pctCO2-rad": {
+                               "experiment":                "radiatively-coupled version of 1 percent per year increasing CO2 experiment",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "C4MIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM BGM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "hist-bgc": {
+                               "experiment":                "biogeochemically-coupled version of the simulation of the recent past with CO2 concentration prescribed ",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "C4MIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM BGM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "esm-ssp585": {
+                               "experiment":                "update of emission-driven RCP8.5 based on SSP5",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "C4MIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "ESM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "ssp585-bgc": {
+                               "experiment":                "biogeochemically-coupled version of the updated emission-driven RCP8.5 based on SSP5",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "C4MIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "ESM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "abrupt-0p5xCO2": {
+                               "experiment":                "",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "CFMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER BGM"
+
+                          },
+
+        "abrupt-2xCO2": {
+                               "experiment":                "",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "CFMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "abrupt-solm4p": {
+                               "experiment":                "",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "CFMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "abrupt-solp4p": {
+                               "experiment":                "",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "CFMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "amip-p4K": {
+                               "experiment":                "AMIP plus 4K SSTs",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "CFMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "amip-4xCO2": {
+                               "experiment":                "control SSTs with 4xCO2",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "CFMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "amip-pat4K": {
+                               "experiment":                "AMIP plus warming pattern SSTs",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "CFMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "amip-m4K": {
+                               "experiment":                "AMIP minus 4K SSTs",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "CFMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "amip-piForcing": {
+                               "experiment":                "AMIP SSTs with control forcing",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "CFMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "amipFuture-4xCO2-all": {
+                               "experiment":                "AMIP plus warming pattern SSTs with 4xCO2",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "CFMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "aqua-p4K": {
+                               "experiment":                "aquaplanet plus 4K SSTs",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "CFMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "aqua-4xCO2": {
+                               "experiment":                "aquaplanet with 4xCO2",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "CFMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "aqua-control": {
+                               "experiment":                "Aquaplanet control",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "CFMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "amip-lwoff": {
+                               "experiment":                "AMIP SSTs with longwave cloud-radiative effects off",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "CFMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "amip-p4K-lwoff": {
+                               "experiment":                "AMIP plus 4K SSTs with longwave cloud radiative effects off",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "CFMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "aqua-p4K-lwoff": {
+                               "experiment":                "aquaplanet plus 4K SSTs with longwave cloud radiative effects off",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "CFMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "aqua-control-lwoff": {
+                               "experiment":                "aquaplanet with longwave cloud radiative effects off",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "CFMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "piSST-control": {
+                               "experiment":                "control SSTs",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "CFMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "piSST-pxK": {
+                               "experiment":                "control plus scaled warming pattern",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "CFMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "piSST-4xCO2-rad": {
+                               "experiment":                "control SSTs with radiation-only seeing 4xCO2",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "CFMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "piSST-4xCO2-all": {
+                               "experiment":                "control SSTs with 4xCO2",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "CFMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "futureSST": {
+                               "experiment":                "control plus warming pattern SSTs ",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "CFMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "futureSST-4xCO2-all": {
+                               "experiment":                "control plus warming pattern SSTs with 4xCO2",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "CFMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM",
+                               "additional_source_type":    "CHEM AER BGM"
+
+                          },
+
+        "1pctCO2": {
+                               "experiment":                "1 percent per year increase in CO2",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "CMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "abrupt-4xCO2": {
+                               "experiment":                "abrupt quadrupling of CO2",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "CMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "amip": {
+                               "experiment":                "AMIP",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "CMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "piControl": {
+                               "experiment":                "pre-Industrial control",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "CMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "esm-piControl": {
+                               "experiment":                "pre-industrial control simulation with CO2 concentration calculated",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "CMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "ESM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "historical": {
+                               "experiment":                "all-forcing simulation of the recent past",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "CMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "esm-hist": {
+                               "experiment":                "all-forcing simulation of the recent past with atmospheric CO2 concentration calculated ",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "CMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "ESM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "historical-ext": {
+                               "experiment":                "post-2014 all-forcing simulation",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "CMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "esm-hist-ext": {
+                               "experiment":                "post-2014 all-forcing simulation with atmospheric CO2 concentration calculated",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "CMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "ESM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "hist-aer": {
+                               "experiment":                "historical anthropogenic aerosols-only run",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "DAMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER BGM"
+
+                          },
+
+        "hist-CO2": {
+                               "experiment":                "historical CO2-only run",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "DAMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER BGM"
+
+                          },
+
+        "hist-all-aer2": {
+                               "experiment":                "historical ALL-forcing run with alternate estimates of aerosol forcing",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "DAMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER BGM"
+
+                          },
+
+        "hist-all-nat2": {
+                               "experiment":                "historical ALL-forcing run with alternate estimates of natural forcing",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "DAMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER BGM"
+
+                          },
+
+        "hist-GHG": {
+                               "experiment":                "historical well-mixed GHG-only run",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "DAMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER BGM"
+
+                          },
+
+        "hist-nat": {
+                               "experiment":                "historical natural-only run",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "DAMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER BGM"
+
+                          },
+
+        "hist-sol": {
+                               "experiment":                "historical solar-only run",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "DAMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER BGM"
+
+                          },
+
+        "hist-stratO3": {
+                               "experiment":                "historical stratospheric-ozone-only run",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "DAMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER BGM"
+
+                          },
+
+        "hist-volc": {
+                               "experiment":                "historical volcanic-only run",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "DAMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER BGM"
+
+                          },
+
+        "ssp245-aer": {
+                               "experiment":                "aerosol-only SSP2-4.5 run",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "DAMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER BGM"
+
+                          },
+
+        "ssp245-GHG": {
+                               "experiment":                "well-mixed GHG-only SSP2-4.5 run",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "DAMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER BGM"
+
+                          },
+
+        "ssp245-nat": {
+                               "experiment":                "natural-only SSP2-4.5 run",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "DAMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER BGM"
+
+                          },
+
+        "ssp245-stratO3": {
+                               "experiment":                "stratospheric-ozone-only SSP2-4.5 run",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "DAMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER BGM"
+
+                          },
+
+        "hindcast": {
+                               "experiment":                "hindcast initialized from observations with historical forcing",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "DCPP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "hindcast-control": {
+                               "experiment":                "simulation initialized from control with forcing prescribed from a portion of the historical period",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "DCPP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "hindcast-honest": {
+                               "experiment":                "hindcast initialized from observations without observed forcing after initialization",
+                               "sub_experiment_id":         "initiate with year YYYY",
+                               "activity_id":               "DCPP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "hindcast-hist": {
+                               "experiment":                "initialized from historical simulation without observed forcing after initialization",
+                               "sub_experiment_id":         "initiate with year YYYY",
+                               "activity_id":               "DCPP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "forecast": {
+                               "experiment":                "forecast initialized from observations",
+                               "sub_experiment_id":         "initiate with year YYYY",
+                               "activity_id":               "DCPP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "amv-control": {
+                               "experiment":                "idealized Atlantic control",
+                               "sub_experiment_id":         "initiate with year YYYY",
+                               "activity_id":               "DCPP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "amv-plus": {
+                               "experiment":                "idealized positive AMV anomaly pattern",
+                               "sub_experiment_id":         "initiate with year YYYY",
+                               "activity_id":               "DCPP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "amv-minus": {
+                               "experiment":                "idealized negative AMV anomaly pattern",
+                               "sub_experiment_id":         "initiate with year YYYY",
+                               "activity_id":               "DCPP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "pdv-control": {
+                               "experiment":                "idealized Pacific control",
+                               "sub_experiment_id":         "initiate with year YYYY",
+                               "activity_id":               "DCPP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "pdv-plus": {
+                               "experiment":                "idealized positive PDV anomaly pattern",
+                               "sub_experiment_id":         "initiate with year YYYY",
+                               "activity_id":               "DCPP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "pdv-minus": {
+                               "experiment":                "idealized negative PDV anomaly pattern",
+                               "sub_experiment_id":         "initiate with year YYYY",
+                               "activity_id":               "DCPP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "pdv-plus-extraTrop": {
+                               "experiment":                "idealized positive extratropical AMV anomaly pattern",
+                               "sub_experiment_id":         "initiate with year YYYY",
+                               "activity_id":               "DCPP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "pdv-minus-extraTrop": {
+                               "experiment":                "idealizedÊ impact of a negative extratropical AMV anomaly pattern",
+                               "sub_experiment_id":         "initiate with year YYYY",
+                               "activity_id":               "DCPP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "amv-plus-trop": {
+                               "experiment":                "idealized positive tropical AMV anomaly pattern",
+                               "sub_experiment_id":         "initiate with year YYYY",
+                               "activity_id":               "DCPP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "amv-minus-trop": {
+                               "experiment":                "idealized impact of a positive tropical AMV anomaly pattern",
+                               "sub_experiment_id":         "initiate with year YYYY",
+                               "activity_id":               "DCPP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "predictability-atlGyre": {
+                               "experiment":                "predictability of 1990s warming of Atlantic gyre",
+                               "sub_experiment_id":         "initiate with year YYYY",
+                               "activity_id":               "DCPP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "hindcast-novolc": {
+                               "experiment":                "hindcast but with only background volcanic forcing",
+                               "sub_experiment_id":         "initiate with year YYYY",
+                               "activity_id":               "DCPP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "forecast-Pinatubo": {
+                               "experiment":                "2015 forecast with added Pinatubo forcing",
+                               "sub_experiment_id":         "initiate with year YYYY",
+                               "activity_id":               "DCPP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "forecast-ElChichon": {
+                               "experiment":                "2015 forecast with added El Chichon forcing",
+                               "sub_experiment_id":         "initiate with year YYYY",
+                               "activity_id":               "DCPP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "forecast-Agung": {
+                               "experiment":                "2015 forecast with added Agung forcing",
+                               "sub_experiment_id":         "initiate with year YYYY",
+                               "activity_id":               "DCPP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "faf-all": {
+                               "experiment":                "control plus perturbative surface fluxes of momentum, heat and water into ocean",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "FAFMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "faf-heat": {
+                               "experiment":                "control plus perturbative surface flux of heat into ocean",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "FAFMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "faf-passiveheat": {
+                               "experiment":                "control plus surface flux of passive heat tracer into ocean",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "FAFMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "faf-stress": {
+                               "experiment":                "control plus perturbative surface flux of momentum into ocean",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "FAFMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "faf-water": {
+                               "experiment":                "control plus perturbative surface flux of water into ocean",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "FAFMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "G1": {
+                               "experiment":                "abrupt quadrupling of CO2 plus reduction in total solar irradiance",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "GeoMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "piSST-4xCO2-solar": {
+                               "experiment":                "preindustrial conrol SSTs with quadrupled CO2 + solar reduction. ",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "GeoMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "futureSST-4xCO2-solar": {
+                               "experiment":                "year 100 SSTs from abrupt4xCO2 with quadrupled CO2 + solar reduction",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "GeoMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "G6SST1": {
+                               "experiment":                "SSTs, forcings, and other prescribed conditions from year 2020 of SSP5-8.5",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "GeoMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "G6solar": {
+                               "experiment":                "total solar irradiance reduction to reduce net forcing from SSP585 to SSP245",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "GeoMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "G6SST2-solar": {
+                               "experiment":                "SSTs from year 2020 of SSP5-8.5; forcings and other prescribed conditions from year 2100 of G6solar",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "GeoMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "G6sulfur": {
+                               "experiment":                "stratospheric sulfate aerosol injection to reduce net forcing from SSP585 to SSP245",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "GeoMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "G6SST2-sulfur": {
+                               "experiment":                "SSTs from year 2020 of SSP5-8.5; forcings and other prescribed conditions from year 2100 of G6sulfur",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "GeoMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "G7cirrus": {
+                               "experiment":                "G7cirrus _ increase cirrus ice crystal fall speed to reduce net forcing in SSP585 by 1 W m-2",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "GeoMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "G7SST1-cirrus": {
+                               "experiment":                "SSTs from year 2020 of SSP5-8.5; forcings and other prescribed conditions from year 2020 of SSP5-8.5 + cirrus thinning",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "GeoMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "G7SST2-cirrus": {
+                               "experiment":                "SSTs from year 2100 of SSP5-8.5; forcings and other prescribed conditions from year 2100 of G7cirrus",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "GeoMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "amip-hist": {
+                               "experiment":                "",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "GMMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "amip-hld": {
+                               "experiment":                "",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "GMMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "amip-TIP": {
+                               "experiment":                "",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "GMMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "amip-TIP-nosh": {
+                               "experiment":                "",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "GMMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "hist-resAMO": {
+                               "experiment":                "",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "GMMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "hist-resIPO": {
+                               "experiment":                "",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "GMMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "control-1950": {
+                               "experiment":                "coupled control with fixed 1950's forcing (HighResMIP equivalent of pre-industrial control)",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "HighResMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "highres-future": {
+                               "experiment":                "coupled future 2015-2050 using a scenario as close to CMIP5 RCP8.5 as possible within CMIP6",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "HighResMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "hist-1950": {
+                               "experiment":                "coupled historical 1950-2014",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "HighResMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "highresSST-present": {
+                               "experiment":                "forced atmosphere experiment for 1950-2014",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "HighResMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "highresSST-future": {
+                               "experiment":                "forced atmosphere experiment for 2015-2050 using SST/sea-ice derived from CMIP5 RCP8.5 simulations and a scenario as close to RCP8.5 as possible within CMIP6",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "HighResMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "highresSST-LAI": {
+                               "experiment":                "common LAI dataset within the highresSST-present experiment",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "HighResMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "highresSST-smoothed": {
+                               "experiment":                "smoothed SST version of highresSST-present",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "HighResMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "highresSST-p4K": {
+                               "experiment":                "uniform 4K warming of highresSST-present SST",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "HighResMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "highresSST-4co2": {
+                               "experiment":                "highresSST-present SST with 4xCO2 concentrations",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "HighResMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "ism-1pctCO2": {
+                               "experiment":                "",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "ISMIP6",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "ISM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "1pctCO2-withism": {
+                               "experiment":                "",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "ISMIP6",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM ISM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "ism-piControl": {
+                               "experiment":                "",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "ISMIP6",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "ISM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "piControl-withism": {
+                               "experiment":                "to be filled",
+                               "sub_experiment_id":         "none",
+                               "sub_experiment_id":         "s1968",
+                               "activity_id":               "ISMIP6",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM ISM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "ism-ssp585": {
+                               "experiment":                "",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "ISMIP6",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "ISM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "ssp585-withism": {
+                               "experiment":                "",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "ISMIP6",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM ISM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "amip-lfmip-pObs": {
+                               "experiment":                "prescribed land (from pseudo-observations) and AMIP SSTs",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "LS3MIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "amip-lfmip-pdLC": {
+                               "experiment":                "prescribed land (from current climatology) and AMIP SSTs",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "LS3MIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "lfmip-pdLC": {
+                               "experiment":                "prescribed land conditions (from current climate climatology) and initialized from 'historical' run year 1980",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "LS3MIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "lfmip-initLC": {
+                               "experiment":                "initialized from 'historical' run year 1980, but with land conditions initialized from pseudo-observations",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "LS3MIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "amip-lfmip-rmLC": {
+                               "experiment":                "prescribed land conditions (from running mean climatology) and AMIP SSTs",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "LS3MIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "lfmip-rmLC": {
+                               "experiment":                "prescribed land conditions (from running mean climatology) and initialized from 'historical' run year 1980",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "LS3MIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "land-future": {
+                               "experiment":                "offline land simulations for future climate",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "LS3MIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "LND",
+                               "additional_source_type":    ""
+
+                          },
+
+        "land-hist": {
+                               "experiment":                "offline land simulations for present climate",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "LS3MIP LUMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "LND",
+                               "additional_source_type":    ""
+
+                          },
+
+        "land-hist-princeton": {
+                               "experiment":                "as land-hist with Princeton forcings",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "LS3MIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "LND",
+                               "additional_source_type":    ""
+
+                          },
+
+        "land-hist-cruNcep": {
+                               "experiment":                "as land-hist with CRU-NCEP forcings",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "LS3MIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "LND",
+                               "additional_source_type":    ""
+
+                          },
+
+        "land-hist-wfdei": {
+                               "experiment":                "as land-hist with WFDEI forcings",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "LS3MIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "LND",
+                               "additional_source_type":    ""
+
+                          },
+
+        "esm-ssp585-ssp126Lu": {
+                               "experiment":                "emissions-driven SSP5-8.5 with SSP1-2.6 land use",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "LUMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "ESM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "hist-noLu": {
+                               "experiment":                "historical with no land-use change",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "LUMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "deforest-globe": {
+                               "experiment":                "idealized transient global deforestation",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "LUMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "land-hist-altStartYear": {
+                               "experiment":                "historical land-only alternate start year",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "LUMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "LND",
+                               "additional_source_type":    ""
+
+                          },
+
+        "land-hist": {
+                               "experiment":                "historical land-only",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "LS3MIP LUMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "LND",
+                               "additional_source_type":    ""
+
+                          },
+
+        "land-cCO2": {
+                               "experiment":                "historical land-only constant CO2",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "LUMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "LND",
+                               "additional_source_type":    ""
+
+                          },
+
+        "land-cClim": {
+                               "experiment":                "historical land-only constant climate",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "LUMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "LND",
+                               "additional_source_type":    ""
+
+                          },
+
+        "land-noLu": {
+                               "experiment":                "historical land-only with no land-use change",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "LUMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "LND",
+                               "additional_source_type":    ""
+
+                          },
+
+        "land-crop-noManage": {
+                               "experiment":                "historical land-only with crops but no crop management",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "LUMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "LND",
+                               "additional_source_type":    ""
+
+                          },
+
+        "land-netTrans": {
+                               "experiment":                "historical land-only with net land-use transitions",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "LUMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "LND",
+                               "additional_source_type":    ""
+
+                          },
+
+        "land-noFire": {
+                               "experiment":                "historical land-only with no human fire management",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "LUMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "LND",
+                               "additional_source_type":    ""
+
+                          },
+
+        "land-noWoodHarv": {
+                               "experiment":                "historical land-only with no wood harvest",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "LUMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "LND",
+                               "additional_source_type":    ""
+
+                          },
+
+        "land-noPasture": {
+                               "experiment":                "historical land-only with constant pastureland",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "LUMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "LND",
+                               "additional_source_type":    ""
+
+                          },
+
+        "land-crop-grass": {
+                               "experiment":                "historical land-only with cropland as natural grassland",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "LUMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "LND",
+                               "additional_source_type":    ""
+
+                          },
+
+        "land-crop-noIrrig": {
+                               "experiment":                "historical land-only with no irrigation ",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "LUMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "LND",
+                               "additional_source_type":    ""
+
+                          },
+
+        "land-crop-noFert": {
+                               "experiment":                "historical land-only with no fertilizer",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "LUMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "LND",
+                               "additional_source_type":    ""
+
+                          },
+
+        "ssp126-ssp370Lu": {
+                               "experiment":                "SSP1-2.6 with SSP3-7.0 land use",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "LUMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "ssp370-ssp126Lu": {
+                               "experiment":                "SSP3-7.0 with SSP1-2.6 land use",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "LUMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "omip-core2": {
+                               "experiment":                "OMIP experiment forced by CORE-2 atmospheric data set and initialized with observed physical and biogeochemical ocean data",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "OMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "OGCM",
+                               "additional_source_type":    ""
+
+                          },
+
+        "omip-core2-spunup": {
+                               "experiment":                "OMIP experiment forced by CORE-2 atmospheric data set and initialized from at least a 2000-year spin up of the coupled physical-biogeochemical model",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "OMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "OGCM",
+                               "additional_source_type":    ""
+
+                          },
+
+        "omip-jra55": {
+                               "experiment":                "OMIP experiment forced by JRA-55 atmospheric data set and initialized with observed physical and biogeochemical ocean data",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "OMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "OGCM",
+                               "additional_source_type":    ""
+
+                          },
+
+        "omip-jra55-spunup": {
+                               "experiment":                "OMIP experiment forced by JRA-55 atmospheric data set and initialized from at least a 2000-year spin up of the coupled physical-biogeochemical model",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "OMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "OGCM",
+                               "additional_source_type":    ""
+
+                          },
+
+        "lgm": {
+                               "experiment":                "",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "PMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "lig127k": {
+                               "experiment":                "",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "PMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "midHolocene": {
+                               "experiment":                "",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "PMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "past1000": {
+                               "experiment":                "",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "PMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "midPliocene-eoi400": {
+                               "experiment":                "",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "PMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "piClim-control": {
+                               "experiment":                "",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "RFMIP, AerChemMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "piClim-4xCO2": {
+                               "experiment":                "",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "RFMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "piClim-aerO3": {
+                               "experiment":                "",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "RFMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "piClim-aerO3x0p1": {
+                               "experiment":                "",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "RFMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "piClim-aerO3x2": {
+                               "experiment":                "",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "RFMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "piClim-anthro": {
+                               "experiment":                "",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "RFMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "piClim-GHG": {
+                               "experiment":                "",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "RFMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "piClim-histaer03": {
+                               "experiment":                "",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "RFMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "piClim-histAll": {
+                               "experiment":                "",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "RFMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "piClim-histGHG": {
+                               "experiment":                "",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "RFMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "piClim-histNat": {
+                               "experiment":                "",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "RFMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "piClim-lu": {
+                               "experiment":                "",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "RFMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM",
+                               "additional_source_type":    "CHEM AER"
+
+                          },
+
+        "piClim-spAer-histall": {
+                               "experiment":                "",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "RFMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM",
+                               "additional_source_type":    ""
+
+                          },
+
+        "piClim-spAer-histaer": {
+                               "experiment":                "",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "RFMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM",
+                               "additional_source_type":    ""
+
+                          },
+
+        "piClim-spAer-aer": {
+                               "experiment":                "",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "RFMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM",
+                               "additional_source_type":    ""
+
+                          },
+
+        "piClim-spAer-anthro": {
+                               "experiment":                "",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "RFMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM",
+                               "additional_source_type":    ""
+
+                          },
+
+        "hist-spAer": {
+                               "experiment":                "",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "RFMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    ""
+
+                          },
+
+        "hist-all-spAer": {
+                               "experiment":                "",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "RFMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    ""
+
+                          },
+
+        "rad-irf": {
+                               "experiment":                "",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "RFMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "RAD",
+                               "additional_source_type":    ""
+
+                          },
+
+        "ssp126": {
+                               "experiment":                "update of RCP2.6 based on SSP1",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "ScenarioMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER",
+                               "parent_experiment_id" :     "historical",
+                               "parent_sub_experiment_id":  "none",
+                               "parent_activity_id ":       "CMIP",
+                               "parent_mip_era ":           "CMIP6"
+                          },
+
+        "ssp534-over": {
+                               "experiment":                "overshoot of 3.4 W/m**2 branching from ssp585 in 2040",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "ScenarioMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER",
+                               "parent_experiment_id" :     "ssp585",
+                               "parent_sub_experiment_id":  "none",
+                               "parent_activity_id ":       "ScenarioMIP",
+                               "parent_mip_era ":           "CMIP6"
+                          },
+
+        "ssp460": {
+                               "experiment":                "update of RCP6.0 based on SSP4",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "ScenarioMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER",
+                               "parent_experiment_id" :     "historical",
+                               "parent_sub_experiment_id":  "none",
+                               "parent_activity_id ":       "CMIP",
+                               "parent_mip_era ":           "CMIP6"
+                          },
+
+        "ssp245": {
+                               "experiment":                "update of RCP4.5 based on SSP2",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "ScenarioMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER",
+                               "parent_experiment_id" :     "historical",
+                               "parent_sub_experiment_id":  "none",
+                               "parent_activity_id ":       "CMIP",
+                               "parent_mip_era ":           "CMIP6"
+                          },
+
+        "ssp370": {
+                               "experiment":                "gap-filling scenario reaching 7.0 based on SSP3",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "ScenarioMIP AerChemMIP LUMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER",
+                               "parent_experiment_id" :     "historical",
+                               "parent_sub_experiment_id":  "none",
+                               "parent_activity_id ":       "CMIP",
+                               "parent_mip_era ":           "CMIP6"
+                          },
+
+        "ssp434": {
+                               "experiment":                "gap-filling scenario reaching 3.4 based on SSP4",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "ScenarioMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER",
+                               "parent_experiment_id" :     "historical",
+                               "parent_sub_experiment_id":  "none",
+                               "parent_activity_id ":       "CMIP",
+                               "parent_mip_era ":           "CMIP6"
+                          },
+
+        "ssp585": {
+                               "experiment":                "update of RCP8.5 based on SSP5",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "ScenarioMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER",
+                               "parent_experiment_id" :     "historical",
+                               "parent_sub_experiment_id":  "none",
+                               "parent_activity_id ":       "CMIP",
+                               "parent_mip_era ":           "CMIP6"
+                          },
+
+        "sspxy": {
+                               "experiment":                "low-end scenario informing 1.5C goal",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "ScenarioMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER",
+                               "parent_experiment_id" :     "historical",
+                               "parent_sub_experiment_id":  "none",
+                               "parent_activity_id ":       "CMIP",
+                               "parent_mip_era ":           "CMIP6"
+                          },
+
+        "volcCluster": {
+                               "experiment":                "long volcanic-forcing-only experiment with cluster of eruption",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "VolMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER",
+                               "parent_experiment_id" :     "piControl",
+                               "parent_sub_experiment_id":  "none",
+                               "parent_activity_id ":       "CMIP",
+                               "parent_mip_era ":           "CMIP6"
+                          },
+
+        "volcEq-S60": {
+                               "experiment":                "long volcanic-forcing-only experiment with single equatorial eruption",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "VolMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER",
+                               "parent_experiment_id" :     "piControl",
+                               "parent_sub_experiment_id":  "none",
+                               "parent_activity_id ":       "CMIP",
+                               "parent_mip_era ":           "CMIP6"
+                          },
+
+        "volcHL-S100": {
+                               "experiment":                "long volcanic-forcing-only experiment with single high-latitude eruption",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "VolMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER",
+                               "parent_experiment_id" :     "piControl",
+                               "parent_sub_experiment_id":  "none",
+                               "parent_activity_id ":       "CMIP",
+                               "parent_mip_era ":           "CMIP6"
+                          },
+
+        "volcEq-full": {
+                               "experiment":                "Pinatubo experiment with full volcanic forcing ",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "VolMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER",
+                               "parent_experiment_id" :     "piControl",
+                               "parent_sub_experiment_id":  "none",
+                               "parent_activity_id ":       "CMIP",
+                               "parent_mip_era ":           "CMIP6"
+                          },
+
+        "volcEq-ini": {
+                               "experiment":                "Pinatubo experiment in decadal climate prediction setup",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "VolMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER",
+                               "parent_experiment_id" :     "piControl",
+                               "parent_sub_experiment_id":  "none",
+                               "parent_activity_id ":       "CMIP",
+                               "parent_mip_era ":           "CMIP6"
+                          },
+
+        "volcEq-slab": {
+                               "experiment":                "Pinatubo experiment with full volcanic forcing and slab ocean",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "VolMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AGCM SLAB",
+                               "additional_source_type":    "CHEM AER",
+                               "parent_experiment_id" :     "piControl",
+                               "parent_sub_experiment_id":  "none",
+                               "parent_activity_id ":       "CMIP",
+                               "parent_mip_era ":           "CMIP6"
+                          },
+
+        "volcEq-strat": {
+                               "experiment":                "Pinatubo experiment with only long-wave forcing",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "VolMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER",
+                               "parent_experiment_id" :     "piControl",
+                               "parent_sub_experiment_id":  "none",
+                               "parent_activity_id ":       "CMIP",
+                               "parent_mip_era ":           "CMIP6"
+                          },
+
+        "volcEq-surf": {
+                               "experiment":                "Pinatubo experiment with only short-wave forcing",
+                               "sub_experiment_id":         "none",
+                               "activity_id":               "VolMIP",
+                               "mip_era":                   "CMIP6",
+                               "source_type":               "AOGCM",
+                               "additional_source_type":    "CHEM AER",
+                               "parent_experiment_id" :     "piControl",
+                               "parent_sub_experiment_id":  "none",
+                               "parent_activity_id ":       "CMIP",
+                               "parent_mip_era ":           "CMIP6"
+                          }
+
+
+         }
+     }
+}
diff --git a/TestTables/CMIP6_LImon.json b/TestTables/CMIP6_LImon.json
new file mode 100644
index 0000000..9e3470f
--- /dev/null
+++ b/TestTables/CMIP6_LImon.json
@@ -0,0 +1,2800 @@
+{
+    "Header": {
+        "product": "output", 
+        "approx_interval": "30.00000", 
+        "realm": "landIce land", 
+        "cmor_version": "3.1", 
+        "Conventions": "CF-1.6 CMIP-6.0", 
+        "frequency": "mon", 
+        "table_id": "Table LImon", 
+        "data_specs_version": "01.beta.29", 
+        "mip_era": "CMIP6", 
+        "generic_levels": "", 
+        "missing_value": "1e20", 
+        "table_date": "14 June 2016"
+    }, 
+    "axis_entry": {
+        "typebare": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "bare_ground", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "tau": {
+            "requested": [
+                "0.15", 
+                "0.8", 
+                "2.45", 
+                "6.5", 
+                "16.2", 
+                "41.5", 
+                "100."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "0.0", 
+                "0.3", 
+                "0.3", 
+                "1.3", 
+                "1.3", 
+                "3.6", 
+                "3.6", 
+                "9.4", 
+                "9.4", 
+                "23.0", 
+                "23.0", 
+                "60.0", 
+                "60.0", 
+                "100000."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "cloud optical thickness", 
+            "standard_name": "atmosphere_optical_thickness_due_to_cloud", 
+            "value": "", 
+            "out_name": "tau", 
+            "type": "double", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "olayer100m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "0. 100.", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "50.0", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "100.0", 
+            "axis": "Z"
+        }, 
+        "spectband": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "Spectral Band", 
+            "standard_name": "wave_frequency", 
+            "value": "", 
+            "out_name": "spectband", 
+            "type": "double", 
+            "units": "s-1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "ocean_sigma_z": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "sigma: sigma eta: eta depth: depth depth_c: depth_c nsigma: nsigma zlev: zlev", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "sigma: sigma_bnds eta: eta depth: depth depth_c: depth_c nsigma: nsigma zlev: zlev_bnds", 
+            "bounds_values": "", 
+            "long_name": "ocean sigma over z coordinate", 
+            "standard_name": "ocean_sigma_z", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "for k <= nsigma: z(n,k,j,i) = eta(n,j,i) + sigma(k)*(min(depth_c,depth(j,i))+eta(n,j,i)) ; for k > nsigma: z(n,k,j,i) = zlev(k)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev19": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000.", 
+                "500.", 
+                "100."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "p220": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "44000. 0.0", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "22000.0", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev17": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev10": {
+            "requested": [
+                "100000.", 
+                "85000.", 
+                "70000.", 
+                "50000.", 
+                "25000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "site": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "site index", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "site", 
+            "type": "integer", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "smooth_level": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "a: a b1: b1 b2: b2 ztop: ztop zsurf1: zsurf1 zsurf2: zsurf2", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-200.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "a: a_bnds b1: b1_bnds b2: b2_bnds ztop: ztop zsurf1: zsurf1 zsurf2: zsurf2", 
+            "bounds_values": "", 
+            "long_name": "atmosphere smooth level vertical (SLEVE) coordinate", 
+            "standard_name": "atmosphere_sleve_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "m", 
+            "formula": "z = a*ztop + b1*zsurf1 + b2*zsurf2", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "800000.0", 
+            "axis": "Z"
+        }, 
+        "p840": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "100000. 68000.", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "84000.0", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "ocean_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "sigma: lev eta: eta depth: depth", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "sigma: lev_bnds eta: eta depth: depth", 
+            "bounds_values": "", 
+            "long_name": "ocean sigma coordinate", 
+            "standard_name": "ocean_sigma_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "z(n,k,j,i) = eta(n,j,i) + sigma(k)*(depth(j,i)+eta(n,j,i))", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "0.0", 
+            "axis": "Z"
+        }, 
+        "depth0m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "0.0", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "100.0", 
+            "axis": "Z"
+        }, 
+        "ocean_s": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "s: lev eta: eta depth: depth a: a_coeff b: b_coeff depth_c: depth_c", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "s: lev_bnds eta: eta depth: depth a: a b: b depth_c: depth_c", 
+            "bounds_values": "", 
+            "long_name": "ocean s-coordinate", 
+            "standard_name": "ocean_s_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "z(n,k,j,i) = eta(n,j,i)*(1+s(k)) + depth_c*s(k) + (depth(j,i)-depth_c)*C(k) n where n C(k)=(1-b)*sinh(a*s(k))/sinh(a) +n           b*(tanh(a*(s(k)+0.5))/(2*tanh(0.5*a)) - 0.5)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "0.0", 
+            "axis": "Z"
+        }, 
+        "plev4s": {
+            "requested": [
+                "85000.", 
+                "50000.", 
+                "20000.", 
+                "5000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "typec4pft": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "c4_plant_functional_types", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "plev3h": {
+            "requested": [
+                "10000.", 
+                "1000.", 
+                "100."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "height2m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "up", 
+            "must_have_bounds": "no", 
+            "valid_min": "1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "height", 
+            "standard_name": "height", 
+            "value": "2.0", 
+            "out_name": "height", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "10.0", 
+            "axis": "Z"
+        }, 
+        "time1": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "time", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "plev7h": {
+            "requested": [
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "25000.", 
+                "5000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "sza5": {
+            "requested": [
+                "0.", 
+                "20.", 
+                "40.", 
+                "60.", 
+                "80."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "solar zenith angle", 
+            "standard_name": "solar_zenith_angle", 
+            "value": "", 
+            "out_name": "sza", 
+            "type": "double", 
+            "units": "degree", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "depth_coord": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "ocean depth coordinate", 
+            "standard_name": "depth", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "12000.0", 
+            "axis": "Z"
+        }, 
+        "sdepth1": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "0.0 0.1", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "0.05", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "0.2", 
+            "axis": "Z"
+        }, 
+        "alternate_hybrid_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "ap: ap b: b ps: ps", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "ap: ap_bnds b: b_bnds ps: ps", 
+            "bounds_values": "", 
+            "long_name": "hybrid sigma pressure coordinate", 
+            "standard_name": "atmosphere_hybrid_sigma_pressure_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "1", 
+            "formula": "p = ap + b*ps", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "1.0", 
+            "axis": "Z"
+        }, 
+        "time2": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "time", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "yes", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "time3": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "Diurnal cycle: monthly mean of the diurnal cycle (1 hour steps).", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "oline": {
+            "requested": [
+                "barents_opening", 
+                "bering_strait", 
+                "canadian_archipelago", 
+                "denmark_strait", 
+                "drake_passage", 
+                "english_channel", 
+                "pacific_equatorial_undercurrent", 
+                "faroe_scotland_channel", 
+                "florida_bahamas_strait", 
+                "fram_strait", 
+                "iceland_faroe_channel", 
+                "indonesian_thoughflow", 
+                "mozambique_channel", 
+                "taiwan_luzon_straits", 
+                "windward_passage"
+            ], 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "ocean passage", 
+            "standard_name": "region", 
+            "value": "", 
+            "out_name": "line", 
+            "type": "character", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "plev14": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "25000.", 
+                "15000.", 
+                "10000.", 
+                "5000.", 
+                "2000.", 
+                "1000.", 
+                "500.", 
+                "100."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev8": {
+            "requested": [
+                "100000.", 
+                "85000.", 
+                "70000.", 
+                "50000.", 
+                "25000.", 
+                "10000.", 
+                "5000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "location": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "location index", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "loc", 
+            "type": "integer", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "latitude": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-90.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "latitude", 
+            "standard_name": "latitude", 
+            "value": "", 
+            "out_name": "lat", 
+            "type": "double", 
+            "units": "degrees_north", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "90.0", 
+            "axis": "Y"
+        }, 
+        "plev3": {
+            "requested": [
+                "85000.", 
+                "50000.", 
+                "25000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "basin": {
+            "requested": [
+                "atlantic_arctic_ocean", 
+                "indian_pacific_ocean", 
+                "global_ocean"
+            ], 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "ocean basin", 
+            "standard_name": "region", 
+            "value": "", 
+            "out_name": "basin", 
+            "type": "character", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "p700": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "700 hPa", 
+            "standard_name": "air_pressure", 
+            "value": "70000.", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev7": {
+            "requested": [
+                "90000.", 
+                "74000.", 
+                "62000.", 
+                "50000.", 
+                "37500.", 
+                "24500.", 
+                "9000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "100000.", 
+                "80000.", 
+                "80000.", 
+                "68000.", 
+                "68000.", 
+                "56000.", 
+                "56000.", 
+                "44000.", 
+                "44000.", 
+                "31000.", 
+                "31000.", 
+                "18000.", 
+                "18000.", 
+                " 0."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev4": {
+            "requested": [
+                "92500.", 
+                "85000.", 
+                "50000.", 
+                "25000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev23": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000.", 
+                "700.", 
+                "500.", 
+                "300.", 
+                "200.", 
+                "100.", 
+                "40."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev39": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "17000.", 
+                "15000.", 
+                "13000.", 
+                "11500.", 
+                "10000.", 
+                "9000.", 
+                "8000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1500.", 
+                "1000.", 
+                "700.", 
+                "500.", 
+                "300.", 
+                "200.", 
+                "150.", 
+                "100.", 
+                "70.", 
+                "50.", 
+                "40.", 
+                "30.", 
+                "20.", 
+                "15.", 
+                "10.", 
+                "7.", 
+                "5.", 
+                "3."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "typepever": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "primary_evergreen_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "typesdec": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "secondary_decidous_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "plev27": {
+            "requested": [
+                "100000.", 
+                "97500.", 
+                "95000.", 
+                "92500.", 
+                "90000.", 
+                "87500.", 
+                "85000.", 
+                "82500.", 
+                "80000.", 
+                "77500.", 
+                "75000.", 
+                "70000.", 
+                "65000.", 
+                "60000.", 
+                "55000.", 
+                "50000.", 
+                "45000.", 
+                "40000.", 
+                "35000.", 
+                "30000.", 
+                "25000.", 
+                "22500.", 
+                "20000.", 
+                "17500.", 
+                "15000.", 
+                "12500.", 
+                "10000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "alt40": {
+            "requested": [
+                "240.", 
+                "720.", 
+                "1200.", 
+                "1680.", 
+                "2160.", 
+                "2640.", 
+                "3120.", 
+                "3600.", 
+                "4080.", 
+                "4560.", 
+                "5040.", 
+                "5520.", 
+                "6000.", 
+                "6480.", 
+                "6960.", 
+                "7440.", 
+                "7920.", 
+                "8400.", 
+                "8880.", 
+                "9360.", 
+                "9840.", 
+                "10320.", 
+                "10800.", 
+                "11280.", 
+                "11760.", 
+                "12240.", 
+                "12720.", 
+                "13200.", 
+                "13680.", 
+                "14160.", 
+                "14640.", 
+                "15120.", 
+                "15600.", 
+                "16080.", 
+                "16560.", 
+                "17040.", 
+                "17520.", 
+                "18000.", 
+                "18480.", 
+                "18960."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "0.", 
+                "480.", 
+                "480.", 
+                "960.", 
+                "960.", 
+                "1440.", 
+                "1440.", 
+                "1920.", 
+                "1920.", 
+                "2400.", 
+                "2400.", 
+                "2880.", 
+                "2880.", 
+                "3360.", 
+                "3360.", 
+                "3840.", 
+                "3840.", 
+                "4320.", 
+                "4320.", 
+                "4800.", 
+                "4800.", 
+                "5280.", 
+                "5280.", 
+                "5760.", 
+                "5760.", 
+                "6240.", 
+                "6240.", 
+                "6720.", 
+                "6720.", 
+                "7200.", 
+                "7200.", 
+                "7680.", 
+                "7680.", 
+                "8160.", 
+                "8160.", 
+                "8640.", 
+                "8640.", 
+                "9120.", 
+                "9120.", 
+                "9600.", 
+                "9600.", 
+                "10080.", 
+                "10080.", 
+                "10560.", 
+                "10560.", 
+                "11040.", 
+                "11040.", 
+                "11520.", 
+                "11520.", 
+                "12000.", 
+                "12000.", 
+                "12480.", 
+                "12480.", 
+                "12960.", 
+                "12960.", 
+                "13440.", 
+                "13440.", 
+                "13920.", 
+                "13920.", 
+                "14400.", 
+                "14400.", 
+                "14880.", 
+                "14880.", 
+                "15360.", 
+                "15360.", 
+                "15840.", 
+                "15840.", 
+                "16320.", 
+                "16320.", 
+                "16800.", 
+                "16800.", 
+                "17280.", 
+                "17280.", 
+                "17760.", 
+                "17760.", 
+                "18240.", 
+                "18240.", 
+                "18720.", 
+                "18720.", 
+                "19200."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "altitude", 
+            "standard_name": "altitude", 
+            "value": "", 
+            "out_name": "alt40", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "time": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "time", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "plev7c": {
+            "requested": [
+                "90000.", 
+                "74000.", 
+                "62000.", 
+                "50000.", 
+                "37500.", 
+                "24500.", 
+                "9000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "height10m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "up", 
+            "must_have_bounds": "no", 
+            "valid_min": "1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "height", 
+            "standard_name": "height", 
+            "value": "10.0", 
+            "out_name": "height", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "30.0", 
+            "axis": "Z"
+        }, 
+        "dbze": {
+            "requested": [
+                "-47.5", 
+                "-42.5", 
+                "-37.5", 
+                "-32.5", 
+                "-27.5", 
+                "-22.5", 
+                "-17.5", 
+                "-12.5", 
+                "-7.5", 
+                "-2.5", 
+                "2.5", 
+                "7.5", 
+                "12.5", 
+                "17.5", 
+                "22.5"
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "-50", 
+                "-45", 
+                "-45", 
+                "-40", 
+                "-40", 
+                "-35", 
+                "-35", 
+                "-30", 
+                "-30", 
+                "-25", 
+                "-25", 
+                "-20", 
+                "-20", 
+                "-15", 
+                "-15", 
+                "-10", 
+                "-10", 
+                "-5", 
+                "-5", 
+                "0", 
+                "0", 
+                "5", 
+                "5", 
+                "10", 
+                "10", 
+                "15", 
+                "15", 
+                "20", 
+                "20", 
+                "25."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "CloudSat simulator equivalent radar reflectivity factor", 
+            "standard_name": "equivalent_reflectivity_factor", 
+            "value": "", 
+            "out_name": "dbze", 
+            "type": "double", 
+            "units": "dBZ", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "typesever": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "secondary_evergreen_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "rho": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "density++++?", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "rho", 
+            "type": "double", 
+            "units": "kg m-3", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "depth100m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "80.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "100.0", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "120.0", 
+            "axis": "Z"
+        }, 
+        "effectRadLi": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "Effective Radius of Liquid Aerosols", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "effectRadLi", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "sdepth": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "200.0", 
+            "axis": "Z"
+        }, 
+        "vegtype": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "plant functional type", 
+            "standard_name": "area_type", 
+            "value": "", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "typec3pft": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "c3_plant_functional_types", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "natural_log_pressure": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "p0: p0 lev: lev", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "p0: p0 lev: lev_bnds", 
+            "bounds_values": "", 
+            "long_name": "atmosphere natural log pressure coordinate", 
+            "standard_name": "atmosphere_ln_pressure_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "p = p0 * exp(-lev)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "20.0", 
+            "axis": "Z"
+        }, 
+        "scatratio": {
+            "requested": [
+                "0.005", 
+                "0.605", 
+                "2.1", 
+                "4.", 
+                "6.", 
+                "8.5", 
+                "12.5", 
+                "17.5", 
+                "22.5", 
+                "27.5", 
+                "35.", 
+                "45.", 
+                "55.", 
+                "70.", 
+                "50040."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "0.", 
+                "0.01", 
+                "0.01", 
+                "1.2", 
+                "1.2", 
+                "3.", 
+                "3.", 
+                "5.", 
+                "5.", 
+                "7.", 
+                "7.", 
+                "10.", 
+                "10.", 
+                "15.", 
+                "15.", 
+                "20.", 
+                "20.", 
+                "25.", 
+                "25.", 
+                "30.", 
+                "30.", 
+                "40.", 
+                "40.", 
+                "50.", 
+                "50.", 
+                "60.", 
+                "60.", 
+                "80.", 
+                "80.", 
+                "100000."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "lidar backscattering ratio", 
+            "standard_name": "backscattering_ratio", 
+            "value": "", 
+            "out_name": "scatratio", 
+            "type": "double", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "standard_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "ptop: ptop sigma: lev ps: ps", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "ptop: ptop sigma: lev_bnds ps: ps", 
+            "bounds_values": "", 
+            "long_name": "sigma coordinate", 
+            "standard_name": "atmosphere_sigma_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "p = ptop + sigma*(ps - ptop)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "1.0", 
+            "axis": "Z"
+        }, 
+        "typepdec": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "primary_deciduous_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "hybrid_height": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "a: lev b: b orog: orog", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "a: lev_bnds b: b_bnds orog: orog", 
+            "bounds_values": "", 
+            "long_name": "hybrid height coordinate", 
+            "standard_name": "atmosphere_hybrid_height_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "m", 
+            "formula": "z = a + b*orog", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "longitude": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "longitude", 
+            "standard_name": "longitude", 
+            "value": "", 
+            "out_name": "lon", 
+            "type": "double", 
+            "units": "degrees_east", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "360.0", 
+            "axis": "X"
+        }, 
+        "effectRadIc": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "Effective Radius of Ice Aerosols", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "effectRadIc", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "p1000": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "1000 hPa", 
+            "standard_name": "air_pressure", 
+            "value": "100000.", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "p500": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "500 hPa", 
+            "standard_name": "air_pressure", 
+            "value": "50000.", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "ocean_double_sigma": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "sigma: sigma depth: depth z1: z1 z2: z2 a: a_coeff href: href k_c: k_c", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "sigma: sigma_bnds depth: depth z1: z1 z2: z2 a: a href: href k_c: k_c", 
+            "bounds_values": "", 
+            "long_name": "ocean double sigma coordinate", 
+            "standard_name": "ocean_double_sigma", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "for k <= k_c:n z(k,j,i)= sigma(k)*f(j,i) n for k > k_c:n z(k,j,i)= f(j,i) + (sigma(k)-1)*(depth(j,i)-f(j,i)) n f(j,i)= 0.5*(z1+ z2) + 0.5*(z1-z2)* tanh(2*a/(z1-z2)*(depth(j,i)-href))", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plevs": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "standard_hybrid_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "p0: p0 a: a b: b ps: ps", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "p0: p0 a: a_bnds b: b_bnds ps: ps", 
+            "bounds_values": "", 
+            "long_name": "hybrid sigma pressure coordinate", 
+            "standard_name": "atmosphere_hybrid_sigma_pressure_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "1", 
+            "formula": "p = a*p0 + b*ps", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "1.0", 
+            "axis": "Z"
+        }, 
+        "p560": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "68000. 44000.", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "56000.0", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }
+    }, 
+    "variable_entry": {
+        "tsnLi": {
+            "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", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Snow Internal Temperature", 
+            "standard_name": "temperature_in_surface_snow", 
+            "modeling_realm": "landIce land", 
+            "cell_measures": "time: mean area: mean where ice_sheet", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "K", 
+            "out_name": "tsnLi", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "acabfLi": {
+            "comment": "Specific mass balance of land ice (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", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Land Ice Surface Mass Balance flux", 
+            "standard_name": "land_ice_surface_specific_mass_balance_flux", 
+            "modeling_realm": "landIce", 
+            "cell_measures": "time: mean area: mean where ice_sheet", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg m-2 s-1", 
+            "out_name": "acabfLi", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "depth_c": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: depth_c", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "agesno": {
+            "comment": "Age of Snow (when computing the time-mean here, the time samples, weighted by the mass of snow on the land portion of the grid cell, are accumulated and then divided by the sum of the weights.  Reported as missing data in regions free of snow on land.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Snow Age", 
+            "standard_name": "age_of_surface_snow", 
+            "modeling_realm": "landIce land", 
+            "cell_measures": "time: mean (with samples weighted by snow mass) area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "day", 
+            "out_name": "agesno", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "lialbLi": {
+            "comment": "Mean surface albedo of entire land ice covered part of the grid cell", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Land ice or snow albedo", 
+            "standard_name": "surface_albedo", 
+            "modeling_realm": "landIce", 
+            "cell_measures": "time: mean area: mean where ice_sheet", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "1.0", 
+            "out_name": "lialbLi", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "ap_bnds": {
+            "units": "Pa", 
+            "long_name": "vertical coordinate formula term: ap(k+1/2)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "ap": {
+            "units": "Pa", 
+            "long_name": "vertical coordinate formula term: ap(k)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "hflsLi": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "valid_min": "-76.77", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean area: mean where ice_sheet", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "50.39", 
+            "units": "W m-2", 
+            "out_name": "hflsLi", 
+            "type": "real", 
+            "valid_max": "790.7", 
+            "ok_max_mean_abs": "73.2"
+        }, 
+        "href": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: href", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "orog": {
+            "units": "m", 
+            "long_name": "Surface Altitude", 
+            "type": "real", 
+            "dimensions": "longitude latitude"
+        }, 
+        "pflw": {
+            "comment": "''where land over land'', i.e., this is the total mass of liquid water contained within the permafrost layer within the land portion of a grid cell divided by the area of the land portion of the cell.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Liquid Water Content of Permafrost Layer", 
+            "standard_name": "liquid_water_content_of_permafrost_layer", 
+            "modeling_realm": "landIce land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2", 
+            "out_name": "pflw", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "zlev": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: zlev(k)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "snicefreezLi": {
+            "comment": "Mass flux of surface meltwater which refreezes within the snow or firn. 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", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Surface snow and ice refreeze flux", 
+            "standard_name": "surface_snow_and_ice_refreezing_flux", 
+            "modeling_realm": "landIce", 
+            "cell_measures": "time: mean area: mean where ice_sheet", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg m-2 s-1", 
+            "out_name": "snicefreezLi", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "tsn": {
+            "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", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Snow Internal Temperature", 
+            "standard_name": "temperature_in_surface_snow", 
+            "modeling_realm": "landIce land", 
+            "cell_measures": "time: mean (with samples weighted by snow mass) area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "K", 
+            "out_name": "tsn", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "ps": {
+            "units": "Pa", 
+            "long_name": "Surface Air Pressure", 
+            "type": "real", 
+            "dimensions": "longitude latitude time"
+        }, 
+        "sftflf": {
+            "comment": "Fraction of grid cell covered by ice sheet flowing over seawater", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Floating Ice Sheet  Area Fraction", 
+            "standard_name": "floating_ice_sheet_area_fraction", 
+            "modeling_realm": "landIce", 
+            "cell_measures": "time: mean area: mean where floating_ice_sheet", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "%", 
+            "out_name": "sftflf", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "tasLi": {
+            "comment": "near-surface (usually, 2 meter) air temperature", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "180.6", 
+            "long_name": "", 
+            "standard_name": "air_temperature", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean area: mean where ice_sheet", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "262.4", 
+            "units": "K", 
+            "out_name": "tasLi", 
+            "type": "real", 
+            "valid_max": "335.1", 
+            "ok_max_mean_abs": "293"
+        }, 
+        "sftgrf": {
+            "comment": "Fraction of grid cell covered by grounded ice sheet", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Grounded Ice Sheet  Area Fraction", 
+            "standard_name": "grounded_ice_sheet_area_fraction", 
+            "modeling_realm": "landIce", 
+            "cell_measures": "time: mean area: mean where grounded_ice_sheet", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "%", 
+            "out_name": "sftgrf", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "tsLi": {
+            "comment": "Temperature of the lower boundary of the atmosphere", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "176.8", 
+            "long_name": "Surface Temperature", 
+            "standard_name": "surface_temperature", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean area: mean where ice_sheet", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "262.8", 
+            "units": "K", 
+            "out_name": "tsLi", 
+            "type": "real", 
+            "valid_max": "339.6", 
+            "ok_max_mean_abs": "293.3"
+        }, 
+        "hfdsn": {
+            "comment": "the net downward heat flux from the atmosphere into the snow that lies on land divided by the land area in the grid cell; reported as 0.0 for snow-free land regions or where the land fraction is 0.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "down", 
+            "valid_min": "", 
+            "long_name": "Downward Heat Flux into Snow Where Land over Land", 
+            "standard_name": "surface_downward_heat_flux_in_snow", 
+            "modeling_realm": "landIce land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "hfdsn", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "sigma_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: sigma(k+1/2)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "mrroLi": {
+            "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", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Total Run-off", 
+            "standard_name": "runoff_flux", 
+            "modeling_realm": "landIce", 
+            "cell_measures": "time: mean area: mean where ice_sheet", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg m-2 s-1", 
+            "out_name": "mrroLi", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "sbl": {
+            "comment": "The snow and ice sublimation flux is the loss of snow and ice mass from the surface resulting from their conversion to water vapor that enters the atmosphere.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "-0.004959", 
+            "long_name": "Surface Snow and Ice Sublimation Flux", 
+            "standard_name": "surface_snow_and_ice_sublimation_flux", 
+            "modeling_realm": "landIce land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "-5.521e-05", 
+            "units": "kg m-2 s-1", 
+            "out_name": "sbl", 
+            "type": "real", 
+            "valid_max": "0.0009936", 
+            "ok_max_mean_abs": "9.61e-05"
+        }, 
+        "sncLi": {
+            "comment": "Fraction of each grid cell that is occupied by snow that rests on land portion of cell.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Snow Area Fraction", 
+            "standard_name": "surface_snow_area_fraction", 
+            "modeling_realm": "landIce land", 
+            "cell_measures": "time: mean area: mean where ice_sheet", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "-29.01", 
+            "units": "%", 
+            "out_name": "sncLi", 
+            "type": "real", 
+            "valid_max": "105", 
+            "ok_max_mean_abs": "78.46"
+        }, 
+        "snmLi": {
+            "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", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Surface Snow Melt", 
+            "standard_name": "surface_snow_melt_flux", 
+            "modeling_realm": "landIce land", 
+            "cell_measures": "time: mean area: mean where ice_sheet", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "-2.092e-06", 
+            "units": "kg m-2 s-1", 
+            "out_name": "snmLi", 
+            "type": "real", 
+            "valid_max": "0.0003926", 
+            "ok_max_mean_abs": "6.123e-06"
+        }, 
+        "rsusLi": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "valid_min": "-0.006589", 
+            "long_name": "surface upwelling shortwave radiation", 
+            "standard_name": "surface_upwelling_shortwave_flux_in_air", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean area: mean where ice_sheet", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "26.22", 
+            "units": "W m-2", 
+            "out_name": "rsusLi", 
+            "type": "real", 
+            "valid_max": "422.2", 
+            "ok_max_mean_abs": "43.77"
+        }, 
+        "ptop": {
+            "units": "Pa", 
+            "long_name": "pressure at top of model", 
+            "type": "", 
+            "dimensions": ""
+        }, 
+        "prsnLi": {
+            "comment": "at surface; includes precipitation of all forms of water in the solid phase", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Snowfall Flux", 
+            "standard_name": "snowfall_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean area: mean where ice_sheet", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "1.449e-06", 
+            "units": "kg m-2 s-1", 
+            "out_name": "prsnLi", 
+            "type": "real", 
+            "valid_max": "0.0002987", 
+            "ok_max_mean_abs": "6.11e-06"
+        }, 
+        "rsdsLi": {
+            "comment": "surface solar irradiance for UV calculations", 
+            "dimensions": "longitude latitude time", 
+            "positive": "down", 
+            "valid_min": "-0.002946", 
+            "long_name": "Surface Downwelling Shortwave Radiation", 
+            "standard_name": "surface_downwelling_shortwave_flux_in_air", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean area: mean where ice_sheet", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "143.9", 
+            "units": "W m-2", 
+            "out_name": "rsdsLi", 
+            "type": "real", 
+            "valid_max": "524.4", 
+            "ok_max_mean_abs": "181.6"
+        }, 
+        "snd": {
+            "comment": "where land over land, this is computed as the mean thickness of snow in the land portion of the grid cell (averaging over the entire land portion, including the snow-free fraction).  Reported as 0.0 where the land fraction is 0.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Snow Depth", 
+            "standard_name": "surface_snow_thickness", 
+            "modeling_realm": "landIce land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "-1.961", 
+            "units": "m", 
+            "out_name": "snd", 
+            "type": "real", 
+            "valid_max": "962.9", 
+            "ok_max_mean_abs": "4.503"
+        }, 
+        "b_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: b(k+1/2)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "snc": {
+            "comment": "Fraction of each grid cell that is occupied by snow that rests on land portion of cell.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Snow Area Fraction", 
+            "standard_name": "surface_snow_area_fraction", 
+            "modeling_realm": "landIce land", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "-29.01", 
+            "units": "%", 
+            "out_name": "snc", 
+            "type": "real", 
+            "valid_max": "105", 
+            "ok_max_mean_abs": "78.46"
+        }, 
+        "hfssLi": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "valid_min": "-264.5", 
+            "long_name": "Surface Upward Sensible Heat Flux", 
+            "standard_name": "surface_upward_sensible_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean area: mean where ice_sheet", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "10.7", 
+            "units": "W m-2", 
+            "out_name": "hfssLi", 
+            "type": "real", 
+            "valid_max": "844.8", 
+            "ok_max_mean_abs": "34.84"
+        }, 
+        "prLi": {
+            "comment": "includes both liquid and solid phases", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Precipitation", 
+            "standard_name": "precipitation_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean area: mean where ice_sheet", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "2.156e-05", 
+            "units": "kg m-2 s-1", 
+            "out_name": "prLi", 
+            "type": "real", 
+            "valid_max": "0.001254", 
+            "ok_max_mean_abs": "3.215e-05"
+        }, 
+        "snm": {
+            "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", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Surface Snow Melt", 
+            "standard_name": "surface_snow_melt_flux", 
+            "modeling_realm": "landIce land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "-2.092e-06", 
+            "units": "kg m-2 s-1", 
+            "out_name": "snm", 
+            "type": "real", 
+            "valid_max": "0.0003926", 
+            "ok_max_mean_abs": "6.123e-06"
+        }, 
+        "rlusLi": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "valid_min": "43.75", 
+            "long_name": "surface upwelling longwave radiation", 
+            "standard_name": "surface_upwelling_longwave_flux_in_air", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean area: mean where ice_sheet", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "325.6", 
+            "units": "W m-2", 
+            "out_name": "rlusLi", 
+            "type": "real", 
+            "valid_max": "658", 
+            "ok_max_mean_abs": "376.3"
+        }, 
+        "nsigma": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: nsigma", 
+            "type": "integer", 
+            "dimensions": ""
+        }, 
+        "snicemLi": {
+            "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", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Surface snow and ice melt flux", 
+            "standard_name": "surface_snow_and_ice_melt_flux", 
+            "modeling_realm": "landIce", 
+            "cell_measures": "time: mean area: mean where ice_sheet", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg m-2 s-1", 
+            "out_name": "snicemLi", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "snw": {
+            "comment": "The mass of surface snow on the land portion of the grid cell divided by the land area in the grid cell; reported as missing where the land fraction is 0; excludes snow on vegetation canopy or on sea ice.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "-0.007542", 
+            "long_name": "Surface Snow Amount", 
+            "standard_name": "surface_snow_amount", 
+            "modeling_realm": "landIce land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "-6025", 
+            "units": "kg m-2", 
+            "out_name": "snw", 
+            "type": "real", 
+            "valid_max": "9.555e+05", 
+            "ok_max_mean_abs": "1.213e+04"
+        }, 
+        "rldsLi": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "down", 
+            "valid_min": "30.71", 
+            "long_name": "surface downwelling longwave radiation", 
+            "standard_name": "surface_downwelling_longwave_flux_in_air", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean area: mean where ice_sheet", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "271.2", 
+            "units": "W m-2", 
+            "out_name": "rldsLi", 
+            "type": "real", 
+            "valid_max": "520.5", 
+            "ok_max_mean_abs": "323.6"
+        }, 
+        "ztop": {
+            "units": "m", 
+            "long_name": "height of top of model", 
+            "type": "", 
+            "dimensions": ""
+        }, 
+        "lwsnl": {
+            "comment": "where land over land: this is computed as the total mass of liquid water contained interstitially within the snow layer of the land portion of a grid cell divided by the area of the land portion of the cell.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Liquid Water Content of Snow Layer", 
+            "standard_name": "liquid_water_content_of_snow_layer", 
+            "modeling_realm": "landIce land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2", 
+            "out_name": "lwsnl", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "zlev_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: zlev(k+1/2)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "z1": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: z1", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "z2": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: z2", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "sftgifLi": {
+            "comment": "Percentage of grid cell occupied by glaciers.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0.0", 
+            "long_name": "Percentage of Grid Cell Covered with Glacier", 
+            "standard_name": "land_ice_area_fraction", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where ice_sheet", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "%", 
+            "out_name": "sftgifLi", 
+            "type": "real", 
+            "valid_max": "100.0", 
+            "ok_max_mean_abs": ""
+        }, 
+        "a": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: a(k)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "tpf": {
+            "comment": "The mean thickness of the permafrost layer in the land portion of the grid cell.  Reported as zero in permafrost-free regions.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Permafrost Layer Thickness", 
+            "standard_name": "permafrost_layer_thickness", 
+            "modeling_realm": "landIce land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "m", 
+            "out_name": "tpf", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "p0": {
+            "units": "Pa", 
+            "long_name": "vertical coordinate formula term: reference pressure", 
+            "type": "", 
+            "dimensions": ""
+        }, 
+        "b": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: b(k)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "litempsnicLi": {
+            "comment": "Surface Temperature that is used to force ice sheet models. It does not vary with seasons. In some models it is the temperature at the base of the snow, and in other at the base of firn. Report surface temperature of ice sheet where snow or firn thickness is zero", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Temperature at the interface between land ice and snow or firn", 
+            "standard_name": "land_ice_temperature_at_snow_or_firn_base", 
+            "modeling_realm": "landIce", 
+            "cell_measures": "time: mean area: mean where ice_sheet", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "K", 
+            "out_name": "litempsnicLi", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "mrrosLi": {
+            "comment": "The total surface run off leaving the land portion of the grid cell (excluding drainage through the base of the soil model).", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Surface Run off", 
+            "standard_name": "surface_runoff_flux", 
+            "modeling_realm": "landIce", 
+            "cell_measures": "time: mean area: mean where ice_sheet", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg m-2 s-1", 
+            "out_name": "mrrosLi", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "orogLi": {
+            "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", 
+            "positive": "", 
+            "valid_min": "-700.0", 
+            "long_name": "surface altitude", 
+            "standard_name": "surface_altitude", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean area: mean where ice_sheet", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "m", 
+            "out_name": "orogLi", 
+            "type": "real", 
+            "valid_max": "10000.0", 
+            "ok_max_mean_abs": ""
+        }, 
+        "depth": {
+            "units": "m", 
+            "long_name": "Sea Floor Depth: formula term: thetao", 
+            "type": "real", 
+            "dimensions": "longitude latitude"
+        }, 
+        "eta": {
+            "units": "m", 
+            "long_name": "Sea Surface Height formula term: thetao", 
+            "type": "real", 
+            "dimensions": "longitude latitude time"
+        }, 
+        "sootsn": {
+            "comment": "the entire land portion of the grid cell is considered, with snow soot content set to 0.0 in regions free of snow.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Snow Soot Content", 
+            "standard_name": "soot_content_of_surface_snow", 
+            "modeling_realm": "landIce land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2", 
+            "out_name": "sootsn", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "icemLi": {
+            "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", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Surface ice melt flux", 
+            "standard_name": "surface_ice_melt_flux", 
+            "modeling_realm": "landIce", 
+            "cell_measures": "time: mean area: mean where ice_sheet", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg m-2 s-1", 
+            "out_name": "icemLi", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "k_c": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: k_c", 
+            "type": "integer", 
+            "dimensions": ""
+        }, 
+        "sigma": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: sigma(k)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "sblLi": {
+            "comment": "The snow and ice sublimation flux is the loss of snow and ice mass from the surface resulting from their conversion to water vapor that enters the atmosphere.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "-0.004959", 
+            "long_name": "Surface Snow and Ice Sublimation Flux", 
+            "standard_name": "surface_snow_and_ice_sublimation_flux", 
+            "modeling_realm": "landIce land", 
+            "cell_measures": "time: mean area: mean where ice_sheet", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "-5.521e-05", 
+            "units": "kg m-2 s-1", 
+            "out_name": "sblLi", 
+            "type": "real", 
+            "valid_max": "0.0009936", 
+            "ok_max_mean_abs": "9.61e-05"
+        }, 
+        "prraLi": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Rainfall rate", 
+            "standard_name": "rainfall_flux", 
+            "modeling_realm": "landIce", 
+            "cell_measures": "time: mean area: mean where ice_sheet", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg/m2/s", 
+            "out_name": "prraLi", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "a_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: a(k+1/2)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }
+    }
+}
diff --git a/TestTables/CMIP6_Lmon.json b/TestTables/CMIP6_Lmon.json
new file mode 100644
index 0000000..f9a24ad
--- /dev/null
+++ b/TestTables/CMIP6_Lmon.json
@@ -0,0 +1,3140 @@
+{
+    "Header": {
+        "product": "output", 
+        "approx_interval": "30.00000", 
+        "realm": "land", 
+        "cmor_version": "3.1", 
+        "Conventions": "CF-1.6 CMIP-6.0", 
+        "frequency": "mon", 
+        "table_id": "Table Lmon", 
+        "data_specs_version": "01.beta.29", 
+        "mip_era": "CMIP6", 
+        "generic_levels": "", 
+        "missing_value": "1e20", 
+        "table_date": "14 June 2016"
+    }, 
+    "axis_entry": {
+        "typebare": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "bare_ground", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "tau": {
+            "requested": [
+                "0.15", 
+                "0.8", 
+                "2.45", 
+                "6.5", 
+                "16.2", 
+                "41.5", 
+                "100."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "0.0", 
+                "0.3", 
+                "0.3", 
+                "1.3", 
+                "1.3", 
+                "3.6", 
+                "3.6", 
+                "9.4", 
+                "9.4", 
+                "23.0", 
+                "23.0", 
+                "60.0", 
+                "60.0", 
+                "100000."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "cloud optical thickness", 
+            "standard_name": "atmosphere_optical_thickness_due_to_cloud", 
+            "value": "", 
+            "out_name": "tau", 
+            "type": "double", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "olayer100m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "0. 100.", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "50.0", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "100.0", 
+            "axis": "Z"
+        }, 
+        "spectband": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "Spectral Band", 
+            "standard_name": "wave_frequency", 
+            "value": "", 
+            "out_name": "spectband", 
+            "type": "double", 
+            "units": "s-1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "ocean_sigma_z": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "sigma: sigma eta: eta depth: depth depth_c: depth_c nsigma: nsigma zlev: zlev", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "sigma: sigma_bnds eta: eta depth: depth depth_c: depth_c nsigma: nsigma zlev: zlev_bnds", 
+            "bounds_values": "", 
+            "long_name": "ocean sigma over z coordinate", 
+            "standard_name": "ocean_sigma_z", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "for k <= nsigma: z(n,k,j,i) = eta(n,j,i) + sigma(k)*(min(depth_c,depth(j,i))+eta(n,j,i)) ; for k > nsigma: z(n,k,j,i) = zlev(k)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev19": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000.", 
+                "500.", 
+                "100."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "p220": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "44000. 0.0", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "22000.0", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev17": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev10": {
+            "requested": [
+                "100000.", 
+                "85000.", 
+                "70000.", 
+                "50000.", 
+                "25000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "site": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "site index", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "site", 
+            "type": "integer", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "smooth_level": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "a: a b1: b1 b2: b2 ztop: ztop zsurf1: zsurf1 zsurf2: zsurf2", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-200.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "a: a_bnds b1: b1_bnds b2: b2_bnds ztop: ztop zsurf1: zsurf1 zsurf2: zsurf2", 
+            "bounds_values": "", 
+            "long_name": "atmosphere smooth level vertical (SLEVE) coordinate", 
+            "standard_name": "atmosphere_sleve_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "m", 
+            "formula": "z = a*ztop + b1*zsurf1 + b2*zsurf2", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "800000.0", 
+            "axis": "Z"
+        }, 
+        "p840": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "100000. 68000.", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "84000.0", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "ocean_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "sigma: lev eta: eta depth: depth", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "sigma: lev_bnds eta: eta depth: depth", 
+            "bounds_values": "", 
+            "long_name": "ocean sigma coordinate", 
+            "standard_name": "ocean_sigma_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "z(n,k,j,i) = eta(n,j,i) + sigma(k)*(depth(j,i)+eta(n,j,i))", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "0.0", 
+            "axis": "Z"
+        }, 
+        "depth0m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "0.0", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "100.0", 
+            "axis": "Z"
+        }, 
+        "ocean_s": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "s: lev eta: eta depth: depth a: a_coeff b: b_coeff depth_c: depth_c", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "s: lev_bnds eta: eta depth: depth a: a b: b depth_c: depth_c", 
+            "bounds_values": "", 
+            "long_name": "ocean s-coordinate", 
+            "standard_name": "ocean_s_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "z(n,k,j,i) = eta(n,j,i)*(1+s(k)) + depth_c*s(k) + (depth(j,i)-depth_c)*C(k) n where n C(k)=(1-b)*sinh(a*s(k))/sinh(a) +n           b*(tanh(a*(s(k)+0.5))/(2*tanh(0.5*a)) - 0.5)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "0.0", 
+            "axis": "Z"
+        }, 
+        "plev4s": {
+            "requested": [
+                "85000.", 
+                "50000.", 
+                "20000.", 
+                "5000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "typec4pft": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "c4_plant_functional_types", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "plev3h": {
+            "requested": [
+                "10000.", 
+                "1000.", 
+                "100."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "height2m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "up", 
+            "must_have_bounds": "no", 
+            "valid_min": "1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "height", 
+            "standard_name": "height", 
+            "value": "2.0", 
+            "out_name": "height", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "10.0", 
+            "axis": "Z"
+        }, 
+        "time1": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "time", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "plev7h": {
+            "requested": [
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "25000.", 
+                "5000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "sza5": {
+            "requested": [
+                "0.", 
+                "20.", 
+                "40.", 
+                "60.", 
+                "80."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "solar zenith angle", 
+            "standard_name": "solar_zenith_angle", 
+            "value": "", 
+            "out_name": "sza", 
+            "type": "double", 
+            "units": "degree", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "depth_coord": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "ocean depth coordinate", 
+            "standard_name": "depth", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "12000.0", 
+            "axis": "Z"
+        }, 
+        "sdepth1": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "0.0 0.1", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "0.05", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "0.2", 
+            "axis": "Z"
+        }, 
+        "alternate_hybrid_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "ap: ap b: b ps: ps", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "ap: ap_bnds b: b_bnds ps: ps", 
+            "bounds_values": "", 
+            "long_name": "hybrid sigma pressure coordinate", 
+            "standard_name": "atmosphere_hybrid_sigma_pressure_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "1", 
+            "formula": "p = ap + b*ps", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "1.0", 
+            "axis": "Z"
+        }, 
+        "time2": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "time", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "yes", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "time3": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "Diurnal cycle: monthly mean of the diurnal cycle (1 hour steps).", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "oline": {
+            "requested": [
+                "barents_opening", 
+                "bering_strait", 
+                "canadian_archipelago", 
+                "denmark_strait", 
+                "drake_passage", 
+                "english_channel", 
+                "pacific_equatorial_undercurrent", 
+                "faroe_scotland_channel", 
+                "florida_bahamas_strait", 
+                "fram_strait", 
+                "iceland_faroe_channel", 
+                "indonesian_thoughflow", 
+                "mozambique_channel", 
+                "taiwan_luzon_straits", 
+                "windward_passage"
+            ], 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "ocean passage", 
+            "standard_name": "region", 
+            "value": "", 
+            "out_name": "line", 
+            "type": "character", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "plev14": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "25000.", 
+                "15000.", 
+                "10000.", 
+                "5000.", 
+                "2000.", 
+                "1000.", 
+                "500.", 
+                "100."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev8": {
+            "requested": [
+                "100000.", 
+                "85000.", 
+                "70000.", 
+                "50000.", 
+                "25000.", 
+                "10000.", 
+                "5000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "location": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "location index", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "loc", 
+            "type": "integer", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "latitude": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-90.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "latitude", 
+            "standard_name": "latitude", 
+            "value": "", 
+            "out_name": "lat", 
+            "type": "double", 
+            "units": "degrees_north", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "90.0", 
+            "axis": "Y"
+        }, 
+        "plev3": {
+            "requested": [
+                "85000.", 
+                "50000.", 
+                "25000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "basin": {
+            "requested": [
+                "atlantic_arctic_ocean", 
+                "indian_pacific_ocean", 
+                "global_ocean"
+            ], 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "ocean basin", 
+            "standard_name": "region", 
+            "value": "", 
+            "out_name": "basin", 
+            "type": "character", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "p700": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "700 hPa", 
+            "standard_name": "air_pressure", 
+            "value": "70000.", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev7": {
+            "requested": [
+                "90000.", 
+                "74000.", 
+                "62000.", 
+                "50000.", 
+                "37500.", 
+                "24500.", 
+                "9000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "100000.", 
+                "80000.", 
+                "80000.", 
+                "68000.", 
+                "68000.", 
+                "56000.", 
+                "56000.", 
+                "44000.", 
+                "44000.", 
+                "31000.", 
+                "31000.", 
+                "18000.", 
+                "18000.", 
+                " 0."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev4": {
+            "requested": [
+                "92500.", 
+                "85000.", 
+                "50000.", 
+                "25000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev23": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000.", 
+                "700.", 
+                "500.", 
+                "300.", 
+                "200.", 
+                "100.", 
+                "40."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev39": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "17000.", 
+                "15000.", 
+                "13000.", 
+                "11500.", 
+                "10000.", 
+                "9000.", 
+                "8000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1500.", 
+                "1000.", 
+                "700.", 
+                "500.", 
+                "300.", 
+                "200.", 
+                "150.", 
+                "100.", 
+                "70.", 
+                "50.", 
+                "40.", 
+                "30.", 
+                "20.", 
+                "15.", 
+                "10.", 
+                "7.", 
+                "5.", 
+                "3."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "typepever": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "primary_evergreen_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "typesdec": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "secondary_decidous_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "plev27": {
+            "requested": [
+                "100000.", 
+                "97500.", 
+                "95000.", 
+                "92500.", 
+                "90000.", 
+                "87500.", 
+                "85000.", 
+                "82500.", 
+                "80000.", 
+                "77500.", 
+                "75000.", 
+                "70000.", 
+                "65000.", 
+                "60000.", 
+                "55000.", 
+                "50000.", 
+                "45000.", 
+                "40000.", 
+                "35000.", 
+                "30000.", 
+                "25000.", 
+                "22500.", 
+                "20000.", 
+                "17500.", 
+                "15000.", 
+                "12500.", 
+                "10000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "alt40": {
+            "requested": [
+                "240.", 
+                "720.", 
+                "1200.", 
+                "1680.", 
+                "2160.", 
+                "2640.", 
+                "3120.", 
+                "3600.", 
+                "4080.", 
+                "4560.", 
+                "5040.", 
+                "5520.", 
+                "6000.", 
+                "6480.", 
+                "6960.", 
+                "7440.", 
+                "7920.", 
+                "8400.", 
+                "8880.", 
+                "9360.", 
+                "9840.", 
+                "10320.", 
+                "10800.", 
+                "11280.", 
+                "11760.", 
+                "12240.", 
+                "12720.", 
+                "13200.", 
+                "13680.", 
+                "14160.", 
+                "14640.", 
+                "15120.", 
+                "15600.", 
+                "16080.", 
+                "16560.", 
+                "17040.", 
+                "17520.", 
+                "18000.", 
+                "18480.", 
+                "18960."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "0.", 
+                "480.", 
+                "480.", 
+                "960.", 
+                "960.", 
+                "1440.", 
+                "1440.", 
+                "1920.", 
+                "1920.", 
+                "2400.", 
+                "2400.", 
+                "2880.", 
+                "2880.", 
+                "3360.", 
+                "3360.", 
+                "3840.", 
+                "3840.", 
+                "4320.", 
+                "4320.", 
+                "4800.", 
+                "4800.", 
+                "5280.", 
+                "5280.", 
+                "5760.", 
+                "5760.", 
+                "6240.", 
+                "6240.", 
+                "6720.", 
+                "6720.", 
+                "7200.", 
+                "7200.", 
+                "7680.", 
+                "7680.", 
+                "8160.", 
+                "8160.", 
+                "8640.", 
+                "8640.", 
+                "9120.", 
+                "9120.", 
+                "9600.", 
+                "9600.", 
+                "10080.", 
+                "10080.", 
+                "10560.", 
+                "10560.", 
+                "11040.", 
+                "11040.", 
+                "11520.", 
+                "11520.", 
+                "12000.", 
+                "12000.", 
+                "12480.", 
+                "12480.", 
+                "12960.", 
+                "12960.", 
+                "13440.", 
+                "13440.", 
+                "13920.", 
+                "13920.", 
+                "14400.", 
+                "14400.", 
+                "14880.", 
+                "14880.", 
+                "15360.", 
+                "15360.", 
+                "15840.", 
+                "15840.", 
+                "16320.", 
+                "16320.", 
+                "16800.", 
+                "16800.", 
+                "17280.", 
+                "17280.", 
+                "17760.", 
+                "17760.", 
+                "18240.", 
+                "18240.", 
+                "18720.", 
+                "18720.", 
+                "19200."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "altitude", 
+            "standard_name": "altitude", 
+            "value": "", 
+            "out_name": "alt40", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "time": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "time", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "plev7c": {
+            "requested": [
+                "90000.", 
+                "74000.", 
+                "62000.", 
+                "50000.", 
+                "37500.", 
+                "24500.", 
+                "9000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "height10m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "up", 
+            "must_have_bounds": "no", 
+            "valid_min": "1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "height", 
+            "standard_name": "height", 
+            "value": "10.0", 
+            "out_name": "height", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "30.0", 
+            "axis": "Z"
+        }, 
+        "dbze": {
+            "requested": [
+                "-47.5", 
+                "-42.5", 
+                "-37.5", 
+                "-32.5", 
+                "-27.5", 
+                "-22.5", 
+                "-17.5", 
+                "-12.5", 
+                "-7.5", 
+                "-2.5", 
+                "2.5", 
+                "7.5", 
+                "12.5", 
+                "17.5", 
+                "22.5"
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "-50", 
+                "-45", 
+                "-45", 
+                "-40", 
+                "-40", 
+                "-35", 
+                "-35", 
+                "-30", 
+                "-30", 
+                "-25", 
+                "-25", 
+                "-20", 
+                "-20", 
+                "-15", 
+                "-15", 
+                "-10", 
+                "-10", 
+                "-5", 
+                "-5", 
+                "0", 
+                "0", 
+                "5", 
+                "5", 
+                "10", 
+                "10", 
+                "15", 
+                "15", 
+                "20", 
+                "20", 
+                "25."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "CloudSat simulator equivalent radar reflectivity factor", 
+            "standard_name": "equivalent_reflectivity_factor", 
+            "value": "", 
+            "out_name": "dbze", 
+            "type": "double", 
+            "units": "dBZ", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "typesever": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "secondary_evergreen_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "rho": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "density++++?", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "rho", 
+            "type": "double", 
+            "units": "kg m-3", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "depth100m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "80.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "100.0", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "120.0", 
+            "axis": "Z"
+        }, 
+        "effectRadLi": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "Effective Radius of Liquid Aerosols", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "effectRadLi", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "sdepth": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "200.0", 
+            "axis": "Z"
+        }, 
+        "vegtype": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "plant functional type", 
+            "standard_name": "area_type", 
+            "value": "", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "typec3pft": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "c3_plant_functional_types", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "natural_log_pressure": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "p0: p0 lev: lev", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "p0: p0 lev: lev_bnds", 
+            "bounds_values": "", 
+            "long_name": "atmosphere natural log pressure coordinate", 
+            "standard_name": "atmosphere_ln_pressure_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "p = p0 * exp(-lev)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "20.0", 
+            "axis": "Z"
+        }, 
+        "scatratio": {
+            "requested": [
+                "0.005", 
+                "0.605", 
+                "2.1", 
+                "4.", 
+                "6.", 
+                "8.5", 
+                "12.5", 
+                "17.5", 
+                "22.5", 
+                "27.5", 
+                "35.", 
+                "45.", 
+                "55.", 
+                "70.", 
+                "50040."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "0.", 
+                "0.01", 
+                "0.01", 
+                "1.2", 
+                "1.2", 
+                "3.", 
+                "3.", 
+                "5.", 
+                "5.", 
+                "7.", 
+                "7.", 
+                "10.", 
+                "10.", 
+                "15.", 
+                "15.", 
+                "20.", 
+                "20.", 
+                "25.", 
+                "25.", 
+                "30.", 
+                "30.", 
+                "40.", 
+                "40.", 
+                "50.", 
+                "50.", 
+                "60.", 
+                "60.", 
+                "80.", 
+                "80.", 
+                "100000."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "lidar backscattering ratio", 
+            "standard_name": "backscattering_ratio", 
+            "value": "", 
+            "out_name": "scatratio", 
+            "type": "double", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "standard_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "ptop: ptop sigma: lev ps: ps", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "ptop: ptop sigma: lev_bnds ps: ps", 
+            "bounds_values": "", 
+            "long_name": "sigma coordinate", 
+            "standard_name": "atmosphere_sigma_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "p = ptop + sigma*(ps - ptop)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "1.0", 
+            "axis": "Z"
+        }, 
+        "typepdec": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "primary_deciduous_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "hybrid_height": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "a: lev b: b orog: orog", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "a: lev_bnds b: b_bnds orog: orog", 
+            "bounds_values": "", 
+            "long_name": "hybrid height coordinate", 
+            "standard_name": "atmosphere_hybrid_height_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "m", 
+            "formula": "z = a + b*orog", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "longitude": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "longitude", 
+            "standard_name": "longitude", 
+            "value": "", 
+            "out_name": "lon", 
+            "type": "double", 
+            "units": "degrees_east", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "360.0", 
+            "axis": "X"
+        }, 
+        "effectRadIc": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "Effective Radius of Ice Aerosols", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "effectRadIc", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "p1000": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "1000 hPa", 
+            "standard_name": "air_pressure", 
+            "value": "100000.", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "p500": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "500 hPa", 
+            "standard_name": "air_pressure", 
+            "value": "50000.", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "ocean_double_sigma": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "sigma: sigma depth: depth z1: z1 z2: z2 a: a_coeff href: href k_c: k_c", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "sigma: sigma_bnds depth: depth z1: z1 z2: z2 a: a href: href k_c: k_c", 
+            "bounds_values": "", 
+            "long_name": "ocean double sigma coordinate", 
+            "standard_name": "ocean_double_sigma", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "for k <= k_c:n z(k,j,i)= sigma(k)*f(j,i) n for k > k_c:n z(k,j,i)= f(j,i) + (sigma(k)-1)*(depth(j,i)-f(j,i)) n f(j,i)= 0.5*(z1+ z2) + 0.5*(z1-z2)* tanh(2*a/(z1-z2)*(depth(j,i)-href))", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plevs": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "standard_hybrid_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "p0: p0 a: a b: b ps: ps", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "p0: p0 a: a_bnds b: b_bnds ps: ps", 
+            "bounds_values": "", 
+            "long_name": "hybrid sigma pressure coordinate", 
+            "standard_name": "atmosphere_hybrid_sigma_pressure_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "1", 
+            "formula": "p = a*p0 + b*ps", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "1.0", 
+            "axis": "Z"
+        }, 
+        "p560": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "68000. 44000.", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "56000.0", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }
+    }, 
+    "variable_entry": {
+        "fLitterSoil": {
+            "comment": "Carbon mass flux per unit area into soil from litter (dead plant material in or above the soil).", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Total Carbon Mass Flux from Litter to Soil", 
+            "standard_name": "carbon_mass_flux_into_soil_from_litter", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "fLitterSoil", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "cropFrac": {
+            "comment": "Percentage of entire grid cell  that is covered by crop.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Crop Fraction", 
+            "standard_name": "area_fraction", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "%", 
+            "out_name": "cropFrac", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "shrubFrac": {
+            "comment": "Percentage of entire grid cell  that is covered by shrub.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Shrub Fraction", 
+            "standard_name": "area_fraction", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "%", 
+            "out_name": "shrubFrac", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "depth_c": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: depth_c", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "cSoil": {
+            "comment": "Carbon mass in the full depth of the soil model.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Carbon Mass in Soil Pool", 
+            "standard_name": "soil_carbon_content", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2", 
+            "out_name": "cSoil", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "ap_bnds": {
+            "units": "Pa", 
+            "long_name": "vertical coordinate formula term: ap(k+1/2)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "cProduct": {
+            "comment": "Carbon mass per unit area in that has been removed from the environment through  landuse change.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Carbon Mass in Products of Land Use Change", 
+            "standard_name": "carbon_content_of_products_of_anthropogenic_land_use_change", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2", 
+            "out_name": "cProduct", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "ap": {
+            "units": "Pa", 
+            "long_name": "vertical coordinate formula term: ap(k)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "href": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: href", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "orog": {
+            "units": "m", 
+            "long_name": "Surface Altitude", 
+            "type": "real", 
+            "dimensions": "longitude latitude"
+        }, 
+        "treeFracSecDec": {
+            "comment": "Percentage of entire grid cell  that is covered by secondary deciduous trees.", 
+            "dimensions": "longitude latitude time typesdec", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Total Secondary Deciduous Tree Cover Fraction", 
+            "standard_name": "area_fraction", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "%", 
+            "out_name": "treeFracSecDec", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "fGrazing": {
+            "comment": "Carbon mass flux per unit area due to grazing on land", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "valid_min": "", 
+            "long_name": "Carbon Mass Flux into Atmosphere due to Grazing on Land", 
+            "standard_name": "surface_upward_mass_flux_of_carbon_dioxide_expressed_as_carbon_due_to_emission_from_grazing", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "fGrazing", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "zlev": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: zlev(k)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "mrso": {
+            "comment": "the mass per unit area  (summed over all soil layers) of water in all phases.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "-64.17", 
+            "long_name": "Total Soil Moisture Content", 
+            "standard_name": "soil_moisture_content", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "-1424", 
+            "units": "kg m-2", 
+            "out_name": "mrso", 
+            "type": "real", 
+            "valid_max": "5717", 
+            "ok_max_mean_abs": "3038"
+        }, 
+        "mrfso": {
+            "comment": "The mass per unit area (summed over all model layers) of frozen water.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Soil Frozen Water Content", 
+            "standard_name": "soil_frozen_water_content", 
+            "modeling_realm": "land landIce", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "-419", 
+            "units": "kg m-2", 
+            "out_name": "mrfso", 
+            "type": "real", 
+            "valid_max": "5763", 
+            "ok_max_mean_abs": "940.3"
+        }, 
+        "cLeaf": {
+            "comment": "Carbon mass per unit area in leaves.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Carbon Mass in Leaves", 
+            "standard_name": "leaf_carbon_content", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2", 
+            "out_name": "cLeaf", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "ps": {
+            "units": "Pa", 
+            "long_name": "Surface Air Pressure", 
+            "type": "real", 
+            "dimensions": "longitude latitude time"
+        }, 
+        "cLitterAbove": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Carbon Mass in Above-Ground Litter", 
+            "standard_name": "surface_litter_carbon_content", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2", 
+            "out_name": "cLitterAbove", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "rh": {
+            "comment": "Carbon mass flux per unit area into atmosphere due to heterotrophic respiration on land (respiration by consumers)", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "valid_min": "", 
+            "long_name": "Carbon Mass Flux into Atmosphere due to Heterotrophic Respiration on Land", 
+            "standard_name": "heterotrophic_respiration_carbon_flux", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "rh", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "cSoilMedium": {
+            "comment": "Carbon mass per unit area in medium (rate) soil pool. Medium means a lifetime of more than than 10 years and less than 100 years for reference climate conditions (20th century) in the absence of water limitations.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Carbon Mass in Medium Soil Pool", 
+            "standard_name": "medium_soil_pool_carbon_content", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2", 
+            "out_name": "cSoilMedium", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "nppLeaf": {
+            "comment": "This is the rate of carbon uptake by leaves due to NPP", 
+            "dimensions": "longitude latitude time", 
+            "positive": "down", 
+            "valid_min": "", 
+            "long_name": "Carbon Mass Flux due to NPP Allocation to Leaf", 
+            "standard_name": "net_primary_productivity_of_carbon_accumulated_in_leaves", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "nppLeaf", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "fFire": {
+            "comment": "CO2 emissions (expressed as a carbon mass flux per unit area) from natural fires and human ignition fires as calculated by the fire module of the dynamic vegetation model, but excluding any CO2 flux from fire included in fLuc (CO2 Flux to Atmosphere from Land Use Change).", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "valid_min": "", 
+            "long_name": "Carbon Mass Flux into Atmosphere due to CO2 Emission from Fire", 
+            "standard_name": "surface_upward_mass_flux_of_carbon_dioxide_expressed_as_carbon_due_to_emission_from_fires_excluding_anthropogenic_land_use_change", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "fFire", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "baresoilFrac": {
+            "comment": "Percentage of entire grid cell  that is covered by bare soil.", 
+            "dimensions": "longitude latitude time typebare", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Bare Soil Fraction", 
+            "standard_name": "area_fraction", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "%", 
+            "out_name": "baresoilFrac", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "prveg": {
+            "comment": "The precipitation flux that is intercepted by the vegetation canopy (if present in model) before reaching the ground.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Precipitation onto Canopy", 
+            "standard_name": "precipitation_flux_onto_canopy", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "prveg", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "cVeg": {
+            "comment": "Carbon mass per unit area in vegetation.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Carbon Mass in Vegetation", 
+            "standard_name": "vegetation_carbon_content", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2", 
+            "out_name": "cVeg", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "cRoot": {
+            "comment": "Carbon mass per unit area in roots, including fine and coarse roots.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Carbon Mass in Roots", 
+            "standard_name": "root_carbon_content", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2", 
+            "out_name": "cRoot", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "cSoilFast": {
+            "comment": "Carbon mass per unit area in fast soil pool. Fast means a lifetime of less than 10 years for reference climate conditions (20th century) in the absence of water limitations.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Carbon Mass in Fast Soil Pool", 
+            "standard_name": "fast_soil_pool_carbon_content", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2", 
+            "out_name": "cSoilFast", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "sigma_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: sigma(k+1/2)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "treeFracSecEver": {
+            "comment": "Percentage of entire grid cell  that is covered by secondary evergreen trees.", 
+            "dimensions": "longitude latitude time typesever", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Total Secondary Evergreen Tree Cover Fraction", 
+            "standard_name": "area_fraction", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "%", 
+            "out_name": "treeFracSecEver", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "grassFrac": {
+            "comment": "Percentage of entire grid cell that is covered by natural grass.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Natural Grass Fraction", 
+            "standard_name": "area_fraction", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "%", 
+            "out_name": "grassFrac", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "ra": {
+            "comment": "Carbon mass flux per unit area into atmosphere due to autotrophic respiration on land (respiration by producers) [see rh for heterotrophic production] ", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "valid_min": "", 
+            "long_name": "Carbon Mass Flux into Atmosphere due to Autotrophic (Plant) Respiration on Land", 
+            "standard_name": "plant_respiration_carbon_flux", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "ra", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "mrsos": {
+            "comment": "The mass of water in all phases in the upper 10cm of the  soil layer.", 
+            "dimensions": "longitude latitude time sdepth1", 
+            "positive": "", 
+            "valid_min": "-2.008", 
+            "long_name": "Moisture in Upper Portion of Soil Column", 
+            "standard_name": "moisture_content_of_soil_layer", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "-35.89", 
+            "units": "kg m-2", 
+            "out_name": "mrsos", 
+            "type": "real", 
+            "valid_max": "146.5", 
+            "ok_max_mean_abs": "123.3"
+        }, 
+        "npp": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "down", 
+            "valid_min": "", 
+            "long_name": "Carbon Mass Flux out of Atmosphere due to Net Primary Production on Land", 
+            "standard_name": "net_primary_productivity_of_carbon", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "npp", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "cCwd": {
+            "comment": "Carbon mass per unit area in woody debris (dead organic matter composed of coarse wood.  It is distinct from litter)", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Carbon Mass in Coarse Woody Debris", 
+            "standard_name": "wood_debris_carbon_content", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2", 
+            "out_name": "cCwd", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "gpp": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "down", 
+            "valid_min": "", 
+            "long_name": "Carbon Mass Flux out of Atmosphere due to Gross Primary Production on Land", 
+            "standard_name": "gross_primary_productivity_of_carbon", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "gpp", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "ptop": {
+            "units": "Pa", 
+            "long_name": "pressure at top of model", 
+            "type": "", 
+            "dimensions": ""
+        }, 
+        "evspsblveg": {
+            "comment": "the canopy evaporation+sublimation (if present in model).", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "valid_min": "", 
+            "long_name": "Evaporation from Canopy", 
+            "standard_name": "water_evaporation_flux_from_canopy", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "evspsblveg", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "treeFrac": {
+            "comment": "Percentage of entire grid cell  that is covered by trees.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Tree Cover Fraction", 
+            "standard_name": "area_fraction", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "%", 
+            "out_name": "treeFrac", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "evspsblsoi": {
+            "comment": "Water evaporation from soil (including sublimation).", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "valid_min": "", 
+            "long_name": "Water Evaporation from Soil", 
+            "standard_name": "water_evaporation_flux_from_soil", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "evspsblsoi", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "nbp": {
+            "comment": "This is the net mass flux of carbon from atmosphere into land, calculated as photosynthesis MINUS the sum of  plant and soil respiration, carbon fluxes from fire, harvest, grazing  and land use change. Positive flux is into the land.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "down", 
+            "valid_min": "", 
+            "long_name": "Carbon Mass Flux out of Atmosphere due to Net Biospheric Production on Land", 
+            "standard_name": "surface_net_downward_mass_flux_of_carbon_dioxide_expressed_as_carbon_due_to_all_land_processes", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "nbp", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "b_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: b(k+1/2)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "lai": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Leaf Area Index", 
+            "standard_name": "leaf_area_index", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "1.0", 
+            "out_name": "lai", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "fHarvest": {
+            "comment": "Carbon mass flux per unit area due to crop harvesting", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "valid_min": "", 
+            "long_name": "Carbon Mass Flux into Atmosphere due to Crop Harvesting", 
+            "standard_name": "surface_upward_mass_flux_of_carbon_dioxide_expressed_as_carbon_due_to_emission_from_crop_harvesting", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "fHarvest", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "burntArea": {
+            "comment": "Fraction of entire grid cell  that is covered by burnt vegetation.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Burnt Area Fraction", 
+            "standard_name": "area_fraction", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "%", 
+            "out_name": "burntArea", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "cSoilSlow": {
+            "comment": "Carbon mass per unit area in slow soil pool. Slow means a lifetime of more than 100 years for reference climate (20th century) in the absence of water limitations.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Carbon Mass in Slow Soil Pool", 
+            "standard_name": "slow_soil_pool_carbon_content", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2", 
+            "out_name": "cSoilSlow", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "nsigma": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: nsigma", 
+            "type": "integer", 
+            "dimensions": ""
+        }, 
+        "mrros": {
+            "comment": "The total surface run off leaving the land portion of the grid cell (excluding drainage through the base of the soil model).", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "-6.802e-06", 
+            "long_name": "Surface Runoff", 
+            "standard_name": "surface_runoff_flux", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "-5.867e-06", 
+            "units": "kg m-2 s-1", 
+            "out_name": "mrros", 
+            "type": "real", 
+            "valid_max": "0.0009825", 
+            "ok_max_mean_abs": "1.302e-05"
+        }, 
+        "cLitter": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Carbon Mass in Litter Pool", 
+            "standard_name": "litter_carbon_content", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2", 
+            "out_name": "cLitter", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "cMisc": {
+            "comment": "e.g., labile, fruits, reserves, etc.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Carbon Mass in Other Living Compartments on Land", 
+            "standard_name": "miscellaneous_living_matter_carbon_content", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2", 
+            "out_name": "cMisc", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "tsl": {
+            "comment": "Temperature of each soil layer. Reported as missing for grid cells with no land.", 
+            "dimensions": "longitude latitude sdepth time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Temperature of Soil", 
+            "standard_name": "soil_temperature", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "K", 
+            "out_name": "tsl", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "fLuc": {
+            "comment": "Carbon mass flux per unit area into atmosphere due to human changes to land (excluding forest regrowth) accounting possibly for different time-scales related to fate of the wood, for example.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "valid_min": "", 
+            "long_name": "Net Carbon Mass Flux into Atmosphere due to Land Use Change", 
+            "standard_name": "surface_net_upward_mass_flux_of_carbon_dioxide_expressed_as_carbon_due_to_emission_from_anthropogenic_land_use_change", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "fLuc", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "ztop": {
+            "units": "m", 
+            "long_name": "height of top of model", 
+            "type": "", 
+            "dimensions": ""
+        }, 
+        "fVegLitter": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Total Carbon Mass Flux from Vegetation to Litter", 
+            "standard_name": "litter_carbon_flux", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "fVegLitter", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "zlev_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: zlev(k+1/2)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "z1": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: z1", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "z2": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: z2", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "treeFracPrimDec": {
+            "comment": "Percentage of the entire grid cell  that is covered by total primary deciduous trees.", 
+            "dimensions": "longitude latitude time typepdec", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Total Primary Deciduous Tree Fraction", 
+            "standard_name": "area_fraction", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "%", 
+            "out_name": "treeFracPrimDec", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "a": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: a(k)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "treeFracPrimEver": {
+            "comment": "Percentage of entire grid cell  that is covered by primary evergreen trees.", 
+            "dimensions": "longitude latitude time typepever", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Total Primary Evergreen Tree Cover Fraction", 
+            "standard_name": "area_fraction", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "%", 
+            "out_name": "treeFracPrimEver", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "p0": {
+            "units": "Pa", 
+            "long_name": "vertical coordinate formula term: reference pressure", 
+            "type": "", 
+            "dimensions": ""
+        }, 
+        "b": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: b(k)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "pastureFrac": {
+            "comment": "Percentage of entire grid cell  that is covered by anthropogenic pasture.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Anthropogenic Pasture Fraction", 
+            "standard_name": "area_fraction", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "%", 
+            "out_name": "pastureFrac", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "cWood": {
+            "comment": "Carbon mass per unit area in wood, including sapwood and hardwood.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Carbon Mass in Wood", 
+            "standard_name": "wood_carbon_content", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2", 
+            "out_name": "cWood", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "rGrowth": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "valid_min": "", 
+            "long_name": "Carbon Mass Flux into Atmosphere due to Growth Autotrophic Respiration on Land", 
+            "standard_name": "surface_upward_carbon_mass_flux_due_to_plant_respiration_for_biomass_growth", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "rGrowth", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "c4PftFrac": {
+            "comment": "Fraction of entire grid cell  that is covered by C4 PFTs (including grass and crops).", 
+            "dimensions": "longitude latitude time typec4pft", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Total C4 PFT Cover Fraction", 
+            "standard_name": "area_fraction", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "%", 
+            "out_name": "c4PftFrac", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "cLitterBelow": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Carbon Mass in Below-Ground Litter", 
+            "standard_name": "subsurface_litter_carbon_content", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2", 
+            "out_name": "cLitterBelow", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "tran": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "valid_min": "", 
+            "long_name": "Transpiration", 
+            "standard_name": "transpiration_flux", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "tran", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "mrro": {
+            "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", 
+            "positive": "", 
+            "valid_min": "-0.0002019", 
+            "long_name": "Total Runoff", 
+            "standard_name": "runoff_flux", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "-6.668e-06", 
+            "units": "kg m-2 s-1", 
+            "out_name": "mrro", 
+            "type": "real", 
+            "valid_max": "0.001065", 
+            "ok_max_mean_abs": "1.874e-05"
+        }, 
+        "nppRoot": {
+            "comment": "This is the rate of carbon uptake by roots due to NPP", 
+            "dimensions": "longitude latitude time", 
+            "positive": "down", 
+            "valid_min": "", 
+            "long_name": "Carbon Mass Flux due to NPP Allocation to Roots", 
+            "standard_name": "net_primary_productivity_of_carbon_accumulated_in_roots", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "nppRoot", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "rMaint": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "valid_min": "", 
+            "long_name": "Carbon Mass Flux into Atmosphere due to Maintenance Autotrophic Respiration on Land", 
+            "standard_name": "surface_upward_carbon_mass_flux_due_to_plant_respiration_for_biomass_maintenance", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "rMaint", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "fVegSoil": {
+            "comment": "Carbon mass flux per unit area from vegetation directly into soil, without intermediate conversion to litter.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Total Carbon Mass Flux from Vegetation Directly to Soil", 
+            "standard_name": "carbon_mass_flux_into_soil_from_vegetation_excluding_litter", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "fVegSoil", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "depth": {
+            "units": "m", 
+            "long_name": "Sea Floor Depth: formula term: thetao", 
+            "type": "real", 
+            "dimensions": "longitude latitude"
+        }, 
+        "eta": {
+            "units": "m", 
+            "long_name": "Sea Surface Height formula term: thetao", 
+            "type": "real", 
+            "dimensions": "longitude latitude time"
+        }, 
+        "residualFrac": {
+            "comment": "Percentage of entire grid cell  that is land and is covered by  neither vegetation nor bare-soil (e.g., urban, ice, lakes, etc.)", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Fraction of Grid Cell that is Land but Neither Vegetation-Covered nor Bare Soil", 
+            "standard_name": "area_fraction", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "%", 
+            "out_name": "residualFrac", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "nep": {
+            "comment": "Natural flux of CO2 (expressed as a mass flux of carbon) from the atmosphere to the land calculated as the difference between uptake associated will photosynthesis and the release of CO2 from the sum of plant and soil respiration and fire.  Positive flux is into the land.  emissions from natural fires and human ignition fires as calculated by the fire module of the dynamic vegetation model, but excluding any CO2 flux from fire included in fLuc (CO2 Flux to Atmosph [...]
+            "dimensions": "longitude latitude time", 
+            "positive": "down", 
+            "valid_min": "", 
+            "long_name": "Net Carbon Mass Flux out of Atmophere due to Net Ecosystem Productivity on Land.", 
+            "standard_name": "surface_net_downward_mass_flux_of_carbon_dioxide_expressed_as_carbon_due_to_all_land_processes_excluding_anthropogenic_land_use_change", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "nep", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "nppWood": {
+            "comment": "This is the rate of carbon uptake by wood due to NPP", 
+            "dimensions": "longitude latitude time", 
+            "positive": "down", 
+            "valid_min": "", 
+            "long_name": "Carbon Mass Flux due to NPP Allocation to Wood", 
+            "standard_name": "net_primary_productivity_of_carbon_accumulated_in_wood", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "nppWood", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "c3PftFrac": {
+            "comment": "Percentage of entire grid cell  that is covered by C3 PFTs (including grass, crops, and trees).", 
+            "dimensions": "longitude latitude time typec3pft", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Total C3 PFT Cover Fraction", 
+            "standard_name": "area_fraction", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "%", 
+            "out_name": "c3PftFrac", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "k_c": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: k_c", 
+            "type": "integer", 
+            "dimensions": ""
+        }, 
+        "mrlsl": {
+            "comment": "The mass of water in all phases, including ice, in soil layers.  Report as missing for grid cells with no land.", 
+            "dimensions": "longitude latitude sdepth time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Water Content of Soil Layer", 
+            "standard_name": "moisture_content_of_soil_layer", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2", 
+            "out_name": "mrlsl", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "sigma": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: sigma(k)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "landCoverFrac": {
+            "comment": "The categories may differ from model to model, depending on their  PFT definitions.   This may include natural PFTs, anthropogenic PFTs, bare soil, lakes, urban areas, etc.   Sum of all should equal the fraction of the grid-cell that is land.", 
+            "dimensions": "longitude latitude vegtype time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Plant Functional Type Grid Fraction", 
+            "standard_name": "area_fraction", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "%", 
+            "out_name": "landCoverFrac", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "a_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: a(k+1/2)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }
+    }
+}
diff --git a/TestTables/CMIP6_Oclim.json b/TestTables/CMIP6_Oclim.json
new file mode 100644
index 0000000..952d132
--- /dev/null
+++ b/TestTables/CMIP6_Oclim.json
@@ -0,0 +1,2715 @@
+{
+    "Header": {
+        "product": "output", 
+        "approx_interval": "30.00000", 
+        "realm": "ocean", 
+        "cmor_version": "3.1", 
+        "Conventions": "CF-1.6 CMIP-6.0", 
+        "frequency": "monClim", 
+        "table_id": "Table Oclim", 
+        "data_specs_version": "01.beta.29", 
+        "mip_era": "CMIP6", 
+        "generic_levels": "olevel", 
+        "missing_value": "1e20", 
+        "table_date": "14 June 2016"
+    }, 
+    "axis_entry": {
+        "typebare": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "bare_ground", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "tau": {
+            "requested": [
+                "0.15", 
+                "0.8", 
+                "2.45", 
+                "6.5", 
+                "16.2", 
+                "41.5", 
+                "100."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "0.0", 
+                "0.3", 
+                "0.3", 
+                "1.3", 
+                "1.3", 
+                "3.6", 
+                "3.6", 
+                "9.4", 
+                "9.4", 
+                "23.0", 
+                "23.0", 
+                "60.0", 
+                "60.0", 
+                "100000."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "cloud optical thickness", 
+            "standard_name": "atmosphere_optical_thickness_due_to_cloud", 
+            "value": "", 
+            "out_name": "tau", 
+            "type": "double", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "olayer100m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "0. 100.", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "50.0", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "100.0", 
+            "axis": "Z"
+        }, 
+        "spectband": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "Spectral Band", 
+            "standard_name": "wave_frequency", 
+            "value": "", 
+            "out_name": "spectband", 
+            "type": "double", 
+            "units": "s-1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "ocean_sigma_z": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "sigma: sigma eta: eta depth: depth depth_c: depth_c nsigma: nsigma zlev: zlev", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "sigma: sigma_bnds eta: eta depth: depth depth_c: depth_c nsigma: nsigma zlev: zlev_bnds", 
+            "bounds_values": "", 
+            "long_name": "ocean sigma over z coordinate", 
+            "standard_name": "ocean_sigma_z", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "for k <= nsigma: z(n,k,j,i) = eta(n,j,i) + sigma(k)*(min(depth_c,depth(j,i))+eta(n,j,i)) ; for k > nsigma: z(n,k,j,i) = zlev(k)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev19": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000.", 
+                "500.", 
+                "100."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "p220": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "44000. 0.0", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "22000.0", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev17": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev10": {
+            "requested": [
+                "100000.", 
+                "85000.", 
+                "70000.", 
+                "50000.", 
+                "25000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "site": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "site index", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "site", 
+            "type": "integer", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "smooth_level": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "a: a b1: b1 b2: b2 ztop: ztop zsurf1: zsurf1 zsurf2: zsurf2", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-200.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "a: a_bnds b1: b1_bnds b2: b2_bnds ztop: ztop zsurf1: zsurf1 zsurf2: zsurf2", 
+            "bounds_values": "", 
+            "long_name": "atmosphere smooth level vertical (SLEVE) coordinate", 
+            "standard_name": "atmosphere_sleve_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "m", 
+            "formula": "z = a*ztop + b1*zsurf1 + b2*zsurf2", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "800000.0", 
+            "axis": "Z"
+        }, 
+        "p840": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "100000. 68000.", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "84000.0", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "ocean_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "sigma: lev eta: eta depth: depth", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "sigma: lev_bnds eta: eta depth: depth", 
+            "bounds_values": "", 
+            "long_name": "ocean sigma coordinate", 
+            "standard_name": "ocean_sigma_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "z(n,k,j,i) = eta(n,j,i) + sigma(k)*(depth(j,i)+eta(n,j,i))", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "0.0", 
+            "axis": "Z"
+        }, 
+        "depth0m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "0.0", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "100.0", 
+            "axis": "Z"
+        }, 
+        "ocean_s": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "s: lev eta: eta depth: depth a: a_coeff b: b_coeff depth_c: depth_c", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "s: lev_bnds eta: eta depth: depth a: a b: b depth_c: depth_c", 
+            "bounds_values": "", 
+            "long_name": "ocean s-coordinate", 
+            "standard_name": "ocean_s_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "z(n,k,j,i) = eta(n,j,i)*(1+s(k)) + depth_c*s(k) + (depth(j,i)-depth_c)*C(k) n where n C(k)=(1-b)*sinh(a*s(k))/sinh(a) +n           b*(tanh(a*(s(k)+0.5))/(2*tanh(0.5*a)) - 0.5)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "0.0", 
+            "axis": "Z"
+        }, 
+        "plev4s": {
+            "requested": [
+                "85000.", 
+                "50000.", 
+                "20000.", 
+                "5000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "typec4pft": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "c4_plant_functional_types", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "plev3h": {
+            "requested": [
+                "10000.", 
+                "1000.", 
+                "100."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "height2m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "up", 
+            "must_have_bounds": "no", 
+            "valid_min": "1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "height", 
+            "standard_name": "height", 
+            "value": "2.0", 
+            "out_name": "height", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "10.0", 
+            "axis": "Z"
+        }, 
+        "time1": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "time", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "plev7h": {
+            "requested": [
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "25000.", 
+                "5000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "sza5": {
+            "requested": [
+                "0.", 
+                "20.", 
+                "40.", 
+                "60.", 
+                "80."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "solar zenith angle", 
+            "standard_name": "solar_zenith_angle", 
+            "value": "", 
+            "out_name": "sza", 
+            "type": "double", 
+            "units": "degree", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "depth_coord": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "ocean depth coordinate", 
+            "standard_name": "depth", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "12000.0", 
+            "axis": "Z"
+        }, 
+        "sdepth1": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "0.0 0.1", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "0.05", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "0.2", 
+            "axis": "Z"
+        }, 
+        "alternate_hybrid_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "ap: ap b: b ps: ps", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "ap: ap_bnds b: b_bnds ps: ps", 
+            "bounds_values": "", 
+            "long_name": "hybrid sigma pressure coordinate", 
+            "standard_name": "atmosphere_hybrid_sigma_pressure_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "1", 
+            "formula": "p = ap + b*ps", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "1.0", 
+            "axis": "Z"
+        }, 
+        "time2": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "time", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "yes", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "time3": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "Diurnal cycle: monthly mean of the diurnal cycle (1 hour steps).", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "oline": {
+            "requested": [
+                "barents_opening", 
+                "bering_strait", 
+                "canadian_archipelago", 
+                "denmark_strait", 
+                "drake_passage", 
+                "english_channel", 
+                "pacific_equatorial_undercurrent", 
+                "faroe_scotland_channel", 
+                "florida_bahamas_strait", 
+                "fram_strait", 
+                "iceland_faroe_channel", 
+                "indonesian_thoughflow", 
+                "mozambique_channel", 
+                "taiwan_luzon_straits", 
+                "windward_passage"
+            ], 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "ocean passage", 
+            "standard_name": "region", 
+            "value": "", 
+            "out_name": "line", 
+            "type": "character", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "plev14": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "25000.", 
+                "15000.", 
+                "10000.", 
+                "5000.", 
+                "2000.", 
+                "1000.", 
+                "500.", 
+                "100."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev8": {
+            "requested": [
+                "100000.", 
+                "85000.", 
+                "70000.", 
+                "50000.", 
+                "25000.", 
+                "10000.", 
+                "5000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "location": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "location index", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "loc", 
+            "type": "integer", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "latitude": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-90.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "latitude", 
+            "standard_name": "latitude", 
+            "value": "", 
+            "out_name": "lat", 
+            "type": "double", 
+            "units": "degrees_north", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "90.0", 
+            "axis": "Y"
+        }, 
+        "plev3": {
+            "requested": [
+                "85000.", 
+                "50000.", 
+                "25000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "basin": {
+            "requested": [
+                "atlantic_arctic_ocean", 
+                "indian_pacific_ocean", 
+                "global_ocean"
+            ], 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "ocean basin", 
+            "standard_name": "region", 
+            "value": "", 
+            "out_name": "basin", 
+            "type": "character", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "p700": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "700 hPa", 
+            "standard_name": "air_pressure", 
+            "value": "70000.", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev7": {
+            "requested": [
+                "90000.", 
+                "74000.", 
+                "62000.", 
+                "50000.", 
+                "37500.", 
+                "24500.", 
+                "9000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "100000.", 
+                "80000.", 
+                "80000.", 
+                "68000.", 
+                "68000.", 
+                "56000.", 
+                "56000.", 
+                "44000.", 
+                "44000.", 
+                "31000.", 
+                "31000.", 
+                "18000.", 
+                "18000.", 
+                " 0."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev4": {
+            "requested": [
+                "92500.", 
+                "85000.", 
+                "50000.", 
+                "25000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev23": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000.", 
+                "700.", 
+                "500.", 
+                "300.", 
+                "200.", 
+                "100.", 
+                "40."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev39": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "17000.", 
+                "15000.", 
+                "13000.", 
+                "11500.", 
+                "10000.", 
+                "9000.", 
+                "8000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1500.", 
+                "1000.", 
+                "700.", 
+                "500.", 
+                "300.", 
+                "200.", 
+                "150.", 
+                "100.", 
+                "70.", 
+                "50.", 
+                "40.", 
+                "30.", 
+                "20.", 
+                "15.", 
+                "10.", 
+                "7.", 
+                "5.", 
+                "3."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "typepever": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "primary_evergreen_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "typesdec": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "secondary_decidous_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "plev27": {
+            "requested": [
+                "100000.", 
+                "97500.", 
+                "95000.", 
+                "92500.", 
+                "90000.", 
+                "87500.", 
+                "85000.", 
+                "82500.", 
+                "80000.", 
+                "77500.", 
+                "75000.", 
+                "70000.", 
+                "65000.", 
+                "60000.", 
+                "55000.", 
+                "50000.", 
+                "45000.", 
+                "40000.", 
+                "35000.", 
+                "30000.", 
+                "25000.", 
+                "22500.", 
+                "20000.", 
+                "17500.", 
+                "15000.", 
+                "12500.", 
+                "10000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "alt40": {
+            "requested": [
+                "240.", 
+                "720.", 
+                "1200.", 
+                "1680.", 
+                "2160.", 
+                "2640.", 
+                "3120.", 
+                "3600.", 
+                "4080.", 
+                "4560.", 
+                "5040.", 
+                "5520.", 
+                "6000.", 
+                "6480.", 
+                "6960.", 
+                "7440.", 
+                "7920.", 
+                "8400.", 
+                "8880.", 
+                "9360.", 
+                "9840.", 
+                "10320.", 
+                "10800.", 
+                "11280.", 
+                "11760.", 
+                "12240.", 
+                "12720.", 
+                "13200.", 
+                "13680.", 
+                "14160.", 
+                "14640.", 
+                "15120.", 
+                "15600.", 
+                "16080.", 
+                "16560.", 
+                "17040.", 
+                "17520.", 
+                "18000.", 
+                "18480.", 
+                "18960."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "0.", 
+                "480.", 
+                "480.", 
+                "960.", 
+                "960.", 
+                "1440.", 
+                "1440.", 
+                "1920.", 
+                "1920.", 
+                "2400.", 
+                "2400.", 
+                "2880.", 
+                "2880.", 
+                "3360.", 
+                "3360.", 
+                "3840.", 
+                "3840.", 
+                "4320.", 
+                "4320.", 
+                "4800.", 
+                "4800.", 
+                "5280.", 
+                "5280.", 
+                "5760.", 
+                "5760.", 
+                "6240.", 
+                "6240.", 
+                "6720.", 
+                "6720.", 
+                "7200.", 
+                "7200.", 
+                "7680.", 
+                "7680.", 
+                "8160.", 
+                "8160.", 
+                "8640.", 
+                "8640.", 
+                "9120.", 
+                "9120.", 
+                "9600.", 
+                "9600.", 
+                "10080.", 
+                "10080.", 
+                "10560.", 
+                "10560.", 
+                "11040.", 
+                "11040.", 
+                "11520.", 
+                "11520.", 
+                "12000.", 
+                "12000.", 
+                "12480.", 
+                "12480.", 
+                "12960.", 
+                "12960.", 
+                "13440.", 
+                "13440.", 
+                "13920.", 
+                "13920.", 
+                "14400.", 
+                "14400.", 
+                "14880.", 
+                "14880.", 
+                "15360.", 
+                "15360.", 
+                "15840.", 
+                "15840.", 
+                "16320.", 
+                "16320.", 
+                "16800.", 
+                "16800.", 
+                "17280.", 
+                "17280.", 
+                "17760.", 
+                "17760.", 
+                "18240.", 
+                "18240.", 
+                "18720.", 
+                "18720.", 
+                "19200."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "altitude", 
+            "standard_name": "altitude", 
+            "value": "", 
+            "out_name": "alt40", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "time": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "time", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "plev7c": {
+            "requested": [
+                "90000.", 
+                "74000.", 
+                "62000.", 
+                "50000.", 
+                "37500.", 
+                "24500.", 
+                "9000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "height10m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "up", 
+            "must_have_bounds": "no", 
+            "valid_min": "1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "height", 
+            "standard_name": "height", 
+            "value": "10.0", 
+            "out_name": "height", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "30.0", 
+            "axis": "Z"
+        }, 
+        "dbze": {
+            "requested": [
+                "-47.5", 
+                "-42.5", 
+                "-37.5", 
+                "-32.5", 
+                "-27.5", 
+                "-22.5", 
+                "-17.5", 
+                "-12.5", 
+                "-7.5", 
+                "-2.5", 
+                "2.5", 
+                "7.5", 
+                "12.5", 
+                "17.5", 
+                "22.5"
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "-50", 
+                "-45", 
+                "-45", 
+                "-40", 
+                "-40", 
+                "-35", 
+                "-35", 
+                "-30", 
+                "-30", 
+                "-25", 
+                "-25", 
+                "-20", 
+                "-20", 
+                "-15", 
+                "-15", 
+                "-10", 
+                "-10", 
+                "-5", 
+                "-5", 
+                "0", 
+                "0", 
+                "5", 
+                "5", 
+                "10", 
+                "10", 
+                "15", 
+                "15", 
+                "20", 
+                "20", 
+                "25."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "CloudSat simulator equivalent radar reflectivity factor", 
+            "standard_name": "equivalent_reflectivity_factor", 
+            "value": "", 
+            "out_name": "dbze", 
+            "type": "double", 
+            "units": "dBZ", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "typesever": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "secondary_evergreen_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "rho": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "density++++?", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "rho", 
+            "type": "double", 
+            "units": "kg m-3", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "depth100m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "80.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "100.0", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "120.0", 
+            "axis": "Z"
+        }, 
+        "effectRadLi": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "Effective Radius of Liquid Aerosols", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "effectRadLi", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "sdepth": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "200.0", 
+            "axis": "Z"
+        }, 
+        "vegtype": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "plant functional type", 
+            "standard_name": "area_type", 
+            "value": "", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "typec3pft": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "c3_plant_functional_types", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "natural_log_pressure": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "p0: p0 lev: lev", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "p0: p0 lev: lev_bnds", 
+            "bounds_values": "", 
+            "long_name": "atmosphere natural log pressure coordinate", 
+            "standard_name": "atmosphere_ln_pressure_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "p = p0 * exp(-lev)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "20.0", 
+            "axis": "Z"
+        }, 
+        "scatratio": {
+            "requested": [
+                "0.005", 
+                "0.605", 
+                "2.1", 
+                "4.", 
+                "6.", 
+                "8.5", 
+                "12.5", 
+                "17.5", 
+                "22.5", 
+                "27.5", 
+                "35.", 
+                "45.", 
+                "55.", 
+                "70.", 
+                "50040."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "0.", 
+                "0.01", 
+                "0.01", 
+                "1.2", 
+                "1.2", 
+                "3.", 
+                "3.", 
+                "5.", 
+                "5.", 
+                "7.", 
+                "7.", 
+                "10.", 
+                "10.", 
+                "15.", 
+                "15.", 
+                "20.", 
+                "20.", 
+                "25.", 
+                "25.", 
+                "30.", 
+                "30.", 
+                "40.", 
+                "40.", 
+                "50.", 
+                "50.", 
+                "60.", 
+                "60.", 
+                "80.", 
+                "80.", 
+                "100000."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "lidar backscattering ratio", 
+            "standard_name": "backscattering_ratio", 
+            "value": "", 
+            "out_name": "scatratio", 
+            "type": "double", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "standard_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "ptop: ptop sigma: lev ps: ps", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "ptop: ptop sigma: lev_bnds ps: ps", 
+            "bounds_values": "", 
+            "long_name": "sigma coordinate", 
+            "standard_name": "atmosphere_sigma_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "p = ptop + sigma*(ps - ptop)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "1.0", 
+            "axis": "Z"
+        }, 
+        "typepdec": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "primary_deciduous_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "hybrid_height": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "a: lev b: b orog: orog", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "a: lev_bnds b: b_bnds orog: orog", 
+            "bounds_values": "", 
+            "long_name": "hybrid height coordinate", 
+            "standard_name": "atmosphere_hybrid_height_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "m", 
+            "formula": "z = a + b*orog", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "longitude": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "longitude", 
+            "standard_name": "longitude", 
+            "value": "", 
+            "out_name": "lon", 
+            "type": "double", 
+            "units": "degrees_east", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "360.0", 
+            "axis": "X"
+        }, 
+        "effectRadIc": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "Effective Radius of Ice Aerosols", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "effectRadIc", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "p1000": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "1000 hPa", 
+            "standard_name": "air_pressure", 
+            "value": "100000.", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "p500": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "500 hPa", 
+            "standard_name": "air_pressure", 
+            "value": "50000.", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "ocean_double_sigma": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "sigma: sigma depth: depth z1: z1 z2: z2 a: a_coeff href: href k_c: k_c", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "sigma: sigma_bnds depth: depth z1: z1 z2: z2 a: a href: href k_c: k_c", 
+            "bounds_values": "", 
+            "long_name": "ocean double sigma coordinate", 
+            "standard_name": "ocean_double_sigma", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "for k <= k_c:n z(k,j,i)= sigma(k)*f(j,i) n for k > k_c:n z(k,j,i)= f(j,i) + (sigma(k)-1)*(depth(j,i)-f(j,i)) n f(j,i)= 0.5*(z1+ z2) + 0.5*(z1-z2)* tanh(2*a/(z1-z2)*(depth(j,i)-href))", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plevs": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "standard_hybrid_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "p0: p0 a: a b: b ps: ps", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "p0: p0 a: a_bnds b: b_bnds ps: ps", 
+            "bounds_values": "", 
+            "long_name": "hybrid sigma pressure coordinate", 
+            "standard_name": "atmosphere_hybrid_sigma_pressure_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "1", 
+            "formula": "p = a*p0 + b*ps", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "1.0", 
+            "axis": "Z"
+        }, 
+        "p560": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "68000. 44000.", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "56000.0", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }
+    }, 
+    "variable_entry": {
+        "diftrbbo2d": {
+            "comment": "", 
+            "dimensions": "longitude latitude time2", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Ocean Tracer Bolus Biharmonic Diffusivity", 
+            "standard_name": "ocean_tracer_bolus_biharmonic_diffusivity", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean within years time: mean over years", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "m4 s-1", 
+            "out_name": "diftrbbo2d", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "difmxylo2d": {
+            "comment": "", 
+            "dimensions": "longitude latitude time2", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Ocean Momentum XY Laplacian Diffusivity", 
+            "standard_name": "ocean_momentum_xy_laplacian_diffusivity", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean within years time: mean over years", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "m2 s-1", 
+            "out_name": "difmxylo2d", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "diftrxybo": {
+            "comment": "", 
+            "dimensions": "longitude latitude olevel time2", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Ocean Tracer XY Biharmonic Diffusivity", 
+            "standard_name": "ocean_tracer_xy_biharmonic_diffusivity", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean within years time: mean over years", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "m4 s-1", 
+            "out_name": "diftrxybo", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "depth_c": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: depth_c", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "tnpeot": {
+            "comment": "", 
+            "dimensions": "longitude latitude olevel time2", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Tendency of Ocean Potential Energy Content due to Tides", 
+            "standard_name": "tendency_of_ocean_potential_energy_content_due_to_tides", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean within years time: mean over years", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "tnpeot", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "ap_bnds": {
+            "units": "Pa", 
+            "long_name": "vertical coordinate formula term: ap(k+1/2)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "ap": {
+            "units": "Pa", 
+            "long_name": "vertical coordinate formula term: ap(k)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "href": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: href", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "orog": {
+            "units": "m", 
+            "long_name": "Surface Altitude", 
+            "type": "real", 
+            "dimensions": "longitude latitude"
+        }, 
+        "difvtrto": {
+            "comment": "", 
+            "dimensions": "longitude latitude olevel time2", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Ocean Vertical Tracer Diffusivity due to Tides", 
+            "standard_name": "ocean_vertical_tracer_diffusivity_due_to_tides", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean within years time: mean over years", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "m2 s-1", 
+            "out_name": "difvtrto", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "difvho": {
+            "comment": "Vertical/dianeutral diffusivity applied to prognostic temperature field.", 
+            "dimensions": "longitude latitude olevel time2", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Ocean Vertical Heat Diffusivity", 
+            "standard_name": "ocean_vertical_heat_diffusivity", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean within years time: mean over years", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "m2/sec", 
+            "out_name": "difvho", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "zlev": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: zlev(k)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "diftrblo2d": {
+            "comment": "", 
+            "dimensions": "longitude latitude time2", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Ocean Tracer Bolus Laplacian Diffusivity", 
+            "standard_name": "ocean_tracer_bolus_laplacian_diffusivity", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean within years time: mean over years", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "m2 s-1", 
+            "out_name": "diftrblo2d", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "ps": {
+            "units": "Pa", 
+            "long_name": "Surface Air Pressure", 
+            "type": "real", 
+            "dimensions": "longitude latitude time"
+        }, 
+        "tnkebto2d": {
+            "comment": "", 
+            "dimensions": "longitude latitude time2", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Tendency of Ocean Eddy Kinetic Energy Content due to Bolus Transport", 
+            "standard_name": "tendency_of_ocean_eddy_kinetic_energy_content_due_to_bolus_transport", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean within years time: mean over years", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "tnkebto2d", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "difmxylo": {
+            "comment": "Lateral Laplacian viscosity applied to the momentum equitions.", 
+            "dimensions": "longitude latitude olevel time2", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Ocean Momentum XY Laplacian Diffusivity", 
+            "standard_name": "ocean_momentum_xy_laplacian_diffusivity", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean within years time: mean over years", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "m2/sec", 
+            "out_name": "difmxylo", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "difvtrbo": {
+            "comment": "", 
+            "dimensions": "longitude latitude olevel time2", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Ocean Vertical Tracer Diffusivity due to Background", 
+            "standard_name": "ocean_vertical_tracer_diffusivity_due_to_background", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean within years time: mean over years", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "m2 s-1", 
+            "out_name": "difvtrbo", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "tnpeo": {
+            "comment": "Rate that work is done against vertical stratification, as measured by the vertical heat and salt diffusivity. Report here as depth integrated two-dimensional field.", 
+            "dimensions": "longitude latitude olevel time2", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Tendency of Ocean Potential Energy Content", 
+            "standard_name": "endency_of_ocean_potential_energy_content", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean within years time: mean over years", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "W/m2", 
+            "out_name": "tnpeo", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "tnkebto": {
+            "comment": "Depth integrated impacts on kinetic energy arising from parameterized eddy-induced advection. For CMIP5, this diagnostic was 3d, whereas the CMIP6 depth integrated diagnostic is sufficient for many purposes and reduces archive requirements.", 
+            "dimensions": "longitude latitude olevel time2", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Tendency of Ocean Eddy Kinetic Energy Content due to Bolus Transport", 
+            "standard_name": "tendency_of_ocean_eddy_kinetic_energy_content_due_to_parameterized_eddy_advection", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean within years time: mean over years", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "W/m2", 
+            "out_name": "tnkebto", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "sigma_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: sigma(k+1/2)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "diftrxybo2d": {
+            "comment": "", 
+            "dimensions": "longitude latitude time2", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Ocean Tracer XY Biharmonic Diffusivity", 
+            "standard_name": "ocean_tracer_xy_biharmonic_diffusivity", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean within years time: mean over years", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "m4 s-1", 
+            "out_name": "diftrxybo2d", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "difvmbo": {
+            "comment": "", 
+            "dimensions": "longitude latitude olevel time2", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Ocean Vertical Momentum Diffusivity due to Background", 
+            "standard_name": "ocean_vertical_momentum_diffusivity_due_to_background", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean within years time: mean over years", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "m2 s-1", 
+            "out_name": "difvmbo", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "dispkexyfo2d": {
+            "comment": "", 
+            "dimensions": "longitude latitude time2", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Ocean Kinetic Energy Dissipation Per Unit Area due to XY Friction", 
+            "standard_name": "ocean_kinetic_energy_dissipation_per_unit_area_due_to_xy_friction", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean within years time: mean over years", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "dispkexyfo2d", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "diftrxylo2d": {
+            "comment": "", 
+            "dimensions": "longitude latitude time2", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Ocean Tracer XY Laplacian Diffusivity", 
+            "standard_name": "ocean_tracer_xy_laplacian_diffusivity", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean within years time: mean over years", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "m2 s-1", 
+            "out_name": "diftrxylo2d", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "diftrbbo": {
+            "comment": "", 
+            "dimensions": "longitude latitude olevel time2", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Ocean Tracer Bolus Biharmonic Diffusivity", 
+            "standard_name": "ocean_tracer_bolus_biharmonic_diffusivity", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean within years time: mean over years", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "m4 s-1", 
+            "out_name": "diftrbbo", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "ptop": {
+            "units": "Pa", 
+            "long_name": "pressure at top of model", 
+            "type": "", 
+            "dimensions": ""
+        }, 
+        "diftrelo2d": {
+            "comment": "", 
+            "dimensions": "longitude latitude time2", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Ocean Tracer Epineutral Laplacian Diffusivity", 
+            "standard_name": "ocean_tracer_epineutral_laplacian_diffusivity", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean within years time: mean over years", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "m2 s-1", 
+            "out_name": "diftrelo2d", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "difvmfdo": {
+            "comment": "", 
+            "dimensions": "longitude latitude olevel time2", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Ocean Vertical Momentum Diffusivity due to Form Drag", 
+            "standard_name": "ocean_vertical_momentum_diffusivity_due_to_form_drag", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean within years time: mean over years", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "m2 s-1", 
+            "out_name": "difvmfdo", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "b_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: b(k+1/2)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "nsigma": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: nsigma", 
+            "type": "integer", 
+            "dimensions": ""
+        }, 
+        "diftrebo2d": {
+            "comment": "", 
+            "dimensions": "longitude latitude time2", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Ocean Tracer Epineutral Biharmonic Diffusivity", 
+            "standard_name": "ocean_tracer_epineutral_biharmonic_diffusivity", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean within years time: mean over years", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "m4 s-1", 
+            "out_name": "diftrebo2d", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "difmxybo": {
+            "comment": "Lateral biharmonic viscosity applied to the momentum equitions.", 
+            "dimensions": "longitude latitude olevel time2", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Ocean Momentum XY Biharmonic Diffusivity", 
+            "standard_name": "ocean_momentum_xy_biharmonic_diffusivity", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean within years time: mean over years", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "m4/sec", 
+            "out_name": "difmxybo", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "diftrblo": {
+            "comment": "Ocean tracer diffusivity associated with parameterized eddy-induced advective transport. Sometimes this diffusivity is called the 'thickness' diffusivity. For CMIP5, this diagnostic was called 'ocean tracer bolus laplacian diffusivity'.  The CMIP6 name is physically more relevant.", 
+            "dimensions": "longitude latitude olevel time2", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Ocean Tracer Bolus Laplacian Diffusivity", 
+            "standard_name": "ocean_tracer_diffusivity_due_to_parameterized_mesoscale_advection", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean within years time: mean over years", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "m2/sec", 
+            "out_name": "diftrblo", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "difvso": {
+            "comment": "Vertical/dianeutral diffusivity applied to prognostic salinity field.", 
+            "dimensions": "longitude latitude olevel time2", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Ocean Vertical Salt Diffusivity", 
+            "standard_name": "ocean_verticalt_salt_diffusivity", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean within years time: mean over years", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "m2/sec", 
+            "out_name": "difvso", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "difvmto": {
+            "comment": "", 
+            "dimensions": "longitude latitude olevel time2", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Ocean Vertical Momentum Diffusivity due to Tides", 
+            "standard_name": "ocean_vertical_momentum_diffusivity_due_to_tides", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean within years time: mean over years", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "m2 s-1", 
+            "out_name": "difvmto", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "ztop": {
+            "units": "m", 
+            "long_name": "height of top of model", 
+            "type": "", 
+            "dimensions": ""
+        }, 
+        "difmxybo2d": {
+            "comment": "", 
+            "dimensions": "longitude latitude time2", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Ocean Momentum XY Biharmonic Diffusivity", 
+            "standard_name": "ocean_momentum_xy_biharmonic_diffusivity", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean within years time: mean over years", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "m4 s-1", 
+            "out_name": "difmxybo2d", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "zlev_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: zlev(k+1/2)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "z1": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: z1", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "z2": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: z2", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "a": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: a(k)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "p0": {
+            "units": "Pa", 
+            "long_name": "vertical coordinate formula term: reference pressure", 
+            "type": "", 
+            "dimensions": ""
+        }, 
+        "b": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: b(k)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "dispkevfo": {
+            "comment": "", 
+            "dimensions": "longitude latitude olevel time2", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Ocean Kinetic Energy Dissipation Per Unit Area due to Vertical Friction", 
+            "standard_name": "ocean_kinetic_energy_dissipation_per_unit_area_due_to_vertical_friction", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean within years time: mean over years", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "dispkevfo", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "zfull": {
+            "comment": "", 
+            "dimensions": "longitude latitude olevel time2", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Depth Below Geoid of Ocean Layer", 
+            "standard_name": "depth_below_geoid", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean within years time: mean over years", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "m", 
+            "out_name": "zfull", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "zhalf": {
+            "comment": "", 
+            "dimensions": "longitude latitude olevel time2", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Depth Below Geoid of Interfaces Between Ocean Layers", 
+            "standard_name": "depth_below_geoid", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean within years time: mean over years", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "m", 
+            "out_name": "zhalf", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "dispkexyfo": {
+            "comment": "Depth integrated impacts on kinetic energy arising from lateral frictional dissipation associated with Laplacian and/or biharmonic viscosity. For CMIP5, this diagnostic was 3d, whereas the CMIP6 depth integrated diagnostic is sufficient for many purposes and reduces archive requirements.", 
+            "dimensions": "longitude latitude olevel time2", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Ocean Kinetic Energy Dissipation Per Unit Area due to XY Friction", 
+            "standard_name": "ocean_kinetic_energy_dissipation_per_unit_area_due_to_xy_friction", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean within years time: mean over years", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "W/m2", 
+            "out_name": "dispkexyfo", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "diftrelo": {
+            "comment": "Ocean tracer diffusivity associated with parameterized eddy-induced diffusive transport oriented along neutral or isopycnal directions. Sometimes this diffusivity is called the neutral diffusivity or isopycnal diffusivity or Redi diffusivity.", 
+            "dimensions": "longitude latitude olevel time2", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Ocean Tracer Epineutral Laplacian Diffusivity", 
+            "standard_name": "ocean_tracer_epineutral_laplacian_diffusivity", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean within years time: mean over years", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "m2/sec", 
+            "out_name": "diftrelo", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "diftrxylo": {
+            "comment": "", 
+            "dimensions": "longitude latitude olevel time2", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Ocean Tracer XY Laplacian Diffusivity", 
+            "standard_name": "ocean_tracer_xy_laplacian_diffusivity", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean within years time: mean over years", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "m2 s-1", 
+            "out_name": "diftrxylo", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "depth": {
+            "units": "m", 
+            "long_name": "Sea Floor Depth: formula term: thetao", 
+            "type": "real", 
+            "dimensions": "longitude latitude"
+        }, 
+        "eta": {
+            "units": "m", 
+            "long_name": "Sea Surface Height formula term: thetao", 
+            "type": "real", 
+            "dimensions": "longitude latitude time"
+        }, 
+        "difvmo": {
+            "comment": "", 
+            "dimensions": "longitude latitude olevel time2", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Ocean Vertical Momentum Diffusivity", 
+            "standard_name": "ocean_vertical_momentum_diffusivity", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean within years time: mean over years", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "m2 s-1", 
+            "out_name": "difvmo", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "diftrebo": {
+            "comment": "", 
+            "dimensions": "longitude latitude olevel time2", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Ocean Tracer Epineutral Biharmonic Diffusivity", 
+            "standard_name": "ocean_tracer_epineutral_biharmonic_diffusivity", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean within years time: mean over years", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "m4 s-1", 
+            "out_name": "diftrebo", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "k_c": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: k_c", 
+            "type": "integer", 
+            "dimensions": ""
+        }, 
+        "tnpeotb": {
+            "comment": "", 
+            "dimensions": "longitude latitude olevel time2", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Tendency of Ocean Potential Energy Content due to Background", 
+            "standard_name": "tendency_of_ocean_potential_energy_content_due_to_background", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean within years time: mean over years", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "tnpeotb", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "sigma": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: sigma(k)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "a_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: a(k+1/2)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }
+    }
+}
diff --git a/TestTables/CMIP6_Oday.json b/TestTables/CMIP6_Oday.json
new file mode 100644
index 0000000..81f0c56
--- /dev/null
+++ b/TestTables/CMIP6_Oday.json
@@ -0,0 +1,2154 @@
+{
+    "Header": {
+        "product": "output", 
+        "approx_interval": "1.00000", 
+        "realm": "ocnBgchem", 
+        "cmor_version": "3.1", 
+        "Conventions": "CF-1.6 CMIP-6.0", 
+        "frequency": "day", 
+        "table_id": "Table Oday", 
+        "data_specs_version": "01.beta.29", 
+        "mip_era": "CMIP6", 
+        "generic_levels": "", 
+        "missing_value": "1e20", 
+        "table_date": "14 June 2016"
+    }, 
+    "axis_entry": {
+        "typebare": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "bare_ground", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "tau": {
+            "requested": [
+                "0.15", 
+                "0.8", 
+                "2.45", 
+                "6.5", 
+                "16.2", 
+                "41.5", 
+                "100."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "0.0", 
+                "0.3", 
+                "0.3", 
+                "1.3", 
+                "1.3", 
+                "3.6", 
+                "3.6", 
+                "9.4", 
+                "9.4", 
+                "23.0", 
+                "23.0", 
+                "60.0", 
+                "60.0", 
+                "100000."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "cloud optical thickness", 
+            "standard_name": "atmosphere_optical_thickness_due_to_cloud", 
+            "value": "", 
+            "out_name": "tau", 
+            "type": "double", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "olayer100m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "0. 100.", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "50.0", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "100.0", 
+            "axis": "Z"
+        }, 
+        "spectband": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "Spectral Band", 
+            "standard_name": "wave_frequency", 
+            "value": "", 
+            "out_name": "spectband", 
+            "type": "double", 
+            "units": "s-1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "ocean_sigma_z": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "sigma: sigma eta: eta depth: depth depth_c: depth_c nsigma: nsigma zlev: zlev", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "sigma: sigma_bnds eta: eta depth: depth depth_c: depth_c nsigma: nsigma zlev: zlev_bnds", 
+            "bounds_values": "", 
+            "long_name": "ocean sigma over z coordinate", 
+            "standard_name": "ocean_sigma_z", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "for k <= nsigma: z(n,k,j,i) = eta(n,j,i) + sigma(k)*(min(depth_c,depth(j,i))+eta(n,j,i)) ; for k > nsigma: z(n,k,j,i) = zlev(k)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev19": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000.", 
+                "500.", 
+                "100."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "p220": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "44000. 0.0", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "22000.0", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev17": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev10": {
+            "requested": [
+                "100000.", 
+                "85000.", 
+                "70000.", 
+                "50000.", 
+                "25000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "site": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "site index", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "site", 
+            "type": "integer", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "smooth_level": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "a: a b1: b1 b2: b2 ztop: ztop zsurf1: zsurf1 zsurf2: zsurf2", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-200.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "a: a_bnds b1: b1_bnds b2: b2_bnds ztop: ztop zsurf1: zsurf1 zsurf2: zsurf2", 
+            "bounds_values": "", 
+            "long_name": "atmosphere smooth level vertical (SLEVE) coordinate", 
+            "standard_name": "atmosphere_sleve_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "m", 
+            "formula": "z = a*ztop + b1*zsurf1 + b2*zsurf2", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "800000.0", 
+            "axis": "Z"
+        }, 
+        "p840": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "100000. 68000.", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "84000.0", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "ocean_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "sigma: lev eta: eta depth: depth", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "sigma: lev_bnds eta: eta depth: depth", 
+            "bounds_values": "", 
+            "long_name": "ocean sigma coordinate", 
+            "standard_name": "ocean_sigma_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "z(n,k,j,i) = eta(n,j,i) + sigma(k)*(depth(j,i)+eta(n,j,i))", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "0.0", 
+            "axis": "Z"
+        }, 
+        "depth0m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "0.0", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "100.0", 
+            "axis": "Z"
+        }, 
+        "ocean_s": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "s: lev eta: eta depth: depth a: a_coeff b: b_coeff depth_c: depth_c", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "s: lev_bnds eta: eta depth: depth a: a b: b depth_c: depth_c", 
+            "bounds_values": "", 
+            "long_name": "ocean s-coordinate", 
+            "standard_name": "ocean_s_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "z(n,k,j,i) = eta(n,j,i)*(1+s(k)) + depth_c*s(k) + (depth(j,i)-depth_c)*C(k) n where n C(k)=(1-b)*sinh(a*s(k))/sinh(a) +n           b*(tanh(a*(s(k)+0.5))/(2*tanh(0.5*a)) - 0.5)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "0.0", 
+            "axis": "Z"
+        }, 
+        "plev4s": {
+            "requested": [
+                "85000.", 
+                "50000.", 
+                "20000.", 
+                "5000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "typec4pft": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "c4_plant_functional_types", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "plev3h": {
+            "requested": [
+                "10000.", 
+                "1000.", 
+                "100."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "height2m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "up", 
+            "must_have_bounds": "no", 
+            "valid_min": "1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "height", 
+            "standard_name": "height", 
+            "value": "2.0", 
+            "out_name": "height", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "10.0", 
+            "axis": "Z"
+        }, 
+        "time1": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "time", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "plev7h": {
+            "requested": [
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "25000.", 
+                "5000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "sza5": {
+            "requested": [
+                "0.", 
+                "20.", 
+                "40.", 
+                "60.", 
+                "80."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "solar zenith angle", 
+            "standard_name": "solar_zenith_angle", 
+            "value": "", 
+            "out_name": "sza", 
+            "type": "double", 
+            "units": "degree", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "depth_coord": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "ocean depth coordinate", 
+            "standard_name": "depth", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "12000.0", 
+            "axis": "Z"
+        }, 
+        "sdepth1": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "0.0 0.1", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "0.05", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "0.2", 
+            "axis": "Z"
+        }, 
+        "alternate_hybrid_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "ap: ap b: b ps: ps", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "ap: ap_bnds b: b_bnds ps: ps", 
+            "bounds_values": "", 
+            "long_name": "hybrid sigma pressure coordinate", 
+            "standard_name": "atmosphere_hybrid_sigma_pressure_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "1", 
+            "formula": "p = ap + b*ps", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "1.0", 
+            "axis": "Z"
+        }, 
+        "time2": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "time", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "yes", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "time3": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "Diurnal cycle: monthly mean of the diurnal cycle (1 hour steps).", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "oline": {
+            "requested": [
+                "barents_opening", 
+                "bering_strait", 
+                "canadian_archipelago", 
+                "denmark_strait", 
+                "drake_passage", 
+                "english_channel", 
+                "pacific_equatorial_undercurrent", 
+                "faroe_scotland_channel", 
+                "florida_bahamas_strait", 
+                "fram_strait", 
+                "iceland_faroe_channel", 
+                "indonesian_thoughflow", 
+                "mozambique_channel", 
+                "taiwan_luzon_straits", 
+                "windward_passage"
+            ], 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "ocean passage", 
+            "standard_name": "region", 
+            "value": "", 
+            "out_name": "line", 
+            "type": "character", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "plev14": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "25000.", 
+                "15000.", 
+                "10000.", 
+                "5000.", 
+                "2000.", 
+                "1000.", 
+                "500.", 
+                "100."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev8": {
+            "requested": [
+                "100000.", 
+                "85000.", 
+                "70000.", 
+                "50000.", 
+                "25000.", 
+                "10000.", 
+                "5000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "location": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "location index", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "loc", 
+            "type": "integer", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "latitude": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-90.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "latitude", 
+            "standard_name": "latitude", 
+            "value": "", 
+            "out_name": "lat", 
+            "type": "double", 
+            "units": "degrees_north", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "90.0", 
+            "axis": "Y"
+        }, 
+        "plev3": {
+            "requested": [
+                "85000.", 
+                "50000.", 
+                "25000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "basin": {
+            "requested": [
+                "atlantic_arctic_ocean", 
+                "indian_pacific_ocean", 
+                "global_ocean"
+            ], 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "ocean basin", 
+            "standard_name": "region", 
+            "value": "", 
+            "out_name": "basin", 
+            "type": "character", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "p700": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "700 hPa", 
+            "standard_name": "air_pressure", 
+            "value": "70000.", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev7": {
+            "requested": [
+                "90000.", 
+                "74000.", 
+                "62000.", 
+                "50000.", 
+                "37500.", 
+                "24500.", 
+                "9000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "100000.", 
+                "80000.", 
+                "80000.", 
+                "68000.", 
+                "68000.", 
+                "56000.", 
+                "56000.", 
+                "44000.", 
+                "44000.", 
+                "31000.", 
+                "31000.", 
+                "18000.", 
+                "18000.", 
+                " 0."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev4": {
+            "requested": [
+                "92500.", 
+                "85000.", 
+                "50000.", 
+                "25000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev23": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000.", 
+                "700.", 
+                "500.", 
+                "300.", 
+                "200.", 
+                "100.", 
+                "40."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev39": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "17000.", 
+                "15000.", 
+                "13000.", 
+                "11500.", 
+                "10000.", 
+                "9000.", 
+                "8000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1500.", 
+                "1000.", 
+                "700.", 
+                "500.", 
+                "300.", 
+                "200.", 
+                "150.", 
+                "100.", 
+                "70.", 
+                "50.", 
+                "40.", 
+                "30.", 
+                "20.", 
+                "15.", 
+                "10.", 
+                "7.", 
+                "5.", 
+                "3."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "typepever": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "primary_evergreen_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "typesdec": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "secondary_decidous_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "plev27": {
+            "requested": [
+                "100000.", 
+                "97500.", 
+                "95000.", 
+                "92500.", 
+                "90000.", 
+                "87500.", 
+                "85000.", 
+                "82500.", 
+                "80000.", 
+                "77500.", 
+                "75000.", 
+                "70000.", 
+                "65000.", 
+                "60000.", 
+                "55000.", 
+                "50000.", 
+                "45000.", 
+                "40000.", 
+                "35000.", 
+                "30000.", 
+                "25000.", 
+                "22500.", 
+                "20000.", 
+                "17500.", 
+                "15000.", 
+                "12500.", 
+                "10000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "alt40": {
+            "requested": [
+                "240.", 
+                "720.", 
+                "1200.", 
+                "1680.", 
+                "2160.", 
+                "2640.", 
+                "3120.", 
+                "3600.", 
+                "4080.", 
+                "4560.", 
+                "5040.", 
+                "5520.", 
+                "6000.", 
+                "6480.", 
+                "6960.", 
+                "7440.", 
+                "7920.", 
+                "8400.", 
+                "8880.", 
+                "9360.", 
+                "9840.", 
+                "10320.", 
+                "10800.", 
+                "11280.", 
+                "11760.", 
+                "12240.", 
+                "12720.", 
+                "13200.", 
+                "13680.", 
+                "14160.", 
+                "14640.", 
+                "15120.", 
+                "15600.", 
+                "16080.", 
+                "16560.", 
+                "17040.", 
+                "17520.", 
+                "18000.", 
+                "18480.", 
+                "18960."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "0.", 
+                "480.", 
+                "480.", 
+                "960.", 
+                "960.", 
+                "1440.", 
+                "1440.", 
+                "1920.", 
+                "1920.", 
+                "2400.", 
+                "2400.", 
+                "2880.", 
+                "2880.", 
+                "3360.", 
+                "3360.", 
+                "3840.", 
+                "3840.", 
+                "4320.", 
+                "4320.", 
+                "4800.", 
+                "4800.", 
+                "5280.", 
+                "5280.", 
+                "5760.", 
+                "5760.", 
+                "6240.", 
+                "6240.", 
+                "6720.", 
+                "6720.", 
+                "7200.", 
+                "7200.", 
+                "7680.", 
+                "7680.", 
+                "8160.", 
+                "8160.", 
+                "8640.", 
+                "8640.", 
+                "9120.", 
+                "9120.", 
+                "9600.", 
+                "9600.", 
+                "10080.", 
+                "10080.", 
+                "10560.", 
+                "10560.", 
+                "11040.", 
+                "11040.", 
+                "11520.", 
+                "11520.", 
+                "12000.", 
+                "12000.", 
+                "12480.", 
+                "12480.", 
+                "12960.", 
+                "12960.", 
+                "13440.", 
+                "13440.", 
+                "13920.", 
+                "13920.", 
+                "14400.", 
+                "14400.", 
+                "14880.", 
+                "14880.", 
+                "15360.", 
+                "15360.", 
+                "15840.", 
+                "15840.", 
+                "16320.", 
+                "16320.", 
+                "16800.", 
+                "16800.", 
+                "17280.", 
+                "17280.", 
+                "17760.", 
+                "17760.", 
+                "18240.", 
+                "18240.", 
+                "18720.", 
+                "18720.", 
+                "19200."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "altitude", 
+            "standard_name": "altitude", 
+            "value": "", 
+            "out_name": "alt40", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "time": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "time", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "plev7c": {
+            "requested": [
+                "90000.", 
+                "74000.", 
+                "62000.", 
+                "50000.", 
+                "37500.", 
+                "24500.", 
+                "9000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "height10m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "up", 
+            "must_have_bounds": "no", 
+            "valid_min": "1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "height", 
+            "standard_name": "height", 
+            "value": "10.0", 
+            "out_name": "height", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "30.0", 
+            "axis": "Z"
+        }, 
+        "dbze": {
+            "requested": [
+                "-47.5", 
+                "-42.5", 
+                "-37.5", 
+                "-32.5", 
+                "-27.5", 
+                "-22.5", 
+                "-17.5", 
+                "-12.5", 
+                "-7.5", 
+                "-2.5", 
+                "2.5", 
+                "7.5", 
+                "12.5", 
+                "17.5", 
+                "22.5"
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "-50", 
+                "-45", 
+                "-45", 
+                "-40", 
+                "-40", 
+                "-35", 
+                "-35", 
+                "-30", 
+                "-30", 
+                "-25", 
+                "-25", 
+                "-20", 
+                "-20", 
+                "-15", 
+                "-15", 
+                "-10", 
+                "-10", 
+                "-5", 
+                "-5", 
+                "0", 
+                "0", 
+                "5", 
+                "5", 
+                "10", 
+                "10", 
+                "15", 
+                "15", 
+                "20", 
+                "20", 
+                "25."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "CloudSat simulator equivalent radar reflectivity factor", 
+            "standard_name": "equivalent_reflectivity_factor", 
+            "value": "", 
+            "out_name": "dbze", 
+            "type": "double", 
+            "units": "dBZ", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "typesever": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "secondary_evergreen_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "rho": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "density++++?", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "rho", 
+            "type": "double", 
+            "units": "kg m-3", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "depth100m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "80.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "100.0", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "120.0", 
+            "axis": "Z"
+        }, 
+        "effectRadLi": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "Effective Radius of Liquid Aerosols", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "effectRadLi", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "sdepth": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "200.0", 
+            "axis": "Z"
+        }, 
+        "vegtype": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "plant functional type", 
+            "standard_name": "area_type", 
+            "value": "", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "typec3pft": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "c3_plant_functional_types", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "natural_log_pressure": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "p0: p0 lev: lev", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "p0: p0 lev: lev_bnds", 
+            "bounds_values": "", 
+            "long_name": "atmosphere natural log pressure coordinate", 
+            "standard_name": "atmosphere_ln_pressure_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "p = p0 * exp(-lev)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "20.0", 
+            "axis": "Z"
+        }, 
+        "scatratio": {
+            "requested": [
+                "0.005", 
+                "0.605", 
+                "2.1", 
+                "4.", 
+                "6.", 
+                "8.5", 
+                "12.5", 
+                "17.5", 
+                "22.5", 
+                "27.5", 
+                "35.", 
+                "45.", 
+                "55.", 
+                "70.", 
+                "50040."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "0.", 
+                "0.01", 
+                "0.01", 
+                "1.2", 
+                "1.2", 
+                "3.", 
+                "3.", 
+                "5.", 
+                "5.", 
+                "7.", 
+                "7.", 
+                "10.", 
+                "10.", 
+                "15.", 
+                "15.", 
+                "20.", 
+                "20.", 
+                "25.", 
+                "25.", 
+                "30.", 
+                "30.", 
+                "40.", 
+                "40.", 
+                "50.", 
+                "50.", 
+                "60.", 
+                "60.", 
+                "80.", 
+                "80.", 
+                "100000."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "lidar backscattering ratio", 
+            "standard_name": "backscattering_ratio", 
+            "value": "", 
+            "out_name": "scatratio", 
+            "type": "double", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "standard_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "ptop: ptop sigma: lev ps: ps", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "ptop: ptop sigma: lev_bnds ps: ps", 
+            "bounds_values": "", 
+            "long_name": "sigma coordinate", 
+            "standard_name": "atmosphere_sigma_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "p = ptop + sigma*(ps - ptop)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "1.0", 
+            "axis": "Z"
+        }, 
+        "typepdec": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "primary_deciduous_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "hybrid_height": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "a: lev b: b orog: orog", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "a: lev_bnds b: b_bnds orog: orog", 
+            "bounds_values": "", 
+            "long_name": "hybrid height coordinate", 
+            "standard_name": "atmosphere_hybrid_height_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "m", 
+            "formula": "z = a + b*orog", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "longitude": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "longitude", 
+            "standard_name": "longitude", 
+            "value": "", 
+            "out_name": "lon", 
+            "type": "double", 
+            "units": "degrees_east", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "360.0", 
+            "axis": "X"
+        }, 
+        "effectRadIc": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "Effective Radius of Ice Aerosols", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "effectRadIc", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "p1000": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "1000 hPa", 
+            "standard_name": "air_pressure", 
+            "value": "100000.", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "p500": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "500 hPa", 
+            "standard_name": "air_pressure", 
+            "value": "50000.", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "ocean_double_sigma": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "sigma: sigma depth: depth z1: z1 z2: z2 a: a_coeff href: href k_c: k_c", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "sigma: sigma_bnds depth: depth z1: z1 z2: z2 a: a href: href k_c: k_c", 
+            "bounds_values": "", 
+            "long_name": "ocean double sigma coordinate", 
+            "standard_name": "ocean_double_sigma", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "for k <= k_c:n z(k,j,i)= sigma(k)*f(j,i) n for k > k_c:n z(k,j,i)= f(j,i) + (sigma(k)-1)*(depth(j,i)-f(j,i)) n f(j,i)= 0.5*(z1+ z2) + 0.5*(z1-z2)* tanh(2*a/(z1-z2)*(depth(j,i)-href))", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plevs": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "standard_hybrid_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "p0: p0 a: a b: b ps: ps", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "p0: p0 a: a_bnds b: b_bnds ps: ps", 
+            "bounds_values": "", 
+            "long_name": "hybrid sigma pressure coordinate", 
+            "standard_name": "atmosphere_hybrid_sigma_pressure_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "1", 
+            "formula": "p = a*p0 + b*ps", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "1.0", 
+            "axis": "Z"
+        }, 
+        "p560": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "68000. 44000.", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "56000.0", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }
+    }, 
+    "variable_entry": {
+        "depth_c": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: depth_c", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "ap_bnds": {
+            "units": "Pa", 
+            "long_name": "vertical coordinate formula term: ap(k+1/2)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "chlos": {
+            "comment": "Sum of chlorophyll from all phytoplankton group concentrations at the sea surface.  In most models this is equal to chldiat+chlmisc, that is the sum of 'Diatom Chlorophyll Mass Concentration' plus 'Other Phytoplankton Chlorophyll Mass Concentration'", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Sea Surface Total Chlorophyll Mass Concentration", 
+            "standard_name": "mass_concentration_of_phytoplankton_expressed_as_chlorophyll_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-3", 
+            "out_name": "chlos", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "ap": {
+            "units": "Pa", 
+            "long_name": "vertical coordinate formula term: ap(k)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "href": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: href", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "orog": {
+            "units": "m", 
+            "long_name": "Surface Altitude", 
+            "type": "real", 
+            "dimensions": "longitude latitude"
+        }, 
+        "zlev": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: zlev(k)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "ps": {
+            "units": "Pa", 
+            "long_name": "Surface Air Pressure", 
+            "type": "real", 
+            "dimensions": "longitude latitude time"
+        }, 
+        "sigma_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: sigma(k+1/2)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "ptop": {
+            "units": "Pa", 
+            "long_name": "pressure at top of model", 
+            "type": "", 
+            "dimensions": ""
+        }, 
+        "b_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: b(k+1/2)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "nsigma": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: nsigma", 
+            "type": "integer", 
+            "dimensions": ""
+        }, 
+        "ztop": {
+            "units": "m", 
+            "long_name": "height of top of model", 
+            "type": "", 
+            "dimensions": ""
+        }, 
+        "zlev_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: zlev(k+1/2)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "z1": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: z1", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "z2": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: z2", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "a": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: a(k)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "p0": {
+            "units": "Pa", 
+            "long_name": "vertical coordinate formula term: reference pressure", 
+            "type": "", 
+            "dimensions": ""
+        }, 
+        "b": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: b(k)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "depth": {
+            "units": "m", 
+            "long_name": "Sea Floor Depth: formula term: thetao", 
+            "type": "real", 
+            "dimensions": "longitude latitude"
+        }, 
+        "eta": {
+            "units": "m", 
+            "long_name": "Sea Surface Height formula term: thetao", 
+            "type": "real", 
+            "dimensions": "longitude latitude time"
+        }, 
+        "k_c": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: k_c", 
+            "type": "integer", 
+            "dimensions": ""
+        }, 
+        "sigma": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: sigma(k)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "a_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: a(k+1/2)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }
+    }
+}
diff --git a/TestTables/CMIP6_Ofx.json b/TestTables/CMIP6_Ofx.json
new file mode 100644
index 0000000..636e0b9
--- /dev/null
+++ b/TestTables/CMIP6_Ofx.json
@@ -0,0 +1 @@
+no Variable found for Ofx
diff --git a/TestTables/CMIP6_Omon.json b/TestTables/CMIP6_Omon.json
new file mode 100644
index 0000000..9cdbafd
--- /dev/null
+++ b/TestTables/CMIP6_Omon.json
@@ -0,0 +1,5979 @@
+{
+    "Header": {
+        "product": "output", 
+        "approx_interval": "30.00000", 
+        "realm": "ocean", 
+        "cmor_version": "3.1", 
+        "Conventions": "CF-1.6 CMIP-6.0", 
+        "frequency": "mon", 
+        "table_id": "Table Omon", 
+        "data_specs_version": "01.beta.29", 
+        "mip_era": "CMIP6", 
+        "generic_levels": "olevel", 
+        "missing_value": "1e20", 
+        "table_date": "14 June 2016"
+    }, 
+    "axis_entry": {
+        "typebare": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "bare_ground", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "tau": {
+            "requested": [
+                "0.15", 
+                "0.8", 
+                "2.45", 
+                "6.5", 
+                "16.2", 
+                "41.5", 
+                "100."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "0.0", 
+                "0.3", 
+                "0.3", 
+                "1.3", 
+                "1.3", 
+                "3.6", 
+                "3.6", 
+                "9.4", 
+                "9.4", 
+                "23.0", 
+                "23.0", 
+                "60.0", 
+                "60.0", 
+                "100000."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "cloud optical thickness", 
+            "standard_name": "atmosphere_optical_thickness_due_to_cloud", 
+            "value": "", 
+            "out_name": "tau", 
+            "type": "double", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "olayer100m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "0. 100.", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "50.0", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "100.0", 
+            "axis": "Z"
+        }, 
+        "spectband": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "Spectral Band", 
+            "standard_name": "wave_frequency", 
+            "value": "", 
+            "out_name": "spectband", 
+            "type": "double", 
+            "units": "s-1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "ocean_sigma_z": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "sigma: sigma eta: eta depth: depth depth_c: depth_c nsigma: nsigma zlev: zlev", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "sigma: sigma_bnds eta: eta depth: depth depth_c: depth_c nsigma: nsigma zlev: zlev_bnds", 
+            "bounds_values": "", 
+            "long_name": "ocean sigma over z coordinate", 
+            "standard_name": "ocean_sigma_z", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "for k <= nsigma: z(n,k,j,i) = eta(n,j,i) + sigma(k)*(min(depth_c,depth(j,i))+eta(n,j,i)) ; for k > nsigma: z(n,k,j,i) = zlev(k)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev19": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000.", 
+                "500.", 
+                "100."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "p220": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "44000. 0.0", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "22000.0", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev17": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev10": {
+            "requested": [
+                "100000.", 
+                "85000.", 
+                "70000.", 
+                "50000.", 
+                "25000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "site": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "site index", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "site", 
+            "type": "integer", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "smooth_level": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "a: a b1: b1 b2: b2 ztop: ztop zsurf1: zsurf1 zsurf2: zsurf2", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-200.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "a: a_bnds b1: b1_bnds b2: b2_bnds ztop: ztop zsurf1: zsurf1 zsurf2: zsurf2", 
+            "bounds_values": "", 
+            "long_name": "atmosphere smooth level vertical (SLEVE) coordinate", 
+            "standard_name": "atmosphere_sleve_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "m", 
+            "formula": "z = a*ztop + b1*zsurf1 + b2*zsurf2", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "800000.0", 
+            "axis": "Z"
+        }, 
+        "p840": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "100000. 68000.", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "84000.0", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "ocean_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "sigma: lev eta: eta depth: depth", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "sigma: lev_bnds eta: eta depth: depth", 
+            "bounds_values": "", 
+            "long_name": "ocean sigma coordinate", 
+            "standard_name": "ocean_sigma_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "z(n,k,j,i) = eta(n,j,i) + sigma(k)*(depth(j,i)+eta(n,j,i))", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "0.0", 
+            "axis": "Z"
+        }, 
+        "depth0m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "0.0", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "100.0", 
+            "axis": "Z"
+        }, 
+        "ocean_s": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "s: lev eta: eta depth: depth a: a_coeff b: b_coeff depth_c: depth_c", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "s: lev_bnds eta: eta depth: depth a: a b: b depth_c: depth_c", 
+            "bounds_values": "", 
+            "long_name": "ocean s-coordinate", 
+            "standard_name": "ocean_s_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "z(n,k,j,i) = eta(n,j,i)*(1+s(k)) + depth_c*s(k) + (depth(j,i)-depth_c)*C(k) n where n C(k)=(1-b)*sinh(a*s(k))/sinh(a) +n           b*(tanh(a*(s(k)+0.5))/(2*tanh(0.5*a)) - 0.5)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "0.0", 
+            "axis": "Z"
+        }, 
+        "plev4s": {
+            "requested": [
+                "85000.", 
+                "50000.", 
+                "20000.", 
+                "5000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "typec4pft": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "c4_plant_functional_types", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "plev3h": {
+            "requested": [
+                "10000.", 
+                "1000.", 
+                "100."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "height2m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "up", 
+            "must_have_bounds": "no", 
+            "valid_min": "1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "height", 
+            "standard_name": "height", 
+            "value": "2.0", 
+            "out_name": "height", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "10.0", 
+            "axis": "Z"
+        }, 
+        "time1": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "time", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "plev7h": {
+            "requested": [
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "25000.", 
+                "5000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "sza5": {
+            "requested": [
+                "0.", 
+                "20.", 
+                "40.", 
+                "60.", 
+                "80."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "solar zenith angle", 
+            "standard_name": "solar_zenith_angle", 
+            "value": "", 
+            "out_name": "sza", 
+            "type": "double", 
+            "units": "degree", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "depth_coord": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "ocean depth coordinate", 
+            "standard_name": "depth", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "12000.0", 
+            "axis": "Z"
+        }, 
+        "sdepth1": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "0.0 0.1", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "0.05", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "0.2", 
+            "axis": "Z"
+        }, 
+        "alternate_hybrid_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "ap: ap b: b ps: ps", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "ap: ap_bnds b: b_bnds ps: ps", 
+            "bounds_values": "", 
+            "long_name": "hybrid sigma pressure coordinate", 
+            "standard_name": "atmosphere_hybrid_sigma_pressure_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "1", 
+            "formula": "p = ap + b*ps", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "1.0", 
+            "axis": "Z"
+        }, 
+        "time2": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "time", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "yes", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "time3": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "Diurnal cycle: monthly mean of the diurnal cycle (1 hour steps).", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "oline": {
+            "requested": [
+                "barents_opening", 
+                "bering_strait", 
+                "canadian_archipelago", 
+                "denmark_strait", 
+                "drake_passage", 
+                "english_channel", 
+                "pacific_equatorial_undercurrent", 
+                "faroe_scotland_channel", 
+                "florida_bahamas_strait", 
+                "fram_strait", 
+                "iceland_faroe_channel", 
+                "indonesian_thoughflow", 
+                "mozambique_channel", 
+                "taiwan_luzon_straits", 
+                "windward_passage"
+            ], 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "ocean passage", 
+            "standard_name": "region", 
+            "value": "", 
+            "out_name": "line", 
+            "type": "character", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "plev14": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "25000.", 
+                "15000.", 
+                "10000.", 
+                "5000.", 
+                "2000.", 
+                "1000.", 
+                "500.", 
+                "100."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev8": {
+            "requested": [
+                "100000.", 
+                "85000.", 
+                "70000.", 
+                "50000.", 
+                "25000.", 
+                "10000.", 
+                "5000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "location": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "location index", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "loc", 
+            "type": "integer", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "latitude": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-90.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "latitude", 
+            "standard_name": "latitude", 
+            "value": "", 
+            "out_name": "lat", 
+            "type": "double", 
+            "units": "degrees_north", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "90.0", 
+            "axis": "Y"
+        }, 
+        "plev3": {
+            "requested": [
+                "85000.", 
+                "50000.", 
+                "25000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "basin": {
+            "requested": [
+                "atlantic_arctic_ocean", 
+                "indian_pacific_ocean", 
+                "global_ocean"
+            ], 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "ocean basin", 
+            "standard_name": "region", 
+            "value": "", 
+            "out_name": "basin", 
+            "type": "character", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "p700": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "700 hPa", 
+            "standard_name": "air_pressure", 
+            "value": "70000.", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev7": {
+            "requested": [
+                "90000.", 
+                "74000.", 
+                "62000.", 
+                "50000.", 
+                "37500.", 
+                "24500.", 
+                "9000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "100000.", 
+                "80000.", 
+                "80000.", 
+                "68000.", 
+                "68000.", 
+                "56000.", 
+                "56000.", 
+                "44000.", 
+                "44000.", 
+                "31000.", 
+                "31000.", 
+                "18000.", 
+                "18000.", 
+                " 0."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev4": {
+            "requested": [
+                "92500.", 
+                "85000.", 
+                "50000.", 
+                "25000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev23": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000.", 
+                "700.", 
+                "500.", 
+                "300.", 
+                "200.", 
+                "100.", 
+                "40."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev39": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "17000.", 
+                "15000.", 
+                "13000.", 
+                "11500.", 
+                "10000.", 
+                "9000.", 
+                "8000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1500.", 
+                "1000.", 
+                "700.", 
+                "500.", 
+                "300.", 
+                "200.", 
+                "150.", 
+                "100.", 
+                "70.", 
+                "50.", 
+                "40.", 
+                "30.", 
+                "20.", 
+                "15.", 
+                "10.", 
+                "7.", 
+                "5.", 
+                "3."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "typepever": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "primary_evergreen_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "typesdec": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "secondary_decidous_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "plev27": {
+            "requested": [
+                "100000.", 
+                "97500.", 
+                "95000.", 
+                "92500.", 
+                "90000.", 
+                "87500.", 
+                "85000.", 
+                "82500.", 
+                "80000.", 
+                "77500.", 
+                "75000.", 
+                "70000.", 
+                "65000.", 
+                "60000.", 
+                "55000.", 
+                "50000.", 
+                "45000.", 
+                "40000.", 
+                "35000.", 
+                "30000.", 
+                "25000.", 
+                "22500.", 
+                "20000.", 
+                "17500.", 
+                "15000.", 
+                "12500.", 
+                "10000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "alt40": {
+            "requested": [
+                "240.", 
+                "720.", 
+                "1200.", 
+                "1680.", 
+                "2160.", 
+                "2640.", 
+                "3120.", 
+                "3600.", 
+                "4080.", 
+                "4560.", 
+                "5040.", 
+                "5520.", 
+                "6000.", 
+                "6480.", 
+                "6960.", 
+                "7440.", 
+                "7920.", 
+                "8400.", 
+                "8880.", 
+                "9360.", 
+                "9840.", 
+                "10320.", 
+                "10800.", 
+                "11280.", 
+                "11760.", 
+                "12240.", 
+                "12720.", 
+                "13200.", 
+                "13680.", 
+                "14160.", 
+                "14640.", 
+                "15120.", 
+                "15600.", 
+                "16080.", 
+                "16560.", 
+                "17040.", 
+                "17520.", 
+                "18000.", 
+                "18480.", 
+                "18960."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "0.", 
+                "480.", 
+                "480.", 
+                "960.", 
+                "960.", 
+                "1440.", 
+                "1440.", 
+                "1920.", 
+                "1920.", 
+                "2400.", 
+                "2400.", 
+                "2880.", 
+                "2880.", 
+                "3360.", 
+                "3360.", 
+                "3840.", 
+                "3840.", 
+                "4320.", 
+                "4320.", 
+                "4800.", 
+                "4800.", 
+                "5280.", 
+                "5280.", 
+                "5760.", 
+                "5760.", 
+                "6240.", 
+                "6240.", 
+                "6720.", 
+                "6720.", 
+                "7200.", 
+                "7200.", 
+                "7680.", 
+                "7680.", 
+                "8160.", 
+                "8160.", 
+                "8640.", 
+                "8640.", 
+                "9120.", 
+                "9120.", 
+                "9600.", 
+                "9600.", 
+                "10080.", 
+                "10080.", 
+                "10560.", 
+                "10560.", 
+                "11040.", 
+                "11040.", 
+                "11520.", 
+                "11520.", 
+                "12000.", 
+                "12000.", 
+                "12480.", 
+                "12480.", 
+                "12960.", 
+                "12960.", 
+                "13440.", 
+                "13440.", 
+                "13920.", 
+                "13920.", 
+                "14400.", 
+                "14400.", 
+                "14880.", 
+                "14880.", 
+                "15360.", 
+                "15360.", 
+                "15840.", 
+                "15840.", 
+                "16320.", 
+                "16320.", 
+                "16800.", 
+                "16800.", 
+                "17280.", 
+                "17280.", 
+                "17760.", 
+                "17760.", 
+                "18240.", 
+                "18240.", 
+                "18720.", 
+                "18720.", 
+                "19200."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "altitude", 
+            "standard_name": "altitude", 
+            "value": "", 
+            "out_name": "alt40", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "time": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "time", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "plev7c": {
+            "requested": [
+                "90000.", 
+                "74000.", 
+                "62000.", 
+                "50000.", 
+                "37500.", 
+                "24500.", 
+                "9000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "height10m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "up", 
+            "must_have_bounds": "no", 
+            "valid_min": "1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "height", 
+            "standard_name": "height", 
+            "value": "10.0", 
+            "out_name": "height", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "30.0", 
+            "axis": "Z"
+        }, 
+        "dbze": {
+            "requested": [
+                "-47.5", 
+                "-42.5", 
+                "-37.5", 
+                "-32.5", 
+                "-27.5", 
+                "-22.5", 
+                "-17.5", 
+                "-12.5", 
+                "-7.5", 
+                "-2.5", 
+                "2.5", 
+                "7.5", 
+                "12.5", 
+                "17.5", 
+                "22.5"
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "-50", 
+                "-45", 
+                "-45", 
+                "-40", 
+                "-40", 
+                "-35", 
+                "-35", 
+                "-30", 
+                "-30", 
+                "-25", 
+                "-25", 
+                "-20", 
+                "-20", 
+                "-15", 
+                "-15", 
+                "-10", 
+                "-10", 
+                "-5", 
+                "-5", 
+                "0", 
+                "0", 
+                "5", 
+                "5", 
+                "10", 
+                "10", 
+                "15", 
+                "15", 
+                "20", 
+                "20", 
+                "25."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "CloudSat simulator equivalent radar reflectivity factor", 
+            "standard_name": "equivalent_reflectivity_factor", 
+            "value": "", 
+            "out_name": "dbze", 
+            "type": "double", 
+            "units": "dBZ", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "typesever": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "secondary_evergreen_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "rho": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "density++++?", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "rho", 
+            "type": "double", 
+            "units": "kg m-3", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "depth100m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "80.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "100.0", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "120.0", 
+            "axis": "Z"
+        }, 
+        "effectRadLi": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "Effective Radius of Liquid Aerosols", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "effectRadLi", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "sdepth": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "200.0", 
+            "axis": "Z"
+        }, 
+        "vegtype": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "plant functional type", 
+            "standard_name": "area_type", 
+            "value": "", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "typec3pft": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "c3_plant_functional_types", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "natural_log_pressure": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "p0: p0 lev: lev", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "p0: p0 lev: lev_bnds", 
+            "bounds_values": "", 
+            "long_name": "atmosphere natural log pressure coordinate", 
+            "standard_name": "atmosphere_ln_pressure_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "p = p0 * exp(-lev)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "20.0", 
+            "axis": "Z"
+        }, 
+        "scatratio": {
+            "requested": [
+                "0.005", 
+                "0.605", 
+                "2.1", 
+                "4.", 
+                "6.", 
+                "8.5", 
+                "12.5", 
+                "17.5", 
+                "22.5", 
+                "27.5", 
+                "35.", 
+                "45.", 
+                "55.", 
+                "70.", 
+                "50040."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "0.", 
+                "0.01", 
+                "0.01", 
+                "1.2", 
+                "1.2", 
+                "3.", 
+                "3.", 
+                "5.", 
+                "5.", 
+                "7.", 
+                "7.", 
+                "10.", 
+                "10.", 
+                "15.", 
+                "15.", 
+                "20.", 
+                "20.", 
+                "25.", 
+                "25.", 
+                "30.", 
+                "30.", 
+                "40.", 
+                "40.", 
+                "50.", 
+                "50.", 
+                "60.", 
+                "60.", 
+                "80.", 
+                "80.", 
+                "100000."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "lidar backscattering ratio", 
+            "standard_name": "backscattering_ratio", 
+            "value": "", 
+            "out_name": "scatratio", 
+            "type": "double", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "standard_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "ptop: ptop sigma: lev ps: ps", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "ptop: ptop sigma: lev_bnds ps: ps", 
+            "bounds_values": "", 
+            "long_name": "sigma coordinate", 
+            "standard_name": "atmosphere_sigma_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "p = ptop + sigma*(ps - ptop)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "1.0", 
+            "axis": "Z"
+        }, 
+        "typepdec": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "primary_deciduous_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "hybrid_height": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "a: lev b: b orog: orog", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "a: lev_bnds b: b_bnds orog: orog", 
+            "bounds_values": "", 
+            "long_name": "hybrid height coordinate", 
+            "standard_name": "atmosphere_hybrid_height_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "m", 
+            "formula": "z = a + b*orog", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "longitude": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "longitude", 
+            "standard_name": "longitude", 
+            "value": "", 
+            "out_name": "lon", 
+            "type": "double", 
+            "units": "degrees_east", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "360.0", 
+            "axis": "X"
+        }, 
+        "effectRadIc": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "Effective Radius of Ice Aerosols", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "effectRadIc", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "p1000": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "1000 hPa", 
+            "standard_name": "air_pressure", 
+            "value": "100000.", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "p500": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "500 hPa", 
+            "standard_name": "air_pressure", 
+            "value": "50000.", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "ocean_double_sigma": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "sigma: sigma depth: depth z1: z1 z2: z2 a: a_coeff href: href k_c: k_c", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "sigma: sigma_bnds depth: depth z1: z1 z2: z2 a: a href: href k_c: k_c", 
+            "bounds_values": "", 
+            "long_name": "ocean double sigma coordinate", 
+            "standard_name": "ocean_double_sigma", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "for k <= k_c:n z(k,j,i)= sigma(k)*f(j,i) n for k > k_c:n z(k,j,i)= f(j,i) + (sigma(k)-1)*(depth(j,i)-f(j,i)) n f(j,i)= 0.5*(z1+ z2) + 0.5*(z1-z2)* tanh(2*a/(z1-z2)*(depth(j,i)-href))", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plevs": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "standard_hybrid_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "p0: p0 a: a b: b ps: ps", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "p0: p0 a: a_bnds b: b_bnds ps: ps", 
+            "bounds_values": "", 
+            "long_name": "hybrid sigma pressure coordinate", 
+            "standard_name": "atmosphere_hybrid_sigma_pressure_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "1", 
+            "formula": "p = a*p0 + b*ps", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "1.0", 
+            "axis": "Z"
+        }, 
+        "p560": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "68000. 44000.", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "56000.0", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }
+    }, 
+    "variable_entry": {
+        "vmo": {
+            "comment": "Y-ward mass transport from resolved and parameterized advective transport.", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Ocean Mass Y Transport", 
+            "standard_name": "ocean_mass_y_transport", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "kg s-1", 
+            "out_name": "vmo", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "intpnitrate": {
+            "comment": "Vertically integrated primary (organic carbon) production by phytoplankton based on nitrate uptake alone", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Primary Organic Carbon Production by Phytoplankton Based on Nitrate Uptake Alone", 
+            "standard_name": "net_primary_mole_productivity_of_carbon_due_to_nitrate_utilization", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-2 s-1", 
+            "out_name": "intpnitrate", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "dpo2": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Delta PO2", 
+            "standard_name": "surface_molecular_oxygen_partial_pressure_difference_between_sea_water_and_air", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "Pa", 
+            "out_name": "dpo2", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "depth_c": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: depth_c", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "limfecalc": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Iron limitation of Calcareous Phytoplankton", 
+            "standard_name": "iron_limitation_of_calcareous_phytoplankton", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "1.0", 
+            "out_name": "limfecalc", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "expc100": {
+            "comment": "Downward flux of particulate organic carbon at 100m", 
+            "dimensions": "longitude latitude time depth100m", 
+            "positive": "down", 
+            "valid_min": "", 
+            "long_name": "Downward Flux of Particle Organic Carbon", 
+            "standard_name": "sinking_mole_flux_of_particulate_organic_matter_expressed_as_carbon_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-2 s-1", 
+            "out_name": "expc100", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "expp100": {
+            "comment": "", 
+            "dimensions": "longitude latitude time depth100m", 
+            "positive": "down", 
+            "valid_min": "", 
+            "long_name": "Downward Flux of Particulate Phosphorus", 
+            "standard_name": "sinking_mole_flux_of_particulate_phosphorus_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-2 s-1", 
+            "out_name": "expp100", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "mfo": {
+            "comment": "", 
+            "dimensions": "oline time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Sea Water Transport", 
+            "standard_name": "sea_water_transport_across_line", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "kg s-1", 
+            "out_name": "mfo", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "zo2min": {
+            "comment": "Depth of vertical minimum concentration of dissolved oxygen gas (if two, then the shallower)", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Depth of Oxygen Minimum Concentration", 
+            "standard_name": "depth_at_shallowest_local_minimum_in_vertical_profile_of_mole_concentration_of_dissolved_molecular_oxygen_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "m", 
+            "out_name": "zo2min", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "mlotstsq": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Square of Ocean Mixed Layer Thickness Defined by Sigma T", 
+            "standard_name": "square_of_ocean_mixed_layer_thickness_defined_by_sigma_t", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "m2", 
+            "out_name": "mlotstsq", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "zsatcalc": {
+            "comment": "Depth of calcite saturation horizon (0 if undersaturated at all depths, and missing saturated through whole depth; if two or more horizons exist, then the shallowest is reported)", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Calcite Saturation Depth", 
+            "standard_name": "minimum_depth_of_calcite_undersaturation_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "m", 
+            "out_name": "zsatcalc", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "fric": {
+            "comment": "Inorganic Carbon loss to sediments", 
+            "dimensions": "longitude latitude time", 
+            "positive": "down", 
+            "valid_min": "", 
+            "long_name": "Downward Inorganic Carbon Flux at Ocean Bottom", 
+            "standard_name": "tendency_of_ocean_mole_content_of_inorganic_carbon_due_to_sedimentation", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-2 s-1", 
+            "out_name": "fric", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "bsi": {
+            "comment": "Sum of particulate silica component concentrations", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Particulate Biogenic Silica Concentration", 
+            "standard_name": "mole_concentration_of_particulate_matter_expressed_as_silicon_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3", 
+            "out_name": "bsi", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "intpbfe": {
+            "comment": "Vertically integrated biogenic iron production", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Iron Production", 
+            "standard_name": "tendency_of_ocean_mole_content_of_iron_due_to_biological_production", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-2 s-1", 
+            "out_name": "intpbfe", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "no3": {
+            "comment": "", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Dissolved Nitrate Concentration", 
+            "standard_name": "mole_concentration_of_nitrate_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3", 
+            "out_name": "no3", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "fbddtdic": {
+            "comment": "vertical integral of net biological terms in time rate of change of dissolved inorganic carbon", 
+            "dimensions": "longitude latitude time olayer100m", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Rate of Change of Dissolved Inorganic Carbon due to Biological Activity", 
+            "standard_name": "tendency_of_ocean_mole_content_of_dissolved_inorganic_carbon_due_to_biological_processes", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-2 s-1", 
+            "out_name": "fbddtdic", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "cfc11": {
+            "comment": "", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Moles Per Unit Mass of CFC-11 in Sea Water", 
+            "standard_name": "moles_of_cfc11_per_unit_mass_in_sea_water", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol kg-1", 
+            "out_name": "cfc11", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "bfe": {
+            "comment": "Sum of particulate organic iron component concentrations", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Particulate Biogenic Iron Concentration", 
+            "standard_name": "mole_concentration_of_particulate_organic_matter_expressed_as_iron_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3", 
+            "out_name": "bfe", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "hfevapds": {
+            "comment": "This is defined as 'where ice_free_sea over sea'", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "valid_min": "", 
+            "long_name": "Temperature Flux due to Evaporation Expressed as Heat Flux Out of Sea Water", 
+            "standard_name": "temperature_flux_due_to_evaporation_expressed_as_heat_flux_out_of_sea_water", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean area: mean where ice_free_sea over sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "hfevapds", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "soga": {
+            "comment": "", 
+            "dimensions": "time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Global Mean Sea Water Salinity", 
+            "standard_name": "sea_water_salinity", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "0.001", 
+            "out_name": "soga", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "hfbasinpsmadv": {
+            "comment": "Contributions to heat transport from parameterized mesoscale eddy-induced advective transport. Diagnosed here as a function of latitude and basin.  Use Celsius for temperature scale.", 
+            "dimensions": "latitude basin time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "northward ocean heat transport due to parameterized submesoscale advection", 
+            "standard_name": "northward_ocean_heat_transport_due_to_parameterized_submesoscale_advection", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "W", 
+            "out_name": "hfbasinpsmadv", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "zostoga": {
+            "comment": "There is no CMIP6 request for zosga nor zossga.", 
+            "dimensions": "time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Global Average Thermosteric Sea Level Change", 
+            "standard_name": "global_average_thermosteric_sea_level_change", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "m", 
+            "out_name": "zostoga", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "fbddtdin": {
+            "comment": "vertical integral of net biological terms in time rate of change of nitrogen nutrients (e.g. NO3+NH4)", 
+            "dimensions": "longitude latitude time olayer100m", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Rate of Change of Dissolved Inorganic Nitrogen due to Biological Activity", 
+            "standard_name": "tendency_of_ocean_mole_content_of_dissolved_inorganic_nitrogen_due_to_biological_processes", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-2 s-1", 
+            "out_name": "fbddtdin", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "hfrunoffds2d": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Temperature Flux due to Runoff Expressed as Heat Flux into Sea Water", 
+            "standard_name": "temperature_flux_due_to_runoff_expressed_as_heat_flux_into_sea_water", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "hfrunoffds2d", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "intpoc": {
+            "comment": "Vertically integrated POC", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Particulate Organic Carbon Content", 
+            "standard_name": "ocean_mass_content_of_particulate_organic_carbon", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2", 
+            "out_name": "intpoc", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "fbddtdip": {
+            "comment": "vertical integral of net biological terms in time rate of change of phosphate", 
+            "dimensions": "longitude latitude time olayer100m", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Rate of Change of Dissolved Inorganic Phosphate due to Biological Activity", 
+            "standard_name": "tendency_of_ocean_mole_content_of_dissolved_inorganic_phosphorus_due_to_biological_processes", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-2 s-1", 
+            "out_name": "fbddtdip", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "wmo": {
+            "comment": "Upward mass transport from resolved and parameterized advective transport.", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Upward Ocean Mass Transport", 
+            "standard_name": "upward_ocean_mass_transport", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "kg s-1", 
+            "out_name": "wmo", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "hfsnthermds": {
+            "comment": "", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Heat Flux into Sea Water due to Snow Thermodynamics", 
+            "standard_name": "heat_flux_into_sea_water_due_to_snow_thermodynamics", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "hfsnthermds", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "tauvo": {
+            "comment": "This is the stress on the liquid ocean from overlying atmosphere, sea ice, ice shelf, etc.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "down", 
+            "valid_min": "", 
+            "long_name": "Surface Downward Y Stress", 
+            "standard_name": "surface_downward_y_stress", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "N m-2", 
+            "out_name": "tauvo", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "dmso": {
+            "comment": "Mole concentration of dimethyl sulphide in water", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Dimethyl Sulphide Concentration", 
+            "standard_name": "mole_concentration_of_dimethyl_sulfide_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3", 
+            "out_name": "dmso", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "vsfcorr": {
+            "comment": "It is set to zero in models which receive a real water flux.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Virtual Salt Flux Correction", 
+            "standard_name": "virtual_salt_flux_correction", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "vsfcorr", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "tob": {
+            "comment": "Potential temperature at the ocean bottom-most grid cell.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Sea Water Potential Temperature at Sea Floor", 
+            "standard_name": "sea_water_potential_temperature_at_sea_floor", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "C", 
+            "out_name": "tob", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "pso": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Sea Water Pressure at Sea Water Surface", 
+            "standard_name": "sea_water_pressure_at_sea_water_surface", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "Pa", 
+            "out_name": "pso", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "fgo2": {
+            "comment": "Gas exchange flux of O2 (positive into ocean)", 
+            "dimensions": "longitude latitude time", 
+            "positive": "down", 
+            "valid_min": "", 
+            "long_name": "Surface Downward O2 Flux", 
+            "standard_name": "surface_downward_mole_flux_of_molecular_oxygen", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-2 s-1", 
+            "out_name": "fgo2", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "fddtdin": {
+            "comment": "Net time rate of change of nitrogen nutrients (e.g. NO3+NH4)", 
+            "dimensions": "longitude latitude time olayer100m", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Rate of Change of Net Dissolved Inorganic Nitrogen", 
+            "standard_name": "tendency_of_ocean_mole_content_of_dissolved_inorganic_nitrogen", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-2 s-1", 
+            "out_name": "fddtdin", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "intpcalcite": {
+            "comment": "Vertically integrated calcite production", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Calcite Production", 
+            "standard_name": "tendency_of_ocean_mole_content_of_calcite_expressed_as_carbon_due_to_biological_production", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-2 s-1", 
+            "out_name": "intpcalcite", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "nsigma": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: nsigma", 
+            "type": "integer", 
+            "dimensions": ""
+        }, 
+        "limirrdiaz": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Irradiance limitation of Diazotrophs", 
+            "standard_name": "irradiance_limitation_of_diazotrophs", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "1.0", 
+            "out_name": "limirrdiaz", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "limfediat": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Iron limitation of Diatoms", 
+            "standard_name": "iron_limitation_of_diatoms", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "1.0", 
+            "out_name": "limfediat", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "dissic": {
+            "comment": "Dissolved inorganic carbon (CO3+HCO3+H2CO3) concentration", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Dissolved Inorganic Carbon Concentration", 
+            "standard_name": "mole_concentration_of_dissolved_inorganic_carbon_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3", 
+            "out_name": "dissic", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "zoomeso": {
+            "comment": "carbon  concentration from mesozooplankton (20-200 um) component alone", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Mole Concentration of Mesozooplankton expressed as Carbon in Sea Water", 
+            "standard_name": "mole_concentration_of_mesozooplankton_expressed_as_carbon_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3", 
+            "out_name": "zoomeso", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "icfriver": {
+            "comment": "Inorganic Carbon supply to ocean through runoff (separate from gas exchange)", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Flux of Inorganic Carbon Into Ocean Surface by Runoff", 
+            "standard_name": "tendency_of_ocean_mole_content_of_inorganic_carbon_due_to_runoff_and_sediment_dissolution", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-2 s-1", 
+            "out_name": "icfriver", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "arag": {
+            "comment": "Sum of particulate aragonite components (e.g. Phytoplankton, Detrital, etc.)", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Aragonite Concentration", 
+            "standard_name": "mole_concentration_of_aragonite_expressed_as_carbon_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3", 
+            "out_name": "arag", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "fddtdip": {
+            "comment": "vertical integral of net  time rate of change of phosphate", 
+            "dimensions": "longitude latitude time olayer100m", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Rate of Change of Net Dissolved Inorganic Phosphate", 
+            "standard_name": "tendency_of_ocean_mole_content_of_dissolved_inorganic_phosphorus", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-2 s-1", 
+            "out_name": "fddtdip", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "exparag100": {
+            "comment": "Downward flux of Aragonite at 100m", 
+            "dimensions": "longitude latitude time depth100m", 
+            "positive": "down", 
+            "valid_min": "", 
+            "long_name": "Downward Flux of Aragonite", 
+            "standard_name": "sinking_mole_flux_of_aragonite_expressed_as_carbon_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-2 s-1", 
+            "out_name": "exparag100", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "expcalc100": {
+            "comment": "Downward flux of Calcite at 100m", 
+            "dimensions": "longitude latitude time depth100m", 
+            "positive": "down", 
+            "valid_min": "", 
+            "long_name": "Downward Flux of Calcite", 
+            "standard_name": "sinking_mole_flux_of_calcite_expressed_as_carbon_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-2 s-1", 
+            "out_name": "expcalc100", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "intppmisc": {
+            "comment": "Vertically integrated total primary (organic carbon) production by other phytoplankton components alone", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Primary Organic Carbon Production by Other Phytoplankton", 
+            "standard_name": "net_primary_mole_productivity_of_carbon_by_miscellaneous_phytoplankton", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-2 s-1", 
+            "out_name": "intppmisc", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "pon": {
+            "comment": "sum of particulate organic nitrogen component concentrations", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Particulate Organic Nitrogen Concentration", 
+            "standard_name": "mole_concentration_of_particulate_organic_matter_expressed_as_nitrogen_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3", 
+            "out_name": "pon", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "graz": {
+            "comment": "", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Total Grazing of Phytoplankton by Zooplankton", 
+            "standard_name": "tendency_of_mole_concentration_of_organic_matter_expressed_as_carbon_in_sea_water_due_to_grazing_of_phytoplankton", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3 s-1", 
+            "out_name": "graz", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "zooc": {
+            "comment": "sum of zooplankton carbon component concentrations", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Zooplankton Carbon Concentration", 
+            "standard_name": "mole_concentration_of_zooplankton_expressed_as_carbon_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3", 
+            "out_name": "zooc", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "limirrpico": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Irradiance limitation of Picophytoplankton", 
+            "standard_name": "irradiance_limitation_of_picophytoplankton", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "1.0", 
+            "out_name": "limirrpico", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "ficeberg2d": {
+            "comment": "computed as the iceberg melt water  flux into the ocean divided by the area of the ocean portion of the grid cell.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Water Flux into Sea Water From Icebergs", 
+            "standard_name": "water_flux_into_sea_water_from_icebergs", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "ficeberg2d", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "sltovovrt": {
+            "comment": "From all advective mass transport processes, resolved and parameterized.", 
+            "dimensions": "latitude basin time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Northward Ocean Salt Transport due to Overturning", 
+            "standard_name": "northward_ocean_salt_transport_due_to_overturning", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean longitude: mean", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "kg s-1", 
+            "out_name": "sltovovrt", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "dpco2": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Delta PCO2", 
+            "standard_name": "surface_carbon_dioxide_partial_pressure_difference_between_sea_water_and_air", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "Pa", 
+            "out_name": "dpco2", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "o2": {
+            "comment": "", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Dissolved Oxygen Concentration", 
+            "standard_name": "mole_concentration_of_molecular_oxygen_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3", 
+            "out_name": "o2", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "limnmisc": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Nitrogen Limitation of Other Phytoplankton", 
+            "standard_name": "nitrogen_limitation_of_miscellaneous_phytoplankton", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "1.0", 
+            "out_name": "limnmisc", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "intppdiaz": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Net Primary Mole Productivity of Carbon by Diazotrophs", 
+            "standard_name": "net_primary_mole_productivity_of_carbon_by_diazotrophs", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-2 s-1", 
+            "out_name": "intppdiaz", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "fg14co2abio": {
+            "comment": "Gas exchange flux of abiotic 14CO2 (positive into ocean)", 
+            "dimensions": "longitude latitude time", 
+            "positive": "down", 
+            "valid_min": "", 
+            "long_name": "Surface Downward abiotic 14CO2 Flux", 
+            "standard_name": "surface_downward_mass_flux_of_abiotic_14_carbon_dioxide_expressed_as_carbon", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "fg14co2abio", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "hfsnthermds2d": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Heat Flux into Sea Water due to Snow Thermodynamics", 
+            "standard_name": "heat_flux_into_sea_water_due_to_snow_thermodynamics", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "hfsnthermds2d", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "rsntds": {
+            "comment": "This is the flux into the surface of liquid sea water only. This excludes shortwave flux absorbed by sea ice, but includes any light that passes through the ice and is absorbed by the ocean.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "down", 
+            "valid_min": "", 
+            "long_name": "Net Downward Shortwave Radiation at Sea Water Surface", 
+            "standard_name": "net_downward_shortwave_flux_at_sea_water_surface", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "rsntds", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "sltovgyre": {
+            "comment": "From all advective mass transport processes, resolved and parameterized.", 
+            "dimensions": "latitude basin time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Northward Ocean Salt Transport due to Gyre", 
+            "standard_name": "northward_ocean_salt_transport_due_to_gyre", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean longitude: mean", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "kg s-1", 
+            "out_name": "sltovgyre", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "evs": {
+            "comment": "computed as the total mass of water vapor evaporating from the ice-free portion of the ocean  divided by the area of the ocean portion of the grid cell.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Water Evaporation Flux Where Ice Free Ocean over Sea", 
+            "standard_name": "water_evaporation_flux", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean area: mean where ice_free_sea over sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "evs", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "intppdiat": {
+            "comment": "Vertically integrated primary (organic carbon) production by the diatom phytoplankton component alone", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Primary Organic Carbon Production by Diatoms", 
+            "standard_name": "net_primary_mole_productivity_of_carbon_by_diatoms", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-2 s-1", 
+            "out_name": "intppdiat", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "zsatarag": {
+            "comment": "Depth of aragonite saturation horizon (0 if undersaturated at all depths, 'missing' if supersaturated at all depths; if multiple horizons exist, the shallowest should be taken).", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Aragonite Saturation Depth", 
+            "standard_name": "minimum_depth_of_aragonite_undersaturation_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "m", 
+            "out_name": "zsatarag", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "zoomicro": {
+            "comment": "carbon  concentration from the microzooplankton (<20 um) component alone", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Mole Concentration of Microzooplankton expressed as Carbon in Sea Water", 
+            "standard_name": "mole_concentration_of_microzooplankton_expressed_as_carbon_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3", 
+            "out_name": "zoomicro", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "msftyrho": {
+            "comment": "Overturning mass streamfunction arising from all advective mass transport processes, resolved and parameterized.", 
+            "dimensions": "latitude rho basin time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Ocean Y Overturning Mass Streamfunction", 
+            "standard_name": "ocean_y_overturning_mass_streamfunction", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean longitude: mean", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "kg s-1", 
+            "out_name": "msftyrho", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "bacc": {
+            "comment": "Sum of bacterial carbon component concentrations", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Bacterial Carbon Concentration", 
+            "standard_name": "mole_concentration_of_bacteria_expressed_as_carbon_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3", 
+            "out_name": "bacc", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "fgco2": {
+            "comment": "Gas exchange flux of CO2 (positive into ocean)", 
+            "dimensions": "longitude latitude time", 
+            "positive": "down", 
+            "valid_min": "", 
+            "long_name": "Surface Downward CO2 Flux", 
+            "standard_name": "surface_downward_mass_flux_of_carbon_dioxide_expressed_as_carbon", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "fgco2", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "limfemisc": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Iron Limitation of Other Phytoplankton", 
+            "standard_name": "iron_limitation_of_miscellaneous_phytoplankton", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "1.0", 
+            "out_name": "limfemisc", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "intpppico": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Net Primary Mole Productivity of Carbon by Picophytoplankton", 
+            "standard_name": "net_primary_mole_productivity_of_carbon_by_picophytoplankton", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-2 s-1", 
+            "out_name": "intpppico", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "fsfe": {
+            "comment": "Iron supply through deposition flux onto sea surface, runoff, coasts, sediments, etc", 
+            "dimensions": "longitude latitude time", 
+            "positive": "down", 
+            "valid_min": "", 
+            "long_name": "Surface Downward Net Flux of Iron", 
+            "standard_name": "tendency_of_ocean_mole_content_of_iron_due_to_deposition_and_runoff_and_sediment_dissolution", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-2 s-1", 
+            "out_name": "fsfe", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "msftyrhompa": {
+            "comment": "CMIP5 called this 'due to Bolus Advection'.  Name change respects the more general physics of the mesoscale parameterizations.", 
+            "dimensions": "latitude rho basin time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "ocean Y overturning mass streamfunction due to parameterized mesoscale advection", 
+            "standard_name": "ocean_y_overturning_mass_streamfunction_due_to_parameterized_mesoscale_advection", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean longitude: mean", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "kg s-1", 
+            "out_name": "msftyrhompa", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "frfe": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Iron Loss to Sediments", 
+            "standard_name": "tendency_of_ocean_mole_content_of_iron_due_to_sedimentation", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-2 s-1", 
+            "out_name": "frfe", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "orog": {
+            "units": "m", 
+            "long_name": "Surface Altitude", 
+            "type": "real", 
+            "dimensions": "longitude latitude"
+        }, 
+        "vsf": {
+            "comment": "It is set to zero in models which receive a real water flux.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Virtual Salt Flux into Sea Water", 
+            "standard_name": "virtual_salt_flux_into_sea_water", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "vsf", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "sob": {
+            "comment": "Model prognostic salinity at bottom-most model grid cell", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "sea water salinity at sea floor", 
+            "standard_name": "sea_water_salinity_at_sea_floor", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "0.001", 
+            "out_name": "sob", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "fbddtalk": {
+            "comment": "vertical integral of net biological terms in time rate of change of alkalinity", 
+            "dimensions": "longitude latitude time olayer100m", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Rate of Change of Biological Alkalinity due to Biological Activity", 
+            "standard_name": "integral_wrt_depth_of_tendency_of_sea_water_alkalinity_expressed_as_mole_equivalent_due_to_biological_processes", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-2 s-1", 
+            "out_name": "fbddtalk", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "limnpico": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Nitrogen limitation of Picophytoplankton", 
+            "standard_name": "nitrogen_limitation_of_picophytoplankton", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "1.0", 
+            "out_name": "limnpico", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "zossq": {
+            "comment": "Surface ocean geoid defines z=0.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Square of Sea Surface Height Above Geoid", 
+            "standard_name": "square_of_sea_surface_height_above_geoid", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "m2", 
+            "out_name": "zossq", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "o2min": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Oxygen Minimum Concentration", 
+            "standard_name": "mole_concentration_of_dissolved_molecular_oxygen_in_sea_water_at_shallowest_local_minimum_in_vertical_profile", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea depth: minimum", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3", 
+            "out_name": "o2min", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "co3": {
+            "comment": "", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Mole Concentration of Carbonate ion in Seawater", 
+            "standard_name": "mole_concentration_of_carbonate_ion_in_seawater", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3", 
+            "out_name": "co3", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "intpn2": {
+            "comment": "Vertically integrated nitrogen fixation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Nitrogen Fixation Rate in Ocean", 
+            "standard_name": "tendency_of_ocean_mole_content_of_elemental_nitrogen_due_to_fixation", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-2 s-1", 
+            "out_name": "intpn2", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "hfbasinpmadv": {
+            "comment": "Contributions to heat transport from parameterized mesoscale eddy-induced advective transport. Diagnosed here as a function of latitude and basin.  Use Celsius for temperature scale.", 
+            "dimensions": "latitude basin time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "northward ocean heat transport due to parameterized mesoscale advection", 
+            "standard_name": "northward_ocean_heat_transport_due_to_parameterized_mesoscale_advection", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "W", 
+            "out_name": "hfbasinpmadv", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "rlds": {
+            "comment": "This is defined as 'where ice_free_sea over sea'", 
+            "dimensions": "longitude latitude time", 
+            "positive": "down", 
+            "valid_min": "", 
+            "long_name": "Surface Net Downward Longwave Radiation", 
+            "standard_name": "surface_net_downward_longwave_flux", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean area: mean where ice_free_sea over sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "rlds", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "limncalc": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Nitrogen limitation of Calcareous Phytoplankton", 
+            "standard_name": "nitrogen_limitation_of_calcareous_phytoplankton", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "1.0", 
+            "out_name": "limncalc", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "limfediaz": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Iron limitation of Diazotrophs", 
+            "standard_name": "iron_limitation_of_diazotrophs", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "1.0", 
+            "out_name": "limfediaz", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "sigma_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: sigma(k+1/2)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "friver": {
+            "comment": "computed as the river flux of water into the ocean divided by the area of the ocean portion of the grid cell.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Water Flux into Sea Water From Rivers", 
+            "standard_name": "water_flux_into_sea_water_from_rivers", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "friver", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "limfepico": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Iron limitation of Picophytoplankton", 
+            "standard_name": "iron_limitation_of_picophytoplankton", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "1.0", 
+            "out_name": "limfepico", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "expn100": {
+            "comment": "", 
+            "dimensions": "longitude latitude time depth100m", 
+            "positive": "down", 
+            "valid_min": "", 
+            "long_name": "Downward Flux of Particulate Nitrogen", 
+            "standard_name": "sinking_mole_flux_of_particulate_nitrogen_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-2 s-1", 
+            "out_name": "expn100", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "dissi14cabio": {
+            "comment": "Abiotic Dissolved inorganic 14carbon (CO3+HCO3+H2CO3) concentration", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Abiotic Dissolved Inorganic 14Carbon Concentration", 
+            "standard_name": "mole_concentration_of_dissolved_inorganic_14carbon_in_sea_water_abiotic_component", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3", 
+            "out_name": "dissi14cabio", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "hfsithermds2d": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Heat Flux into Sea Water due to Sea Ice Thermodynamics", 
+            "standard_name": "heat_flux_into_sea_water_due_to_sea_ice_thermodynamics", 
+            "modeling_realm": "ocean seaIce", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "hfsithermds2d", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "umo": {
+            "comment": "X-ward mass transport from resolved and parameterized advective transport.", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Ocean Mass X Transport", 
+            "standard_name": "ocean_mass_x_transport", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "kg s-1", 
+            "out_name": "umo", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "ptop": {
+            "units": "Pa", 
+            "long_name": "pressure at top of model", 
+            "type": "", 
+            "dimensions": ""
+        }, 
+        "spco2": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Surface Aqueous Partial Pressure of CO2", 
+            "standard_name": "surface_partial_pressure_of_carbon_dioxide_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "Pa", 
+            "out_name": "spco2", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "bigthetao": {
+            "comment": "Sea water conservative temperature (this should be contributed only for models using conservative temperature as prognostic field)", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Sea Water Convervative Temperature", 
+            "standard_name": "sea_water_conservative_temperature", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "degree_C", 
+            "out_name": "bigthetao", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "htovgyre": {
+            "comment": "From all advective mass transport processes, resolved and parameterized.", 
+            "dimensions": "latitude basin time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Northward Ocean Heat Transport due to Gyre", 
+            "standard_name": "northward_ocean_heat_transport_due_to_gyre", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean longitude: mean", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "W", 
+            "out_name": "htovgyre", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "fgdms": {
+            "comment": "Gas exchange flux of DMS (positive into atmosphere)", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "valid_min": "", 
+            "long_name": "Surface Upward DMS Flux", 
+            "standard_name": "surface_upward_mole_flux_of_dimethyl_sulfide", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-2 s-1", 
+            "out_name": "fgdms", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "dissoc": {
+            "comment": "Sum of dissolved carbon component concentrations explicitly represented (i.e. not ~40 uM refractory unless explicit)", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Dissolved Organic Carbon Concentration", 
+            "standard_name": "mole_concentration_of_dissolved_organic_carbon_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3", 
+            "out_name": "dissoc", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "hfsithermds": {
+            "comment": "", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Heat Flux into Sea Water due to Sea Ice Thermodynamics", 
+            "standard_name": "heat_flux_into_sea_water_due_to_sea_ice_thermodynamics", 
+            "modeling_realm": "ocean seaIce", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "hfsithermds", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "fbddtdisi": {
+            "comment": "vertical integral of net biological terms in time rate of change of dissolved inorganic silicate", 
+            "dimensions": "longitude latitude time olayer100m", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Rate of Change of Dissolved Inorganic Silicate due to Biological Activity", 
+            "standard_name": "tendency_of_ocean_mole_content_of_dissolved_inorganic_silicon_due_to_biological_processes", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-2 s-1", 
+            "out_name": "fbddtdisi", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "rsdo": {
+            "comment": "", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "down", 
+            "valid_min": "", 
+            "long_name": "Downwelling Shortwave Radiation in Sea Water", 
+            "standard_name": "downwelling_shortwave_flux_in_sea_water", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "rsdo", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "msftmrho": {
+            "comment": "Overturning mass streamfunction arising from all advective mass transport processes, resolved and parameterized.", 
+            "dimensions": "latitude rho basin time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Ocean Meridional Overturning Mass Streamfunction", 
+            "standard_name": "ocean_meridional_overturning_mass_streamfunction", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean longitude: mean", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "kg s-1", 
+            "out_name": "msftmrho", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "chldiaz": {
+            "comment": "Chlorophyll concentration from the diazotrophic phytoplankton component alone", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Mass Concentration of Diazotrophs expressed as Chlorophyll in Sea Water", 
+            "standard_name": "mass_concentration_of_diazotrophs_expressed_as_chlorophyll_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-3", 
+            "out_name": "chldiaz", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "hfcorr": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "down", 
+            "valid_min": "", 
+            "long_name": "Heat Flux Correction", 
+            "standard_name": "heat_flux_correction", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "hfcorr", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "hfrunoffds": {
+            "comment": "", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Temperature Flux due to Runoff Expressed as Heat Flux into Sea Water", 
+            "standard_name": "temperature_flux_due_to_runoff_expressed_as_heat_flux_into_sea_water", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "hfrunoffds", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "wfonocorr": {
+            "comment": "computed as the water  flux (without flux correction) into the ocean divided by the area of the ocean portion of the grid cell.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Water Flux into Sea Water Without Flux Correction", 
+            "standard_name": "water_flux_into_sea_water_without_flux_correction", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "wfonocorr", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "ztop": {
+            "units": "m", 
+            "long_name": "height of top of model", 
+            "type": "", 
+            "dimensions": ""
+        }, 
+        "phymisc": {
+            "comment": "carbon concentration from additional phytoplankton component alone", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Mole Concentration of Miscellaneous Phytoplankton expressed as Carbon in Sea Water", 
+            "standard_name": "mole_concentration_of_miscellaneous_phytoplankton_expressed_as_carbon_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3", 
+            "out_name": "phymisc", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "pbo": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Sea Water Pressure at Sea floor", 
+            "standard_name": "sea_water_pressure_at_sea_floor", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "Pa", 
+            "out_name": "pbo", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "z2": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: z2", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "phyfe": {
+            "comment": "sum of phytoplankton iron component concentrations", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Phytoplankton Iron Concentration", 
+            "standard_name": "mole_concentration_of_phytoplankton_expressed_as_iron_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3", 
+            "out_name": "phyfe", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "phypico": {
+            "comment": "carbon concentration from the picophytoplankton (<2 um) component alone", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Mole Concentration of Picophytoplankton expressed as Carbon in Sea Water", 
+            "standard_name": "mole_concentration_of_picophytoplankton_expressed_as_carbon_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3", 
+            "out_name": "phypico", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "cfc12": {
+            "comment": "", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Moles Per Unit Mass of CFC-12 in Sea Water", 
+            "standard_name": "moles_of_cfc12_per_unit_mass_in_sea_water", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol kg-1", 
+            "out_name": "cfc12", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "msftyyz": {
+            "comment": "Overturning mass streamfunction arising from all advective mass transport processes, resolved and parameterized.", 
+            "dimensions": "latitude olevel basin time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Ocean Y Overturning Mass Streamfunction", 
+            "standard_name": "ocean_y_overturning_mass_streamfunction", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean longitude: mean", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "kg s-1", 
+            "out_name": "msftyyz", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "vsfevap": {
+            "comment": "zero for models using real water fluxes.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Virtual Salt Flux into Sea Water due to Evaporation", 
+            "standard_name": "virtual_salt_flux_into_sea_water_due_to_evaporation", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "vsfevap", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "eta": {
+            "units": "m", 
+            "long_name": "Sea Surface Height formula term: thetao", 
+            "type": "real", 
+            "dimensions": "longitude latitude time"
+        }, 
+        "chldiat": {
+            "comment": "Chlorophyll from diatom phytoplankton component concentration alone", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Diatom Chlorophyll Mass Concentration", 
+            "standard_name": "mass_concentration_of_diatoms_expressed_as_chlorophyll_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-3", 
+            "out_name": "chldiat", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "tos": {
+            "comment": "this may differ from 'surface temperature' in regions of sea ice.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Sea Surface Temperature", 
+            "standard_name": "sea_surface_temperature", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "K", 
+            "out_name": "tos", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "hfgeou": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "valid_min": "", 
+            "long_name": "Upward Geothermal Heat Flux at Sea Floor", 
+            "standard_name": "upward_geothermal_heat_flux_at_sea_floor", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "hfgeou", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "intppcalc": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Net Primary Mole Productivity of Carbon by Calcareous Phytoplankton", 
+            "standard_name": "net_primary_mole_productivity_of_carbon_by_calcareous_phytoplankton", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-2 s-1", 
+            "out_name": "intppcalc", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "fgcfc12": {
+            "comment": "gas exchange flux of CFC12", 
+            "dimensions": "longitude latitude time", 
+            "positive": "down", 
+            "valid_min": "", 
+            "long_name": "Surface Downward CFC12 flux", 
+            "standard_name": "surface_downward_mole_flux_of_cfc12", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "mol sec-1 m-2", 
+            "out_name": "fgcfc12", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "vsfsit": {
+            "comment": "This variable measures the virtual salt flux into sea water due to the melting of sea ice. It is set to zero in models which receive a real water flux.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Virtual Salt Flux into Sea Water due to Sea Ice Thermodynamics", 
+            "standard_name": "virtual_salt_flux_into_sea_water_due_to_sea_ice_thermodynamics", 
+            "modeling_realm": "ocean seaIce", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "vsfsit", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "limirrdiat": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Irradiance limitation of Diatoms", 
+            "standard_name": "irradiance_limitation_of_diatoms", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "1.0", 
+            "out_name": "limirrdiat", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "intpbp": {
+            "comment": "Vertically integrated biogenic phosphorus production", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Phosphorus Production", 
+            "standard_name": "tendency_of_ocean_mole_content_of_phosphorus_due_to_biological_production", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-2 s-1", 
+            "out_name": "intpbp", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "intpp": {
+            "comment": "Vertically integrated total primary (organic carbon) production by phytoplankton.  This should equal the sum of intpdiat+intpphymisc, but those individual components may be unavailable in some models.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Primary Organic Carbon Production by All Types of Phytoplankton", 
+            "standard_name": "net_primary_mole_productivity_of_carbon_by_phytoplankton", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-2 s-1", 
+            "out_name": "intpp", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "co3satarag": {
+            "comment": "", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Mole Concentration of Carbonate ion for Seawater in equilibrium with pure Aragonite", 
+            "standard_name": "mole_concentration_of_carbonate_ion_for_seawater_in equilibrium_with_pure_aragonite", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3", 
+            "out_name": "co3satarag", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "volo": {
+            "comment": "Total volume of liquid seawater.", 
+            "dimensions": "time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Sea Water Volume", 
+            "standard_name": "sea_water_volume", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean area: sum where sea", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "m3", 
+            "out_name": "volo", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "msftmzmpa": {
+            "comment": "CMIP5 called this 'due to Bolus Advection'.  Name change respects the more general physics of the mesoscale parameterizations.", 
+            "dimensions": "latitude olevel basin time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "ocean meridional overturning mass streamfunction due to parameterized mesoscale advection", 
+            "standard_name": "ocean_meridional_overturning_mass_streamfunction_due_to_parameterized_mesoscale_advection", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean longitude: mean", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "kg s-1", 
+            "out_name": "msftmzmpa", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "hfds": {
+            "comment": "This is the net flux of heat entering the liquid water column through its upper surface (excluding any 'flux adjustment') .", 
+            "dimensions": "longitude latitude time", 
+            "positive": "down", 
+            "valid_min": "", 
+            "long_name": "Downward Heat Flux at Sea Water Surface", 
+            "standard_name": "surface_downward_heat_flux_in_sea_water", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "hfds", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "pop": {
+            "comment": "sum of particulate organic phosphorus component concentrations", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Particulate Organic Phosphorus Concentration", 
+            "standard_name": "mole_concentration_of_particulate_organic_matter_expressed_as_phosphorus_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3", 
+            "out_name": "pop", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "hfrainds": {
+            "comment": "This is defined as 'where ice_free_sea over sea'; i.e., the total flux (considered here) entering the ice-free portion of the grid cell divided by the area of the ocean portion of the grid cell.  All such heat fluxes are computed based on Celsius scale.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "down", 
+            "valid_min": "", 
+            "long_name": "Temperature Flux due to Rainfall Expressed as Heat Flux into Sea Water", 
+            "standard_name": "temperature_flux_due_to_rainfall_expressed_as_heat_flux_into_sea_water", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean area: mean where ice_free_sea over sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "hfrainds", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "fsitherm": {
+            "comment": "computed as the sea ice thermodynamic water flux into the ocean divided by the area of the ocean portion of the grid cell.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Water Flux into Sea Water due to Sea Ice Thermodynamics", 
+            "standard_name": "water_flux_into_sea_water_due_to_sea_ice_thermodynamics", 
+            "modeling_realm": "ocean seaIce", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "fsitherm", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "sos": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Sea Surface Salinity", 
+            "standard_name": "sea_surface_salinity", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "0.001", 
+            "out_name": "sos", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "href": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: href", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "hfls": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "down", 
+            "valid_min": "", 
+            "long_name": "Surface Downward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean area: mean where ice_free_sea over sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "hfls", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "fddtdisi": {
+            "comment": "vertical integral of net time rate of change of dissolved inorganic silicate", 
+            "dimensions": "longitude latitude time olayer100m", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Rate of Change of Net Dissolved Inorganic Silicate", 
+            "standard_name": "tendency_of_ocean_mole_content_of_dissolved_inorganic_silicon", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-2 s-1", 
+            "out_name": "fddtdisi", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "vsfpr": {
+            "comment": "zero for models using real water fluxes.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Virtual Salt Flux into Sea Water due to Rainfall", 
+            "standard_name": "virtual_salt_flux_into_sea_water_due_to_rainfall", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "vsfpr", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "hfibthermds2d": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Heat Flux into Sea Water due to Iceberg Thermodynamics", 
+            "standard_name": "heat_flux_into_sea_water_due_to_iceberg_thermodynamics", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "hfibthermds2d", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "chlmisc": {
+            "comment": "Chlorophyll from additional phytoplankton component concentrations alone", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Other Phytoplankton Chlorophyll Mass Concentration", 
+            "standard_name": "mass_concentration_of_miscellaneous_phytoplankton_expressed_as_chlorophyll_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-3", 
+            "out_name": "chlmisc", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "poc": {
+            "comment": "sum of particulate organic carbon component concentrations", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Particulate Organic Carbon Concentration", 
+            "standard_name": "mole_concentration_of_particulate_organic_matter_expressed_as_carbon_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3", 
+            "out_name": "poc", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "pr": {
+            "comment": "includes both liquid and solid phases", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Rainfall Flux where Ice Free Ocean over Sea", 
+            "standard_name": "precipitation_flux", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean area: mean where ice_free_sea over sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "pr", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "ps": {
+            "units": "Pa", 
+            "long_name": "Surface Air Pressure", 
+            "type": "real", 
+            "dimensions": "longitude latitude time"
+        }, 
+        "pp": {
+            "comment": "total primary (organic carbon) production by phytoplankton", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Primary Carbon Production by Phytoplankton", 
+            "standard_name": "tendency_of_mole_concentration_of_particulate_organic_matter_expressed_as_carbon_in_sea_water_due_to_net_primary_production", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3 s-1", 
+            "out_name": "pp", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "co3satcalc": {
+            "comment": "", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Mole Concentration of Carbonate ion for Seawater in equilibrium with pure Calcite", 
+            "standard_name": "mole_concentration_of_carbonate_ion_for_seawater_in equilibrium_with_pure_calcite", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3", 
+            "out_name": "co3satcalc", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "limndiat": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Nitrogen limitation of Diatoms", 
+            "standard_name": "nitrogen_limitation_of_diatoms", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "1.0", 
+            "out_name": "limndiat", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "physi": {
+            "comment": "sum of phytoplankton silica component concentrations", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Phytoplankton Silica Concentration", 
+            "standard_name": "mole_concentration_of_phytoplankton_expressed_as_silicon_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3", 
+            "out_name": "physi", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "limndiaz": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Nitrogen limitation of Diazotrophs", 
+            "standard_name": "nitrogen_limitation_of_diazotrophs", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "1.0", 
+            "out_name": "limndiaz", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "tauucorr": {
+            "comment": "This is the stress on the liquid ocean from overlying atmosphere, sea ice, ice shelf, etc.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "down", 
+            "valid_min": "", 
+            "long_name": "Surface Downward X Stress Correction", 
+            "standard_name": "surface_downward_x_stress_correction", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "N m-2", 
+            "out_name": "tauucorr", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "froc": {
+            "comment": "Organic Carbon loss to sediments", 
+            "dimensions": "longitude latitude time", 
+            "positive": "down", 
+            "valid_min": "", 
+            "long_name": "Downward Organic Carbon Flux at Ocean Bottom", 
+            "standard_name": "tendency_of_ocean_mole_content_of_organic_carbon_due_to_sedimentation", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-2 s-1", 
+            "out_name": "froc", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "chl": {
+            "comment": "Sum of chlorophyll from all phytoplankton group concentrations.  In most models this is equal to chldiat+chlmisc, that is the sum of Diatom Chlorophyll Mass Concentration and Other Phytoplankton Chlorophyll Mass Concentration", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Total Chlorophyll Mass Concentration", 
+            "standard_name": "mass_concentration_of_phytoplankton_expressed_as_chlorophyll_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-3", 
+            "out_name": "chl", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "frn": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Nitrogen Loss to Sediments and through Denitrification", 
+            "standard_name": "tendency_of_ocean_mole_content_of_elemental_nitrogen_due_to_denitrification_and_sedimentation", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-2 s-1", 
+            "out_name": "frn", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "z1": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: z1", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "hfbasinpmdiff": {
+            "comment": "Contributions to heat transport from parameterized mesoscale eddy-induced diffusive transport (i.e., neutral diffusion). Diagnosed here as a function of latitude and basin.", 
+            "dimensions": "latitude basin time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "northward ocean heat transport due to parameterized mesoscale diffusion", 
+            "standard_name": "northward_ocean_heat_transport_due_to_parameterized_mesoscale_diffusion", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "W", 
+            "out_name": "hfbasinpmdiff", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "fddtalk": {
+            "comment": "vertical integral of net time rate of change of alkalinity", 
+            "dimensions": "longitude latitude time olayer100m", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Rate of Change of Alkalinity", 
+            "standard_name": "integral_wrt_depth_of_tendency_of_sea_water_alkalinity_expressed_as_mole_equivalent", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-2 s-1", 
+            "out_name": "fddtalk", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "hfsifrazil2d": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Heat Flux into Sea Water due to Frazil Ice Formation", 
+            "standard_name": "heat_flux_into_sea_water_due_to_freezing_of_frazil_ice", 
+            "modeling_realm": "ocean seaIce", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "hfsifrazil2d", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "dfe": {
+            "comment": "Dissolved iron in sea water,  including both Fe2+ and Fe3+ ions (but not particulate detrital iron)", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Dissolved Iron Concentration", 
+            "standard_name": "mole_concentration_of_dissolved_iron_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3", 
+            "out_name": "dfe", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "ph": {
+            "comment": "negative log of hydrogen ion concentration with the concentration expressed as mol H kg-1.", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "pH", 
+            "standard_name": "sea_water_ph_reported_on_total_scale", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "1.0", 
+            "out_name": "ph", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "calc": {
+            "comment": "Sum of particulate calcite component concentrations (e.g. Phytoplankton, Detrital, etc.)", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Calcite Concentration", 
+            "standard_name": "mole_concentration_of_calcite_expressed_as_carbon_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3", 
+            "out_name": "calc", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "talknat": {
+            "comment": "total alkalinity equivalent concentration (including carbonate, borate, phosphorus, silicon, and nitrogen components) at preindustrial atmospheric xCO2", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Natural Total Alkalinity", 
+            "standard_name": "seawater_alkalinity_expressed_as_mole_equivalent_natural_component", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3", 
+            "out_name": "talknat", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "a": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: a(k)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "sfdsi": {
+            "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", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Downward Sea Ice Basal Salt Flux", 
+            "standard_name": "downward_sea_ice_basal_salt_flux", 
+            "modeling_realm": "ocean seaIce", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "sfdsi", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "ficeberg": {
+            "comment": "computed as the iceberg melt water  flux into the ocean divided by the area of the ocean portion of the grid cell.", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Water Flux into Sea Water From Icebergs", 
+            "standard_name": "water_flux_into_sea_water_from_icebergs", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "ficeberg", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "tomint": {
+            "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", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "integral wrt depth of product of sea water density and prognostic temperature", 
+            "standard_name": "integral_wrt_depth_of_product_of_sea_water_density_and_prognostic_temperature", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "(kg/m^2)*C", 
+            "out_name": "tomint", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "masscello": {
+            "comment": "Tracer grid-cell mass per unit area used for computing tracer budgets. For Boussinesq models with static ocean grid cell thickness, masscello = rhozero*thickcello, where thickcello is static cell thickness and rhozero is constant Boussinesq reference density. More generally, masscello is time dependent and reported as part of Omon.", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Sea Water Mass Per Unit Area", 
+            "standard_name": "sea_water_mass_per_unit_area", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "kg/m2", 
+            "out_name": "masscello", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "expsi100": {
+            "comment": "", 
+            "dimensions": "longitude latitude time depth100m", 
+            "positive": "down", 
+            "valid_min": "", 
+            "long_name": "Downward Flux of Particulate Silica", 
+            "standard_name": "3cbe53c2-12cc-11e6-b2bc-ac72891c3257", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-2 s-1", 
+            "out_name": "expsi100", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "wfcorr": {
+            "comment": "Positive flux implies correction adds water to ocean.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "down", 
+            "valid_min": "", 
+            "long_name": "Water Flux Correction", 
+            "standard_name": "water_flux_correction", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "wfcorr", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "nh4": {
+            "comment": "", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Dissolved Ammonium Concentration", 
+            "standard_name": "mole_concentration_of_ammonium_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3", 
+            "out_name": "nh4", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "sfriver": {
+            "comment": "This field is physical, and it arises when rivers carry a nonzero salt content.  Often this is zero, with rivers assumed to be fresh.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Salt Flux into Sea Water from Rivers", 
+            "standard_name": "salt_flux_into_sea_water_from_rivers", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "sfriver", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "intdissoc": {
+            "comment": "Vertically integrated DOC (explicit pools only)", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Dissolved Organic Carbon Content", 
+            "standard_name": "ocean_mass_content_of_dissolved_organic_carbon", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2", 
+            "out_name": "intdissoc", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "expfe100": {
+            "comment": "", 
+            "dimensions": "longitude latitude time depth100m", 
+            "positive": "down", 
+            "valid_min": "", 
+            "long_name": "Downward Flux of Particulate Iron", 
+            "standard_name": "sinking_mole_flux_of_particulate_iron_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-2 s-1", 
+            "out_name": "expfe100", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "thetao": {
+            "comment": "Diagnostic should be contributed even for models using conservative temperature as prognostic field.", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Sea Water Potential Temperature", 
+            "standard_name": "sea_water_potential_temperature", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "degree_C", 
+            "out_name": "thetao", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "msftmzsmpa": {
+            "comment": "Report only if there is a submesoscale eddy parameterization.", 
+            "dimensions": "latitude olevel basin time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "ocean meridional overturning mass streamfunction due to parameterized submesoscale advection", 
+            "standard_name": "ocean_meridional_overturning_mass_streamfunction_due_to_parameterized_submesoscale_advection", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean longitude: mean", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "kg s-1", 
+            "out_name": "msftmzsmpa", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "p0": {
+            "units": "Pa", 
+            "long_name": "vertical coordinate formula term: reference pressure", 
+            "type": "", 
+            "dimensions": ""
+        }, 
+        "b": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: b(k)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "wfo": {
+            "comment": "computed as the water  flux into the ocean divided by the area of the ocean portion of the grid cell.  This is the sum of the next two variables in this table.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Water Flux into Sea Water", 
+            "standard_name": "water_flux_into_sea_water", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "wfo", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "zfull": {
+            "comment": "", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Depth Below Geoid of Ocean Layer", 
+            "standard_name": "depth_below_geoid", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "m", 
+            "out_name": "zfull", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "hfsifrazil": {
+            "comment": "", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Heat Flux into Sea Water due to Frazil Ice Formation", 
+            "standard_name": "heat_flux_into_sea_water_due_to_freezing_of_frazil_ice", 
+            "modeling_realm": "ocean seaIce", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "hfsifrazil", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "intpbsi": {
+            "comment": "Vertically integrated biogenic silica production", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Silica Production", 
+            "standard_name": "tendency_of_ocean_mole_content_of_silicon_due_to_biological_production", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-2 s-1", 
+            "out_name": "intpbsi", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "tosga": {
+            "comment": "This may differ from 'surface temperature' in regions of sea ice.This may differ from 'surface temperature' in regions of sea ice.For models using conservative temperature as prognostic field, they should report the SST as surface potent", 
+            "dimensions": "time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Global Average Sea Surface Temperature", 
+            "standard_name": "sea_surface_temperature", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "degree_C", 
+            "out_name": "tosga", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "uo": {
+            "comment": "Prognostic x-ward velocity component resolved by the model.", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Sea Water X Velocity", 
+            "standard_name": "sea_water_x_velocity", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "m s-1", 
+            "out_name": "uo", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "tauuo": {
+            "comment": "This is the stress on the liquid ocean from overlying atmosphere, sea ice, ice shelf, etc.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "down", 
+            "valid_min": "", 
+            "long_name": "Surface Downward X Stress", 
+            "standard_name": "surface_downward_x_stress", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "N m-2", 
+            "out_name": "tauuo", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "mlotst": {
+            "comment": "Sigma T is potential density referenced to ocean surface.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Ocean Mixed Layer Thickness Defined by Sigma T", 
+            "standard_name": "ocean_mixed_layer_thickness_defined_by_sigma_t", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "m", 
+            "out_name": "mlotst", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "expc": {
+            "comment": "Downward flux of particulate organic carbon", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "down", 
+            "valid_min": "", 
+            "long_name": "Sinking Particulate Organic Carbon Flux", 
+            "standard_name": "sinking_mole_flux_of_particulate_organic_matter_expressed_as_carbon_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-2 s-1", 
+            "out_name": "expc", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "phycalc": {
+            "comment": "carbon concentration from calcareous (calcite-producing) phytoplankton component alone", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Mole Concentration of Calcareous Phytoplankton expressed as Carbon in Sea Water", 
+            "standard_name": "mole_concentration_of_calcareous_phytoplankton_expressed_as_carbon_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3", 
+            "out_name": "phycalc", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "k_c": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: k_c", 
+            "type": "integer", 
+            "dimensions": ""
+        }, 
+        "fgcfc11": {
+            "comment": "gas exchange flux of CFC11", 
+            "dimensions": "longitude latitude time", 
+            "positive": "down", 
+            "valid_min": "", 
+            "long_name": "Surface Downward CFC11 flux", 
+            "standard_name": "surface_downward_mole_flux_of_cfc11", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "mol sec-1 m-2", 
+            "out_name": "fgcfc11", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "a_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: a(k+1/2)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "fgco2nat": {
+            "comment": "Gas exchange flux of natural CO2 (positive into ocean)", 
+            "dimensions": "longitude latitude time", 
+            "positive": "down", 
+            "valid_min": "", 
+            "long_name": "Surface Downward natural CO2 Flux", 
+            "standard_name": "surface_downward_mass_flux_of_natural_carbon_dioxide_expressed_as_carbon", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "fgco2nat", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "htovovrt": {
+            "comment": "From all advective mass transport processes, resolved and parameterized.", 
+            "dimensions": "latitude basin time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Northward Ocean Heat Transport due to Overturning", 
+            "standard_name": "northward_ocean_heat_transport_due_to_overturning", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean longitude: mean", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "W", 
+            "out_name": "htovovrt", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "chlpico": {
+            "comment": "chlorophyll concentration from the picophytoplankton (<2 um) component alone", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Mass Concentration of Picophytoplankton expressed as Chlorophyll in Sea Water", 
+            "standard_name": "mass_concentration_of_picophytoplankton_expressed_as_chlorophyll_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-3", 
+            "out_name": "chlpico", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "sf6": {
+            "comment": "", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Moles Per Unit Mass of SF6 in Sea Water", 
+            "standard_name": "moles_of_sf6_per_unit_mass_in_sea_water", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol kg-1", 
+            "out_name": "sf6", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "dissicabio": {
+            "comment": "Abiotic Dissolved inorganic carbon (CO3+HCO3+H2CO3) concentration", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Abiotic Dissolved Inorganic Carbon Concentration", 
+            "standard_name": "mole_concentration_of_dissolved_inorganic_carbon_in_sea_water_abiotic_component", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3", 
+            "out_name": "dissicabio", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "tauvcorr": {
+            "comment": "This is the stress on the liquid ocean from overlying atmosphere, sea ice, ice shelf, etc.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "down", 
+            "valid_min": "", 
+            "long_name": "Surface Downward Y Stress Correction", 
+            "standard_name": "surface_downward_y_stress_correction", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "N m-2", 
+            "out_name": "tauvcorr", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "hfss": {
+            "comment": "This is defined as 'where ice_free_sea over sea'", 
+            "dimensions": "longitude latitude time", 
+            "positive": "down", 
+            "valid_min": "", 
+            "long_name": "Surface Downward Sensible Heat Flux", 
+            "standard_name": "surface_downward_sensible_heat_flux", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean area: mean where ice_free_sea over sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "hfss", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "ap_bnds": {
+            "units": "Pa", 
+            "long_name": "vertical coordinate formula term: ap(k+1/2)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "vo": {
+            "comment": "Prognostic x-ward velocity component resolved by the model.", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Sea Water Y Velocity", 
+            "standard_name": "sea_water_y_velocity", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "m s-1", 
+            "out_name": "vo", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "ap": {
+            "units": "Pa", 
+            "long_name": "vertical coordinate formula term: ap(k)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "phydiaz": {
+            "comment": "carbon concentration from the diazotrophic phytoplankton component alone", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Mole Concentration of Diazotrophs Expressed as Carbon in Sea Water", 
+            "standard_name": "mole_concentration_of_diazotrophs_expressed_as_carbon_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3", 
+            "out_name": "phydiaz", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "tossq": {
+            "comment": "square of temperature of liquid ocean, averaged over the day.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Square of Sea Surface Temperature", 
+            "standard_name": "square_of_sea_surface_temperature", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "degree_C2", 
+            "out_name": "tossq", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "prsn": {
+            "comment": "at surface; includes precipitation of all forms of water in the solid phase", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Snowfall Flux where Ice Free Ocean over Sea", 
+            "standard_name": "snowfall_flux", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean area: mean where ice_free_sea over sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "prsn", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "limirrcalc": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Irradiance limitation of Calcareous Phytoplankton", 
+            "standard_name": "irradiance_limitation_of_calcareous_phytoplankton", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "1.0", 
+            "out_name": "limirrcalc", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "zlev": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: zlev(k)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "phydiat": {
+            "comment": "carbon from the diatom phytoplankton component concentration alone", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Mole Concentration of Diatoms expressed as Carbon in Sea Water", 
+            "standard_name": "mole_concentration_of_diatoms_expressed_as_carbon_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3", 
+            "out_name": "phydiat", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "hfbasin": {
+            "comment": "Contains contributions from all physical processes affecting the northward heat transport, including resolved advection, parameterized advection, lateral diffusion, etc. Diagnosed here as a function of latitude and basin.   Use Celsius for temperature scale.", 
+            "dimensions": "latitude basin time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Northward Ocean Heat Transport", 
+            "standard_name": "northward_ocean_heat_transport", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "W", 
+            "out_name": "hfbasin", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "bigthetaoga": {
+            "comment": "Diagnostic should be contributed only for models using conservative temperature as prognostic field.", 
+            "dimensions": "time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Global Average Sea Water Conservative Temperature", 
+            "standard_name": "sea_water_conservative_temperature", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "degree_C", 
+            "out_name": "bigthetaoga", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "fddtdic": {
+            "comment": "", 
+            "dimensions": "longitude latitude time olayer100m", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Rate of Change of Net Dissolved Inorganic Carbon", 
+            "standard_name": "tendency_of_ocean_mole_content_of_dissolved_inorganic_carbon", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-2 s-1", 
+            "out_name": "fddtdic", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "intpbn": {
+            "comment": "Vertically integrated biogenic nitrogen production", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Nitrogen Production", 
+            "standard_name": "tendency_of_ocean_mole_content_of_nitrogen_due_to_biological_production", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-2 s-1", 
+            "out_name": "intpbn", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "zoocmisc": {
+            "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", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Other Zooplankton Carbon Concentration", 
+            "standard_name": "mole_concentration_of_miscellaneous_zooplankton_expressed_as_carbon_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3", 
+            "out_name": "zoocmisc", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "msftyzsmpa": {
+            "comment": "Report only if there is a submesoscale eddy parameterization.", 
+            "dimensions": "latitude olevel basin time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "ocean Y overturning mass streamfunction due to parameterized submesoscale advection", 
+            "standard_name": "ocean_meridional_overturning_mass_streamfunction_due_to_parameterized_submesoscale_advection", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean longitude: mean", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "kg s-1", 
+            "out_name": "msftyzsmpa", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "intparag": {
+            "comment": "Vertically integrated aragonite production", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Aragonite Production", 
+            "standard_name": "tendency_of_ocean_mole_content_of_aragonite_expressed_as_carbon_due_to_biological_production", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-2 s-1", 
+            "out_name": "intparag", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "fbddtdife": {
+            "comment": "vertical integral of net biological terms in time rate of change of dissolved inorganic iron", 
+            "dimensions": "longitude latitude time olayer100m", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Rate of Change of Dissolved Inorganic Iron due to Biological Activity", 
+            "standard_name": "tendency_of_ocean_mole_content_of_dissolved_inorganic_iron_due_to_biological_processes", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-2 s-1", 
+            "out_name": "fbddtdife", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "si": {
+            "comment": "", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Dissolved Silicate Concentration", 
+            "standard_name": "mole_concentration_of_silicate_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3", 
+            "out_name": "si", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "dissicnat": {
+            "comment": "Dissolved inorganic carbon (CO3+HCO3+H2CO3) concentration at preindustrial atmospheric xCO2", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Natural Dissolved Inorganic Carbon Concentration", 
+            "standard_name": "mole_concentration_of_dissolved_inorganic_carbon_in_sea_water_natural_component", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3", 
+            "out_name": "dissicnat", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "zos": {
+            "comment": "This is the dynamic sea level, so should have zero global area mean. It should not include inverse barometer depressions from sea ice.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Sea Surface Height Above Geoid", 
+            "standard_name": "sea_surface_height_above_geoid", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "m", 
+            "out_name": "zos", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "fgsf6": {
+            "comment": "gas exchange flux of SF6", 
+            "dimensions": "longitude latitude time", 
+            "positive": "down", 
+            "valid_min": "", 
+            "long_name": "Surface Downward SF6 flux", 
+            "standard_name": "surface_downward_mole_flux_of_sf6", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "mol sec-1 m-2", 
+            "out_name": "fgsf6", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "masso": {
+            "comment": "Total mass of liquid seawater. For Boussinesq models, report this diagnostic as Boussinesq reference density times total volume.", 
+            "dimensions": "time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Sea Water Mass", 
+            "standard_name": "sea_water_mass", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean area: sum where sea", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "kg", 
+            "out_name": "masso", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "vsfriver": {
+            "comment": "zero for models using real water fluxes.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Virtual Salt Flux into Sea Water From Rivers", 
+            "standard_name": "virtual_salt_flux_into_sea_water_from_rivers", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "vsfriver", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "po4": {
+            "comment": "", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Dissolved Phosphate Concentration", 
+            "standard_name": "mole_concentration_of_phosphate_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3", 
+            "out_name": "po4", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "detoc": {
+            "comment": "Sum of detrital organic carbon component concentrations", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Detrital Organic Carbon Concentration", 
+            "standard_name": "mole_concentration_of_organic_detritus_expressed_as_carbon_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3", 
+            "out_name": "detoc", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "intdissic": {
+            "comment": "Vertically integrated DIC", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Dissolved Inorganic Carbon Content", 
+            "standard_name": "ocean_mass_content_of_dissolved_inorganic_carbon", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2", 
+            "out_name": "intdissic", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "b_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: b(k+1/2)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "phyp": {
+            "comment": "sum of phytoplankton phosphorus components", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Phytoplankton Phosphorus Concentration", 
+            "standard_name": "mole_concentration_of_phytoplankton_expressed_as_phosphorus_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3", 
+            "out_name": "phyp", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "msftyzmpa": {
+            "comment": "CMIP5 called this 'due to Bolus Advection'.  Name change respects the more general physics of the mesoscale parameterizations.", 
+            "dimensions": "latitude olevel basin time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "ocean Y overturning mass streamfunction due to parameterized mesoscale advection", 
+            "standard_name": "ocean_y_overturning_mass_streamfunction_due_to_parameterized_mesoscale_advection", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean longitude: mean", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "kg s-1", 
+            "out_name": "msftyzmpa", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "ocfriver": {
+            "comment": "Organic Carbon supply to ocean through runoff (separate from gas exchange)", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Flux of Organic Carbon Into Ocean Surface by Runoff", 
+            "standard_name": "tendency_of_ocean_mole_content_of_organic_carbon_due_to_runoff_and_sediment_dissolution", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-2 s-1", 
+            "out_name": "ocfriver", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "thetaoga": {
+            "comment": "Diagnostic should be contributed even for models using conservative temperature as prognostic field", 
+            "dimensions": "time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Global Average Sea Water Potential Temperature", 
+            "standard_name": "sea_water_potential_temperature", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "degree_C", 
+            "out_name": "thetaoga", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "msftmyz": {
+            "comment": "Overturning mass streamfunction arising from all advective mass transport processes, resolved and parameterized.", 
+            "dimensions": "latitude olevel basin time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Ocean Meridional Overturning Mass Streamfunction", 
+            "standard_name": "ocean_meridional_overturning_mass_streamfunction", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean longitude: mean", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "kg s-1", 
+            "out_name": "msftmyz", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "fddtdife": {
+            "comment": "vertical integral of net time rate of change of dissolved inorganic iron", 
+            "dimensions": "longitude latitude time olayer100m", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Rate of Change of Net Dissolved Inorganic Iron", 
+            "standard_name": "tendency_of_ocean_mole_content_of_dissolved_inorganic_iron", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-2 s-1", 
+            "out_name": "fddtdife", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "fgco2abio": {
+            "comment": "Gas exchange flux of abiotic CO2 (positive into ocean)", 
+            "dimensions": "longitude latitude time", 
+            "positive": "down", 
+            "valid_min": "", 
+            "long_name": "Surface Downward abiotic CO2 Flux", 
+            "standard_name": "surface_downward_mass_flux_of_abiotic_carbon_dioxide_expressed_as_carbon", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "fgco2abio", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "phyc": {
+            "comment": "sum of phytoplankton carbon component concentrations.  In most (all?) cases this is the sum of phycdiat and phycmisc (i.e., 'Diatom Carbon Concentration' and 'Non-Diatom Phytoplankton Carbon Concentration'", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Phytoplankton Carbon Concentration", 
+            "standard_name": "mole_concentration_of_phytoplankton_expressed_as_carbon_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3", 
+            "out_name": "phyc", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "msftbarot": {
+            "comment": "Streamfunction or its approximation for free surface models. See OMDP document for details.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Ocean Barotropic Mass Streamfunction", 
+            "standard_name": "ocean_barotropic_mass_streamfunction", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "kg s-1", 
+            "out_name": "msftbarot", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "hfibthermds": {
+            "comment": "", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Heat Flux into Sea Water due to Iceberg Thermodynamics", 
+            "standard_name": "heat_flux_into_sea_water_due_to_iceberg_thermodynamics", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "hfibthermds", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "phyn": {
+            "comment": "sum of phytoplankton nitrogen component concentrations", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Phytoplankton Nitrogen Concentration", 
+            "standard_name": "mole_concentration_of_phytoplankton_expressed_as_nitrogen_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3", 
+            "out_name": "phyn", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "zlev_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: zlev(k+1/2)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "thkcello": {
+            "comment": "", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Ocean Model Cell Thickness", 
+            "standard_name": "cell_thickness", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "m", 
+            "out_name": "thkcello", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "hfy": {
+            "comment": "Contains all contributions to 'y-ward' heat transport from resolved and parameterized processes. Use Celsius for temperature scale.", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Ocean Heat Y Transport", 
+            "standard_name": "ocean_heat_y_transport", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "W", 
+            "out_name": "hfy", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "hfx": {
+            "comment": "Contains all contributions to 'x-ward' heat transport from resolved and parameterized processes.  Use Celsius for temperature scale.", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Ocean Heat X Transport", 
+            "standard_name": "ocean_heat_x_transport", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "W", 
+            "out_name": "hfx", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "chlcalc": {
+            "comment": "chlorophyll concentration from the calcite-producing phytoplankton component alone", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Mass Concentration of Calcareous Phytoplankton expressed as Chlorophyll in Sea Water", 
+            "standard_name": "mass_concentration_of_calcareous_phytoplankton_expressed_as_chlorophyll_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-3", 
+            "out_name": "chlcalc", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "agessc": {
+            "comment": "Time elapsed since water was last in surface layer of the ocean.", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Sea Water Age Since Surface Contact", 
+            "standard_name": "sea_water_age_since_surface_contact", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "yr", 
+            "out_name": "agessc", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "limirrmisc": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Irradiance Limitation of Other Phytoplankton", 
+            "standard_name": "irradiance_limitation_of_miscellaneous_phytoplankton", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "1.0", 
+            "out_name": "limirrmisc", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "zhalf": {
+            "comment": "", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Depth Below Geoid of Interfaces Between Ocean Layers", 
+            "standard_name": "depth_below_geoid", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "m", 
+            "out_name": "zhalf", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "fsn": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "down", 
+            "valid_min": "", 
+            "long_name": "Surface Downward Net Flux of Nitrogen", 
+            "standard_name": "tendency_of_ocean_mole_content_of_elemental_nitrogen_due_to_deposition_and_fixation_and_runoff", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-2 s-1", 
+            "out_name": "fsn", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "depth": {
+            "units": "m", 
+            "long_name": "Sea Floor Depth: formula term: thetao", 
+            "type": "real", 
+            "dimensions": "longitude latitude"
+        }, 
+        "msftmrhompa": {
+            "comment": "CMIP5 called this 'due to Bolus Advection'.  Name change respects the more general physics of the mesoscale parameterizations.", 
+            "dimensions": "latitude rho basin time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "ocean meridional overturning mass streamfunction due to parameterized mesoscale advection", 
+            "standard_name": "ocean_meridional_overturning_mass_streamfunction_due_to_parameterized_mesoscale_advection", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean longitude: mean", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "kg s-1", 
+            "out_name": "msftmrhompa", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "so": {
+            "comment": "", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Sea Water Salinity", 
+            "standard_name": "sea_water_salinity", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "0.001", 
+            "out_name": "so", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "hfbasinpadv": {
+            "comment": "Contributions to heat transport from parameterized eddy-induced advective transport due to any subgrid advective process. Diagnosed here as a function of latitude and basin.  Use Celsius for temperature scale.", 
+            "dimensions": "latitude basin time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "northward ocean heat transport due to parameterized eddy advection", 
+            "standard_name": "northward_ocean_heat_transport_due_to_parameterized_eddy_advection", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "W", 
+            "out_name": "hfbasinpadv", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "somint": {
+            "comment": "Full column sum of density*cell thickness*prognostic salinity. If the model is Boussinesq, then use Boussinesq reference density for the density factor.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "integral wrt depth of product of sea water density and prognostic salinity", 
+            "standard_name": "integral_wrt_depth_of_product_of_sea_water_density_and_prognostic_salinity", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "(kg/m^2)*1e-3", 
+            "out_name": "somint", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "sigma": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: sigma(k)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "talk": {
+            "comment": "total alkalinity equivalent concentration (including carbonate, nitrogen, silicate, and borate components)", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Total Alkalinity", 
+            "standard_name": "sea_water_alkalinity_expressed_as_mole_equivalent", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3", 
+            "out_name": "talk", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }
+    }
+}
diff --git a/TestTables/CMIP6_Oyr.json b/TestTables/CMIP6_Oyr.json
new file mode 100644
index 0000000..5535dc1
--- /dev/null
+++ b/TestTables/CMIP6_Oyr.json
@@ -0,0 +1,4007 @@
+{
+    "Header": {
+        "product": "output", 
+        "approx_interval": "365.00000", 
+        "realm": "ocnBgchem", 
+        "cmor_version": "3.1", 
+        "Conventions": "CF-1.6 CMIP-6.0", 
+        "frequency": "yr", 
+        "table_id": "Table Oyr", 
+        "data_specs_version": "01.beta.29", 
+        "mip_era": "CMIP6", 
+        "generic_levels": "olevel", 
+        "missing_value": "1e20", 
+        "table_date": "14 June 2016"
+    }, 
+    "axis_entry": {
+        "typebare": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "bare_ground", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "tau": {
+            "requested": [
+                "0.15", 
+                "0.8", 
+                "2.45", 
+                "6.5", 
+                "16.2", 
+                "41.5", 
+                "100."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "0.0", 
+                "0.3", 
+                "0.3", 
+                "1.3", 
+                "1.3", 
+                "3.6", 
+                "3.6", 
+                "9.4", 
+                "9.4", 
+                "23.0", 
+                "23.0", 
+                "60.0", 
+                "60.0", 
+                "100000."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "cloud optical thickness", 
+            "standard_name": "atmosphere_optical_thickness_due_to_cloud", 
+            "value": "", 
+            "out_name": "tau", 
+            "type": "double", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "olayer100m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "0. 100.", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "50.0", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "100.0", 
+            "axis": "Z"
+        }, 
+        "spectband": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "Spectral Band", 
+            "standard_name": "wave_frequency", 
+            "value": "", 
+            "out_name": "spectband", 
+            "type": "double", 
+            "units": "s-1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "ocean_sigma_z": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "sigma: sigma eta: eta depth: depth depth_c: depth_c nsigma: nsigma zlev: zlev", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "sigma: sigma_bnds eta: eta depth: depth depth_c: depth_c nsigma: nsigma zlev: zlev_bnds", 
+            "bounds_values": "", 
+            "long_name": "ocean sigma over z coordinate", 
+            "standard_name": "ocean_sigma_z", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "for k <= nsigma: z(n,k,j,i) = eta(n,j,i) + sigma(k)*(min(depth_c,depth(j,i))+eta(n,j,i)) ; for k > nsigma: z(n,k,j,i) = zlev(k)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev19": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000.", 
+                "500.", 
+                "100."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "p220": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "44000. 0.0", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "22000.0", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev17": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev10": {
+            "requested": [
+                "100000.", 
+                "85000.", 
+                "70000.", 
+                "50000.", 
+                "25000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "site": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "site index", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "site", 
+            "type": "integer", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "smooth_level": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "a: a b1: b1 b2: b2 ztop: ztop zsurf1: zsurf1 zsurf2: zsurf2", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-200.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "a: a_bnds b1: b1_bnds b2: b2_bnds ztop: ztop zsurf1: zsurf1 zsurf2: zsurf2", 
+            "bounds_values": "", 
+            "long_name": "atmosphere smooth level vertical (SLEVE) coordinate", 
+            "standard_name": "atmosphere_sleve_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "m", 
+            "formula": "z = a*ztop + b1*zsurf1 + b2*zsurf2", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "800000.0", 
+            "axis": "Z"
+        }, 
+        "p840": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "100000. 68000.", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "84000.0", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "ocean_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "sigma: lev eta: eta depth: depth", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "sigma: lev_bnds eta: eta depth: depth", 
+            "bounds_values": "", 
+            "long_name": "ocean sigma coordinate", 
+            "standard_name": "ocean_sigma_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "z(n,k,j,i) = eta(n,j,i) + sigma(k)*(depth(j,i)+eta(n,j,i))", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "0.0", 
+            "axis": "Z"
+        }, 
+        "depth0m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "0.0", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "100.0", 
+            "axis": "Z"
+        }, 
+        "ocean_s": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "s: lev eta: eta depth: depth a: a_coeff b: b_coeff depth_c: depth_c", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "s: lev_bnds eta: eta depth: depth a: a b: b depth_c: depth_c", 
+            "bounds_values": "", 
+            "long_name": "ocean s-coordinate", 
+            "standard_name": "ocean_s_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "z(n,k,j,i) = eta(n,j,i)*(1+s(k)) + depth_c*s(k) + (depth(j,i)-depth_c)*C(k) n where n C(k)=(1-b)*sinh(a*s(k))/sinh(a) +n           b*(tanh(a*(s(k)+0.5))/(2*tanh(0.5*a)) - 0.5)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "0.0", 
+            "axis": "Z"
+        }, 
+        "plev4s": {
+            "requested": [
+                "85000.", 
+                "50000.", 
+                "20000.", 
+                "5000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "typec4pft": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "c4_plant_functional_types", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "plev3h": {
+            "requested": [
+                "10000.", 
+                "1000.", 
+                "100."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "height2m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "up", 
+            "must_have_bounds": "no", 
+            "valid_min": "1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "height", 
+            "standard_name": "height", 
+            "value": "2.0", 
+            "out_name": "height", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "10.0", 
+            "axis": "Z"
+        }, 
+        "time1": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "time", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "plev7h": {
+            "requested": [
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "25000.", 
+                "5000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "sza5": {
+            "requested": [
+                "0.", 
+                "20.", 
+                "40.", 
+                "60.", 
+                "80."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "solar zenith angle", 
+            "standard_name": "solar_zenith_angle", 
+            "value": "", 
+            "out_name": "sza", 
+            "type": "double", 
+            "units": "degree", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "depth_coord": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "ocean depth coordinate", 
+            "standard_name": "depth", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "12000.0", 
+            "axis": "Z"
+        }, 
+        "sdepth1": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "0.0 0.1", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "0.05", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "0.2", 
+            "axis": "Z"
+        }, 
+        "alternate_hybrid_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "ap: ap b: b ps: ps", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "ap: ap_bnds b: b_bnds ps: ps", 
+            "bounds_values": "", 
+            "long_name": "hybrid sigma pressure coordinate", 
+            "standard_name": "atmosphere_hybrid_sigma_pressure_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "1", 
+            "formula": "p = ap + b*ps", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "1.0", 
+            "axis": "Z"
+        }, 
+        "time2": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "time", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "yes", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "time3": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "Diurnal cycle: monthly mean of the diurnal cycle (1 hour steps).", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "oline": {
+            "requested": [
+                "barents_opening", 
+                "bering_strait", 
+                "canadian_archipelago", 
+                "denmark_strait", 
+                "drake_passage", 
+                "english_channel", 
+                "pacific_equatorial_undercurrent", 
+                "faroe_scotland_channel", 
+                "florida_bahamas_strait", 
+                "fram_strait", 
+                "iceland_faroe_channel", 
+                "indonesian_thoughflow", 
+                "mozambique_channel", 
+                "taiwan_luzon_straits", 
+                "windward_passage"
+            ], 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "ocean passage", 
+            "standard_name": "region", 
+            "value": "", 
+            "out_name": "line", 
+            "type": "character", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "plev14": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "25000.", 
+                "15000.", 
+                "10000.", 
+                "5000.", 
+                "2000.", 
+                "1000.", 
+                "500.", 
+                "100."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev8": {
+            "requested": [
+                "100000.", 
+                "85000.", 
+                "70000.", 
+                "50000.", 
+                "25000.", 
+                "10000.", 
+                "5000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "location": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "location index", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "loc", 
+            "type": "integer", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "latitude": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-90.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "latitude", 
+            "standard_name": "latitude", 
+            "value": "", 
+            "out_name": "lat", 
+            "type": "double", 
+            "units": "degrees_north", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "90.0", 
+            "axis": "Y"
+        }, 
+        "plev3": {
+            "requested": [
+                "85000.", 
+                "50000.", 
+                "25000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "basin": {
+            "requested": [
+                "atlantic_arctic_ocean", 
+                "indian_pacific_ocean", 
+                "global_ocean"
+            ], 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "ocean basin", 
+            "standard_name": "region", 
+            "value": "", 
+            "out_name": "basin", 
+            "type": "character", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "p700": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "700 hPa", 
+            "standard_name": "air_pressure", 
+            "value": "70000.", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev7": {
+            "requested": [
+                "90000.", 
+                "74000.", 
+                "62000.", 
+                "50000.", 
+                "37500.", 
+                "24500.", 
+                "9000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "100000.", 
+                "80000.", 
+                "80000.", 
+                "68000.", 
+                "68000.", 
+                "56000.", 
+                "56000.", 
+                "44000.", 
+                "44000.", 
+                "31000.", 
+                "31000.", 
+                "18000.", 
+                "18000.", 
+                " 0."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev4": {
+            "requested": [
+                "92500.", 
+                "85000.", 
+                "50000.", 
+                "25000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev23": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000.", 
+                "700.", 
+                "500.", 
+                "300.", 
+                "200.", 
+                "100.", 
+                "40."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev39": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "17000.", 
+                "15000.", 
+                "13000.", 
+                "11500.", 
+                "10000.", 
+                "9000.", 
+                "8000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1500.", 
+                "1000.", 
+                "700.", 
+                "500.", 
+                "300.", 
+                "200.", 
+                "150.", 
+                "100.", 
+                "70.", 
+                "50.", 
+                "40.", 
+                "30.", 
+                "20.", 
+                "15.", 
+                "10.", 
+                "7.", 
+                "5.", 
+                "3."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "typepever": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "primary_evergreen_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "typesdec": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "secondary_decidous_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "plev27": {
+            "requested": [
+                "100000.", 
+                "97500.", 
+                "95000.", 
+                "92500.", 
+                "90000.", 
+                "87500.", 
+                "85000.", 
+                "82500.", 
+                "80000.", 
+                "77500.", 
+                "75000.", 
+                "70000.", 
+                "65000.", 
+                "60000.", 
+                "55000.", 
+                "50000.", 
+                "45000.", 
+                "40000.", 
+                "35000.", 
+                "30000.", 
+                "25000.", 
+                "22500.", 
+                "20000.", 
+                "17500.", 
+                "15000.", 
+                "12500.", 
+                "10000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "alt40": {
+            "requested": [
+                "240.", 
+                "720.", 
+                "1200.", 
+                "1680.", 
+                "2160.", 
+                "2640.", 
+                "3120.", 
+                "3600.", 
+                "4080.", 
+                "4560.", 
+                "5040.", 
+                "5520.", 
+                "6000.", 
+                "6480.", 
+                "6960.", 
+                "7440.", 
+                "7920.", 
+                "8400.", 
+                "8880.", 
+                "9360.", 
+                "9840.", 
+                "10320.", 
+                "10800.", 
+                "11280.", 
+                "11760.", 
+                "12240.", 
+                "12720.", 
+                "13200.", 
+                "13680.", 
+                "14160.", 
+                "14640.", 
+                "15120.", 
+                "15600.", 
+                "16080.", 
+                "16560.", 
+                "17040.", 
+                "17520.", 
+                "18000.", 
+                "18480.", 
+                "18960."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "0.", 
+                "480.", 
+                "480.", 
+                "960.", 
+                "960.", 
+                "1440.", 
+                "1440.", 
+                "1920.", 
+                "1920.", 
+                "2400.", 
+                "2400.", 
+                "2880.", 
+                "2880.", 
+                "3360.", 
+                "3360.", 
+                "3840.", 
+                "3840.", 
+                "4320.", 
+                "4320.", 
+                "4800.", 
+                "4800.", 
+                "5280.", 
+                "5280.", 
+                "5760.", 
+                "5760.", 
+                "6240.", 
+                "6240.", 
+                "6720.", 
+                "6720.", 
+                "7200.", 
+                "7200.", 
+                "7680.", 
+                "7680.", 
+                "8160.", 
+                "8160.", 
+                "8640.", 
+                "8640.", 
+                "9120.", 
+                "9120.", 
+                "9600.", 
+                "9600.", 
+                "10080.", 
+                "10080.", 
+                "10560.", 
+                "10560.", 
+                "11040.", 
+                "11040.", 
+                "11520.", 
+                "11520.", 
+                "12000.", 
+                "12000.", 
+                "12480.", 
+                "12480.", 
+                "12960.", 
+                "12960.", 
+                "13440.", 
+                "13440.", 
+                "13920.", 
+                "13920.", 
+                "14400.", 
+                "14400.", 
+                "14880.", 
+                "14880.", 
+                "15360.", 
+                "15360.", 
+                "15840.", 
+                "15840.", 
+                "16320.", 
+                "16320.", 
+                "16800.", 
+                "16800.", 
+                "17280.", 
+                "17280.", 
+                "17760.", 
+                "17760.", 
+                "18240.", 
+                "18240.", 
+                "18720.", 
+                "18720.", 
+                "19200."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "altitude", 
+            "standard_name": "altitude", 
+            "value": "", 
+            "out_name": "alt40", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "time": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "time", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "plev7c": {
+            "requested": [
+                "90000.", 
+                "74000.", 
+                "62000.", 
+                "50000.", 
+                "37500.", 
+                "24500.", 
+                "9000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "height10m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "up", 
+            "must_have_bounds": "no", 
+            "valid_min": "1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "height", 
+            "standard_name": "height", 
+            "value": "10.0", 
+            "out_name": "height", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "30.0", 
+            "axis": "Z"
+        }, 
+        "dbze": {
+            "requested": [
+                "-47.5", 
+                "-42.5", 
+                "-37.5", 
+                "-32.5", 
+                "-27.5", 
+                "-22.5", 
+                "-17.5", 
+                "-12.5", 
+                "-7.5", 
+                "-2.5", 
+                "2.5", 
+                "7.5", 
+                "12.5", 
+                "17.5", 
+                "22.5"
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "-50", 
+                "-45", 
+                "-45", 
+                "-40", 
+                "-40", 
+                "-35", 
+                "-35", 
+                "-30", 
+                "-30", 
+                "-25", 
+                "-25", 
+                "-20", 
+                "-20", 
+                "-15", 
+                "-15", 
+                "-10", 
+                "-10", 
+                "-5", 
+                "-5", 
+                "0", 
+                "0", 
+                "5", 
+                "5", 
+                "10", 
+                "10", 
+                "15", 
+                "15", 
+                "20", 
+                "20", 
+                "25."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "CloudSat simulator equivalent radar reflectivity factor", 
+            "standard_name": "equivalent_reflectivity_factor", 
+            "value": "", 
+            "out_name": "dbze", 
+            "type": "double", 
+            "units": "dBZ", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "typesever": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "secondary_evergreen_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "rho": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "density++++?", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "rho", 
+            "type": "double", 
+            "units": "kg m-3", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "depth100m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "80.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "100.0", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "120.0", 
+            "axis": "Z"
+        }, 
+        "effectRadLi": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "Effective Radius of Liquid Aerosols", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "effectRadLi", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "sdepth": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "200.0", 
+            "axis": "Z"
+        }, 
+        "vegtype": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "plant functional type", 
+            "standard_name": "area_type", 
+            "value": "", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "typec3pft": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "c3_plant_functional_types", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "natural_log_pressure": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "p0: p0 lev: lev", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "p0: p0 lev: lev_bnds", 
+            "bounds_values": "", 
+            "long_name": "atmosphere natural log pressure coordinate", 
+            "standard_name": "atmosphere_ln_pressure_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "p = p0 * exp(-lev)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "20.0", 
+            "axis": "Z"
+        }, 
+        "scatratio": {
+            "requested": [
+                "0.005", 
+                "0.605", 
+                "2.1", 
+                "4.", 
+                "6.", 
+                "8.5", 
+                "12.5", 
+                "17.5", 
+                "22.5", 
+                "27.5", 
+                "35.", 
+                "45.", 
+                "55.", 
+                "70.", 
+                "50040."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "0.", 
+                "0.01", 
+                "0.01", 
+                "1.2", 
+                "1.2", 
+                "3.", 
+                "3.", 
+                "5.", 
+                "5.", 
+                "7.", 
+                "7.", 
+                "10.", 
+                "10.", 
+                "15.", 
+                "15.", 
+                "20.", 
+                "20.", 
+                "25.", 
+                "25.", 
+                "30.", 
+                "30.", 
+                "40.", 
+                "40.", 
+                "50.", 
+                "50.", 
+                "60.", 
+                "60.", 
+                "80.", 
+                "80.", 
+                "100000."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "lidar backscattering ratio", 
+            "standard_name": "backscattering_ratio", 
+            "value": "", 
+            "out_name": "scatratio", 
+            "type": "double", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "standard_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "ptop: ptop sigma: lev ps: ps", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "ptop: ptop sigma: lev_bnds ps: ps", 
+            "bounds_values": "", 
+            "long_name": "sigma coordinate", 
+            "standard_name": "atmosphere_sigma_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "p = ptop + sigma*(ps - ptop)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "1.0", 
+            "axis": "Z"
+        }, 
+        "typepdec": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "primary_deciduous_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "hybrid_height": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "a: lev b: b orog: orog", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "a: lev_bnds b: b_bnds orog: orog", 
+            "bounds_values": "", 
+            "long_name": "hybrid height coordinate", 
+            "standard_name": "atmosphere_hybrid_height_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "m", 
+            "formula": "z = a + b*orog", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "longitude": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "longitude", 
+            "standard_name": "longitude", 
+            "value": "", 
+            "out_name": "lon", 
+            "type": "double", 
+            "units": "degrees_east", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "360.0", 
+            "axis": "X"
+        }, 
+        "effectRadIc": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "Effective Radius of Ice Aerosols", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "effectRadIc", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "p1000": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "1000 hPa", 
+            "standard_name": "air_pressure", 
+            "value": "100000.", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "p500": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "500 hPa", 
+            "standard_name": "air_pressure", 
+            "value": "50000.", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "ocean_double_sigma": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "sigma: sigma depth: depth z1: z1 z2: z2 a: a_coeff href: href k_c: k_c", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "sigma: sigma_bnds depth: depth z1: z1 z2: z2 a: a href: href k_c: k_c", 
+            "bounds_values": "", 
+            "long_name": "ocean double sigma coordinate", 
+            "standard_name": "ocean_double_sigma", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "for k <= k_c:n z(k,j,i)= sigma(k)*f(j,i) n for k > k_c:n z(k,j,i)= f(j,i) + (sigma(k)-1)*(depth(j,i)-f(j,i)) n f(j,i)= 0.5*(z1+ z2) + 0.5*(z1-z2)* tanh(2*a/(z1-z2)*(depth(j,i)-href))", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plevs": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "standard_hybrid_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "p0: p0 a: a b: b ps: ps", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "p0: p0 a: a_bnds b: b_bnds ps: ps", 
+            "bounds_values": "", 
+            "long_name": "hybrid sigma pressure coordinate", 
+            "standard_name": "atmosphere_hybrid_sigma_pressure_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "1", 
+            "formula": "p = a*p0 + b*ps", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "1.0", 
+            "axis": "Z"
+        }, 
+        "p560": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "68000. 44000.", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "56000.0", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }
+    }, 
+    "variable_entry": {
+        "pbsi": {
+            "comment": "", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Biogenic Silica Production", 
+            "standard_name": "tendency_of_mole_concentration_of_silicon_in_sea_water_due_to_biological_production", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3 s-1", 
+            "out_name": "pbsi", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "depth_c": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: depth_c", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "pppico": {
+            "comment": "Primary (organic carbon) production by the picophytoplankton (<2 um) component alone", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Tendency of Mole Concentration of Organic Carbon in Sea Water due to Net Primary Production by Picophytoplankton", 
+            "standard_name": "tendency_of_mole_concentration_of_particulate_organic_matter_expressed_as_carbon_in_sea_water_due_to_net_primary_production_by_picophytoplankton", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3 s-1", 
+            "out_name": "pppico", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "no3": {
+            "comment": "", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Dissolved Nitrate Concentration", 
+            "standard_name": "mole_concentration_of_nitrate_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3", 
+            "out_name": "no3", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "ocontempdiff": {
+            "comment": "Tendency of heat content for a grid cell from parameterized dianeutral mixing. Reported only for models that use conservative temperature as prognostic field.", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_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_dianeutral_mixing", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "ocontempdiff", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "parag": {
+            "comment": "", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Aragonite Production", 
+            "standard_name": "tendency_of_mole_concentration_of_aragonite_expressed_as_carbon_in_sea_water_due_to_biological_production", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3 s-1", 
+            "out_name": "parag", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "cfc11": {
+            "comment": "", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Moles Per Unit Mass of CFC-11 in Sea Water", 
+            "standard_name": "moles_of_cfc11_per_unit_mass_in_sea_water", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol kg-1", 
+            "out_name": "cfc11", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "bfe": {
+            "comment": "Sum of particulate organic iron component concentrations", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Particulate Biogenic Iron Concentration", 
+            "standard_name": "mole_concentration_of_particulate_organic_matter_expressed_as_iron_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3", 
+            "out_name": "bfe", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "co3satarag": {
+            "comment": "", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Mole Concentration of Aragonite expressed as Carbon in Sea Water at Saturation", 
+            "standard_name": "mole_concentration_of_carbonate_ion_for_seawater_in equilibrium_with_pure_aragonite", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3", 
+            "out_name": "co3satarag", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "fediss": {
+            "comment": "Dissolution, remineralization and desorption of iron back to the dissolved phase", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Particle Source of Dissolved Iron", 
+            "standard_name": "tendency_of_mole_concentration_of_dissolved_iron_in_sea_water_due_to_dissolution_from_inorganic_particles", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3 s-1", 
+            "out_name": "fediss", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "opottemptend": {
+            "comment": "Tendency of heat content for a grid cell from all processes. Reported only for models that use potential temperature as prognostic field.", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "tendency of sea water potential temperature expressed as heat content", 
+            "standard_name": "tendency_of_sea_water_potential_temperature_expressed_as_heat_content", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "opottemptend", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "nsigma": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: nsigma", 
+            "type": "integer", 
+            "dimensions": ""
+        }, 
+        "dissic": {
+            "comment": "Dissolved inorganic carbon (CO3+HCO3+H2CO3) concentration", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Dissolved Inorganic Carbon Concentration", 
+            "standard_name": "mole_concentration_of_dissolved_inorganic_carbon_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3", 
+            "out_name": "dissic", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "difmxybo": {
+            "comment": "Lateral biharmonic viscosity applied to the momentum equitions.", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "ocean momentum xy biharmonic diffusivity", 
+            "standard_name": "ocean_momentum_xy_biharmonic_diffusivity", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "m4/sec", 
+            "out_name": "difmxybo", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "zooc": {
+            "comment": "sum of zooplankton carbon component concentrations", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Zooplankton Carbon Concentration", 
+            "standard_name": "mole_concentration_of_zooplankton_expressed_as_carbon_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3", 
+            "out_name": "zooc", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "arag": {
+            "comment": "Sum of particulate aragonite components (e.g. Phytoplankton, Detrital, etc.)", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Aragonite Concentration", 
+            "standard_name": "mole_concentration_of_aragonite_expressed_as_carbon_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3", 
+            "out_name": "arag", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "ocontemppmdiff": {
+            "comment": "Tendency of heat content for a grid cell from parameterized mesoscale eddy diffusion. Reported only for models that use conservative temperature as prognostic field.", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_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_diffusion", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "ocontemppmdiff", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "zoocmisc": {
+            "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", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Other Zooplankton Carbon Concentration", 
+            "standard_name": "mole_concentration_of_miscellaneous_zooplankton_expressed_as_carbon_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3", 
+            "out_name": "zoocmisc", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "talknat": {
+            "comment": "total alkalinity equivalent concentration (including carbonate, borate, phosphorus, silicon, and nitrogen components) at preindustrial atmospheric xCO2", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Natural Total Alkalinity", 
+            "standard_name": "seawater_alkalinity_expressed_as_mole_equivalent_natural_component", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3", 
+            "out_name": "talknat", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "graz": {
+            "comment": "", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Total Grazing of Phytoplankton by Zooplankton", 
+            "standard_name": "tendency_of_mole_concentration_of_organic_matter_expressed_as_carbon_in_sea_water_due_to_grazing_of_phytoplankton", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3 s-1", 
+            "out_name": "graz", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "ocontemppmadvect": {
+            "comment": "Tendency of heat content for a grid cell from parameterized mesoscale eddy advection. Reported only for models that use conservative temperature as prognostic field.", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "tendency of sea water conservative temperature expressed as heat content due to parameterized mesoscale advection", 
+            "standard_name": "tendency_of_sea_water_conservative_temperature_expressed_as_heat_content_due_to_parameterized_mesoscale_advection", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "ocontemppmadvect", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "osaltpsmadvect": {
+            "comment": "Tendency of salt content for a grid cell from parameterized submesoscale eddy advection.", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_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_advection", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "kg/m2/s", 
+            "out_name": "osaltpsmadvect", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "o2": {
+            "comment": "", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Dissolved Oxygen Concentration", 
+            "standard_name": "mole_concentration_of_molecular_oxygen_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3", 
+            "out_name": "o2", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "ocontemppsmadvect": {
+            "comment": "Tendency of heat content for a grid cell from parameterized submesoscale eddy advection. Reported only for models that use conservative temperature as prognostic field.", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_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_advection", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "ocontemppsmadvect", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "zoomicro": {
+            "comment": "carbon  concentration from the microzooplankton (<20 um) component alone", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Mole Concentration of Microzooplankton expressed as Carbon in Sea Water", 
+            "standard_name": "mole_concentration_of_microzooplankton_expressed_as_carbon_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3", 
+            "out_name": "zoomicro", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "bacc": {
+            "comment": "Sum of bacterial carbon component concentrations", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Bacterial Carbon Concentration", 
+            "standard_name": "mole_concentration_of_bacteria_expressed_as_carbon_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3", 
+            "out_name": "bacc", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "co3satcalc": {
+            "comment": "", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Mole Concentration of Calcite expressed as Carbon in Sea Water at Saturation", 
+            "standard_name": "mole_concentration_of_carbonate_ion_for_seawater_in equilibrium_with_pure_calcite", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3", 
+            "out_name": "co3satcalc", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "orog": {
+            "units": "m", 
+            "long_name": "Surface Altitude", 
+            "type": "real", 
+            "dimensions": "longitude latitude"
+        }, 
+        "expcalc": {
+            "comment": "Downward flux of Calcite", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "down", 
+            "valid_min": "", 
+            "long_name": "Sinking Calcite Flux", 
+            "standard_name": "sinking_mole_flux_of_calcite_expressed_as_carbon_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-2 s-1", 
+            "out_name": "expcalc", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "co3": {
+            "comment": "", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Mole Concentration of Carbonate expressed as Carbon in Sea Water", 
+            "standard_name": "mole_concentration_of_carbonate_ion_in_seawater", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3", 
+            "out_name": "co3", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "pnitrate": {
+            "comment": "Primary (organic carbon) production by phytoplankton due to nitrate uptake alone", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Primary Carbon Production by Phytoplankton due to Nitrate Uptake Alone", 
+            "standard_name": "tendency_of_mole_concentration_of_particulate_organic_matter_expressed_as_carbon_in_sea_water_due_to_nitrate_utilization", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3 s-1", 
+            "out_name": "pnitrate", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "sigma_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: sigma(k+1/2)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "dissi14cabio": {
+            "comment": "Abiotic Dissolved inorganic 14carbon (CO3+HCO3+H2CO3) concentration", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Abiotic Dissolved Inorganic 14Carbon Concentration", 
+            "standard_name": "mole_concentration_of_dissolved_inorganic_14carbon_in_sea_water_abiotic_component", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3", 
+            "out_name": "dissi14cabio", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "ptop": {
+            "units": "Pa", 
+            "long_name": "pressure at top of model", 
+            "type": "", 
+            "dimensions": ""
+        }, 
+        "osaltadvect": {
+            "comment": "Tendency of salt content for a grid cell from resolved advection.", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "tendency of sea water salinity expressed as salt content due to advection", 
+            "standard_name": "tendency_of_sea_water_salinity_expressed_as_salt_content_due_to_advection", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "kg/m2/s", 
+            "out_name": "osaltadvect", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "expfe": {
+            "comment": "", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "down", 
+            "valid_min": "", 
+            "long_name": "Sinking Particulate Iron Flux", 
+            "standard_name": "sinking_mole_flux_of_particulate_iron_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-2 s-1", 
+            "out_name": "expfe", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "ocontempadvect": {
+            "comment": "Tendency of heat content for a grid cell from resolved advection. Reported only for models that use conservative temperature as prognostic field.", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "tendency of sea water conservative temperature expressed as heat content due to advection", 
+            "standard_name": "tendency_of_sea_water_conservative_temperature_expressed_as_heat_content_due_to_advection", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "ocontempadvect", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "bddtalk": {
+            "comment": "Net total of biological terms in time rate of change of alkalinity", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Rate of Change of Alkalinity due to Biological Activity", 
+            "standard_name": "tendency_of_sea_water_alkalinity_expressed_as_mole_equivalent_due_to_biological_processes", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3 s-1", 
+            "out_name": "bddtalk", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "ppcalc": {
+            "comment": "Primary (organic carbon) production by the calcite-producing phytoplankton component alone", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Tendency of Mole Concentration of Organic Carbon in Sea Water due to Net Primary Production by Calcareous Phytoplankton", 
+            "standard_name": "tendency_of_mole_concentration_of_particulate_organic_matter_expressed_as_carbon_in_sea_water_due_to_net_primary_production_by_calcareous_phytoplankton", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3 s-1", 
+            "out_name": "ppcalc", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "phymisc": {
+            "comment": "carbon concentration from additional phytoplankton component alone", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Mole Concentration of Miscellaneous Phytoplankton expressed as Carbon in Sea Water", 
+            "standard_name": "mole_concentration_of_miscellaneous_phytoplankton_expressed_as_carbon_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3", 
+            "out_name": "phymisc", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "bddtdife": {
+            "comment": "Net total of biological terms in time rate of change of dissolved inorganic iron", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Rate of Change of Dissolved Inorganic Iron due to Biological Activity", 
+            "standard_name": "tendency_of_mole_concentration_of_dissolved_inorganic_iron_in_sea_water_due_to_biological_processes", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3 s-1", 
+            "out_name": "bddtdife", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "z1": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: z1", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "z2": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: z2", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "phyfe": {
+            "comment": "sum of phytoplankton iron component concentrations", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Phytoplankton Iron Concentration", 
+            "standard_name": "mole_concentration_of_phytoplankton_expressed_as_iron_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3", 
+            "out_name": "phyfe", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "phypico": {
+            "comment": "carbon concentration from the picophytoplankton (<2 um) component alone", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Mole Concentration of Picophytoplankton expressed as Carbon in Sea Water", 
+            "standard_name": "mole_concentration_of_picophytoplankton_expressed_as_carbon_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3", 
+            "out_name": "phypico", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "cfc12": {
+            "comment": "", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Moles Per Unit Mass of CFC-12 in Sea Water", 
+            "standard_name": "moles_of_cfc12_per_unit_mass_in_sea_water", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol kg-1", 
+            "out_name": "cfc12", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "ocontemptend": {
+            "comment": "Tendency of heat content for a grid cell from all processes. Reported only for models that use conservative temperature as prognostic field.", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "tendency of sea water conservative temperature expressed as heat content", 
+            "standard_name": "tendency_of_sea_water_conservative_temperature_expressed_as_heat_content", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "ocontemptend", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "eta": {
+            "units": "m", 
+            "long_name": "Sea Surface Height formula term: thetao", 
+            "type": "real", 
+            "dimensions": "longitude latitude time"
+        }, 
+        "chldiat": {
+            "comment": "Chlorophyll from diatom phytoplankton component concentration alone", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Diatom Chlorophyll Mass Concentration", 
+            "standard_name": "mass_concentration_of_diatoms_expressed_as_chlorophyll_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-3", 
+            "out_name": "chldiat", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "darag": {
+            "comment": "Rate of change of Aragonite carbon mole concentration  due to dissolution", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Aragonite Dissolution", 
+            "standard_name": "tendency_of_mole_concentration_of_aragonite_expressed_as_carbon_in_sea_water_due_to_dissolution", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3 s-1", 
+            "out_name": "darag", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "phyc": {
+            "comment": "sum of phytoplankton carbon component concentrations.  In most (all?) cases this is the sum of phycdiat and phycmisc (i.e., 'Diatom Carbon Concentration' and 'Non-Diatom Phytoplankton Carbon Concentration'", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Phytoplankton Carbon Concentration", 
+            "standard_name": "mole_concentration_of_phytoplankton_expressed_as_carbon_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3", 
+            "out_name": "phyc", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "remoc": {
+            "comment": "", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Remineralization of Organic Carbon", 
+            "standard_name": "tendency_of_mole_concentration_of_organic matter_expressed_as_carbon_in_sea_water_due_to_remineralization", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3 s-1", 
+            "out_name": "remoc", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "ppdiaz": {
+            "comment": "Primary (organic carbon) production by the diazotrophic phytoplankton component alone", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Tendency of Mole Concentration of Organic Carbon in Sea Water due to Net Primary Production by Diazotrophs", 
+            "standard_name": "tendency_of_mole_concentration_of_particulate_organic_matter_expressed_as_carbon_in_sea_water_due_to_net_primary_production_by_diazotrophs", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3 s-1", 
+            "out_name": "ppdiaz", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "physi": {
+            "comment": "sum of phytoplankton silica component concentrations", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Phytoplankton Silica Concentration", 
+            "standard_name": "mole_concentration_of_phytoplankton_expressed_as_silicon_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3", 
+            "out_name": "physi", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "ztop": {
+            "units": "m", 
+            "long_name": "height of top of model", 
+            "type": "", 
+            "dimensions": ""
+        }, 
+        "pop": {
+            "comment": "sum of particulate organic phosphorus component concentrations", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Particulate Organic Phosphorus Concentration", 
+            "standard_name": "mole_concentration_of_particulate_organic_matter_expressed_as_phosphorus_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3", 
+            "out_name": "pop", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "pon": {
+            "comment": "sum of particulate organic nitrogen component concentrations", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Particulate Organic Nitrogen Concentration", 
+            "standard_name": "mole_concentration_of_particulate_organic_matter_expressed_as_nitrogen_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3", 
+            "out_name": "pon", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "href": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: href", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "tnpeo": {
+            "comment": "Rate that work is done against vertical stratification, as measured by the vertical heat and salt diffusivity. Report here as depth integrated two-dimensional field.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "tendency of ocean potential energy content", 
+            "standard_name": "endency_of_ocean_potential_energy_content", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "W/m2", 
+            "out_name": "tnpeo", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "chlmisc": {
+            "comment": "Chlorophyll from additional phytoplankton component concentrations alone", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Other Phytoplankton Chlorophyll Mass Concentration", 
+            "standard_name": "mass_concentration_of_miscellaneous_phytoplankton_expressed_as_chlorophyll_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-3", 
+            "out_name": "chlmisc", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "ps": {
+            "units": "Pa", 
+            "long_name": "Surface Air Pressure", 
+            "type": "real", 
+            "dimensions": "longitude latitude time"
+        }, 
+        "pp": {
+            "comment": "total primary (organic carbon) production by phytoplankton", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Primary Carbon Production by Phytoplankton", 
+            "standard_name": "tendency_of_mole_concentration_of_particulate_organic_matter_expressed_as_carbon_in_sea_water_due_to_net_primary_production", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3 s-1", 
+            "out_name": "pp", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "opottemppmdiff": {
+            "comment": "Tendency of heat content for a grid cell from parameterized mesoscale eddy diffusion. Reported only for models that use potential temperature as prognostic field.", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_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_diffusion", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "opottemppmdiff", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "expsi": {
+            "comment": "", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "down", 
+            "valid_min": "", 
+            "long_name": "Sinking Particulate Silica Flux", 
+            "standard_name": "sinking_mole_flux_of_particulate_silicon_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-2 s-1", 
+            "out_name": "expsi", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "difmxylo": {
+            "comment": "Lateral Laplacian viscosity applied to the momentum equitions.", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "ocean momentum xy laplacian diffusivity", 
+            "standard_name": "ocean_momentum_xy_laplacian_diffusivity", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "m2/sec", 
+            "out_name": "difmxylo", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "pcalc": {
+            "comment": "", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Calcite Production", 
+            "standard_name": "tendency_of_mole_concentration_of_calcite_expressed_as_carbon_in_sea_water_due_to_biological_production", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3 s-1", 
+            "out_name": "pcalc", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "bddtdisi": {
+            "comment": "Net of biological terms in time rate of change of dissolved inorganic silicate", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Rate of Change of Dissolved Inorganic Silicate due to Biological Activity", 
+            "standard_name": "tendency_of_mole_concentration_of_dissolved_inorganic_silicate_in_sea_water_due_to_biological_processes", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3 s-1", 
+            "out_name": "bddtdisi", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "chl": {
+            "comment": "Sum of chlorophyll from all phytoplankton group concentrations.  In most models this is equal to chldiat+chlmisc, that is the sum of Diatom Chlorophyll Mass Concentration and Other Phytoplankton Chlorophyll Mass Concentration", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Total Chlorophyll Mass Concentration", 
+            "standard_name": "mass_concentration_of_phytoplankton_expressed_as_chlorophyll_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-3", 
+            "out_name": "chl", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "opottempdiff": {
+            "comment": "Tendency of heat content for a grid cell from parameterized dianeutral mixing. Reported only for models that use potential temperature as prognostic field.", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_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_dianeutral_mixing", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "opottempdiff", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "tnkebto": {
+            "comment": "Depth integrated impacts on kinetic energy arising from parameterized eddy-induced advection. For CMIP5, this diagnostic was 3d, whereas the CMIP6 depth integrated diagnostic is sufficient for many purposes and reduces archive requirements.", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "tendency of ocean eddy kinetic energy content due to parameterized eddy advection", 
+            "standard_name": "tendency_of_ocean_eddy_kinetic_energy_content_due_to_parameterized_eddy_advection", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "W/m2", 
+            "out_name": "tnkebto", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "pbfe": {
+            "comment": "", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Biogenic Iron Production", 
+            "standard_name": "tendency_of_mole_concentration_of_iron_in_sea_water_due_to_biological_production", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3 s-1", 
+            "out_name": "pbfe", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "dfe": {
+            "comment": "Dissolved iron in sea water,  including both Fe2+ and Fe3+ ions (but not particulate detrital iron)", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Dissolved Iron Concentration", 
+            "standard_name": "mole_concentration_of_dissolved_iron_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3", 
+            "out_name": "dfe", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "ph": {
+            "comment": "negative log of hydrogen ion concentration with the concentration expressed as mol H kg-1.", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "pH", 
+            "standard_name": "sea_water_ph_reported_on_total_scale", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "1.0", 
+            "out_name": "ph", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "calc": {
+            "comment": "Sum of particulate calcite component concentrations (e.g. Phytoplankton, Detrital, etc.)", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Calcite Concentration", 
+            "standard_name": "mole_concentration_of_calcite_expressed_as_carbon_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3", 
+            "out_name": "calc", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "po4": {
+            "comment": "", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Dissolved Phosphate Concentration", 
+            "standard_name": "mole_concentration_of_phosphate_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3", 
+            "out_name": "po4", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "exparag": {
+            "comment": "Downward flux of Aragonite", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "down", 
+            "valid_min": "", 
+            "long_name": "Sinking Aragonite Flux", 
+            "standard_name": "sinking_mole_flux_of_aragonite_expressed_as_carbon_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-2 s-1", 
+            "out_name": "exparag", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "osaltpmdiff": {
+            "comment": "Tendency of salt content for a grid cell from parameterized mesoscale eddy diffusion.", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_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_diffusion", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "kg/m2/s", 
+            "out_name": "osaltpmdiff", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "nh4": {
+            "comment": "", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Dissolved Ammonium Concentration", 
+            "standard_name": "mole_concentration_of_ammonium_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3", 
+            "out_name": "nh4", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "osaltpadvect": {
+            "comment": "Tendency of salt content for a grid cell from parameterized eddy advection (any form of eddy advection).", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "tendency of sea water salinity expressed as salt content due to parameterized eddy advection", 
+            "standard_name": "tendency_of_sea_water_salinity_expressed_as_salt_content_due_to_parameterized_eddy_advection", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "kg/m2/s", 
+            "out_name": "osaltpadvect", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "difvso": {
+            "comment": "Vertical/dianeutral diffusivity applied to prognostic salinity field.", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "ocean vertical salt diffusivity", 
+            "standard_name": "ocean_verticalt_salt_diffusivity", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "m2/sec", 
+            "out_name": "difvso", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "p0": {
+            "units": "Pa", 
+            "long_name": "vertical coordinate formula term: reference pressure", 
+            "type": "", 
+            "dimensions": ""
+        }, 
+        "b": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: b(k)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "expp": {
+            "comment": "", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "down", 
+            "valid_min": "", 
+            "long_name": "Sinking Particulate Organic Phosphorus Flux", 
+            "standard_name": "sinking_mole_flux_of_particulate_organic_phosphorus_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-2 s-1", 
+            "out_name": "expp", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "dms": {
+            "comment": "", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Dimethyl Sulphide Concentration", 
+            "standard_name": "mole_fraction_of_dimethyl_sulfide_in_air", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mole mole-1", 
+            "out_name": "dms", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "expn": {
+            "comment": "", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "down", 
+            "valid_min": "", 
+            "long_name": "Sinking Particulate Organic Nitrogen Flux", 
+            "standard_name": "sinking_mole_flux_of_particulate_organic_nitrogen_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-2 s-1", 
+            "out_name": "expn", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "expc": {
+            "comment": "Downward flux of particulate organic carbon", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "down", 
+            "valid_min": "", 
+            "long_name": "Sinking Particulate Organic Carbon Flux", 
+            "standard_name": "sinking_mole_flux_of_particulate_organic_matter_expressed_as_carbon_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-2 s-1", 
+            "out_name": "expc", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "phycalc": {
+            "comment": "carbon concentration from calcareous (calcite-producing) phytoplankton component alone", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Mole Concentration of Calcareous Phytoplankton expressed as Carbon in Sea Water", 
+            "standard_name": "mole_concentration_of_calcareous_phytoplankton_expressed_as_carbon_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3", 
+            "out_name": "phycalc", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "k_c": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: k_c", 
+            "type": "integer", 
+            "dimensions": ""
+        }, 
+        "dispkexyfo": {
+            "comment": "Depth integrated impacts on kinetic energy arising from lateral frictional dissipation associated with Laplacian and/or biharmonic viscosity. For CMIP5, this diagnostic was 3d, whereas the CMIP6 depth integrated diagnostic is sufficient for many purposes and reduces archive requirements.", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "ocean kinetic energy dissipation per unit area due to xy friction", 
+            "standard_name": "ocean_kinetic_energy_dissipation_per_unit_area_due_to_xy_friction", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "W/m2", 
+            "out_name": "dispkexyfo", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "dcalc": {
+            "comment": "Rate of change of Calcite carbon mole concentration  due to dissolution", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Calcite Dissolution", 
+            "standard_name": "tendency_of_mole_concentration_of_calcite_expressed_as_carbon_in_sea_water_due_to_dissolution", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3 s-1", 
+            "out_name": "dcalc", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "a_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: a(k+1/2)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "chlpico": {
+            "comment": "chlorophyll concentration from the picophytoplankton (<2 um) component alone", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Mass Concentration of Picophytoplankton expressed as Chlorophyll in Sea Water", 
+            "standard_name": "mass_concentration_of_picophytoplankton_expressed_as_chlorophyll_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-3", 
+            "out_name": "chlpico", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "difvho": {
+            "comment": "Vertical/dianeutral diffusivity applied to prognostic temperature field.", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "ocean vertical heat diffusivity", 
+            "standard_name": "ocean_vertical_heat_diffusivity", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "m2/sec", 
+            "out_name": "difvho", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "sf6": {
+            "comment": "", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Moles Per Unit Mass of SF6 in Sea Water", 
+            "standard_name": "moles_of_sf6_per_unit_mass_in_sea_water", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol kg-1", 
+            "out_name": "sf6", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "dissicabio": {
+            "comment": "Abiotic Dissolved inorganic carbon (CO3+HCO3+H2CO3) concentration", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Abiotic Dissolved Inorganic Carbon Concentration", 
+            "standard_name": "mole_concentration_of_dissolved_inorganic_carbon_in_sea_water_abiotic_component", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3", 
+            "out_name": "dissicabio", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "osaltpmadvect": {
+            "comment": "Tendency of salt content for a grid cell from parameterized mesoscale eddy advection.", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "tendency of sea water salinity expressed as salt content due to parameterized mesoscale advection", 
+            "standard_name": "tendency_of_sea_water_salinity_expressed_as_salt_content_due_to_parameterized_mesoscale_advection", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "kg/m2/s", 
+            "out_name": "osaltpmadvect", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "ap_bnds": {
+            "units": "Pa", 
+            "long_name": "vertical coordinate formula term: ap(k+1/2)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "ap": {
+            "units": "Pa", 
+            "long_name": "vertical coordinate formula term: ap(k)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "phydiaz": {
+            "comment": "carbon concentration from the diazotrophic phytoplankton component alone", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Mole Concentration of Diazotrophs Expressed as Carbon in Sea Water", 
+            "standard_name": "mole_concentration_of_diazotrophs_expressed_as_carbon_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3", 
+            "out_name": "phydiaz", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "zlev": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: zlev(k)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "phydiat": {
+            "comment": "carbon from the diatom phytoplankton component concentration alone", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Mole Concentration of Diatoms expressed as Carbon in Sea Water", 
+            "standard_name": "mole_concentration_of_diatoms_expressed_as_carbon_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3", 
+            "out_name": "phydiat", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "dissicnat": {
+            "comment": "Dissolved inorganic carbon (CO3+HCO3+H2CO3) concentration at preindustrial atmospheric xCO2", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Natural Dissolved Inorganic Carbon Concentration", 
+            "standard_name": "mole_concentration_of_dissolved_inorganic_carbon_in_sea_water_natural_component", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3", 
+            "out_name": "dissicnat", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "ocontemppadvect": {
+            "comment": "Tendency of heat content for a grid cell from parameterized eddy advection (any form of eddy advection). Reported only for models that use conservative temperature as prognostic field.", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "tendency of sea water conservative temperature expressed as heat content due to parameterized eddy advection", 
+            "standard_name": "tendency_of_sea_water_conservative_temperature_expressed_as_heat_content_due_to_parameterized_eddy_advection", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "ocontemppadvect", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "osalttend": {
+            "comment": "Tendency of salt content for a grid cell from all processes.", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "tendency of sea water salinity expressed as salt content", 
+            "standard_name": "tendency_of_sea_water_salinity_expressed_as_salt_content", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "kg/m2/s", 
+            "out_name": "osalttend", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "si": {
+            "comment": "", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Dissolved Silicate Concentration", 
+            "standard_name": "mole_concentration_of_silicate_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3", 
+            "out_name": "si", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "ppmisc": {
+            "comment": "Primary (organic carbon) production by other phytoplankton components alone", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Other Phytoplankton Carbon Production", 
+            "standard_name": "tendency_of_mole_concentration_of_particulate_organic_matter_expressed_as_carbon_in_sea_water_due_to_net_primary_production_by_miscellaneous_phytoplankton", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3 s-1", 
+            "out_name": "ppmisc", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "osaltdiff": {
+            "comment": "Tendency of salt content for a grid cell from parameterized dianeutral mixing.", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_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_dianeutral_mixing", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "kg/m2/s", 
+            "out_name": "osaltdiff", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "opottemppmadvect": {
+            "comment": "Tendency of heat content for a grid cell from parameterized mesoscale eddy advection. Reported only for models that use potential temperature as prognostic field.", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "tendency of sea water potential temperature expressed as heat content due to parameterized mesoscale advection", 
+            "standard_name": "tendency_of_sea_water_potential_temperature_expressed_as_heat_content_due_to_parameterized_mesoscale_advection", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "opottemppmadvect", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "detoc": {
+            "comment": "Sum of detrital organic carbon component concentrations", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Detrital Organic Carbon Concentration", 
+            "standard_name": "mole_concentration_of_organic_detritus_expressed_as_carbon_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3", 
+            "out_name": "detoc", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "b_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: b(k+1/2)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "phyp": {
+            "comment": "sum of phytoplankton phosphorus components", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Phytoplankton Phosphorus Concentration", 
+            "standard_name": "mole_concentration_of_phytoplankton_expressed_as_phosphorus_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3", 
+            "out_name": "phyp", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "dissoc": {
+            "comment": "Sum of dissolved carbon component concentrations explicitly represented (i.e. not ~40 uM refractory unless explicit)", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Dissolved Organic Carbon Concentration", 
+            "standard_name": "mole_concentration_of_dissolved_organic_carbon_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3", 
+            "out_name": "dissoc", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "o2sat": {
+            "comment": "", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Dissolved Oxygen Concentration at Saturation", 
+            "standard_name": "mole_concentration_of_molecular_oxygen_in_sea_water_at_saturation", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3", 
+            "out_name": "o2sat", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "chldiaz": {
+            "comment": "Chlorophyll concentration from the diazotrophic phytoplankton component alone", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Mass Concentration of Diazotrophs expressed as Chlorophyll in Sea Water", 
+            "standard_name": "mass_concentration_of_diazotrophs_expressed_as_chlorophyll_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-3", 
+            "out_name": "chldiaz", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "diftrblo": {
+            "comment": "Ocean tracer diffusivity associated with parameterized eddy-induced advective transport. Sometimes this diffusivity is called the 'thickness' diffusivity. For CMIP5, this diagnostic was called 'ocean tracer bolus laplacian diffusivity'.  The CMIP6 name is physically more relevant.", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "ocean tracer diffusivity due to parameterized mesoscale advection", 
+            "standard_name": "ocean_tracer_diffusivity_due_to_parameterized_mesoscale_advection", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "m2/sec", 
+            "out_name": "diftrblo", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "bsi": {
+            "comment": "Sum of particulate silica component concentrations", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Particulate Biogenic Silica Concentration", 
+            "standard_name": "mole_concentration_of_particulate_matter_expressed_as_silicon_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3", 
+            "out_name": "bsi", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "fescav": {
+            "comment": "Dissolved Fe removed through nonbiogenic scavenging onto particles", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Nonbiogenic Iron Scavenging", 
+            "standard_name": "tendency_of_mole_concentration_of_dissolved_iron_in_sea_water_due_to_scavenging_by_inorganic_particles", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3 s-1", 
+            "out_name": "fescav", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "bddtdic": {
+            "comment": "Net total of biological terms in time rate of change of dissolved inorganic carbon", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Rate of Change of Dissolved Inorganic Carbon due to Biological Activity", 
+            "standard_name": "tendency_of_mole_concentration_of_dissolved_inorganic_carbon_in_sea_water_due_to_biological_processes", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3 s-1", 
+            "out_name": "bddtdic", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "ppdiat": {
+            "comment": "Primary (organic carbon) production by the diatom component alone", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Diatom Primary Carbon Production", 
+            "standard_name": "tendency_of_mole_concentration_of_particulate_organic_matter_expressed_as_carbon_in_sea_water_due_to_net_primary_production_by_diatoms", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3 s-1", 
+            "out_name": "ppdiat", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "phyn": {
+            "comment": "sum of phytoplankton nitrogen component concentrations", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Phytoplankton Nitrogen Concentration", 
+            "standard_name": "mole_concentration_of_phytoplankton_expressed_as_nitrogen_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3", 
+            "out_name": "phyn", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "zlev_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: zlev(k+1/2)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "a": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: a(k)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "chlcalc": {
+            "comment": "chlorophyll concentration from the calcite-producing phytoplankton component alone", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Mass Concentration of Calcareous Phytoplankton expressed as Chlorophyll in Sea Water", 
+            "standard_name": "mass_concentration_of_calcareous_phytoplankton_expressed_as_chlorophyll_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-3", 
+            "out_name": "chlcalc", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "sigma": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: sigma(k)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "bddtdip": {
+            "comment": "Net of biological terms in time rate of change of dissolved phosphate", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Rate of Change of Dissolved Phosphate due to Biological Activity", 
+            "standard_name": "tendency_of_mole_concentration_of_dissolved_inorganic_phosphate_in_sea_water_due_to_biological_processes", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3 s-1", 
+            "out_name": "bddtdip", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "diftrelo": {
+            "comment": "Ocean tracer diffusivity associated with parameterized eddy-induced diffusive transport oriented along neutral or isopycnal directions. Sometimes this diffusivity is called the neutral diffusivity or isopycnal diffusivity or Redi diffusivity.", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "ocean tracer epineutral laplacian diffusivity", 
+            "standard_name": "ocean_tracer_epineutral_laplacian_diffusivity", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "m2/sec", 
+            "out_name": "diftrelo", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "opottemppsmadvect": {
+            "comment": "Tendency of heat content for a grid cell from parameterized submesoscale eddy advection. Reported only for models that use potential temperature as prognostic field.", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_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_advection", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "opottemppsmadvect", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "depth": {
+            "units": "m", 
+            "long_name": "Sea Floor Depth: formula term: thetao", 
+            "type": "real", 
+            "dimensions": "longitude latitude"
+        }, 
+        "zoomeso": {
+            "comment": "carbon  concentration from mesozooplankton (20-200 um) component alone", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Mole Concentration of Mesozooplankton expressed as Carbon in Sea Water", 
+            "standard_name": "mole_concentration_of_mesozooplankton_expressed_as_carbon_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3", 
+            "out_name": "zoomeso", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "bddtdin": {
+            "comment": "Net total of biological terms in time rate of change of nitrogen nutrients (e.g. NO3+NH4)", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Rate of Change of Nitrogen Nutrient due to Biological Activity", 
+            "standard_name": "tendency_of_mole_concentration_of_dissolved_inorganic_nitrogen_in_sea_water_due_to_biological_processes", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3 s-1", 
+            "out_name": "bddtdin", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "opottempadvect": {
+            "comment": "Tendency of heat content for a grid cell from resolved advection. Reported only for models that use potential temperature as prognostic field.", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "tendency of sea water potential temperature expressed as heat content due to advection", 
+            "standard_name": "tendency_of_sea_water_potential_temperature_expressed_as_heat_content_due_to_advection", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "opottempadvect", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "opottemppadvect": {
+            "comment": "Tendency of heat content for a grid cell from parameterized eddy advection (any form of eddy advection). Reported only for models that use potential temperature as prognostic field.", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "tendency of sea water potential temperature expressed as heat content due to parameterized eddy advection", 
+            "standard_name": "tendency_of_sea_water_potential_temperature_expressed_as_heat_content_due_to_parameterized_eddy_advection", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "opottemppadvect", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "talk": {
+            "comment": "total alkalinity equivalent concentration (including carbonate, nitrogen, silicate, and borate components)", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Total Alkalinity", 
+            "standard_name": "sea_water_alkalinity_expressed_as_mole_equivalent", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3", 
+            "out_name": "talk", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }
+    }
+}
diff --git a/TestTables/CMIP6_SIday.json b/TestTables/CMIP6_SIday.json
new file mode 100644
index 0000000..1933dd7
--- /dev/null
+++ b/TestTables/CMIP6_SIday.json
@@ -0,0 +1 @@
+no Variable found for SIday
diff --git a/TestTables/CMIP6_SImon.json b/TestTables/CMIP6_SImon.json
new file mode 100644
index 0000000..6f2dff6
--- /dev/null
+++ b/TestTables/CMIP6_SImon.json
@@ -0,0 +1,3633 @@
+{
+    "Header": {
+        "product": "output", 
+        "approx_interval": "30.00000", 
+        "realm": "seaIce", 
+        "cmor_version": "3.1", 
+        "Conventions": "CF-1.6 CMIP-6.0", 
+        "frequency": "mon", 
+        "table_id": "Table SImon", 
+        "data_specs_version": "01.beta.29", 
+        "mip_era": "CMIP6", 
+        "generic_levels": "", 
+        "missing_value": "1e20", 
+        "table_date": "14 June 2016"
+    }, 
+    "axis_entry": {
+        "typebare": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "bare_ground", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "tau": {
+            "requested": [
+                "0.15", 
+                "0.8", 
+                "2.45", 
+                "6.5", 
+                "16.2", 
+                "41.5", 
+                "100."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "0.0", 
+                "0.3", 
+                "0.3", 
+                "1.3", 
+                "1.3", 
+                "3.6", 
+                "3.6", 
+                "9.4", 
+                "9.4", 
+                "23.0", 
+                "23.0", 
+                "60.0", 
+                "60.0", 
+                "100000."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "cloud optical thickness", 
+            "standard_name": "atmosphere_optical_thickness_due_to_cloud", 
+            "value": "", 
+            "out_name": "tau", 
+            "type": "double", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "olayer100m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "0. 100.", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "50.0", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "100.0", 
+            "axis": "Z"
+        }, 
+        "spectband": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "Spectral Band", 
+            "standard_name": "wave_frequency", 
+            "value": "", 
+            "out_name": "spectband", 
+            "type": "double", 
+            "units": "s-1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "ocean_sigma_z": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "sigma: sigma eta: eta depth: depth depth_c: depth_c nsigma: nsigma zlev: zlev", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "sigma: sigma_bnds eta: eta depth: depth depth_c: depth_c nsigma: nsigma zlev: zlev_bnds", 
+            "bounds_values": "", 
+            "long_name": "ocean sigma over z coordinate", 
+            "standard_name": "ocean_sigma_z", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "for k <= nsigma: z(n,k,j,i) = eta(n,j,i) + sigma(k)*(min(depth_c,depth(j,i))+eta(n,j,i)) ; for k > nsigma: z(n,k,j,i) = zlev(k)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev19": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000.", 
+                "500.", 
+                "100."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "p220": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "44000. 0.0", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "22000.0", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev17": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev10": {
+            "requested": [
+                "100000.", 
+                "85000.", 
+                "70000.", 
+                "50000.", 
+                "25000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "site": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "site index", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "site", 
+            "type": "integer", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "smooth_level": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "a: a b1: b1 b2: b2 ztop: ztop zsurf1: zsurf1 zsurf2: zsurf2", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-200.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "a: a_bnds b1: b1_bnds b2: b2_bnds ztop: ztop zsurf1: zsurf1 zsurf2: zsurf2", 
+            "bounds_values": "", 
+            "long_name": "atmosphere smooth level vertical (SLEVE) coordinate", 
+            "standard_name": "atmosphere_sleve_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "m", 
+            "formula": "z = a*ztop + b1*zsurf1 + b2*zsurf2", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "800000.0", 
+            "axis": "Z"
+        }, 
+        "p840": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "100000. 68000.", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "84000.0", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "ocean_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "sigma: lev eta: eta depth: depth", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "sigma: lev_bnds eta: eta depth: depth", 
+            "bounds_values": "", 
+            "long_name": "ocean sigma coordinate", 
+            "standard_name": "ocean_sigma_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "z(n,k,j,i) = eta(n,j,i) + sigma(k)*(depth(j,i)+eta(n,j,i))", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "0.0", 
+            "axis": "Z"
+        }, 
+        "depth0m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "0.0", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "100.0", 
+            "axis": "Z"
+        }, 
+        "ocean_s": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "s: lev eta: eta depth: depth a: a_coeff b: b_coeff depth_c: depth_c", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "s: lev_bnds eta: eta depth: depth a: a b: b depth_c: depth_c", 
+            "bounds_values": "", 
+            "long_name": "ocean s-coordinate", 
+            "standard_name": "ocean_s_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "z(n,k,j,i) = eta(n,j,i)*(1+s(k)) + depth_c*s(k) + (depth(j,i)-depth_c)*C(k) n where n C(k)=(1-b)*sinh(a*s(k))/sinh(a) +n           b*(tanh(a*(s(k)+0.5))/(2*tanh(0.5*a)) - 0.5)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "0.0", 
+            "axis": "Z"
+        }, 
+        "plev4s": {
+            "requested": [
+                "85000.", 
+                "50000.", 
+                "20000.", 
+                "5000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "typec4pft": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "c4_plant_functional_types", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "plev3h": {
+            "requested": [
+                "10000.", 
+                "1000.", 
+                "100."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "height2m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "up", 
+            "must_have_bounds": "no", 
+            "valid_min": "1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "height", 
+            "standard_name": "height", 
+            "value": "2.0", 
+            "out_name": "height", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "10.0", 
+            "axis": "Z"
+        }, 
+        "time1": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "time", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "plev7h": {
+            "requested": [
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "25000.", 
+                "5000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "sza5": {
+            "requested": [
+                "0.", 
+                "20.", 
+                "40.", 
+                "60.", 
+                "80."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "solar zenith angle", 
+            "standard_name": "solar_zenith_angle", 
+            "value": "", 
+            "out_name": "sza", 
+            "type": "double", 
+            "units": "degree", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "depth_coord": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "ocean depth coordinate", 
+            "standard_name": "depth", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "12000.0", 
+            "axis": "Z"
+        }, 
+        "sdepth1": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "0.0 0.1", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "0.05", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "0.2", 
+            "axis": "Z"
+        }, 
+        "alternate_hybrid_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "ap: ap b: b ps: ps", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "ap: ap_bnds b: b_bnds ps: ps", 
+            "bounds_values": "", 
+            "long_name": "hybrid sigma pressure coordinate", 
+            "standard_name": "atmosphere_hybrid_sigma_pressure_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "1", 
+            "formula": "p = ap + b*ps", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "1.0", 
+            "axis": "Z"
+        }, 
+        "time2": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "time", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "yes", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "time3": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "Diurnal cycle: monthly mean of the diurnal cycle (1 hour steps).", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "oline": {
+            "requested": [
+                "barents_opening", 
+                "bering_strait", 
+                "canadian_archipelago", 
+                "denmark_strait", 
+                "drake_passage", 
+                "english_channel", 
+                "pacific_equatorial_undercurrent", 
+                "faroe_scotland_channel", 
+                "florida_bahamas_strait", 
+                "fram_strait", 
+                "iceland_faroe_channel", 
+                "indonesian_thoughflow", 
+                "mozambique_channel", 
+                "taiwan_luzon_straits", 
+                "windward_passage"
+            ], 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "ocean passage", 
+            "standard_name": "region", 
+            "value": "", 
+            "out_name": "line", 
+            "type": "character", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "plev14": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "25000.", 
+                "15000.", 
+                "10000.", 
+                "5000.", 
+                "2000.", 
+                "1000.", 
+                "500.", 
+                "100."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev8": {
+            "requested": [
+                "100000.", 
+                "85000.", 
+                "70000.", 
+                "50000.", 
+                "25000.", 
+                "10000.", 
+                "5000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "location": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "location index", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "loc", 
+            "type": "integer", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "latitude": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-90.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "latitude", 
+            "standard_name": "latitude", 
+            "value": "", 
+            "out_name": "lat", 
+            "type": "double", 
+            "units": "degrees_north", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "90.0", 
+            "axis": "Y"
+        }, 
+        "plev3": {
+            "requested": [
+                "85000.", 
+                "50000.", 
+                "25000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "basin": {
+            "requested": [
+                "atlantic_arctic_ocean", 
+                "indian_pacific_ocean", 
+                "global_ocean"
+            ], 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "ocean basin", 
+            "standard_name": "region", 
+            "value": "", 
+            "out_name": "basin", 
+            "type": "character", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "p700": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "700 hPa", 
+            "standard_name": "air_pressure", 
+            "value": "70000.", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev7": {
+            "requested": [
+                "90000.", 
+                "74000.", 
+                "62000.", 
+                "50000.", 
+                "37500.", 
+                "24500.", 
+                "9000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "100000.", 
+                "80000.", 
+                "80000.", 
+                "68000.", 
+                "68000.", 
+                "56000.", 
+                "56000.", 
+                "44000.", 
+                "44000.", 
+                "31000.", 
+                "31000.", 
+                "18000.", 
+                "18000.", 
+                " 0."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev4": {
+            "requested": [
+                "92500.", 
+                "85000.", 
+                "50000.", 
+                "25000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev23": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000.", 
+                "700.", 
+                "500.", 
+                "300.", 
+                "200.", 
+                "100.", 
+                "40."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev39": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "17000.", 
+                "15000.", 
+                "13000.", 
+                "11500.", 
+                "10000.", 
+                "9000.", 
+                "8000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1500.", 
+                "1000.", 
+                "700.", 
+                "500.", 
+                "300.", 
+                "200.", 
+                "150.", 
+                "100.", 
+                "70.", 
+                "50.", 
+                "40.", 
+                "30.", 
+                "20.", 
+                "15.", 
+                "10.", 
+                "7.", 
+                "5.", 
+                "3."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "typepever": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "primary_evergreen_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "typesdec": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "secondary_decidous_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "plev27": {
+            "requested": [
+                "100000.", 
+                "97500.", 
+                "95000.", 
+                "92500.", 
+                "90000.", 
+                "87500.", 
+                "85000.", 
+                "82500.", 
+                "80000.", 
+                "77500.", 
+                "75000.", 
+                "70000.", 
+                "65000.", 
+                "60000.", 
+                "55000.", 
+                "50000.", 
+                "45000.", 
+                "40000.", 
+                "35000.", 
+                "30000.", 
+                "25000.", 
+                "22500.", 
+                "20000.", 
+                "17500.", 
+                "15000.", 
+                "12500.", 
+                "10000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "alt40": {
+            "requested": [
+                "240.", 
+                "720.", 
+                "1200.", 
+                "1680.", 
+                "2160.", 
+                "2640.", 
+                "3120.", 
+                "3600.", 
+                "4080.", 
+                "4560.", 
+                "5040.", 
+                "5520.", 
+                "6000.", 
+                "6480.", 
+                "6960.", 
+                "7440.", 
+                "7920.", 
+                "8400.", 
+                "8880.", 
+                "9360.", 
+                "9840.", 
+                "10320.", 
+                "10800.", 
+                "11280.", 
+                "11760.", 
+                "12240.", 
+                "12720.", 
+                "13200.", 
+                "13680.", 
+                "14160.", 
+                "14640.", 
+                "15120.", 
+                "15600.", 
+                "16080.", 
+                "16560.", 
+                "17040.", 
+                "17520.", 
+                "18000.", 
+                "18480.", 
+                "18960."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "0.", 
+                "480.", 
+                "480.", 
+                "960.", 
+                "960.", 
+                "1440.", 
+                "1440.", 
+                "1920.", 
+                "1920.", 
+                "2400.", 
+                "2400.", 
+                "2880.", 
+                "2880.", 
+                "3360.", 
+                "3360.", 
+                "3840.", 
+                "3840.", 
+                "4320.", 
+                "4320.", 
+                "4800.", 
+                "4800.", 
+                "5280.", 
+                "5280.", 
+                "5760.", 
+                "5760.", 
+                "6240.", 
+                "6240.", 
+                "6720.", 
+                "6720.", 
+                "7200.", 
+                "7200.", 
+                "7680.", 
+                "7680.", 
+                "8160.", 
+                "8160.", 
+                "8640.", 
+                "8640.", 
+                "9120.", 
+                "9120.", 
+                "9600.", 
+                "9600.", 
+                "10080.", 
+                "10080.", 
+                "10560.", 
+                "10560.", 
+                "11040.", 
+                "11040.", 
+                "11520.", 
+                "11520.", 
+                "12000.", 
+                "12000.", 
+                "12480.", 
+                "12480.", 
+                "12960.", 
+                "12960.", 
+                "13440.", 
+                "13440.", 
+                "13920.", 
+                "13920.", 
+                "14400.", 
+                "14400.", 
+                "14880.", 
+                "14880.", 
+                "15360.", 
+                "15360.", 
+                "15840.", 
+                "15840.", 
+                "16320.", 
+                "16320.", 
+                "16800.", 
+                "16800.", 
+                "17280.", 
+                "17280.", 
+                "17760.", 
+                "17760.", 
+                "18240.", 
+                "18240.", 
+                "18720.", 
+                "18720.", 
+                "19200."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "altitude", 
+            "standard_name": "altitude", 
+            "value": "", 
+            "out_name": "alt40", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "time": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "time", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "plev7c": {
+            "requested": [
+                "90000.", 
+                "74000.", 
+                "62000.", 
+                "50000.", 
+                "37500.", 
+                "24500.", 
+                "9000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "height10m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "up", 
+            "must_have_bounds": "no", 
+            "valid_min": "1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "height", 
+            "standard_name": "height", 
+            "value": "10.0", 
+            "out_name": "height", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "30.0", 
+            "axis": "Z"
+        }, 
+        "dbze": {
+            "requested": [
+                "-47.5", 
+                "-42.5", 
+                "-37.5", 
+                "-32.5", 
+                "-27.5", 
+                "-22.5", 
+                "-17.5", 
+                "-12.5", 
+                "-7.5", 
+                "-2.5", 
+                "2.5", 
+                "7.5", 
+                "12.5", 
+                "17.5", 
+                "22.5"
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "-50", 
+                "-45", 
+                "-45", 
+                "-40", 
+                "-40", 
+                "-35", 
+                "-35", 
+                "-30", 
+                "-30", 
+                "-25", 
+                "-25", 
+                "-20", 
+                "-20", 
+                "-15", 
+                "-15", 
+                "-10", 
+                "-10", 
+                "-5", 
+                "-5", 
+                "0", 
+                "0", 
+                "5", 
+                "5", 
+                "10", 
+                "10", 
+                "15", 
+                "15", 
+                "20", 
+                "20", 
+                "25."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "CloudSat simulator equivalent radar reflectivity factor", 
+            "standard_name": "equivalent_reflectivity_factor", 
+            "value": "", 
+            "out_name": "dbze", 
+            "type": "double", 
+            "units": "dBZ", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "typesever": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "secondary_evergreen_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "rho": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "density++++?", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "rho", 
+            "type": "double", 
+            "units": "kg m-3", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "depth100m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "80.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "100.0", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "120.0", 
+            "axis": "Z"
+        }, 
+        "effectRadLi": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "Effective Radius of Liquid Aerosols", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "effectRadLi", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "sdepth": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "200.0", 
+            "axis": "Z"
+        }, 
+        "vegtype": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "plant functional type", 
+            "standard_name": "area_type", 
+            "value": "", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "typec3pft": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "c3_plant_functional_types", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "natural_log_pressure": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "p0: p0 lev: lev", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "p0: p0 lev: lev_bnds", 
+            "bounds_values": "", 
+            "long_name": "atmosphere natural log pressure coordinate", 
+            "standard_name": "atmosphere_ln_pressure_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "p = p0 * exp(-lev)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "20.0", 
+            "axis": "Z"
+        }, 
+        "scatratio": {
+            "requested": [
+                "0.005", 
+                "0.605", 
+                "2.1", 
+                "4.", 
+                "6.", 
+                "8.5", 
+                "12.5", 
+                "17.5", 
+                "22.5", 
+                "27.5", 
+                "35.", 
+                "45.", 
+                "55.", 
+                "70.", 
+                "50040."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "0.", 
+                "0.01", 
+                "0.01", 
+                "1.2", 
+                "1.2", 
+                "3.", 
+                "3.", 
+                "5.", 
+                "5.", 
+                "7.", 
+                "7.", 
+                "10.", 
+                "10.", 
+                "15.", 
+                "15.", 
+                "20.", 
+                "20.", 
+                "25.", 
+                "25.", 
+                "30.", 
+                "30.", 
+                "40.", 
+                "40.", 
+                "50.", 
+                "50.", 
+                "60.", 
+                "60.", 
+                "80.", 
+                "80.", 
+                "100000."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "lidar backscattering ratio", 
+            "standard_name": "backscattering_ratio", 
+            "value": "", 
+            "out_name": "scatratio", 
+            "type": "double", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "standard_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "ptop: ptop sigma: lev ps: ps", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "ptop: ptop sigma: lev_bnds ps: ps", 
+            "bounds_values": "", 
+            "long_name": "sigma coordinate", 
+            "standard_name": "atmosphere_sigma_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "p = ptop + sigma*(ps - ptop)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "1.0", 
+            "axis": "Z"
+        }, 
+        "typepdec": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "primary_deciduous_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "hybrid_height": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "a: lev b: b orog: orog", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "a: lev_bnds b: b_bnds orog: orog", 
+            "bounds_values": "", 
+            "long_name": "hybrid height coordinate", 
+            "standard_name": "atmosphere_hybrid_height_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "m", 
+            "formula": "z = a + b*orog", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "longitude": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "longitude", 
+            "standard_name": "longitude", 
+            "value": "", 
+            "out_name": "lon", 
+            "type": "double", 
+            "units": "degrees_east", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "360.0", 
+            "axis": "X"
+        }, 
+        "effectRadIc": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "Effective Radius of Ice Aerosols", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "effectRadIc", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "p1000": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "1000 hPa", 
+            "standard_name": "air_pressure", 
+            "value": "100000.", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "p500": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "500 hPa", 
+            "standard_name": "air_pressure", 
+            "value": "50000.", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "ocean_double_sigma": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "sigma: sigma depth: depth z1: z1 z2: z2 a: a_coeff href: href k_c: k_c", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "sigma: sigma_bnds depth: depth z1: z1 z2: z2 a: a href: href k_c: k_c", 
+            "bounds_values": "", 
+            "long_name": "ocean double sigma coordinate", 
+            "standard_name": "ocean_double_sigma", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "for k <= k_c:n z(k,j,i)= sigma(k)*f(j,i) n for k > k_c:n z(k,j,i)= f(j,i) + (sigma(k)-1)*(depth(j,i)-f(j,i)) n f(j,i)= 0.5*(z1+ z2) + 0.5*(z1-z2)* tanh(2*a/(z1-z2)*(depth(j,i)-href))", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plevs": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "standard_hybrid_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "p0: p0 a: a b: b ps: ps", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "p0: p0 a: a_bnds b: b_bnds ps: ps", 
+            "bounds_values": "", 
+            "long_name": "hybrid sigma pressure coordinate", 
+            "standard_name": "atmosphere_hybrid_sigma_pressure_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "1", 
+            "formula": "p = a*p0 + b*ps", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "1.0", 
+            "axis": "Z"
+        }, 
+        "p560": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "68000. 44000.", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "56000.0", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }
+    }, 
+    "variable_entry": {
+        "sisaltmass": {
+            "comment": "Total mass of all salt in sea ice divided by grid-cell area", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Mass of salt in sea ice per area", 
+            "standard_name": "sea_ice_salt_mass", 
+            "modeling_realm": "seaIce", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg / m2", 
+            "out_name": "sisaltmass", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "sisnmass": {
+            "comment": "Total mass of snow on sea ice divided by grid-cell area", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Snow mass per area", 
+            "standard_name": "surface_snow_amount", 
+            "modeling_realm": "seaIce", 
+            "cell_measures": "time: mean where sea_ice area: mean where sea_ice area: mean where sea_ice", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg / m2", 
+            "out_name": "sisnmass", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "depth_c": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: depth_c", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "sitemptop": {
+            "comment": "Surface temperature of sea-ice (surface temperature of snow cover on the sea ice if applicable).", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Surface temperature of sea ice", 
+            "standard_name": "sea_ice_surface_temperature", 
+            "modeling_realm": "seaIce", 
+            "cell_measures": "time: mean where sea_ice area: mean where sea_ice area: mean where sea_ice", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "0", 
+            "units": "K", 
+            "out_name": "sitemptop", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "sidmasssi": {
+            "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", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "sea-ice mass change through snow-to-ice conversion", 
+            "standard_name": "tendency_of_sea_ice_amount_due_to_snow_conversion", 
+            "modeling_realm": "seaIce", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg m-2 s-1", 
+            "out_name": "sidmasssi", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "sisnconc": {
+            "comment": "Area fraction of grid cell covered by snow that lies on sea ice; exclude snow that lies on land or land ice.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Snow area fraction", 
+            "standard_name": "surface_snow_area_fraction", 
+            "modeling_realm": "seaIce", 
+            "cell_measures": "time: mean where sea_ice area: mean where sea_ice area: mean where sea_ice", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "1.0", 
+            "out_name": "sisnconc", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "siflfwdrain": {
+            "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", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Freshwater flux from sea-ice surface", 
+            "standard_name": "freshwater_flux_from_ice_surface", 
+            "modeling_realm": "seaIce", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg m-2 s-1", 
+            "out_name": "siflfwdrain", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "sndmasssi": {
+            "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", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "snow mass change through snow-to-ice conversion", 
+            "standard_name": "tendency_of_snow_mass_due_to_snow_to_ice_conversion", 
+            "modeling_realm": "seaIce", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg m-2 s-1", 
+            "out_name": "sndmasssi", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "sitempsnic": {
+            "comment": "Report surface temperature of ice where snow thickness is zero", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Temperature at snow-ice interface", 
+            "standard_name": "snow_sea_ice_interface_temperature", 
+            "modeling_realm": "seaIce", 
+            "cell_measures": "time: mean where sea_ice area: mean where sea_ice area: mean where sea_ice", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "K", 
+            "out_name": "sitempsnic", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "siforcecorioly": {
+            "comment": "Y-component of force on sea ice caused by coriolis force", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Coriolis force term in force balance (y-component)", 
+            "standard_name": "coriolis_force_on_sea_ice_y", 
+            "modeling_realm": "seaIce", 
+            "cell_measures": "time: mean where sea_ice area: mean where sea_ice area: mean where sea_ice", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "N m-2", 
+            "out_name": "siforcecorioly", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "siforcecoriolx": {
+            "comment": "X-component of force on sea ice caused by coriolis force", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Coriolis force term in force balance (x-component)", 
+            "standard_name": "coriolis_force_on_sea_ice_x", 
+            "modeling_realm": "seaIce", 
+            "cell_measures": "time: mean where sea_ice area: mean where sea_ice area: mean where sea_ice", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "N m-2", 
+            "out_name": "siforcecoriolx", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "sidmassdyn": {
+            "comment": "Total change in sea-ice mass through dynamics-related processes (advection,...) divided by grid-cell area", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "sea-ice mass change from dynamics", 
+            "standard_name": "tendency_of_sea_ice_amount_due_to_dynamics", 
+            "modeling_realm": "seaIce", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg m-2 s-1", 
+            "out_name": "sidmassdyn", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "siflcondtop": {
+            "comment": "the net heat conduction flux at the ice surface", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Net conductive heat flux in ice at the surface", 
+            "standard_name": "conductive_heat_flux_at_sea_ice_surface", 
+            "modeling_realm": "seaIce", 
+            "cell_measures": "time: mean where sea_ice area: mean where sea_ice area: mean where sea_ice", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "W m-2 ", 
+            "out_name": "siflcondtop", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "sitempbot": {
+            "comment": "Report temperature at interface, NOT temperature within lowermost model layer", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Temperature at ice-ocean interface", 
+            "standard_name": "sea_ice_bottom_temperature", 
+            "modeling_realm": "seaIce", 
+            "cell_measures": "time: mean where sea_ice area: mean where sea_ice area: mean where sea_ice", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "K", 
+            "out_name": "sitempbot", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "sndmasswindrif": {
+            "comment": "the rate of change of snow mass through wind drift of snow divided by grid-cell area", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "snow mass change through wind drift of snow", 
+            "standard_name": "tendency_of_snow_mass_due_to_drifting_snow", 
+            "modeling_realm": "seaIce", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg m-2 s-1", 
+            "out_name": "sndmasswindrif", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "nsigma": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: nsigma", 
+            "type": "integer", 
+            "dimensions": ""
+        }, 
+        "sidragtop": {
+            "comment": "Atmospheric drag coefficient that is used to calculate the atmospheric momentum drag on sea ice", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Atmospheric drag coefficient", 
+            "standard_name": "surface_drag_coefficient_for_momentum_in_air", 
+            "modeling_realm": "seaIce", 
+            "cell_measures": "time: mean where sea_ice area: mean where sea_ice area: mean where sea_ice", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "1.0", 
+            "out_name": "sidragtop", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "sistresave": {
+            "comment": "Average normal stress in sea ice (first stress invariant)", 
+            "dimensions": "longitude latitude time1", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Average normal stress in sea ice", 
+            "standard_name": "average_normal_stress", 
+            "modeling_realm": "seaIce", 
+            "cell_measures": "time: point area: mean where sea_ice", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "N m-1", 
+            "out_name": "sistresave", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "sirdgthick": {
+            "comment": "Sea Ice Ridge Height (representing mean height over the ridged area)", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Ridged ice thickness", 
+            "standard_name": "thickness_of_ridged_sea_ice", 
+            "modeling_realm": "seaIce", 
+            "cell_measures": "time: mean where sea_ice area: mean where sea_ice area: mean where sea_ice", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "m", 
+            "out_name": "sirdgthick", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "sishevel": {
+            "comment": "Maximum shear of sea-ice velocity field (second shear strain invariant)", 
+            "dimensions": "longitude latitude time1", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Maximum shear of sea-ice velocity field", 
+            "standard_name": "maximum_shear_of_sea_ice_velocity", 
+            "modeling_realm": "seaIce", 
+            "cell_measures": "time: point area: mean where sea_ice", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "1/s", 
+            "out_name": "sishevel", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "siforcetiltx": {
+            "comment": "X-component of force on sea ice caused by sea-surface tilt", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Sea-surface tilt term in force balance (x-component)", 
+            "standard_name": "sea_surface_tilt_force_on_sea_ice_x", 
+            "modeling_realm": "seaIce", 
+            "cell_measures": "time: mean where sea_ice area: mean where sea_ice area: mean where sea_ice", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "N m-2", 
+            "out_name": "siforcetiltx", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "siforcetilty": {
+            "comment": "Y-component of force on sea ice caused by sea-surface tilt", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Sea-surface tilt term in force balance (y-component)", 
+            "standard_name": "sea_surface_tilt_force_on_sea_ice_y", 
+            "modeling_realm": "seaIce", 
+            "cell_measures": "time: mean where sea_ice area: mean where sea_ice area: mean where sea_ice", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "N m-2", 
+            "out_name": "siforcetilty", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "sidivvel": {
+            "comment": "Divergence of sea-ice velocity field (first shear strain invariant)", 
+            "dimensions": "longitude latitude time1", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Divergence of the sea-ice velocity field", 
+            "standard_name": "divergence_of_sea_ice_velocity", 
+            "modeling_realm": "seaIce", 
+            "cell_measures": "time: point area: mean where sea_ice", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "0", 
+            "units": "1/s", 
+            "out_name": "sidivvel", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "sivols": {
+            "comment": "total volume of sea ice in the Southern hemisphere", 
+            "dimensions": "time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Sea ice volume South", 
+            "standard_name": "sea_ice_volume", 
+            "modeling_realm": "seaIce", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "10^3 km3", 
+            "out_name": "sivols", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "sidconcdyn": {
+            "comment": "Total change in sea-ice area fraction through dynamics-related processes (advection, divergence...)", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "sea-ice area fraction change from dynamics", 
+            "standard_name": "tendency_of_sea_ice_area_fraction_due_to_dynamics", 
+            "modeling_realm": "seaIce", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "1/s", 
+            "out_name": "sidconcdyn", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "simpthick": {
+            "comment": "Depth of melt ponds (representing mean depth over melt pond area)", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Meltpond depth", 
+            "standard_name": "melt_pond_depth", 
+            "modeling_realm": "seaIce", 
+            "cell_measures": "time: mean where sea_ice area: mean where sea_ice area: mean where sea_ice", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "m", 
+            "out_name": "simpthick", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "siflsensupbot": {
+            "comment": "the net sensible heat flux under sea ice from the ocean", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Net sensible heat flux under sea ice", 
+            "standard_name": "ice_ocean_heat_flux", 
+            "modeling_realm": "seaIce", 
+            "cell_measures": "time: mean where sea_ice area: mean where sea_ice area: mean where sea_ice", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "W m-2", 
+            "out_name": "siflsensupbot", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "sistrxubot": {
+            "comment": "X-component of ocean stress on sea ice ", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "X-component of ocean stress on sea ice", 
+            "standard_name": "sea_ice_base_upward_x_stress", 
+            "modeling_realm": "seaIce", 
+            "cell_measures": "time: mean where sea_ice area: mean where sea_ice area: mean where sea_ice", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "0", 
+            "units": "N m-2", 
+            "out_name": "sistrxubot", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "siitdsnconc": {
+            "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 angle time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Snow area fractions in thickness categories", 
+            "standard_name": "snow_area_fraction_over_categories", 
+            "modeling_realm": "seaIce", 
+            "cell_measures": "time: mean where sea_ice area: mean where sea_ice area: mean where sea_ice", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "1.0", 
+            "out_name": "siitdsnconc", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "siitdconc": {
+            "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 angle time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Sea-ice area fractions in thickness categories", 
+            "standard_name": "sea_ice_area_fraction_over_categories", 
+            "modeling_realm": "seaIce", 
+            "cell_measures": "time: mean where sea_ice area: mean where sea_ice area: mean where sea_ice", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "1.0", 
+            "out_name": "siitdconc", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "sistrydtop": {
+            "comment": "Y-component of atmospheric stress on sea ice ", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Y-component of atmospheric stress on sea ice", 
+            "standard_name": "surface_downward_y_stress", 
+            "modeling_realm": "seaIce", 
+            "cell_measures": "time: mean where sea_ice area: mean where sea_ice area: mean where sea_ice", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "N m-2", 
+            "out_name": "sistrydtop", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "sistryubot": {
+            "comment": "Y-component of ocean stress on sea ice ", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Y-component of ocean stress on sea ice", 
+            "standard_name": "sea_ice_base_upward_y_stress", 
+            "modeling_realm": "seaIce", 
+            "cell_measures": "time: mean where sea_ice area: mean where sea_ice area: mean where sea_ice", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "0", 
+            "units": "N m-2", 
+            "out_name": "sistryubot", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "orog": {
+            "units": "m", 
+            "long_name": "Surface Altitude", 
+            "type": "real", 
+            "dimensions": "longitude latitude"
+        }, 
+        "sipr": {
+            "comment": "mass of liquid precipitation falling onto sea ice divided by grid-cell area", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Rainfall rate over sea ice", 
+            "standard_name": "rainfall_flux", 
+            "modeling_realm": "seaIce", 
+            "cell_measures": "time: mean where sea_ice area: mean where sea_ice area: mean where sea_ice", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg m-2 s-1", 
+            "out_name": "sipr", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "b_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: b(k+1/2)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "sidmassgrowthbot": {
+            "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", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "sea-ice mass change through basal growth", 
+            "standard_name": "tendency_of_sea_ice_amount_due_to_congelation_ice_accumulation", 
+            "modeling_realm": "seaIce", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg m-2 s-1", 
+            "out_name": "sidmassgrowthbot", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "siflsenstop": {
+            "comment": "the net sensible heat flux over sea ice", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Net sensible heat flux over sea ice", 
+            "standard_name": "surface_upward_sensible_heat_flux", 
+            "modeling_realm": "seaIce", 
+            "cell_measures": "time: mean where sea_ice area: mean where sea_ice area: mean where sea_ice", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "0", 
+            "units": "W m-2", 
+            "out_name": "siflsenstop", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "sndmassdyn": {
+            "comment": "the rate of change of snow mass through advection with sea ice divided by grid-cell area", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "snow mass change through advection by sea-ice dynamics", 
+            "standard_name": "tendency_of_snow_mass_due_to_sea_ice_dynamics", 
+            "modeling_realm": "seaIce", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg m-2 s-1", 
+            "out_name": "sndmassdyn", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "siareas": {
+            "comment": "total area of sea ice in the Southern hemisphere", 
+            "dimensions": "time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Sea ice area South", 
+            "standard_name": "sea_ice_area", 
+            "modeling_realm": "seaIce", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "10^6 km2", 
+            "out_name": "siareas", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "siarean": {
+            "comment": "total area of sea ice in the Northern hemisphere", 
+            "dimensions": "time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Sea ice area North", 
+            "standard_name": "sea_ice_area", 
+            "modeling_realm": "seaIce", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "10^6 km2", 
+            "out_name": "siarean", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "sigma_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: sigma(k+1/2)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "simprefrozen": {
+            "comment": "Volume of refrozen ice on melt ponds divided by meltpond covered area", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Thickness of refozen ice on melt pond", 
+            "standard_name": "melt_pond_refrozen_ice", 
+            "modeling_realm": "seaIce", 
+            "cell_measures": "time: mean where sea_ice area: mean where sea_ice area: mean where sea_ice", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "m", 
+            "out_name": "simprefrozen", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "ptop": {
+            "units": "Pa", 
+            "long_name": "pressure at top of model", 
+            "type": "", 
+            "dimensions": ""
+        }, 
+        "sidconcth": {
+            "comment": "Total change in sea-ice area fraction through thermodynamic processes", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "sea-ice area fraction change from thermodynamics", 
+            "standard_name": "tendency_of_sea_ice_area_fraction_due_to_thermodynamics", 
+            "modeling_realm": "seaIce", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "1/s", 
+            "out_name": "sidconcth", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "sidmassth": {
+            "comment": "Total change in sea-ice mass from thermodynamic processes divided by grid-cell area", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "sea-ice mass change from thermodynamics", 
+            "standard_name": "tendency_of_sea_ice_amount_due_to_thermodynamics", 
+            "modeling_realm": "seaIce", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg m-2 s-1", 
+            "out_name": "sidmassth", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "sifb": {
+            "comment": "Mean height of sea-ice surface (=snow-ice interface when snow covered) above sea level", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Sea-ice freeboard", 
+            "standard_name": "sea_ice_freeboard", 
+            "modeling_realm": "seaIce", 
+            "cell_measures": "time: mean where sea_ice area: mean where sea_ice area: mean where sea_ice", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "m", 
+            "out_name": "sifb", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "siflfwbot": {
+            "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", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Freshwater flux from sea ice", 
+            "standard_name": "freshwater_flux_from_ice", 
+            "modeling_realm": "seaIce", 
+            "cell_measures": "time: mean where sea_ice area: mean where sea_ice area: mean where sea_ice", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg m-2 s-1", 
+            "out_name": "siflfwbot", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "sithick": {
+            "comment": "Actual (floe) thickness of sea ice (NOT volume divided by grid area as was done in CMIP5)", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Sea-ice thickness", 
+            "standard_name": "sea_ice_thickness", 
+            "modeling_realm": "seaIce", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "m", 
+            "out_name": "sithick", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "siflswdtop": {
+            "comment": "the downwelling shortwave flux over sea ice (always positive by sign convention)", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Downwelling shortwave flux over sea ice", 
+            "standard_name": "surface_downwelling_shortwave_flux_in_air", 
+            "modeling_realm": "seaIce", 
+            "cell_measures": "time: mean where sea_ice area: mean where sea_ice area: mean where sea_ice", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "0", 
+            "units": "W m-2", 
+            "out_name": "siflswdtop", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "ztop": {
+            "units": "m", 
+            "long_name": "height of top of model", 
+            "type": "", 
+            "dimensions": ""
+        }, 
+        "sivoln": {
+            "comment": "total volume of sea ice in the Northern hemisphere", 
+            "dimensions": "time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Sea ice volume North", 
+            "standard_name": "sea_ice_volume", 
+            "modeling_realm": "seaIce", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "10^3 km3", 
+            "out_name": "sivoln", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "siextents": {
+            "comment": "Total area of all Southern-Hemisphere grid cells that are covered by at least 15 % areal fraction of sea ice", 
+            "dimensions": "time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Sea ice extent South", 
+            "standard_name": "sea_ice_extent", 
+            "modeling_realm": "seaIce", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "10^6 km2", 
+            "out_name": "siextents", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "z1": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: z1", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "z2": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: z2", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "siitdthick": {
+            "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 angle time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Sea-ice thickness in thickness categories", 
+            "standard_name": "sea_ice_thickness_over_categories", 
+            "modeling_realm": "seaIce", 
+            "cell_measures": "time: mean where sea_ice area: mean where sea_ice area: mean where sea_ice", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "m", 
+            "out_name": "siitdthick", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "sndmasssubl": {
+            "comment": "the rate of change of snow mass through sublimation and evaporation divided by grid-cell area", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "snow mass change through evaporation or sublimation", 
+            "standard_name": "surface_snow_sublimation_flux", 
+            "modeling_realm": "seaIce", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg m-2 s-1", 
+            "out_name": "sndmasssubl", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "sisnthick": {
+            "comment": "Actual thickness of snow (snow volume divided by snow-covered area)", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Snow thickness", 
+            "standard_name": "surface_snow_thickness", 
+            "modeling_realm": "seaIce", 
+            "cell_measures": "time: mean where sea_ice area: mean where sea_ice area: mean where snow over sea_ice", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "m", 
+            "out_name": "sisnthick", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "sispeed": {
+            "comment": "Speed of ice (i.e. mean absolute velocity) to account for back-and-forth movement of the ice", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Sea-ice speed", 
+            "standard_name": "sea_ice_speed", 
+            "modeling_realm": "seaIce", 
+            "cell_measures": "time: mean where sea_ice area: mean where sea_ice area: mean where sea_ice", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "m s-1", 
+            "out_name": "sispeed", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "sisali": {
+            "comment": "Mean sea-ice salinity of all sea ice in grid cell", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Sea ice salinity", 
+            "standard_name": "sea_ice_salinity", 
+            "modeling_realm": "seaIce", 
+            "cell_measures": "time: mean where sea_ice area: mean where sea_ice area: mean where sea_ice", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "g kg-1", 
+            "out_name": "sisali", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "sidmasstrany": {
+            "comment": "Includes transport of both sea ice and snow by advection", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Y-component of sea-ice mass transport", 
+            "standard_name": "sea_ice_y_transport", 
+            "modeling_realm": "seaIce", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg s-1", 
+            "out_name": "sidmasstrany", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "siflswdbot": {
+            "comment": "the downwelling shortwave flux underneath sea ice (always positive)", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Downwelling shortwave flux under sea ice", 
+            "standard_name": "bottom_downwelling_shortwave_flux_into_ocean", 
+            "modeling_realm": "seaIce", 
+            "cell_measures": "time: mean where sea_ice area: mean where sea_ice area: mean where sea_ice", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "W m-2", 
+            "out_name": "siflswdbot", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "sifllwutop": {
+            "comment": "the upward longwave flux over sea ice (always negative)", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Upward longwave flux over sea ice", 
+            "standard_name": "surface_upwelling_longwave_flux_in_air", 
+            "modeling_realm": "seaIce", 
+            "cell_measures": "time: mean where sea_ice area: mean where sea_ice area: mean where sea_ice", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "0", 
+            "units": "W m-2", 
+            "out_name": "sifllwutop", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "siforceintstry": {
+            "comment": "Y-component of force on sea ice caused by internal stress (divergence of sigma)", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Internal stress term in force balance (y-component)", 
+            "standard_name": "internal_stress_in_sea_ice_y", 
+            "modeling_realm": "seaIce", 
+            "cell_measures": "time: mean where sea_ice area: mean where sea_ice area: mean where sea_ice", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "N m-2", 
+            "out_name": "siforceintstry", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "siforceintstrx": {
+            "comment": "X-component of force on sea ice caused by internal stress (divergence of sigma)", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Internal stress term in force balance (x-component)", 
+            "standard_name": "internal_stress_in_sea_ice_x", 
+            "modeling_realm": "seaIce", 
+            "cell_measures": "time: mean where sea_ice area: mean where sea_ice area: mean where sea_ice", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "N m-2", 
+            "out_name": "siforceintstrx", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "siconc": {
+            "comment": "Area fraction of grid cell covered by sea ice", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Sea-ice area fraction", 
+            "standard_name": "sea_ice_area_fraction", 
+            "modeling_realm": "seaIce", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "0", 
+            "units": "1.0", 
+            "out_name": "siconc", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "sirdgconc": {
+            "comment": "Area fraction of grid cell covered by ridged sea ice", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Ridged ice area fraction", 
+            "standard_name": "fraction_of_ridged_sea_ice", 
+            "modeling_realm": "seaIce", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "1.0", 
+            "out_name": "sirdgconc", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "sistrxdtop": {
+            "comment": "X-component of atmospheric stress on sea ice", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "X-component of atmospheric stress on sea ice", 
+            "standard_name": "surface_downward_x_stress", 
+            "modeling_realm": "seaIce", 
+            "cell_measures": "time: mean where sea_ice area: mean where sea_ice area: mean where sea_ice", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "N m-2", 
+            "out_name": "sistrxdtop", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "siitdsnthick": {
+            "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 angle time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Snow thickness in thickness categories", 
+            "standard_name": "snow_thickness_over_categories", 
+            "modeling_realm": "seaIce", 
+            "cell_measures": "time: mean where sea_ice area: mean where sea_ice area: mean where sea_ice", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "m", 
+            "out_name": "siitdsnthick", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "href": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: href", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "sialb": {
+            "comment": "Mean surface albedo of entire ice-covered part of grid cell", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Sea-ice or snow albedo", 
+            "standard_name": "sea_ice_albedo", 
+            "modeling_realm": "seaIce", 
+            "cell_measures": "time: mean where sea_ice area: mean where sea_ice area: mean where sea_ice", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "0", 
+            "units": "1.0", 
+            "out_name": "sialb", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "ps": {
+            "units": "Pa", 
+            "long_name": "Surface Air Pressure", 
+            "type": "real", 
+            "dimensions": "longitude latitude time"
+        }, 
+        "simass": {
+            "comment": "Total mass of sea ice divided by grid-cell area", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Sea-ice mass per area", 
+            "standard_name": "sea_ice_amount", 
+            "modeling_realm": "seaIce", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg  m-2 ", 
+            "out_name": "simass", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "sndmassmelt": {
+            "comment": "the rate of change of snow mass through melt divided by grid-cell area", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "snow mass change through melt", 
+            "standard_name": "surface_snow_melt_flux", 
+            "modeling_realm": "seaIce", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg m-2 s-1", 
+            "out_name": "sndmassmelt", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "sndmasssnf": {
+            "comment": "mass of solid precipitation falling onto sea ice divided by grid-cell area", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "snow mass change through snow fall", 
+            "standard_name": "snowfall_flux", 
+            "modeling_realm": "seaIce", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg m-2 s-1", 
+            "out_name": "sndmasssnf", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "simpmass": {
+            "comment": "Meltpond mass per area of sea ice.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Meltpond mass per area", 
+            "standard_name": "surface_liquid_water_amount", 
+            "modeling_realm": "seaIce", 
+            "cell_measures": "time: mean where sea_ice area: mean where sea_ice area: mean where sea_ice", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg/m2", 
+            "out_name": "simpmass", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "siu": {
+            "comment": "The x-velocity of ice on native model grid", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "X-component of sea ice velocity", 
+            "standard_name": "sea_ice_x_velocity", 
+            "modeling_realm": "seaIce", 
+            "cell_measures": "time: mean where sea_ice area: mean where sea_ice area: mean where sea_ice", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "m s-1", 
+            "out_name": "siu", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "sihc": {
+            "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", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Sea-ice heat content per unit area", 
+            "standard_name": "integral_of_sea_ice_temperature_wrt_depth_expressed_as_heat_content", 
+            "modeling_realm": "seaIce", 
+            "cell_measures": "time: mean where sea_ice area: mean where sea_ice area: mean where sea_ice", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "0", 
+            "units": "J m-2", 
+            "out_name": "sihc", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "p0": {
+            "units": "Pa", 
+            "long_name": "vertical coordinate formula term: reference pressure", 
+            "type": "", 
+            "dimensions": ""
+        }, 
+        "b": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: b(k)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "k_c": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: k_c", 
+            "type": "integer", 
+            "dimensions": ""
+        }, 
+        "a_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: a(k+1/2)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "sidmassmelttop": {
+            "comment": "The rate of change of sea ice mass through melting at the ice surface divided by grid-cell area", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "sea-ice mass change through surface melting", 
+            "standard_name": "tendency_of_sea_ice_amount_due_to_surface_melting", 
+            "modeling_realm": "seaIce", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg m-2 s-1", 
+            "out_name": "sidmassmelttop", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "ap_bnds": {
+            "units": "Pa", 
+            "long_name": "vertical coordinate formula term: ap(k+1/2)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "sidmassevapsubl": {
+            "comment": "The rate of change of sea-ice mass change through evaporation and sublimation divided by grid-cell area", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "sea-ice mass change through evaporation and sublimation", 
+            "standard_name": "water_evaporation_flux", 
+            "modeling_realm": "seaIce", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg m-2 s-1", 
+            "out_name": "sidmassevapsubl", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "ap": {
+            "units": "Pa", 
+            "long_name": "vertical coordinate formula term: ap(k)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "zlev": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: zlev(k)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "siextentn": {
+            "comment": "Total area of all Northern-Hemisphere grid cells that are covered by at least 15 % areal fraction of sea ice", 
+            "dimensions": "time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Sea ice extent North", 
+            "standard_name": "sea_ice_extent", 
+            "modeling_realm": "seaIce", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "10^6 km2", 
+            "out_name": "siextentn", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "sidragbot": {
+            "comment": "Oceanic drag coefficient that is used to calculate the oceanic momentum drag on sea ice", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Ocean drag coefficient", 
+            "standard_name": "surface_drag_coefficient_for_momentum_in_water", 
+            "modeling_realm": "seaIce", 
+            "cell_measures": "time: mean where sea_ice area: mean where sea_ice area: mean where sea_ice", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "1.0", 
+            "out_name": "sidragbot", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "sidmasslat": {
+            "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", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Lateral sea ice melt rate", 
+            "standard_name": "tendency_of_sea_ice_amount_due_to_lateral_melting", 
+            "modeling_realm": "seaIce", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg m-2 s-1", 
+            "out_name": "sidmasslat", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "siflcondbot": {
+            "comment": "the net heat conduction flux at the ice base ", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Net conductive heat fluxes in ice at the bottom", 
+            "standard_name": "conductive_heat_flux_at_sea_ice_bottom", 
+            "modeling_realm": "seaIce", 
+            "cell_measures": "time: mean where sea_ice area: mean where sea_ice area: mean where sea_ice", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "W m-2 ", 
+            "out_name": "siflcondbot", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "eta": {
+            "units": "m", 
+            "long_name": "Sea Surface Height formula term: thetao", 
+            "type": "real", 
+            "dimensions": "longitude latitude time"
+        }, 
+        "sitimefrac": {
+            "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", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Fraction of time steps with sea ice", 
+            "standard_name": "sea_ice_time_fraction", 
+            "modeling_realm": "seaIce", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "1.0", 
+            "out_name": "sitimefrac", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "sidmasstranx": {
+            "comment": "Includes transport of both sea ice and snow by advection", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "X-component of sea-ice mass transport", 
+            "standard_name": "sea_ice_x_transport", 
+            "modeling_realm": "seaIce", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg s-1", 
+            "out_name": "sidmasstranx", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "sicompstren": {
+            "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", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Compressive sea ice strength", 
+            "standard_name": "compressive_strength_of_sea_ice", 
+            "modeling_realm": "seaIce", 
+            "cell_measures": "time: mean where sea_ice area: mean where sea_ice area: mean where sea_ice", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "0", 
+            "units": "N m-1", 
+            "out_name": "sicompstren", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "sifllwdtop": {
+            "comment": "the downwelling longwave flux over sea ice (always positive)", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Downwelling longwave flux over sea ice", 
+            "standard_name": "surface_downwelling_longwave_flux_in_air", 
+            "modeling_realm": "seaIce", 
+            "cell_measures": "time: mean where sea_ice area: mean where sea_ice area: mean where sea_ice", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "0", 
+            "units": "W m-2", 
+            "out_name": "sifllwdtop", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "sisnhc": {
+            "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", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Snow-heat content per unit area", 
+            "standard_name": "thermal_energy_content_of_surface_snow", 
+            "modeling_realm": "seaIce", 
+            "cell_measures": "time: mean where sea_ice area: mean where sea_ice area: mean where snow over sea_ice", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "J m-2", 
+            "out_name": "sisnhc", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "sistremax": {
+            "comment": "Maximum shear stress in sea ice (second stress invariant)", 
+            "dimensions": "longitude latitude time1", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Maximum shear stress in sea ice", 
+            "standard_name": "maximum_shear_stress", 
+            "modeling_realm": "seaIce", 
+            "cell_measures": "time: point area: mean where sea_ice", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "N m-1", 
+            "out_name": "sistremax", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "zlev_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: zlev(k+1/2)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "siv": {
+            "comment": "The y-velocity of ice on native model grid", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Y-component of sea ice velocity", 
+            "standard_name": "sea_ice_y_velocity", 
+            "modeling_realm": "seaIce", 
+            "cell_measures": "time: mean where sea_ice area: mean where sea_ice area: mean where sea_ice", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "m s-1", 
+            "out_name": "siv", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "a": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: a(k)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "siflswutop": {
+            "comment": "the upward shortwave flux over sea ice (always negative)", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Upward shortwave flux over sea ice", 
+            "standard_name": "surface_upwelling_shortwave_flux_in_air", 
+            "modeling_realm": "seaIce", 
+            "cell_measures": "time: mean where sea_ice area: mean where sea_ice area: mean where sea_ice", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "0", 
+            "units": "W m-2", 
+            "out_name": "siflswutop", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "siacrossline": {
+            "comment": "net (sum of transport in all directions) sea ice mass transport through the following four passages, positive into the Arctic Ocean 1. Fram Strait = (11.5oW,81.3oN to (10.5oE,79.6oN) 2. Canadian Archipelego = (128.2oW,70.6oN) to (59.3oW,82.1oN) 3. Barents opening = (16.8oE,76.5oN) to (19.2oE,70.2oN) 4. Bering Strait = (171oW,66.2oN) to (166oW,65oN)", 
+            "dimensions": "latitude basin time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Sea ice mass flux through straits", 
+            "standard_name": "sea_ice_transport_across_line", 
+            "modeling_realm": "seaIce", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg/s", 
+            "out_name": "siacrossline", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "sidmassmeltbot": {
+            "comment": "The rate of change of sea ice mass through melting at the ice bottom divided by grid-cell area", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "sea-ice mass change through bottom melting", 
+            "standard_name": "tendency_of_sea_ice_amount_due_to_basal_melting", 
+            "modeling_realm": "seaIce", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg m-2 s-1", 
+            "out_name": "sidmassmeltbot", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "siage": {
+            "comment": "Age of sea ice", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Age of sea ice", 
+            "standard_name": "age_of_sea_ice", 
+            "modeling_realm": "seaIce", 
+            "cell_measures": "time: mean where sea_ice area: mean where sea_ice area: mean where sea_ice", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "0", 
+            "units": "s", 
+            "out_name": "siage", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "simpconc": {
+            "comment": "Area fraction of grid cell that is covered by melt ponds", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Meltpond area fraction", 
+            "standard_name": "melt_pond_fraction", 
+            "modeling_realm": "seaIce", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "1.0", 
+            "out_name": "simpconc", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "depth": {
+            "units": "m", 
+            "long_name": "Sea Floor Depth: formula term: thetao", 
+            "type": "real", 
+            "dimensions": "longitude latitude"
+        }, 
+        "sidmassgrowthwat": {
+            "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", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "sea-ice mass change through growth in supercooled open water (aka frazil)", 
+            "standard_name": "tendency_of_sea_ice_amount_due_to_freezing_in_open_water", 
+            "modeling_realm": "seaIce", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg m-2 s-1", 
+            "out_name": "sidmassgrowthwat", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "sivol": {
+            "comment": "Total volume of sea ice divided by grid-cell area (this used to be called ice thickness in CMIP5)", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Sea-ice volume per area", 
+            "standard_name": "sea_ice_thickness", 
+            "modeling_realm": "seaIce", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "0", 
+            "units": "m", 
+            "out_name": "sivol", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "siflsaltbot": {
+            "comment": "Total flux of salt from water into sea ice divided by grid-cell area; salt flux is upward (negative) during ice growth when salt is embedded into the ice and downward (positive) during melt when salt from sea ice is again released to the ocean", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Salt flux from sea ice", 
+            "standard_name": "salt_flux_from_ice", 
+            "modeling_realm": "seaIce", 
+            "cell_measures": "time: mean where sea_ice area: mean where sea_ice area: mean where sea_ice", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg m-2 s-1", 
+            "out_name": "siflsaltbot", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "sigma": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: sigma(k)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "sifllatstop": {
+            "comment": "the net latent heat flux over sea ice", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Net latent heat flux over sea ice", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "seaIce", 
+            "cell_measures": "time: mean where sea_ice area: mean where sea_ice area: mean where sea_ice", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "0", 
+            "units": "W m-2", 
+            "out_name": "sifllatstop", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }
+    }
+}
diff --git a/TestTables/CMIP6_aerannual.json b/TestTables/CMIP6_aerannual.json
new file mode 100644
index 0000000..1720c1d
--- /dev/null
+++ b/TestTables/CMIP6_aerannual.json
@@ -0,0 +1,2273 @@
+{
+    "Header": {
+        "product": "output", 
+        "approx_interval": "365.00000", 
+        "realm": "aero", 
+        "cmor_version": "3.1", 
+        "Conventions": "CF-1.6 CMIP-6.0", 
+        "frequency": "yr", 
+        "table_id": "Table aerannual", 
+        "data_specs_version": "01.beta.29", 
+        "mip_era": "CMIP6", 
+        "generic_levels": "", 
+        "missing_value": "1e20", 
+        "table_date": "14 June 2016"
+    }, 
+    "axis_entry": {
+        "typebare": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "bare_ground", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "tau": {
+            "requested": [
+                "0.15", 
+                "0.8", 
+                "2.45", 
+                "6.5", 
+                "16.2", 
+                "41.5", 
+                "100."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "0.0", 
+                "0.3", 
+                "0.3", 
+                "1.3", 
+                "1.3", 
+                "3.6", 
+                "3.6", 
+                "9.4", 
+                "9.4", 
+                "23.0", 
+                "23.0", 
+                "60.0", 
+                "60.0", 
+                "100000."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "cloud optical thickness", 
+            "standard_name": "atmosphere_optical_thickness_due_to_cloud", 
+            "value": "", 
+            "out_name": "tau", 
+            "type": "double", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "olayer100m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "0. 100.", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "50.0", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "100.0", 
+            "axis": "Z"
+        }, 
+        "spectband": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "Spectral Band", 
+            "standard_name": "wave_frequency", 
+            "value": "", 
+            "out_name": "spectband", 
+            "type": "double", 
+            "units": "s-1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "ocean_sigma_z": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "sigma: sigma eta: eta depth: depth depth_c: depth_c nsigma: nsigma zlev: zlev", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "sigma: sigma_bnds eta: eta depth: depth depth_c: depth_c nsigma: nsigma zlev: zlev_bnds", 
+            "bounds_values": "", 
+            "long_name": "ocean sigma over z coordinate", 
+            "standard_name": "ocean_sigma_z", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "for k <= nsigma: z(n,k,j,i) = eta(n,j,i) + sigma(k)*(min(depth_c,depth(j,i))+eta(n,j,i)) ; for k > nsigma: z(n,k,j,i) = zlev(k)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev19": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000.", 
+                "500.", 
+                "100."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "p220": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "44000. 0.0", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "22000.0", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev17": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev10": {
+            "requested": [
+                "100000.", 
+                "85000.", 
+                "70000.", 
+                "50000.", 
+                "25000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "site": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "site index", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "site", 
+            "type": "integer", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "smooth_level": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "a: a b1: b1 b2: b2 ztop: ztop zsurf1: zsurf1 zsurf2: zsurf2", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-200.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "a: a_bnds b1: b1_bnds b2: b2_bnds ztop: ztop zsurf1: zsurf1 zsurf2: zsurf2", 
+            "bounds_values": "", 
+            "long_name": "atmosphere smooth level vertical (SLEVE) coordinate", 
+            "standard_name": "atmosphere_sleve_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "m", 
+            "formula": "z = a*ztop + b1*zsurf1 + b2*zsurf2", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "800000.0", 
+            "axis": "Z"
+        }, 
+        "p840": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "100000. 68000.", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "84000.0", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "ocean_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "sigma: lev eta: eta depth: depth", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "sigma: lev_bnds eta: eta depth: depth", 
+            "bounds_values": "", 
+            "long_name": "ocean sigma coordinate", 
+            "standard_name": "ocean_sigma_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "z(n,k,j,i) = eta(n,j,i) + sigma(k)*(depth(j,i)+eta(n,j,i))", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "0.0", 
+            "axis": "Z"
+        }, 
+        "depth0m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "0.0", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "100.0", 
+            "axis": "Z"
+        }, 
+        "ocean_s": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "s: lev eta: eta depth: depth a: a_coeff b: b_coeff depth_c: depth_c", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "s: lev_bnds eta: eta depth: depth a: a b: b depth_c: depth_c", 
+            "bounds_values": "", 
+            "long_name": "ocean s-coordinate", 
+            "standard_name": "ocean_s_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "z(n,k,j,i) = eta(n,j,i)*(1+s(k)) + depth_c*s(k) + (depth(j,i)-depth_c)*C(k) n where n C(k)=(1-b)*sinh(a*s(k))/sinh(a) +n           b*(tanh(a*(s(k)+0.5))/(2*tanh(0.5*a)) - 0.5)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "0.0", 
+            "axis": "Z"
+        }, 
+        "plev4s": {
+            "requested": [
+                "85000.", 
+                "50000.", 
+                "20000.", 
+                "5000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "typec4pft": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "c4_plant_functional_types", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "plev3h": {
+            "requested": [
+                "10000.", 
+                "1000.", 
+                "100."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "height2m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "up", 
+            "must_have_bounds": "no", 
+            "valid_min": "1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "height", 
+            "standard_name": "height", 
+            "value": "2.0", 
+            "out_name": "height", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "10.0", 
+            "axis": "Z"
+        }, 
+        "time1": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "time", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "plev7h": {
+            "requested": [
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "25000.", 
+                "5000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "sza5": {
+            "requested": [
+                "0.", 
+                "20.", 
+                "40.", 
+                "60.", 
+                "80."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "solar zenith angle", 
+            "standard_name": "solar_zenith_angle", 
+            "value": "", 
+            "out_name": "sza", 
+            "type": "double", 
+            "units": "degree", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "depth_coord": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "ocean depth coordinate", 
+            "standard_name": "depth", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "12000.0", 
+            "axis": "Z"
+        }, 
+        "sdepth1": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "0.0 0.1", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "0.05", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "0.2", 
+            "axis": "Z"
+        }, 
+        "alternate_hybrid_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "ap: ap b: b ps: ps", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "ap: ap_bnds b: b_bnds ps: ps", 
+            "bounds_values": "", 
+            "long_name": "hybrid sigma pressure coordinate", 
+            "standard_name": "atmosphere_hybrid_sigma_pressure_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "1", 
+            "formula": "p = ap + b*ps", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "1.0", 
+            "axis": "Z"
+        }, 
+        "time2": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "time", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "yes", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "time3": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "Diurnal cycle: monthly mean of the diurnal cycle (1 hour steps).", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "oline": {
+            "requested": [
+                "barents_opening", 
+                "bering_strait", 
+                "canadian_archipelago", 
+                "denmark_strait", 
+                "drake_passage", 
+                "english_channel", 
+                "pacific_equatorial_undercurrent", 
+                "faroe_scotland_channel", 
+                "florida_bahamas_strait", 
+                "fram_strait", 
+                "iceland_faroe_channel", 
+                "indonesian_thoughflow", 
+                "mozambique_channel", 
+                "taiwan_luzon_straits", 
+                "windward_passage"
+            ], 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "ocean passage", 
+            "standard_name": "region", 
+            "value": "", 
+            "out_name": "line", 
+            "type": "character", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "plev14": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "25000.", 
+                "15000.", 
+                "10000.", 
+                "5000.", 
+                "2000.", 
+                "1000.", 
+                "500.", 
+                "100."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev8": {
+            "requested": [
+                "100000.", 
+                "85000.", 
+                "70000.", 
+                "50000.", 
+                "25000.", 
+                "10000.", 
+                "5000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "location": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "location index", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "loc", 
+            "type": "integer", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "latitude": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-90.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "latitude", 
+            "standard_name": "latitude", 
+            "value": "", 
+            "out_name": "lat", 
+            "type": "double", 
+            "units": "degrees_north", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "90.0", 
+            "axis": "Y"
+        }, 
+        "plev3": {
+            "requested": [
+                "85000.", 
+                "50000.", 
+                "25000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "basin": {
+            "requested": [
+                "atlantic_arctic_ocean", 
+                "indian_pacific_ocean", 
+                "global_ocean"
+            ], 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "ocean basin", 
+            "standard_name": "region", 
+            "value": "", 
+            "out_name": "basin", 
+            "type": "character", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "p700": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "700 hPa", 
+            "standard_name": "air_pressure", 
+            "value": "70000.", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev7": {
+            "requested": [
+                "90000.", 
+                "74000.", 
+                "62000.", 
+                "50000.", 
+                "37500.", 
+                "24500.", 
+                "9000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "100000.", 
+                "80000.", 
+                "80000.", 
+                "68000.", 
+                "68000.", 
+                "56000.", 
+                "56000.", 
+                "44000.", 
+                "44000.", 
+                "31000.", 
+                "31000.", 
+                "18000.", 
+                "18000.", 
+                " 0."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev4": {
+            "requested": [
+                "92500.", 
+                "85000.", 
+                "50000.", 
+                "25000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev23": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000.", 
+                "700.", 
+                "500.", 
+                "300.", 
+                "200.", 
+                "100.", 
+                "40."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev39": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "17000.", 
+                "15000.", 
+                "13000.", 
+                "11500.", 
+                "10000.", 
+                "9000.", 
+                "8000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1500.", 
+                "1000.", 
+                "700.", 
+                "500.", 
+                "300.", 
+                "200.", 
+                "150.", 
+                "100.", 
+                "70.", 
+                "50.", 
+                "40.", 
+                "30.", 
+                "20.", 
+                "15.", 
+                "10.", 
+                "7.", 
+                "5.", 
+                "3."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "typepever": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "primary_evergreen_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "typesdec": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "secondary_decidous_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "plev27": {
+            "requested": [
+                "100000.", 
+                "97500.", 
+                "95000.", 
+                "92500.", 
+                "90000.", 
+                "87500.", 
+                "85000.", 
+                "82500.", 
+                "80000.", 
+                "77500.", 
+                "75000.", 
+                "70000.", 
+                "65000.", 
+                "60000.", 
+                "55000.", 
+                "50000.", 
+                "45000.", 
+                "40000.", 
+                "35000.", 
+                "30000.", 
+                "25000.", 
+                "22500.", 
+                "20000.", 
+                "17500.", 
+                "15000.", 
+                "12500.", 
+                "10000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "alt40": {
+            "requested": [
+                "240.", 
+                "720.", 
+                "1200.", 
+                "1680.", 
+                "2160.", 
+                "2640.", 
+                "3120.", 
+                "3600.", 
+                "4080.", 
+                "4560.", 
+                "5040.", 
+                "5520.", 
+                "6000.", 
+                "6480.", 
+                "6960.", 
+                "7440.", 
+                "7920.", 
+                "8400.", 
+                "8880.", 
+                "9360.", 
+                "9840.", 
+                "10320.", 
+                "10800.", 
+                "11280.", 
+                "11760.", 
+                "12240.", 
+                "12720.", 
+                "13200.", 
+                "13680.", 
+                "14160.", 
+                "14640.", 
+                "15120.", 
+                "15600.", 
+                "16080.", 
+                "16560.", 
+                "17040.", 
+                "17520.", 
+                "18000.", 
+                "18480.", 
+                "18960."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "0.", 
+                "480.", 
+                "480.", 
+                "960.", 
+                "960.", 
+                "1440.", 
+                "1440.", 
+                "1920.", 
+                "1920.", 
+                "2400.", 
+                "2400.", 
+                "2880.", 
+                "2880.", 
+                "3360.", 
+                "3360.", 
+                "3840.", 
+                "3840.", 
+                "4320.", 
+                "4320.", 
+                "4800.", 
+                "4800.", 
+                "5280.", 
+                "5280.", 
+                "5760.", 
+                "5760.", 
+                "6240.", 
+                "6240.", 
+                "6720.", 
+                "6720.", 
+                "7200.", 
+                "7200.", 
+                "7680.", 
+                "7680.", 
+                "8160.", 
+                "8160.", 
+                "8640.", 
+                "8640.", 
+                "9120.", 
+                "9120.", 
+                "9600.", 
+                "9600.", 
+                "10080.", 
+                "10080.", 
+                "10560.", 
+                "10560.", 
+                "11040.", 
+                "11040.", 
+                "11520.", 
+                "11520.", 
+                "12000.", 
+                "12000.", 
+                "12480.", 
+                "12480.", 
+                "12960.", 
+                "12960.", 
+                "13440.", 
+                "13440.", 
+                "13920.", 
+                "13920.", 
+                "14400.", 
+                "14400.", 
+                "14880.", 
+                "14880.", 
+                "15360.", 
+                "15360.", 
+                "15840.", 
+                "15840.", 
+                "16320.", 
+                "16320.", 
+                "16800.", 
+                "16800.", 
+                "17280.", 
+                "17280.", 
+                "17760.", 
+                "17760.", 
+                "18240.", 
+                "18240.", 
+                "18720.", 
+                "18720.", 
+                "19200."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "altitude", 
+            "standard_name": "altitude", 
+            "value": "", 
+            "out_name": "alt40", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "time": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "time", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "plev7c": {
+            "requested": [
+                "90000.", 
+                "74000.", 
+                "62000.", 
+                "50000.", 
+                "37500.", 
+                "24500.", 
+                "9000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "height10m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "up", 
+            "must_have_bounds": "no", 
+            "valid_min": "1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "height", 
+            "standard_name": "height", 
+            "value": "10.0", 
+            "out_name": "height", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "30.0", 
+            "axis": "Z"
+        }, 
+        "dbze": {
+            "requested": [
+                "-47.5", 
+                "-42.5", 
+                "-37.5", 
+                "-32.5", 
+                "-27.5", 
+                "-22.5", 
+                "-17.5", 
+                "-12.5", 
+                "-7.5", 
+                "-2.5", 
+                "2.5", 
+                "7.5", 
+                "12.5", 
+                "17.5", 
+                "22.5"
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "-50", 
+                "-45", 
+                "-45", 
+                "-40", 
+                "-40", 
+                "-35", 
+                "-35", 
+                "-30", 
+                "-30", 
+                "-25", 
+                "-25", 
+                "-20", 
+                "-20", 
+                "-15", 
+                "-15", 
+                "-10", 
+                "-10", 
+                "-5", 
+                "-5", 
+                "0", 
+                "0", 
+                "5", 
+                "5", 
+                "10", 
+                "10", 
+                "15", 
+                "15", 
+                "20", 
+                "20", 
+                "25."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "CloudSat simulator equivalent radar reflectivity factor", 
+            "standard_name": "equivalent_reflectivity_factor", 
+            "value": "", 
+            "out_name": "dbze", 
+            "type": "double", 
+            "units": "dBZ", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "typesever": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "secondary_evergreen_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "rho": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "density++++?", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "rho", 
+            "type": "double", 
+            "units": "kg m-3", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "depth100m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "80.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "100.0", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "120.0", 
+            "axis": "Z"
+        }, 
+        "effectRadLi": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "Effective Radius of Liquid Aerosols", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "effectRadLi", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "sdepth": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "200.0", 
+            "axis": "Z"
+        }, 
+        "vegtype": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "plant functional type", 
+            "standard_name": "area_type", 
+            "value": "", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "typec3pft": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "c3_plant_functional_types", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "natural_log_pressure": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "p0: p0 lev: lev", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "p0: p0 lev: lev_bnds", 
+            "bounds_values": "", 
+            "long_name": "atmosphere natural log pressure coordinate", 
+            "standard_name": "atmosphere_ln_pressure_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "p = p0 * exp(-lev)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "20.0", 
+            "axis": "Z"
+        }, 
+        "scatratio": {
+            "requested": [
+                "0.005", 
+                "0.605", 
+                "2.1", 
+                "4.", 
+                "6.", 
+                "8.5", 
+                "12.5", 
+                "17.5", 
+                "22.5", 
+                "27.5", 
+                "35.", 
+                "45.", 
+                "55.", 
+                "70.", 
+                "50040."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "0.", 
+                "0.01", 
+                "0.01", 
+                "1.2", 
+                "1.2", 
+                "3.", 
+                "3.", 
+                "5.", 
+                "5.", 
+                "7.", 
+                "7.", 
+                "10.", 
+                "10.", 
+                "15.", 
+                "15.", 
+                "20.", 
+                "20.", 
+                "25.", 
+                "25.", 
+                "30.", 
+                "30.", 
+                "40.", 
+                "40.", 
+                "50.", 
+                "50.", 
+                "60.", 
+                "60.", 
+                "80.", 
+                "80.", 
+                "100000."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "lidar backscattering ratio", 
+            "standard_name": "backscattering_ratio", 
+            "value": "", 
+            "out_name": "scatratio", 
+            "type": "double", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "standard_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "ptop: ptop sigma: lev ps: ps", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "ptop: ptop sigma: lev_bnds ps: ps", 
+            "bounds_values": "", 
+            "long_name": "sigma coordinate", 
+            "standard_name": "atmosphere_sigma_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "p = ptop + sigma*(ps - ptop)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "1.0", 
+            "axis": "Z"
+        }, 
+        "typepdec": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "primary_deciduous_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "hybrid_height": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "a: lev b: b orog: orog", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "a: lev_bnds b: b_bnds orog: orog", 
+            "bounds_values": "", 
+            "long_name": "hybrid height coordinate", 
+            "standard_name": "atmosphere_hybrid_height_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "m", 
+            "formula": "z = a + b*orog", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "longitude": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "longitude", 
+            "standard_name": "longitude", 
+            "value": "", 
+            "out_name": "lon", 
+            "type": "double", 
+            "units": "degrees_east", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "360.0", 
+            "axis": "X"
+        }, 
+        "effectRadIc": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "Effective Radius of Ice Aerosols", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "effectRadIc", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "p1000": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "1000 hPa", 
+            "standard_name": "air_pressure", 
+            "value": "100000.", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "p500": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "500 hPa", 
+            "standard_name": "air_pressure", 
+            "value": "50000.", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "ocean_double_sigma": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "sigma: sigma depth: depth z1: z1 z2: z2 a: a_coeff href: href k_c: k_c", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "sigma: sigma_bnds depth: depth z1: z1 z2: z2 a: a href: href k_c: k_c", 
+            "bounds_values": "", 
+            "long_name": "ocean double sigma coordinate", 
+            "standard_name": "ocean_double_sigma", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "for k <= k_c:n z(k,j,i)= sigma(k)*f(j,i) n for k > k_c:n z(k,j,i)= f(j,i) + (sigma(k)-1)*(depth(j,i)-f(j,i)) n f(j,i)= 0.5*(z1+ z2) + 0.5*(z1-z2)* tanh(2*a/(z1-z2)*(depth(j,i)-href))", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plevs": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "standard_hybrid_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "p0: p0 a: a b: b ps: ps", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "p0: p0 a: a_bnds b: b_bnds ps: ps", 
+            "bounds_values": "", 
+            "long_name": "hybrid sigma pressure coordinate", 
+            "standard_name": "atmosphere_hybrid_sigma_pressure_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "1", 
+            "formula": "p = a*p0 + b*ps", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "1.0", 
+            "axis": "Z"
+        }, 
+        "p560": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "68000. 44000.", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "56000.0", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }
+    }, 
+    "variable_entry": {
+        "depth_c": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: depth_c", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "lossch4": {
+            "comment": "proposed name: tendency_of_mole_concentration_of_methane_due_to_chemical_gross_destruction", 
+            "dimensions": "time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Annual Loss of atmospheric Methane", 
+            "standard_name": "tendency_of_mole_concentration_of_methane_due_to_chemical_gross_destruction", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "mole m-3 s-1", 
+            "out_name": "lossch4", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "ap_bnds": {
+            "units": "Pa", 
+            "long_name": "vertical coordinate formula term: ap(k+1/2)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "ap": {
+            "units": "Pa", 
+            "long_name": "vertical coordinate formula term: ap(k)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "href": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: href", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "orog": {
+            "units": "m", 
+            "long_name": "Surface Altitude", 
+            "type": "real", 
+            "dimensions": "longitude latitude"
+        }, 
+        "zlev": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: zlev(k)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "burdenco": {
+            "comment": "total yearly average burden", 
+            "dimensions": "time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Atmosphere Carbon Monoxide Burden", 
+            "standard_name": "moles_of_carbon_monoxide_in_atmosphere", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "moles", 
+            "out_name": "burdenco", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "ps": {
+            "units": "Pa", 
+            "long_name": "Surface Air Pressure", 
+            "type": "real", 
+            "dimensions": "longitude latitude time"
+        }, 
+        "sigma_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: sigma(k+1/2)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "burdenn2o": {
+            "comment": "total yearly average burden", 
+            "dimensions": "time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Atmosphere Nitrous Oxide Burden", 
+            "standard_name": "moles_of_nitrous_oxide_in_atmosphere", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "moles", 
+            "out_name": "burdenn2o", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "ptop": {
+            "units": "Pa", 
+            "long_name": "pressure at top of model", 
+            "type": "", 
+            "dimensions": ""
+        }, 
+        "b_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: b(k+1/2)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "losstropch4": {
+            "comment": "total yearly averaged tropospheric loss", 
+            "dimensions": "time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Annual Loss of tropospheric Methane", 
+            "standard_name": "", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "mol/yr", 
+            "out_name": "losstropch4", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "nsigma": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: nsigma", 
+            "type": "integer", 
+            "dimensions": ""
+        }, 
+        "burdench4": {
+            "comment": "total yearly average burden", 
+            "dimensions": "time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Atmosphere Methane Burden", 
+            "standard_name": "moles_of_methane_in_atmosphere", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "moles", 
+            "out_name": "burdench4", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "lossco": {
+            "comment": "proposed name: tendency_of_mole_concentration_of_carbon_monoxide_due_to_chemical_gross_destruction", 
+            "dimensions": "time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Annual Loss of atmospheric Carbon Monoxide", 
+            "standard_name": "tendency_of_mole_concentration_of_carbon_monoxide_due_to_chemical_gross_destruction", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "mole m-3 s-1", 
+            "out_name": "lossco", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "ztop": {
+            "units": "m", 
+            "long_name": "height of top of model", 
+            "type": "", 
+            "dimensions": ""
+        }, 
+        "zlev_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: zlev(k+1/2)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "z1": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: z1", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "z2": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: z2", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "a": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: a(k)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "p0": {
+            "units": "Pa", 
+            "long_name": "vertical coordinate formula term: reference pressure", 
+            "type": "", 
+            "dimensions": ""
+        }, 
+        "b": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: b(k)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "losstropco": {
+            "comment": "total yearly averaged tropospheric loss", 
+            "dimensions": "time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Annual Loss of tropospheric Carbon Monoxide", 
+            "standard_name": "", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "mol/yr", 
+            "out_name": "losstropco", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "depth": {
+            "units": "m", 
+            "long_name": "Sea Floor Depth: formula term: thetao", 
+            "type": "real", 
+            "dimensions": "longitude latitude"
+        }, 
+        "eta": {
+            "units": "m", 
+            "long_name": "Sea Surface Height formula term: thetao", 
+            "type": "real", 
+            "dimensions": "longitude latitude time"
+        }, 
+        "k_c": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: k_c", 
+            "type": "integer", 
+            "dimensions": ""
+        }, 
+        "lossn2o": {
+            "comment": "total yearly averaged tropospheric loss", 
+            "dimensions": "time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Annual Loss of atmospheric Nitrous Oxide", 
+            "standard_name": "", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "mol/yr", 
+            "out_name": "lossn2o", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "sigma": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: sigma(k)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "a_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: a(k+1/2)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }
+    }
+}
diff --git a/TestTables/CMIP6_aerdaily.json b/TestTables/CMIP6_aerdaily.json
new file mode 100644
index 0000000..de04eb0
--- /dev/null
+++ b/TestTables/CMIP6_aerdaily.json
@@ -0,0 +1,2454 @@
+{
+    "Header": {
+        "product": "output", 
+        "approx_interval": "1.00000", 
+        "realm": "aero", 
+        "cmor_version": "3.1", 
+        "Conventions": "CF-1.6 CMIP-6.0", 
+        "frequency": "day", 
+        "table_id": "Table aerdaily", 
+        "data_specs_version": "01.beta.29", 
+        "mip_era": "CMIP6", 
+        "generic_levels": "", 
+        "missing_value": "1e20", 
+        "table_date": "14 June 2016"
+    }, 
+    "axis_entry": {
+        "typebare": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "bare_ground", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "tau": {
+            "requested": [
+                "0.15", 
+                "0.8", 
+                "2.45", 
+                "6.5", 
+                "16.2", 
+                "41.5", 
+                "100."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "0.0", 
+                "0.3", 
+                "0.3", 
+                "1.3", 
+                "1.3", 
+                "3.6", 
+                "3.6", 
+                "9.4", 
+                "9.4", 
+                "23.0", 
+                "23.0", 
+                "60.0", 
+                "60.0", 
+                "100000."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "cloud optical thickness", 
+            "standard_name": "atmosphere_optical_thickness_due_to_cloud", 
+            "value": "", 
+            "out_name": "tau", 
+            "type": "double", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "olayer100m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "0. 100.", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "50.0", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "100.0", 
+            "axis": "Z"
+        }, 
+        "spectband": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "Spectral Band", 
+            "standard_name": "wave_frequency", 
+            "value": "", 
+            "out_name": "spectband", 
+            "type": "double", 
+            "units": "s-1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "ocean_sigma_z": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "sigma: sigma eta: eta depth: depth depth_c: depth_c nsigma: nsigma zlev: zlev", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "sigma: sigma_bnds eta: eta depth: depth depth_c: depth_c nsigma: nsigma zlev: zlev_bnds", 
+            "bounds_values": "", 
+            "long_name": "ocean sigma over z coordinate", 
+            "standard_name": "ocean_sigma_z", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "for k <= nsigma: z(n,k,j,i) = eta(n,j,i) + sigma(k)*(min(depth_c,depth(j,i))+eta(n,j,i)) ; for k > nsigma: z(n,k,j,i) = zlev(k)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev19": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000.", 
+                "500.", 
+                "100."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "p220": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "44000. 0.0", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "22000.0", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev17": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev10": {
+            "requested": [
+                "100000.", 
+                "85000.", 
+                "70000.", 
+                "50000.", 
+                "25000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "site": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "site index", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "site", 
+            "type": "integer", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "smooth_level": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "a: a b1: b1 b2: b2 ztop: ztop zsurf1: zsurf1 zsurf2: zsurf2", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-200.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "a: a_bnds b1: b1_bnds b2: b2_bnds ztop: ztop zsurf1: zsurf1 zsurf2: zsurf2", 
+            "bounds_values": "", 
+            "long_name": "atmosphere smooth level vertical (SLEVE) coordinate", 
+            "standard_name": "atmosphere_sleve_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "m", 
+            "formula": "z = a*ztop + b1*zsurf1 + b2*zsurf2", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "800000.0", 
+            "axis": "Z"
+        }, 
+        "p840": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "100000. 68000.", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "84000.0", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "ocean_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "sigma: lev eta: eta depth: depth", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "sigma: lev_bnds eta: eta depth: depth", 
+            "bounds_values": "", 
+            "long_name": "ocean sigma coordinate", 
+            "standard_name": "ocean_sigma_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "z(n,k,j,i) = eta(n,j,i) + sigma(k)*(depth(j,i)+eta(n,j,i))", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "0.0", 
+            "axis": "Z"
+        }, 
+        "depth0m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "0.0", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "100.0", 
+            "axis": "Z"
+        }, 
+        "ocean_s": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "s: lev eta: eta depth: depth a: a_coeff b: b_coeff depth_c: depth_c", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "s: lev_bnds eta: eta depth: depth a: a b: b depth_c: depth_c", 
+            "bounds_values": "", 
+            "long_name": "ocean s-coordinate", 
+            "standard_name": "ocean_s_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "z(n,k,j,i) = eta(n,j,i)*(1+s(k)) + depth_c*s(k) + (depth(j,i)-depth_c)*C(k) n where n C(k)=(1-b)*sinh(a*s(k))/sinh(a) +n           b*(tanh(a*(s(k)+0.5))/(2*tanh(0.5*a)) - 0.5)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "0.0", 
+            "axis": "Z"
+        }, 
+        "plev4s": {
+            "requested": [
+                "85000.", 
+                "50000.", 
+                "20000.", 
+                "5000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "typec4pft": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "c4_plant_functional_types", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "plev3h": {
+            "requested": [
+                "10000.", 
+                "1000.", 
+                "100."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "height2m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "up", 
+            "must_have_bounds": "no", 
+            "valid_min": "1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "height", 
+            "standard_name": "height", 
+            "value": "2.0", 
+            "out_name": "height", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "10.0", 
+            "axis": "Z"
+        }, 
+        "time1": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "time", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "plev7h": {
+            "requested": [
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "25000.", 
+                "5000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "sza5": {
+            "requested": [
+                "0.", 
+                "20.", 
+                "40.", 
+                "60.", 
+                "80."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "solar zenith angle", 
+            "standard_name": "solar_zenith_angle", 
+            "value": "", 
+            "out_name": "sza", 
+            "type": "double", 
+            "units": "degree", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "depth_coord": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "ocean depth coordinate", 
+            "standard_name": "depth", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "12000.0", 
+            "axis": "Z"
+        }, 
+        "sdepth1": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "0.0 0.1", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "0.05", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "0.2", 
+            "axis": "Z"
+        }, 
+        "alternate_hybrid_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "ap: ap b: b ps: ps", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "ap: ap_bnds b: b_bnds ps: ps", 
+            "bounds_values": "", 
+            "long_name": "hybrid sigma pressure coordinate", 
+            "standard_name": "atmosphere_hybrid_sigma_pressure_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "1", 
+            "formula": "p = ap + b*ps", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "1.0", 
+            "axis": "Z"
+        }, 
+        "time2": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "time", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "yes", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "time3": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "Diurnal cycle: monthly mean of the diurnal cycle (1 hour steps).", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "oline": {
+            "requested": [
+                "barents_opening", 
+                "bering_strait", 
+                "canadian_archipelago", 
+                "denmark_strait", 
+                "drake_passage", 
+                "english_channel", 
+                "pacific_equatorial_undercurrent", 
+                "faroe_scotland_channel", 
+                "florida_bahamas_strait", 
+                "fram_strait", 
+                "iceland_faroe_channel", 
+                "indonesian_thoughflow", 
+                "mozambique_channel", 
+                "taiwan_luzon_straits", 
+                "windward_passage"
+            ], 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "ocean passage", 
+            "standard_name": "region", 
+            "value": "", 
+            "out_name": "line", 
+            "type": "character", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "plev14": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "25000.", 
+                "15000.", 
+                "10000.", 
+                "5000.", 
+                "2000.", 
+                "1000.", 
+                "500.", 
+                "100."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev8": {
+            "requested": [
+                "100000.", 
+                "85000.", 
+                "70000.", 
+                "50000.", 
+                "25000.", 
+                "10000.", 
+                "5000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "location": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "location index", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "loc", 
+            "type": "integer", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "latitude": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-90.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "latitude", 
+            "standard_name": "latitude", 
+            "value": "", 
+            "out_name": "lat", 
+            "type": "double", 
+            "units": "degrees_north", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "90.0", 
+            "axis": "Y"
+        }, 
+        "plev3": {
+            "requested": [
+                "85000.", 
+                "50000.", 
+                "25000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "basin": {
+            "requested": [
+                "atlantic_arctic_ocean", 
+                "indian_pacific_ocean", 
+                "global_ocean"
+            ], 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "ocean basin", 
+            "standard_name": "region", 
+            "value": "", 
+            "out_name": "basin", 
+            "type": "character", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "p700": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "700 hPa", 
+            "standard_name": "air_pressure", 
+            "value": "70000.", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev7": {
+            "requested": [
+                "90000.", 
+                "74000.", 
+                "62000.", 
+                "50000.", 
+                "37500.", 
+                "24500.", 
+                "9000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "100000.", 
+                "80000.", 
+                "80000.", 
+                "68000.", 
+                "68000.", 
+                "56000.", 
+                "56000.", 
+                "44000.", 
+                "44000.", 
+                "31000.", 
+                "31000.", 
+                "18000.", 
+                "18000.", 
+                " 0."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev4": {
+            "requested": [
+                "92500.", 
+                "85000.", 
+                "50000.", 
+                "25000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev23": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000.", 
+                "700.", 
+                "500.", 
+                "300.", 
+                "200.", 
+                "100.", 
+                "40."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev39": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "17000.", 
+                "15000.", 
+                "13000.", 
+                "11500.", 
+                "10000.", 
+                "9000.", 
+                "8000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1500.", 
+                "1000.", 
+                "700.", 
+                "500.", 
+                "300.", 
+                "200.", 
+                "150.", 
+                "100.", 
+                "70.", 
+                "50.", 
+                "40.", 
+                "30.", 
+                "20.", 
+                "15.", 
+                "10.", 
+                "7.", 
+                "5.", 
+                "3."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "typepever": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "primary_evergreen_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "typesdec": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "secondary_decidous_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "plev27": {
+            "requested": [
+                "100000.", 
+                "97500.", 
+                "95000.", 
+                "92500.", 
+                "90000.", 
+                "87500.", 
+                "85000.", 
+                "82500.", 
+                "80000.", 
+                "77500.", 
+                "75000.", 
+                "70000.", 
+                "65000.", 
+                "60000.", 
+                "55000.", 
+                "50000.", 
+                "45000.", 
+                "40000.", 
+                "35000.", 
+                "30000.", 
+                "25000.", 
+                "22500.", 
+                "20000.", 
+                "17500.", 
+                "15000.", 
+                "12500.", 
+                "10000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "alt40": {
+            "requested": [
+                "240.", 
+                "720.", 
+                "1200.", 
+                "1680.", 
+                "2160.", 
+                "2640.", 
+                "3120.", 
+                "3600.", 
+                "4080.", 
+                "4560.", 
+                "5040.", 
+                "5520.", 
+                "6000.", 
+                "6480.", 
+                "6960.", 
+                "7440.", 
+                "7920.", 
+                "8400.", 
+                "8880.", 
+                "9360.", 
+                "9840.", 
+                "10320.", 
+                "10800.", 
+                "11280.", 
+                "11760.", 
+                "12240.", 
+                "12720.", 
+                "13200.", 
+                "13680.", 
+                "14160.", 
+                "14640.", 
+                "15120.", 
+                "15600.", 
+                "16080.", 
+                "16560.", 
+                "17040.", 
+                "17520.", 
+                "18000.", 
+                "18480.", 
+                "18960."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "0.", 
+                "480.", 
+                "480.", 
+                "960.", 
+                "960.", 
+                "1440.", 
+                "1440.", 
+                "1920.", 
+                "1920.", 
+                "2400.", 
+                "2400.", 
+                "2880.", 
+                "2880.", 
+                "3360.", 
+                "3360.", 
+                "3840.", 
+                "3840.", 
+                "4320.", 
+                "4320.", 
+                "4800.", 
+                "4800.", 
+                "5280.", 
+                "5280.", 
+                "5760.", 
+                "5760.", 
+                "6240.", 
+                "6240.", 
+                "6720.", 
+                "6720.", 
+                "7200.", 
+                "7200.", 
+                "7680.", 
+                "7680.", 
+                "8160.", 
+                "8160.", 
+                "8640.", 
+                "8640.", 
+                "9120.", 
+                "9120.", 
+                "9600.", 
+                "9600.", 
+                "10080.", 
+                "10080.", 
+                "10560.", 
+                "10560.", 
+                "11040.", 
+                "11040.", 
+                "11520.", 
+                "11520.", 
+                "12000.", 
+                "12000.", 
+                "12480.", 
+                "12480.", 
+                "12960.", 
+                "12960.", 
+                "13440.", 
+                "13440.", 
+                "13920.", 
+                "13920.", 
+                "14400.", 
+                "14400.", 
+                "14880.", 
+                "14880.", 
+                "15360.", 
+                "15360.", 
+                "15840.", 
+                "15840.", 
+                "16320.", 
+                "16320.", 
+                "16800.", 
+                "16800.", 
+                "17280.", 
+                "17280.", 
+                "17760.", 
+                "17760.", 
+                "18240.", 
+                "18240.", 
+                "18720.", 
+                "18720.", 
+                "19200."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "altitude", 
+            "standard_name": "altitude", 
+            "value": "", 
+            "out_name": "alt40", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "time": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "time", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "plev7c": {
+            "requested": [
+                "90000.", 
+                "74000.", 
+                "62000.", 
+                "50000.", 
+                "37500.", 
+                "24500.", 
+                "9000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "height10m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "up", 
+            "must_have_bounds": "no", 
+            "valid_min": "1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "height", 
+            "standard_name": "height", 
+            "value": "10.0", 
+            "out_name": "height", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "30.0", 
+            "axis": "Z"
+        }, 
+        "dbze": {
+            "requested": [
+                "-47.5", 
+                "-42.5", 
+                "-37.5", 
+                "-32.5", 
+                "-27.5", 
+                "-22.5", 
+                "-17.5", 
+                "-12.5", 
+                "-7.5", 
+                "-2.5", 
+                "2.5", 
+                "7.5", 
+                "12.5", 
+                "17.5", 
+                "22.5"
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "-50", 
+                "-45", 
+                "-45", 
+                "-40", 
+                "-40", 
+                "-35", 
+                "-35", 
+                "-30", 
+                "-30", 
+                "-25", 
+                "-25", 
+                "-20", 
+                "-20", 
+                "-15", 
+                "-15", 
+                "-10", 
+                "-10", 
+                "-5", 
+                "-5", 
+                "0", 
+                "0", 
+                "5", 
+                "5", 
+                "10", 
+                "10", 
+                "15", 
+                "15", 
+                "20", 
+                "20", 
+                "25."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "CloudSat simulator equivalent radar reflectivity factor", 
+            "standard_name": "equivalent_reflectivity_factor", 
+            "value": "", 
+            "out_name": "dbze", 
+            "type": "double", 
+            "units": "dBZ", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "typesever": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "secondary_evergreen_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "rho": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "density++++?", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "rho", 
+            "type": "double", 
+            "units": "kg m-3", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "depth100m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "80.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "100.0", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "120.0", 
+            "axis": "Z"
+        }, 
+        "effectRadLi": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "Effective Radius of Liquid Aerosols", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "effectRadLi", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "sdepth": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "200.0", 
+            "axis": "Z"
+        }, 
+        "vegtype": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "plant functional type", 
+            "standard_name": "area_type", 
+            "value": "", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "typec3pft": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "c3_plant_functional_types", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "natural_log_pressure": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "p0: p0 lev: lev", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "p0: p0 lev: lev_bnds", 
+            "bounds_values": "", 
+            "long_name": "atmosphere natural log pressure coordinate", 
+            "standard_name": "atmosphere_ln_pressure_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "p = p0 * exp(-lev)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "20.0", 
+            "axis": "Z"
+        }, 
+        "scatratio": {
+            "requested": [
+                "0.005", 
+                "0.605", 
+                "2.1", 
+                "4.", 
+                "6.", 
+                "8.5", 
+                "12.5", 
+                "17.5", 
+                "22.5", 
+                "27.5", 
+                "35.", 
+                "45.", 
+                "55.", 
+                "70.", 
+                "50040."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "0.", 
+                "0.01", 
+                "0.01", 
+                "1.2", 
+                "1.2", 
+                "3.", 
+                "3.", 
+                "5.", 
+                "5.", 
+                "7.", 
+                "7.", 
+                "10.", 
+                "10.", 
+                "15.", 
+                "15.", 
+                "20.", 
+                "20.", 
+                "25.", 
+                "25.", 
+                "30.", 
+                "30.", 
+                "40.", 
+                "40.", 
+                "50.", 
+                "50.", 
+                "60.", 
+                "60.", 
+                "80.", 
+                "80.", 
+                "100000."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "lidar backscattering ratio", 
+            "standard_name": "backscattering_ratio", 
+            "value": "", 
+            "out_name": "scatratio", 
+            "type": "double", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "standard_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "ptop: ptop sigma: lev ps: ps", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "ptop: ptop sigma: lev_bnds ps: ps", 
+            "bounds_values": "", 
+            "long_name": "sigma coordinate", 
+            "standard_name": "atmosphere_sigma_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "p = ptop + sigma*(ps - ptop)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "1.0", 
+            "axis": "Z"
+        }, 
+        "typepdec": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "primary_deciduous_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "hybrid_height": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "a: lev b: b orog: orog", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "a: lev_bnds b: b_bnds orog: orog", 
+            "bounds_values": "", 
+            "long_name": "hybrid height coordinate", 
+            "standard_name": "atmosphere_hybrid_height_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "m", 
+            "formula": "z = a + b*orog", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "longitude": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "longitude", 
+            "standard_name": "longitude", 
+            "value": "", 
+            "out_name": "lon", 
+            "type": "double", 
+            "units": "degrees_east", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "360.0", 
+            "axis": "X"
+        }, 
+        "effectRadIc": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "Effective Radius of Ice Aerosols", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "effectRadIc", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "p1000": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "1000 hPa", 
+            "standard_name": "air_pressure", 
+            "value": "100000.", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "p500": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "500 hPa", 
+            "standard_name": "air_pressure", 
+            "value": "50000.", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "ocean_double_sigma": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "sigma: sigma depth: depth z1: z1 z2: z2 a: a_coeff href: href k_c: k_c", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "sigma: sigma_bnds depth: depth z1: z1 z2: z2 a: a href: href k_c: k_c", 
+            "bounds_values": "", 
+            "long_name": "ocean double sigma coordinate", 
+            "standard_name": "ocean_double_sigma", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "for k <= k_c:n z(k,j,i)= sigma(k)*f(j,i) n for k > k_c:n z(k,j,i)= f(j,i) + (sigma(k)-1)*(depth(j,i)-f(j,i)) n f(j,i)= 0.5*(z1+ z2) + 0.5*(z1-z2)* tanh(2*a/(z1-z2)*(depth(j,i)-href))", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plevs": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "standard_hybrid_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "p0: p0 a: a b: b ps: ps", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "p0: p0 a: a_bnds b: b_bnds ps: ps", 
+            "bounds_values": "", 
+            "long_name": "hybrid sigma pressure coordinate", 
+            "standard_name": "atmosphere_hybrid_sigma_pressure_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "1", 
+            "formula": "p = a*p0 + b*ps", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "1.0", 
+            "axis": "Z"
+        }, 
+        "p560": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "68000. 44000.", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "56000.0", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }
+    }, 
+    "variable_entry": {
+        "maxpblz": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "maximum PBL height", 
+            "standard_name": "", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "m", 
+            "out_name": "maxpblz", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "tas": {
+            "comment": "near-surface (usually, 2 meter) air temperature", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Surface Air Temperature", 
+            "standard_name": "air_temperature", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "K", 
+            "out_name": "tas", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "depth_c": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: depth_c", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "ap_bnds": {
+            "units": "Pa", 
+            "long_name": "vertical coordinate formula term: ap(k+1/2)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "ap": {
+            "units": "Pa", 
+            "long_name": "vertical coordinate formula term: ap(k)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "href": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: href", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "orog": {
+            "units": "m", 
+            "long_name": "Surface Altitude", 
+            "type": "real", 
+            "dimensions": "longitude latitude"
+        }, 
+        "minpblz": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "minimum PBL height", 
+            "standard_name": "", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "m", 
+            "out_name": "minpblz", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "zlev": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: zlev(k)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "zg100": {
+            "comment": "Geopotential height on the 100 hPa surface", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Geopotential Height at 100 hPa", 
+            "standard_name": "geopotential_height", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "m", 
+            "out_name": "zg100", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "pr": {
+            "comment": "includes both liquid and solid phases", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "precipitation", 
+            "standard_name": "precipitation_flux", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "pr", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "ps": {
+            "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", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Surface Air Pressure", 
+            "standard_name": "surface_air_pressure", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "Pa", 
+            "out_name": "ps", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "sigma_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: sigma(k+1/2)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "o3smax": {
+            "comment": "maximum near-surface ozone  (add cell_method attribute 'ozone: max')", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "daily maximum O3 volume mixing ratio in lowest model layer", 
+            "standard_name": "mole_fraction_of_ozone_in_air", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "mole mole-1", 
+            "out_name": "o3smax", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "ptop": {
+            "units": "Pa", 
+            "long_name": "pressure at top of model", 
+            "type": "", 
+            "dimensions": ""
+        }, 
+        "toz": {
+            "comment": "total ozone column in DU", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Total Column Ozone", 
+            "standard_name": "equivalent_thickness_at_stp_of_atmosphere_ozone_content", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "m", 
+            "out_name": "toz", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "b_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: b(k+1/2)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "tasmin": {
+            "comment": "minimum near-surface (usually, 2 meter) air temperature (add cell_method attribute 'time: min')", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Daily Minimum Near-Surface Air Temperature", 
+            "standard_name": "air_temperature", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "K", 
+            "out_name": "tasmin", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "zg10": {
+            "comment": "Geopotential height on the 10 hPa surface", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Geopotential Height at 10 hPa", 
+            "standard_name": "geopotential_height", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "m", 
+            "out_name": "zg10", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "nsigma": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: nsigma", 
+            "type": "integer", 
+            "dimensions": ""
+        }, 
+        "zg1000": {
+            "comment": "Geopotential height on the 1000 hPa surface", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Geopotential Height at 1000 hPa", 
+            "standard_name": "geopotential_height", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "m", 
+            "out_name": "zg1000", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "rsds": {
+            "comment": "surface solar irradiance for UV calculations", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Surface Downwelling Shortwave Radiation", 
+            "standard_name": "surface_downwelling_shortwave_flux_in_air", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "rsds", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "ztop": {
+            "units": "m", 
+            "long_name": "height of top of model", 
+            "type": "", 
+            "dimensions": ""
+        }, 
+        "zg500": {
+            "comment": "geopotential height on the 500 hPa surface", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Geopotential Height at 500 hPa", 
+            "standard_name": "geopotential_height", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "m", 
+            "out_name": "zg500", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "zlev_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: zlev(k+1/2)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "z1": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: z1", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "z2": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: z2", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "a": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: a(k)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "p0": {
+            "units": "Pa", 
+            "long_name": "vertical coordinate formula term: reference pressure", 
+            "type": "", 
+            "dimensions": ""
+        }, 
+        "b": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: b(k)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "ua10": {
+            "comment": "Zonal wind on the 10 hPa surface", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Eastward Wind at 10 hPa", 
+            "standard_name": "eastward_wind", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "m s-1", 
+            "out_name": "ua10", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "depth": {
+            "units": "m", 
+            "long_name": "Sea Floor Depth: formula term: thetao", 
+            "type": "real", 
+            "dimensions": "longitude latitude"
+        }, 
+        "eta": {
+            "units": "m", 
+            "long_name": "Sea Surface Height formula term: thetao", 
+            "type": "real", 
+            "dimensions": "longitude latitude time"
+        }, 
+        "cod": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "cloud optical depth", 
+            "standard_name": "atmosphere_optical_thickness_due_to_cloud", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "1.0", 
+            "out_name": "cod", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "rsdscs": {
+            "comment": "surface solar irradiance clear sky for UV calculations", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Surface Downwelling Clear-Sky Shortwave Radiation", 
+            "standard_name": "surface_downwelling_shortwave_flux_in_air_assuming_clear_sky", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "rsdscs", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "tpp": {
+            "comment": "Only required for the first day 00:00 UTC of each month. The tropopause follows the WMO definition and should be consistent with the the tropopause definition used for tpo3chm and lso3chm.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "tropopause pressure", 
+            "standard_name": "", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "Pa", 
+            "out_name": "tpp", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "tasmax": {
+            "comment": "maximum near-surface (usually, 2 meter) air temperature (add cell_method attribute 'time: max')", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Daily Maximum Near-Surface Air Temperature", 
+            "standard_name": "air_temperature", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "K", 
+            "out_name": "tasmax", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "nufl": {
+            "comment": "outgoing longwave irradiance", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "", 
+            "standard_name": "net_upward_longwave_flux_in_air", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "nufl", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "k_c": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: k_c", 
+            "type": "integer", 
+            "dimensions": ""
+        }, 
+        "sigma": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: sigma(k)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "a_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: a(k+1/2)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }
+    }
+}
diff --git a/TestTables/CMIP6_aerfixed.json b/TestTables/CMIP6_aerfixed.json
new file mode 100644
index 0000000..44c7206
--- /dev/null
+++ b/TestTables/CMIP6_aerfixed.json
@@ -0,0 +1,2182 @@
+{
+    "Header": {
+        "product": "output", 
+        "approx_interval": "0.00000", 
+        "realm": "aero", 
+        "cmor_version": "3.1", 
+        "Conventions": "CF-1.6 CMIP-6.0", 
+        "frequency": "fx", 
+        "table_id": "Table aerfixed", 
+        "data_specs_version": "01.beta.29", 
+        "mip_era": "CMIP6", 
+        "generic_levels": "", 
+        "missing_value": "1e20", 
+        "table_date": "14 June 2016"
+    }, 
+    "axis_entry": {
+        "typebare": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "bare_ground", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "tau": {
+            "requested": [
+                "0.15", 
+                "0.8", 
+                "2.45", 
+                "6.5", 
+                "16.2", 
+                "41.5", 
+                "100."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "0.0", 
+                "0.3", 
+                "0.3", 
+                "1.3", 
+                "1.3", 
+                "3.6", 
+                "3.6", 
+                "9.4", 
+                "9.4", 
+                "23.0", 
+                "23.0", 
+                "60.0", 
+                "60.0", 
+                "100000."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "cloud optical thickness", 
+            "standard_name": "atmosphere_optical_thickness_due_to_cloud", 
+            "value": "", 
+            "out_name": "tau", 
+            "type": "double", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "olayer100m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "0. 100.", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "50.0", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "100.0", 
+            "axis": "Z"
+        }, 
+        "spectband": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "Spectral Band", 
+            "standard_name": "wave_frequency", 
+            "value": "", 
+            "out_name": "spectband", 
+            "type": "double", 
+            "units": "s-1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "ocean_sigma_z": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "sigma: sigma eta: eta depth: depth depth_c: depth_c nsigma: nsigma zlev: zlev", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "sigma: sigma_bnds eta: eta depth: depth depth_c: depth_c nsigma: nsigma zlev: zlev_bnds", 
+            "bounds_values": "", 
+            "long_name": "ocean sigma over z coordinate", 
+            "standard_name": "ocean_sigma_z", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "for k <= nsigma: z(n,k,j,i) = eta(n,j,i) + sigma(k)*(min(depth_c,depth(j,i))+eta(n,j,i)) ; for k > nsigma: z(n,k,j,i) = zlev(k)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev19": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000.", 
+                "500.", 
+                "100."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "p220": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "44000. 0.0", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "22000.0", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev17": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev10": {
+            "requested": [
+                "100000.", 
+                "85000.", 
+                "70000.", 
+                "50000.", 
+                "25000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "site": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "site index", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "site", 
+            "type": "integer", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "smooth_level": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "a: a b1: b1 b2: b2 ztop: ztop zsurf1: zsurf1 zsurf2: zsurf2", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-200.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "a: a_bnds b1: b1_bnds b2: b2_bnds ztop: ztop zsurf1: zsurf1 zsurf2: zsurf2", 
+            "bounds_values": "", 
+            "long_name": "atmosphere smooth level vertical (SLEVE) coordinate", 
+            "standard_name": "atmosphere_sleve_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "m", 
+            "formula": "z = a*ztop + b1*zsurf1 + b2*zsurf2", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "800000.0", 
+            "axis": "Z"
+        }, 
+        "p840": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "100000. 68000.", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "84000.0", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "ocean_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "sigma: lev eta: eta depth: depth", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "sigma: lev_bnds eta: eta depth: depth", 
+            "bounds_values": "", 
+            "long_name": "ocean sigma coordinate", 
+            "standard_name": "ocean_sigma_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "z(n,k,j,i) = eta(n,j,i) + sigma(k)*(depth(j,i)+eta(n,j,i))", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "0.0", 
+            "axis": "Z"
+        }, 
+        "depth0m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "0.0", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "100.0", 
+            "axis": "Z"
+        }, 
+        "ocean_s": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "s: lev eta: eta depth: depth a: a_coeff b: b_coeff depth_c: depth_c", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "s: lev_bnds eta: eta depth: depth a: a b: b depth_c: depth_c", 
+            "bounds_values": "", 
+            "long_name": "ocean s-coordinate", 
+            "standard_name": "ocean_s_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "z(n,k,j,i) = eta(n,j,i)*(1+s(k)) + depth_c*s(k) + (depth(j,i)-depth_c)*C(k) n where n C(k)=(1-b)*sinh(a*s(k))/sinh(a) +n           b*(tanh(a*(s(k)+0.5))/(2*tanh(0.5*a)) - 0.5)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "0.0", 
+            "axis": "Z"
+        }, 
+        "plev4s": {
+            "requested": [
+                "85000.", 
+                "50000.", 
+                "20000.", 
+                "5000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "typec4pft": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "c4_plant_functional_types", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "plev3h": {
+            "requested": [
+                "10000.", 
+                "1000.", 
+                "100."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "height2m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "up", 
+            "must_have_bounds": "no", 
+            "valid_min": "1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "height", 
+            "standard_name": "height", 
+            "value": "2.0", 
+            "out_name": "height", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "10.0", 
+            "axis": "Z"
+        }, 
+        "time1": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "time", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "plev7h": {
+            "requested": [
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "25000.", 
+                "5000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "sza5": {
+            "requested": [
+                "0.", 
+                "20.", 
+                "40.", 
+                "60.", 
+                "80."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "solar zenith angle", 
+            "standard_name": "solar_zenith_angle", 
+            "value": "", 
+            "out_name": "sza", 
+            "type": "double", 
+            "units": "degree", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "depth_coord": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "ocean depth coordinate", 
+            "standard_name": "depth", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "12000.0", 
+            "axis": "Z"
+        }, 
+        "sdepth1": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "0.0 0.1", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "0.05", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "0.2", 
+            "axis": "Z"
+        }, 
+        "alternate_hybrid_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "ap: ap b: b ps: ps", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "ap: ap_bnds b: b_bnds ps: ps", 
+            "bounds_values": "", 
+            "long_name": "hybrid sigma pressure coordinate", 
+            "standard_name": "atmosphere_hybrid_sigma_pressure_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "1", 
+            "formula": "p = ap + b*ps", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "1.0", 
+            "axis": "Z"
+        }, 
+        "time2": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "time", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "yes", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "time3": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "Diurnal cycle: monthly mean of the diurnal cycle (1 hour steps).", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "oline": {
+            "requested": [
+                "barents_opening", 
+                "bering_strait", 
+                "canadian_archipelago", 
+                "denmark_strait", 
+                "drake_passage", 
+                "english_channel", 
+                "pacific_equatorial_undercurrent", 
+                "faroe_scotland_channel", 
+                "florida_bahamas_strait", 
+                "fram_strait", 
+                "iceland_faroe_channel", 
+                "indonesian_thoughflow", 
+                "mozambique_channel", 
+                "taiwan_luzon_straits", 
+                "windward_passage"
+            ], 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "ocean passage", 
+            "standard_name": "region", 
+            "value": "", 
+            "out_name": "line", 
+            "type": "character", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "plev14": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "25000.", 
+                "15000.", 
+                "10000.", 
+                "5000.", 
+                "2000.", 
+                "1000.", 
+                "500.", 
+                "100."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev8": {
+            "requested": [
+                "100000.", 
+                "85000.", 
+                "70000.", 
+                "50000.", 
+                "25000.", 
+                "10000.", 
+                "5000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "location": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "location index", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "loc", 
+            "type": "integer", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "latitude": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-90.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "latitude", 
+            "standard_name": "latitude", 
+            "value": "", 
+            "out_name": "lat", 
+            "type": "double", 
+            "units": "degrees_north", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "90.0", 
+            "axis": "Y"
+        }, 
+        "plev3": {
+            "requested": [
+                "85000.", 
+                "50000.", 
+                "25000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "basin": {
+            "requested": [
+                "atlantic_arctic_ocean", 
+                "indian_pacific_ocean", 
+                "global_ocean"
+            ], 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "ocean basin", 
+            "standard_name": "region", 
+            "value": "", 
+            "out_name": "basin", 
+            "type": "character", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "p700": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "700 hPa", 
+            "standard_name": "air_pressure", 
+            "value": "70000.", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev7": {
+            "requested": [
+                "90000.", 
+                "74000.", 
+                "62000.", 
+                "50000.", 
+                "37500.", 
+                "24500.", 
+                "9000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "100000.", 
+                "80000.", 
+                "80000.", 
+                "68000.", 
+                "68000.", 
+                "56000.", 
+                "56000.", 
+                "44000.", 
+                "44000.", 
+                "31000.", 
+                "31000.", 
+                "18000.", 
+                "18000.", 
+                " 0."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev4": {
+            "requested": [
+                "92500.", 
+                "85000.", 
+                "50000.", 
+                "25000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev23": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000.", 
+                "700.", 
+                "500.", 
+                "300.", 
+                "200.", 
+                "100.", 
+                "40."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev39": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "17000.", 
+                "15000.", 
+                "13000.", 
+                "11500.", 
+                "10000.", 
+                "9000.", 
+                "8000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1500.", 
+                "1000.", 
+                "700.", 
+                "500.", 
+                "300.", 
+                "200.", 
+                "150.", 
+                "100.", 
+                "70.", 
+                "50.", 
+                "40.", 
+                "30.", 
+                "20.", 
+                "15.", 
+                "10.", 
+                "7.", 
+                "5.", 
+                "3."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "typepever": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "primary_evergreen_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "typesdec": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "secondary_decidous_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "plev27": {
+            "requested": [
+                "100000.", 
+                "97500.", 
+                "95000.", 
+                "92500.", 
+                "90000.", 
+                "87500.", 
+                "85000.", 
+                "82500.", 
+                "80000.", 
+                "77500.", 
+                "75000.", 
+                "70000.", 
+                "65000.", 
+                "60000.", 
+                "55000.", 
+                "50000.", 
+                "45000.", 
+                "40000.", 
+                "35000.", 
+                "30000.", 
+                "25000.", 
+                "22500.", 
+                "20000.", 
+                "17500.", 
+                "15000.", 
+                "12500.", 
+                "10000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "alt40": {
+            "requested": [
+                "240.", 
+                "720.", 
+                "1200.", 
+                "1680.", 
+                "2160.", 
+                "2640.", 
+                "3120.", 
+                "3600.", 
+                "4080.", 
+                "4560.", 
+                "5040.", 
+                "5520.", 
+                "6000.", 
+                "6480.", 
+                "6960.", 
+                "7440.", 
+                "7920.", 
+                "8400.", 
+                "8880.", 
+                "9360.", 
+                "9840.", 
+                "10320.", 
+                "10800.", 
+                "11280.", 
+                "11760.", 
+                "12240.", 
+                "12720.", 
+                "13200.", 
+                "13680.", 
+                "14160.", 
+                "14640.", 
+                "15120.", 
+                "15600.", 
+                "16080.", 
+                "16560.", 
+                "17040.", 
+                "17520.", 
+                "18000.", 
+                "18480.", 
+                "18960."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "0.", 
+                "480.", 
+                "480.", 
+                "960.", 
+                "960.", 
+                "1440.", 
+                "1440.", 
+                "1920.", 
+                "1920.", 
+                "2400.", 
+                "2400.", 
+                "2880.", 
+                "2880.", 
+                "3360.", 
+                "3360.", 
+                "3840.", 
+                "3840.", 
+                "4320.", 
+                "4320.", 
+                "4800.", 
+                "4800.", 
+                "5280.", 
+                "5280.", 
+                "5760.", 
+                "5760.", 
+                "6240.", 
+                "6240.", 
+                "6720.", 
+                "6720.", 
+                "7200.", 
+                "7200.", 
+                "7680.", 
+                "7680.", 
+                "8160.", 
+                "8160.", 
+                "8640.", 
+                "8640.", 
+                "9120.", 
+                "9120.", 
+                "9600.", 
+                "9600.", 
+                "10080.", 
+                "10080.", 
+                "10560.", 
+                "10560.", 
+                "11040.", 
+                "11040.", 
+                "11520.", 
+                "11520.", 
+                "12000.", 
+                "12000.", 
+                "12480.", 
+                "12480.", 
+                "12960.", 
+                "12960.", 
+                "13440.", 
+                "13440.", 
+                "13920.", 
+                "13920.", 
+                "14400.", 
+                "14400.", 
+                "14880.", 
+                "14880.", 
+                "15360.", 
+                "15360.", 
+                "15840.", 
+                "15840.", 
+                "16320.", 
+                "16320.", 
+                "16800.", 
+                "16800.", 
+                "17280.", 
+                "17280.", 
+                "17760.", 
+                "17760.", 
+                "18240.", 
+                "18240.", 
+                "18720.", 
+                "18720.", 
+                "19200."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "altitude", 
+            "standard_name": "altitude", 
+            "value": "", 
+            "out_name": "alt40", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "time": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "time", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "plev7c": {
+            "requested": [
+                "90000.", 
+                "74000.", 
+                "62000.", 
+                "50000.", 
+                "37500.", 
+                "24500.", 
+                "9000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "height10m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "up", 
+            "must_have_bounds": "no", 
+            "valid_min": "1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "height", 
+            "standard_name": "height", 
+            "value": "10.0", 
+            "out_name": "height", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "30.0", 
+            "axis": "Z"
+        }, 
+        "dbze": {
+            "requested": [
+                "-47.5", 
+                "-42.5", 
+                "-37.5", 
+                "-32.5", 
+                "-27.5", 
+                "-22.5", 
+                "-17.5", 
+                "-12.5", 
+                "-7.5", 
+                "-2.5", 
+                "2.5", 
+                "7.5", 
+                "12.5", 
+                "17.5", 
+                "22.5"
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "-50", 
+                "-45", 
+                "-45", 
+                "-40", 
+                "-40", 
+                "-35", 
+                "-35", 
+                "-30", 
+                "-30", 
+                "-25", 
+                "-25", 
+                "-20", 
+                "-20", 
+                "-15", 
+                "-15", 
+                "-10", 
+                "-10", 
+                "-5", 
+                "-5", 
+                "0", 
+                "0", 
+                "5", 
+                "5", 
+                "10", 
+                "10", 
+                "15", 
+                "15", 
+                "20", 
+                "20", 
+                "25."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "CloudSat simulator equivalent radar reflectivity factor", 
+            "standard_name": "equivalent_reflectivity_factor", 
+            "value": "", 
+            "out_name": "dbze", 
+            "type": "double", 
+            "units": "dBZ", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "typesever": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "secondary_evergreen_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "rho": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "density++++?", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "rho", 
+            "type": "double", 
+            "units": "kg m-3", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "depth100m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "80.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "100.0", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "120.0", 
+            "axis": "Z"
+        }, 
+        "effectRadLi": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "Effective Radius of Liquid Aerosols", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "effectRadLi", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "sdepth": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "200.0", 
+            "axis": "Z"
+        }, 
+        "vegtype": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "plant functional type", 
+            "standard_name": "area_type", 
+            "value": "", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "typec3pft": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "c3_plant_functional_types", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "natural_log_pressure": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "p0: p0 lev: lev", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "p0: p0 lev: lev_bnds", 
+            "bounds_values": "", 
+            "long_name": "atmosphere natural log pressure coordinate", 
+            "standard_name": "atmosphere_ln_pressure_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "p = p0 * exp(-lev)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "20.0", 
+            "axis": "Z"
+        }, 
+        "scatratio": {
+            "requested": [
+                "0.005", 
+                "0.605", 
+                "2.1", 
+                "4.", 
+                "6.", 
+                "8.5", 
+                "12.5", 
+                "17.5", 
+                "22.5", 
+                "27.5", 
+                "35.", 
+                "45.", 
+                "55.", 
+                "70.", 
+                "50040."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "0.", 
+                "0.01", 
+                "0.01", 
+                "1.2", 
+                "1.2", 
+                "3.", 
+                "3.", 
+                "5.", 
+                "5.", 
+                "7.", 
+                "7.", 
+                "10.", 
+                "10.", 
+                "15.", 
+                "15.", 
+                "20.", 
+                "20.", 
+                "25.", 
+                "25.", 
+                "30.", 
+                "30.", 
+                "40.", 
+                "40.", 
+                "50.", 
+                "50.", 
+                "60.", 
+                "60.", 
+                "80.", 
+                "80.", 
+                "100000."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "lidar backscattering ratio", 
+            "standard_name": "backscattering_ratio", 
+            "value": "", 
+            "out_name": "scatratio", 
+            "type": "double", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "standard_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "ptop: ptop sigma: lev ps: ps", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "ptop: ptop sigma: lev_bnds ps: ps", 
+            "bounds_values": "", 
+            "long_name": "sigma coordinate", 
+            "standard_name": "atmosphere_sigma_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "p = ptop + sigma*(ps - ptop)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "1.0", 
+            "axis": "Z"
+        }, 
+        "typepdec": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "primary_deciduous_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "hybrid_height": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "a: lev b: b orog: orog", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "a: lev_bnds b: b_bnds orog: orog", 
+            "bounds_values": "", 
+            "long_name": "hybrid height coordinate", 
+            "standard_name": "atmosphere_hybrid_height_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "m", 
+            "formula": "z = a + b*orog", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "longitude": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "longitude", 
+            "standard_name": "longitude", 
+            "value": "", 
+            "out_name": "lon", 
+            "type": "double", 
+            "units": "degrees_east", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "360.0", 
+            "axis": "X"
+        }, 
+        "effectRadIc": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "Effective Radius of Ice Aerosols", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "effectRadIc", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "p1000": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "1000 hPa", 
+            "standard_name": "air_pressure", 
+            "value": "100000.", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "p500": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "500 hPa", 
+            "standard_name": "air_pressure", 
+            "value": "50000.", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "ocean_double_sigma": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "sigma: sigma depth: depth z1: z1 z2: z2 a: a_coeff href: href k_c: k_c", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "sigma: sigma_bnds depth: depth z1: z1 z2: z2 a: a href: href k_c: k_c", 
+            "bounds_values": "", 
+            "long_name": "ocean double sigma coordinate", 
+            "standard_name": "ocean_double_sigma", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "for k <= k_c:n z(k,j,i)= sigma(k)*f(j,i) n for k > k_c:n z(k,j,i)= f(j,i) + (sigma(k)-1)*(depth(j,i)-f(j,i)) n f(j,i)= 0.5*(z1+ z2) + 0.5*(z1-z2)* tanh(2*a/(z1-z2)*(depth(j,i)-href))", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plevs": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "standard_hybrid_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "p0: p0 a: a b: b ps: ps", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "p0: p0 a: a_bnds b: b_bnds ps: ps", 
+            "bounds_values": "", 
+            "long_name": "hybrid sigma pressure coordinate", 
+            "standard_name": "atmosphere_hybrid_sigma_pressure_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "1", 
+            "formula": "p = a*p0 + b*ps", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "1.0", 
+            "axis": "Z"
+        }, 
+        "p560": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "68000. 44000.", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "56000.0", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }
+    }, 
+    "variable_entry": {
+        "depth_c": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: depth_c", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "ap_bnds": {
+            "units": "Pa", 
+            "long_name": "vertical coordinate formula term: ap(k+1/2)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "ap": {
+            "units": "Pa", 
+            "long_name": "vertical coordinate formula term: ap(k)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "href": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: href", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "orog": {
+            "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", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "surface altitude", 
+            "standard_name": "surface_altitude", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "m", 
+            "out_name": "orog", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "landf": {
+            "comment": "Please express 'X_area_fraction' as the fraction of horizontal area occupied by X.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "fraction of the grid  cell occupied by land", 
+            "standard_name": "land_area_fraction", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "1.0", 
+            "out_name": "landf", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "zlev": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: zlev(k)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "ps": {
+            "units": "Pa", 
+            "long_name": "Surface Air Pressure", 
+            "type": "real", 
+            "dimensions": "longitude latitude time"
+        }, 
+        "sigma_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: sigma(k+1/2)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "ptop": {
+            "units": "Pa", 
+            "long_name": "pressure at top of model", 
+            "type": "", 
+            "dimensions": ""
+        }, 
+        "b_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: b(k+1/2)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "nsigma": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: nsigma", 
+            "type": "integer", 
+            "dimensions": ""
+        }, 
+        "ztop": {
+            "units": "m", 
+            "long_name": "height of top of model", 
+            "type": "", 
+            "dimensions": ""
+        }, 
+        "areacella": {
+            "comment": "For atmospheres with more than 1 mesh (e.g., staggered grids), report areas that apply to surface vertical fluxes of energy.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "area of grid cell", 
+            "standard_name": "cell_area", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "m2", 
+            "out_name": "areacella", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "zlev_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: zlev(k+1/2)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "z1": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: z1", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "z2": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: z2", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "a": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: a(k)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "p0": {
+            "units": "Pa", 
+            "long_name": "vertical coordinate formula term: reference pressure", 
+            "type": "", 
+            "dimensions": ""
+        }, 
+        "b": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: b(k)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "depth": {
+            "units": "m", 
+            "long_name": "Sea Floor Depth: formula term: thetao", 
+            "type": "real", 
+            "dimensions": "longitude latitude"
+        }, 
+        "eta": {
+            "units": "m", 
+            "long_name": "Sea Surface Height formula term: thetao", 
+            "type": "real", 
+            "dimensions": "longitude latitude time"
+        }, 
+        "k_c": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: k_c", 
+            "type": "integer", 
+            "dimensions": ""
+        }, 
+        "sigma": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: sigma(k)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "a_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: a(k+1/2)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }
+    }
+}
diff --git a/TestTables/CMIP6_aerhourly.json b/TestTables/CMIP6_aerhourly.json
new file mode 100644
index 0000000..46e4516
--- /dev/null
+++ b/TestTables/CMIP6_aerhourly.json
@@ -0,0 +1,2216 @@
+{
+    "Header": {
+        "product": "output", 
+        "approx_interval": "0.017361", 
+        "realm": "aero", 
+        "cmor_version": "3.1", 
+        "Conventions": "CF-1.6 CMIP-6.0", 
+        "frequency": "1hr", 
+        "table_id": "Table aerhourly", 
+        "data_specs_version": "01.beta.29", 
+        "mip_era": "CMIP6", 
+        "generic_levels": "", 
+        "missing_value": "1e20", 
+        "table_date": "14 June 2016"
+    }, 
+    "axis_entry": {
+        "typebare": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "bare_ground", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "tau": {
+            "requested": [
+                "0.15", 
+                "0.8", 
+                "2.45", 
+                "6.5", 
+                "16.2", 
+                "41.5", 
+                "100."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "0.0", 
+                "0.3", 
+                "0.3", 
+                "1.3", 
+                "1.3", 
+                "3.6", 
+                "3.6", 
+                "9.4", 
+                "9.4", 
+                "23.0", 
+                "23.0", 
+                "60.0", 
+                "60.0", 
+                "100000."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "cloud optical thickness", 
+            "standard_name": "atmosphere_optical_thickness_due_to_cloud", 
+            "value": "", 
+            "out_name": "tau", 
+            "type": "double", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "olayer100m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "0. 100.", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "50.0", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "100.0", 
+            "axis": "Z"
+        }, 
+        "spectband": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "Spectral Band", 
+            "standard_name": "wave_frequency", 
+            "value": "", 
+            "out_name": "spectband", 
+            "type": "double", 
+            "units": "s-1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "ocean_sigma_z": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "sigma: sigma eta: eta depth: depth depth_c: depth_c nsigma: nsigma zlev: zlev", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "sigma: sigma_bnds eta: eta depth: depth depth_c: depth_c nsigma: nsigma zlev: zlev_bnds", 
+            "bounds_values": "", 
+            "long_name": "ocean sigma over z coordinate", 
+            "standard_name": "ocean_sigma_z", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "for k <= nsigma: z(n,k,j,i) = eta(n,j,i) + sigma(k)*(min(depth_c,depth(j,i))+eta(n,j,i)) ; for k > nsigma: z(n,k,j,i) = zlev(k)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev19": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000.", 
+                "500.", 
+                "100."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "p220": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "44000. 0.0", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "22000.0", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev17": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev10": {
+            "requested": [
+                "100000.", 
+                "85000.", 
+                "70000.", 
+                "50000.", 
+                "25000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "site": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "site index", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "site", 
+            "type": "integer", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "smooth_level": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "a: a b1: b1 b2: b2 ztop: ztop zsurf1: zsurf1 zsurf2: zsurf2", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-200.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "a: a_bnds b1: b1_bnds b2: b2_bnds ztop: ztop zsurf1: zsurf1 zsurf2: zsurf2", 
+            "bounds_values": "", 
+            "long_name": "atmosphere smooth level vertical (SLEVE) coordinate", 
+            "standard_name": "atmosphere_sleve_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "m", 
+            "formula": "z = a*ztop + b1*zsurf1 + b2*zsurf2", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "800000.0", 
+            "axis": "Z"
+        }, 
+        "p840": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "100000. 68000.", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "84000.0", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "ocean_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "sigma: lev eta: eta depth: depth", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "sigma: lev_bnds eta: eta depth: depth", 
+            "bounds_values": "", 
+            "long_name": "ocean sigma coordinate", 
+            "standard_name": "ocean_sigma_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "z(n,k,j,i) = eta(n,j,i) + sigma(k)*(depth(j,i)+eta(n,j,i))", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "0.0", 
+            "axis": "Z"
+        }, 
+        "depth0m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "0.0", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "100.0", 
+            "axis": "Z"
+        }, 
+        "ocean_s": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "s: lev eta: eta depth: depth a: a_coeff b: b_coeff depth_c: depth_c", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "s: lev_bnds eta: eta depth: depth a: a b: b depth_c: depth_c", 
+            "bounds_values": "", 
+            "long_name": "ocean s-coordinate", 
+            "standard_name": "ocean_s_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "z(n,k,j,i) = eta(n,j,i)*(1+s(k)) + depth_c*s(k) + (depth(j,i)-depth_c)*C(k) n where n C(k)=(1-b)*sinh(a*s(k))/sinh(a) +n           b*(tanh(a*(s(k)+0.5))/(2*tanh(0.5*a)) - 0.5)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "0.0", 
+            "axis": "Z"
+        }, 
+        "plev4s": {
+            "requested": [
+                "85000.", 
+                "50000.", 
+                "20000.", 
+                "5000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "typec4pft": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "c4_plant_functional_types", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "plev3h": {
+            "requested": [
+                "10000.", 
+                "1000.", 
+                "100."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "height2m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "up", 
+            "must_have_bounds": "no", 
+            "valid_min": "1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "height", 
+            "standard_name": "height", 
+            "value": "2.0", 
+            "out_name": "height", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "10.0", 
+            "axis": "Z"
+        }, 
+        "time1": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "time", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "plev7h": {
+            "requested": [
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "25000.", 
+                "5000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "sza5": {
+            "requested": [
+                "0.", 
+                "20.", 
+                "40.", 
+                "60.", 
+                "80."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "solar zenith angle", 
+            "standard_name": "solar_zenith_angle", 
+            "value": "", 
+            "out_name": "sza", 
+            "type": "double", 
+            "units": "degree", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "depth_coord": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "ocean depth coordinate", 
+            "standard_name": "depth", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "12000.0", 
+            "axis": "Z"
+        }, 
+        "sdepth1": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "0.0 0.1", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "0.05", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "0.2", 
+            "axis": "Z"
+        }, 
+        "alternate_hybrid_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "ap: ap b: b ps: ps", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "ap: ap_bnds b: b_bnds ps: ps", 
+            "bounds_values": "", 
+            "long_name": "hybrid sigma pressure coordinate", 
+            "standard_name": "atmosphere_hybrid_sigma_pressure_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "1", 
+            "formula": "p = ap + b*ps", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "1.0", 
+            "axis": "Z"
+        }, 
+        "time2": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "time", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "yes", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "time3": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "Diurnal cycle: monthly mean of the diurnal cycle (1 hour steps).", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "oline": {
+            "requested": [
+                "barents_opening", 
+                "bering_strait", 
+                "canadian_archipelago", 
+                "denmark_strait", 
+                "drake_passage", 
+                "english_channel", 
+                "pacific_equatorial_undercurrent", 
+                "faroe_scotland_channel", 
+                "florida_bahamas_strait", 
+                "fram_strait", 
+                "iceland_faroe_channel", 
+                "indonesian_thoughflow", 
+                "mozambique_channel", 
+                "taiwan_luzon_straits", 
+                "windward_passage"
+            ], 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "ocean passage", 
+            "standard_name": "region", 
+            "value": "", 
+            "out_name": "line", 
+            "type": "character", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "plev14": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "25000.", 
+                "15000.", 
+                "10000.", 
+                "5000.", 
+                "2000.", 
+                "1000.", 
+                "500.", 
+                "100."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev8": {
+            "requested": [
+                "100000.", 
+                "85000.", 
+                "70000.", 
+                "50000.", 
+                "25000.", 
+                "10000.", 
+                "5000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "location": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "location index", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "loc", 
+            "type": "integer", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "latitude": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-90.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "latitude", 
+            "standard_name": "latitude", 
+            "value": "", 
+            "out_name": "lat", 
+            "type": "double", 
+            "units": "degrees_north", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "90.0", 
+            "axis": "Y"
+        }, 
+        "plev3": {
+            "requested": [
+                "85000.", 
+                "50000.", 
+                "25000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "basin": {
+            "requested": [
+                "atlantic_arctic_ocean", 
+                "indian_pacific_ocean", 
+                "global_ocean"
+            ], 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "ocean basin", 
+            "standard_name": "region", 
+            "value": "", 
+            "out_name": "basin", 
+            "type": "character", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "p700": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "700 hPa", 
+            "standard_name": "air_pressure", 
+            "value": "70000.", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev7": {
+            "requested": [
+                "90000.", 
+                "74000.", 
+                "62000.", 
+                "50000.", 
+                "37500.", 
+                "24500.", 
+                "9000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "100000.", 
+                "80000.", 
+                "80000.", 
+                "68000.", 
+                "68000.", 
+                "56000.", 
+                "56000.", 
+                "44000.", 
+                "44000.", 
+                "31000.", 
+                "31000.", 
+                "18000.", 
+                "18000.", 
+                " 0."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev4": {
+            "requested": [
+                "92500.", 
+                "85000.", 
+                "50000.", 
+                "25000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev23": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000.", 
+                "700.", 
+                "500.", 
+                "300.", 
+                "200.", 
+                "100.", 
+                "40."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev39": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "17000.", 
+                "15000.", 
+                "13000.", 
+                "11500.", 
+                "10000.", 
+                "9000.", 
+                "8000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1500.", 
+                "1000.", 
+                "700.", 
+                "500.", 
+                "300.", 
+                "200.", 
+                "150.", 
+                "100.", 
+                "70.", 
+                "50.", 
+                "40.", 
+                "30.", 
+                "20.", 
+                "15.", 
+                "10.", 
+                "7.", 
+                "5.", 
+                "3."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "typepever": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "primary_evergreen_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "typesdec": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "secondary_decidous_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "plev27": {
+            "requested": [
+                "100000.", 
+                "97500.", 
+                "95000.", 
+                "92500.", 
+                "90000.", 
+                "87500.", 
+                "85000.", 
+                "82500.", 
+                "80000.", 
+                "77500.", 
+                "75000.", 
+                "70000.", 
+                "65000.", 
+                "60000.", 
+                "55000.", 
+                "50000.", 
+                "45000.", 
+                "40000.", 
+                "35000.", 
+                "30000.", 
+                "25000.", 
+                "22500.", 
+                "20000.", 
+                "17500.", 
+                "15000.", 
+                "12500.", 
+                "10000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "alt40": {
+            "requested": [
+                "240.", 
+                "720.", 
+                "1200.", 
+                "1680.", 
+                "2160.", 
+                "2640.", 
+                "3120.", 
+                "3600.", 
+                "4080.", 
+                "4560.", 
+                "5040.", 
+                "5520.", 
+                "6000.", 
+                "6480.", 
+                "6960.", 
+                "7440.", 
+                "7920.", 
+                "8400.", 
+                "8880.", 
+                "9360.", 
+                "9840.", 
+                "10320.", 
+                "10800.", 
+                "11280.", 
+                "11760.", 
+                "12240.", 
+                "12720.", 
+                "13200.", 
+                "13680.", 
+                "14160.", 
+                "14640.", 
+                "15120.", 
+                "15600.", 
+                "16080.", 
+                "16560.", 
+                "17040.", 
+                "17520.", 
+                "18000.", 
+                "18480.", 
+                "18960."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "0.", 
+                "480.", 
+                "480.", 
+                "960.", 
+                "960.", 
+                "1440.", 
+                "1440.", 
+                "1920.", 
+                "1920.", 
+                "2400.", 
+                "2400.", 
+                "2880.", 
+                "2880.", 
+                "3360.", 
+                "3360.", 
+                "3840.", 
+                "3840.", 
+                "4320.", 
+                "4320.", 
+                "4800.", 
+                "4800.", 
+                "5280.", 
+                "5280.", 
+                "5760.", 
+                "5760.", 
+                "6240.", 
+                "6240.", 
+                "6720.", 
+                "6720.", 
+                "7200.", 
+                "7200.", 
+                "7680.", 
+                "7680.", 
+                "8160.", 
+                "8160.", 
+                "8640.", 
+                "8640.", 
+                "9120.", 
+                "9120.", 
+                "9600.", 
+                "9600.", 
+                "10080.", 
+                "10080.", 
+                "10560.", 
+                "10560.", 
+                "11040.", 
+                "11040.", 
+                "11520.", 
+                "11520.", 
+                "12000.", 
+                "12000.", 
+                "12480.", 
+                "12480.", 
+                "12960.", 
+                "12960.", 
+                "13440.", 
+                "13440.", 
+                "13920.", 
+                "13920.", 
+                "14400.", 
+                "14400.", 
+                "14880.", 
+                "14880.", 
+                "15360.", 
+                "15360.", 
+                "15840.", 
+                "15840.", 
+                "16320.", 
+                "16320.", 
+                "16800.", 
+                "16800.", 
+                "17280.", 
+                "17280.", 
+                "17760.", 
+                "17760.", 
+                "18240.", 
+                "18240.", 
+                "18720.", 
+                "18720.", 
+                "19200."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "altitude", 
+            "standard_name": "altitude", 
+            "value": "", 
+            "out_name": "alt40", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "time": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "time", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "plev7c": {
+            "requested": [
+                "90000.", 
+                "74000.", 
+                "62000.", 
+                "50000.", 
+                "37500.", 
+                "24500.", 
+                "9000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "height10m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "up", 
+            "must_have_bounds": "no", 
+            "valid_min": "1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "height", 
+            "standard_name": "height", 
+            "value": "10.0", 
+            "out_name": "height", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "30.0", 
+            "axis": "Z"
+        }, 
+        "dbze": {
+            "requested": [
+                "-47.5", 
+                "-42.5", 
+                "-37.5", 
+                "-32.5", 
+                "-27.5", 
+                "-22.5", 
+                "-17.5", 
+                "-12.5", 
+                "-7.5", 
+                "-2.5", 
+                "2.5", 
+                "7.5", 
+                "12.5", 
+                "17.5", 
+                "22.5"
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "-50", 
+                "-45", 
+                "-45", 
+                "-40", 
+                "-40", 
+                "-35", 
+                "-35", 
+                "-30", 
+                "-30", 
+                "-25", 
+                "-25", 
+                "-20", 
+                "-20", 
+                "-15", 
+                "-15", 
+                "-10", 
+                "-10", 
+                "-5", 
+                "-5", 
+                "0", 
+                "0", 
+                "5", 
+                "5", 
+                "10", 
+                "10", 
+                "15", 
+                "15", 
+                "20", 
+                "20", 
+                "25."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "CloudSat simulator equivalent radar reflectivity factor", 
+            "standard_name": "equivalent_reflectivity_factor", 
+            "value": "", 
+            "out_name": "dbze", 
+            "type": "double", 
+            "units": "dBZ", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "typesever": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "secondary_evergreen_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "rho": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "density++++?", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "rho", 
+            "type": "double", 
+            "units": "kg m-3", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "depth100m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "80.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "100.0", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "120.0", 
+            "axis": "Z"
+        }, 
+        "effectRadLi": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "Effective Radius of Liquid Aerosols", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "effectRadLi", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "sdepth": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "200.0", 
+            "axis": "Z"
+        }, 
+        "vegtype": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "plant functional type", 
+            "standard_name": "area_type", 
+            "value": "", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "typec3pft": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "c3_plant_functional_types", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "natural_log_pressure": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "p0: p0 lev: lev", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "p0: p0 lev: lev_bnds", 
+            "bounds_values": "", 
+            "long_name": "atmosphere natural log pressure coordinate", 
+            "standard_name": "atmosphere_ln_pressure_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "p = p0 * exp(-lev)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "20.0", 
+            "axis": "Z"
+        }, 
+        "scatratio": {
+            "requested": [
+                "0.005", 
+                "0.605", 
+                "2.1", 
+                "4.", 
+                "6.", 
+                "8.5", 
+                "12.5", 
+                "17.5", 
+                "22.5", 
+                "27.5", 
+                "35.", 
+                "45.", 
+                "55.", 
+                "70.", 
+                "50040."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "0.", 
+                "0.01", 
+                "0.01", 
+                "1.2", 
+                "1.2", 
+                "3.", 
+                "3.", 
+                "5.", 
+                "5.", 
+                "7.", 
+                "7.", 
+                "10.", 
+                "10.", 
+                "15.", 
+                "15.", 
+                "20.", 
+                "20.", 
+                "25.", 
+                "25.", 
+                "30.", 
+                "30.", 
+                "40.", 
+                "40.", 
+                "50.", 
+                "50.", 
+                "60.", 
+                "60.", 
+                "80.", 
+                "80.", 
+                "100000."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "lidar backscattering ratio", 
+            "standard_name": "backscattering_ratio", 
+            "value": "", 
+            "out_name": "scatratio", 
+            "type": "double", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "standard_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "ptop: ptop sigma: lev ps: ps", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "ptop: ptop sigma: lev_bnds ps: ps", 
+            "bounds_values": "", 
+            "long_name": "sigma coordinate", 
+            "standard_name": "atmosphere_sigma_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "p = ptop + sigma*(ps - ptop)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "1.0", 
+            "axis": "Z"
+        }, 
+        "typepdec": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "primary_deciduous_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "hybrid_height": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "a: lev b: b orog: orog", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "a: lev_bnds b: b_bnds orog: orog", 
+            "bounds_values": "", 
+            "long_name": "hybrid height coordinate", 
+            "standard_name": "atmosphere_hybrid_height_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "m", 
+            "formula": "z = a + b*orog", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "longitude": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "longitude", 
+            "standard_name": "longitude", 
+            "value": "", 
+            "out_name": "lon", 
+            "type": "double", 
+            "units": "degrees_east", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "360.0", 
+            "axis": "X"
+        }, 
+        "effectRadIc": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "Effective Radius of Ice Aerosols", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "effectRadIc", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "p1000": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "1000 hPa", 
+            "standard_name": "air_pressure", 
+            "value": "100000.", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "p500": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "500 hPa", 
+            "standard_name": "air_pressure", 
+            "value": "50000.", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "ocean_double_sigma": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "sigma: sigma depth: depth z1: z1 z2: z2 a: a_coeff href: href k_c: k_c", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "sigma: sigma_bnds depth: depth z1: z1 z2: z2 a: a href: href k_c: k_c", 
+            "bounds_values": "", 
+            "long_name": "ocean double sigma coordinate", 
+            "standard_name": "ocean_double_sigma", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "for k <= k_c:n z(k,j,i)= sigma(k)*f(j,i) n for k > k_c:n z(k,j,i)= f(j,i) + (sigma(k)-1)*(depth(j,i)-f(j,i)) n f(j,i)= 0.5*(z1+ z2) + 0.5*(z1-z2)* tanh(2*a/(z1-z2)*(depth(j,i)-href))", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plevs": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "standard_hybrid_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "p0: p0 a: a b: b ps: ps", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "p0: p0 a: a_bnds b: b_bnds ps: ps", 
+            "bounds_values": "", 
+            "long_name": "hybrid sigma pressure coordinate", 
+            "standard_name": "atmosphere_hybrid_sigma_pressure_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "1", 
+            "formula": "p = a*p0 + b*ps", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "1.0", 
+            "axis": "Z"
+        }, 
+        "p560": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "68000. 44000.", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "56000.0", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }
+    }, 
+    "variable_entry": {
+        "depth_c": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: depth_c", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "ap_bnds": {
+            "units": "Pa", 
+            "long_name": "vertical coordinate formula term: ap(k+1/2)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "ap": {
+            "units": "Pa", 
+            "long_name": "vertical coordinate formula term: ap(k)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "href": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: href", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "orog": {
+            "units": "m", 
+            "long_name": "Surface Altitude", 
+            "type": "real", 
+            "dimensions": "longitude latitude"
+        }, 
+        "zlev": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: zlev(k)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "ps": {
+            "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", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Surface pressure", 
+            "standard_name": "surface_air_pressure", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: point area: mean where sea_ice", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "Pa", 
+            "out_name": "ps", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "sigma_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: sigma(k+1/2)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "sfno2": {
+            "comment": "", 
+            "dimensions": "longitude latitude time1", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "NO2 volume mixing ratio in lowest model layer", 
+            "standard_name": "mole_fraction_of_nitrogen_dioxide_in_air", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: point area: mean where sea_ice", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "mole mole-1", 
+            "out_name": "sfno2", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "ptop": {
+            "units": "Pa", 
+            "long_name": "pressure at top of model", 
+            "type": "", 
+            "dimensions": ""
+        }, 
+        "sfo3": {
+            "comment": "", 
+            "dimensions": "longitude latitude time1", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "O3 volume mixing ratio in lowest model layer", 
+            "standard_name": "mole_fraction_of_ozone_in_air", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: point area: mean where sea_ice", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "mole mole-1", 
+            "out_name": "sfo3", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "b_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: b(k+1/2)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "nsigma": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: nsigma", 
+            "type": "integer", 
+            "dimensions": ""
+        }, 
+        "ztop": {
+            "units": "m", 
+            "long_name": "height of top of model", 
+            "type": "", 
+            "dimensions": ""
+        }, 
+        "zlev_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: zlev(k+1/2)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "z1": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: z1", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "z2": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: z2", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "a": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: a(k)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "p0": {
+            "units": "Pa", 
+            "long_name": "vertical coordinate formula term: reference pressure", 
+            "type": "", 
+            "dimensions": ""
+        }, 
+        "b": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: b(k)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "depth": {
+            "units": "m", 
+            "long_name": "Sea Floor Depth: formula term: thetao", 
+            "type": "real", 
+            "dimensions": "longitude latitude"
+        }, 
+        "eta": {
+            "units": "m", 
+            "long_name": "Sea Surface Height formula term: thetao", 
+            "type": "real", 
+            "dimensions": "longitude latitude time"
+        }, 
+        "sfpm25": {
+            "comment": "", 
+            "dimensions": "longitude latitude time1", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "PM2.5 mass mixing ratio in lowest model layer", 
+            "standard_name": "mass_fraction_of_pm2p5_ambient_aerosol_in_air", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: point area: mean where sea_ice", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg kg-1", 
+            "out_name": "sfpm25", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "k_c": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: k_c", 
+            "type": "integer", 
+            "dimensions": ""
+        }, 
+        "sigma": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: sigma(k)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "sfta": {
+            "comment": "Temperature at surface", 
+            "dimensions": "longitude latitude time1", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Surface Temperature", 
+            "standard_name": "air_temperature", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: point area: mean where sea_ice", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "K", 
+            "out_name": "sfta", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "a_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: a(k+1/2)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }
+    }
+}
diff --git a/TestTables/CMIP6_aermonthly.json b/TestTables/CMIP6_aermonthly.json
new file mode 100644
index 0000000..c4c4e27
--- /dev/null
+++ b/TestTables/CMIP6_aermonthly.json
@@ -0,0 +1,4766 @@
+{
+    "Header": {
+        "product": "output", 
+        "approx_interval": "30.00000", 
+        "realm": "aero", 
+        "cmor_version": "3.1", 
+        "Conventions": "CF-1.6 CMIP-6.0", 
+        "frequency": "mon", 
+        "table_id": "Table aermonthly", 
+        "data_specs_version": "01.beta.29", 
+        "mip_era": "CMIP6", 
+        "generic_levels": "", 
+        "missing_value": "1e20", 
+        "table_date": "14 June 2016"
+    }, 
+    "axis_entry": {
+        "typebare": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "bare_ground", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "tau": {
+            "requested": [
+                "0.15", 
+                "0.8", 
+                "2.45", 
+                "6.5", 
+                "16.2", 
+                "41.5", 
+                "100."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "0.0", 
+                "0.3", 
+                "0.3", 
+                "1.3", 
+                "1.3", 
+                "3.6", 
+                "3.6", 
+                "9.4", 
+                "9.4", 
+                "23.0", 
+                "23.0", 
+                "60.0", 
+                "60.0", 
+                "100000."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "cloud optical thickness", 
+            "standard_name": "atmosphere_optical_thickness_due_to_cloud", 
+            "value": "", 
+            "out_name": "tau", 
+            "type": "double", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "olayer100m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "0. 100.", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "50.0", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "100.0", 
+            "axis": "Z"
+        }, 
+        "spectband": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "Spectral Band", 
+            "standard_name": "wave_frequency", 
+            "value": "", 
+            "out_name": "spectband", 
+            "type": "double", 
+            "units": "s-1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "ocean_sigma_z": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "sigma: sigma eta: eta depth: depth depth_c: depth_c nsigma: nsigma zlev: zlev", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "sigma: sigma_bnds eta: eta depth: depth depth_c: depth_c nsigma: nsigma zlev: zlev_bnds", 
+            "bounds_values": "", 
+            "long_name": "ocean sigma over z coordinate", 
+            "standard_name": "ocean_sigma_z", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "for k <= nsigma: z(n,k,j,i) = eta(n,j,i) + sigma(k)*(min(depth_c,depth(j,i))+eta(n,j,i)) ; for k > nsigma: z(n,k,j,i) = zlev(k)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev19": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000.", 
+                "500.", 
+                "100."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "p220": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "44000. 0.0", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "22000.0", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev17": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev10": {
+            "requested": [
+                "100000.", 
+                "85000.", 
+                "70000.", 
+                "50000.", 
+                "25000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "site": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "site index", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "site", 
+            "type": "integer", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "smooth_level": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "a: a b1: b1 b2: b2 ztop: ztop zsurf1: zsurf1 zsurf2: zsurf2", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-200.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "a: a_bnds b1: b1_bnds b2: b2_bnds ztop: ztop zsurf1: zsurf1 zsurf2: zsurf2", 
+            "bounds_values": "", 
+            "long_name": "atmosphere smooth level vertical (SLEVE) coordinate", 
+            "standard_name": "atmosphere_sleve_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "m", 
+            "formula": "z = a*ztop + b1*zsurf1 + b2*zsurf2", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "800000.0", 
+            "axis": "Z"
+        }, 
+        "p840": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "100000. 68000.", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "84000.0", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "ocean_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "sigma: lev eta: eta depth: depth", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "sigma: lev_bnds eta: eta depth: depth", 
+            "bounds_values": "", 
+            "long_name": "ocean sigma coordinate", 
+            "standard_name": "ocean_sigma_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "z(n,k,j,i) = eta(n,j,i) + sigma(k)*(depth(j,i)+eta(n,j,i))", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "0.0", 
+            "axis": "Z"
+        }, 
+        "depth0m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "0.0", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "100.0", 
+            "axis": "Z"
+        }, 
+        "ocean_s": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "s: lev eta: eta depth: depth a: a_coeff b: b_coeff depth_c: depth_c", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "s: lev_bnds eta: eta depth: depth a: a b: b depth_c: depth_c", 
+            "bounds_values": "", 
+            "long_name": "ocean s-coordinate", 
+            "standard_name": "ocean_s_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "z(n,k,j,i) = eta(n,j,i)*(1+s(k)) + depth_c*s(k) + (depth(j,i)-depth_c)*C(k) n where n C(k)=(1-b)*sinh(a*s(k))/sinh(a) +n           b*(tanh(a*(s(k)+0.5))/(2*tanh(0.5*a)) - 0.5)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "0.0", 
+            "axis": "Z"
+        }, 
+        "plev4s": {
+            "requested": [
+                "85000.", 
+                "50000.", 
+                "20000.", 
+                "5000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "typec4pft": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "c4_plant_functional_types", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "plev3h": {
+            "requested": [
+                "10000.", 
+                "1000.", 
+                "100."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "height2m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "up", 
+            "must_have_bounds": "no", 
+            "valid_min": "1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "height", 
+            "standard_name": "height", 
+            "value": "2.0", 
+            "out_name": "height", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "10.0", 
+            "axis": "Z"
+        }, 
+        "time1": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "time", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "plev7h": {
+            "requested": [
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "25000.", 
+                "5000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "sza5": {
+            "requested": [
+                "0.", 
+                "20.", 
+                "40.", 
+                "60.", 
+                "80."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "solar zenith angle", 
+            "standard_name": "solar_zenith_angle", 
+            "value": "", 
+            "out_name": "sza", 
+            "type": "double", 
+            "units": "degree", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "depth_coord": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "ocean depth coordinate", 
+            "standard_name": "depth", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "12000.0", 
+            "axis": "Z"
+        }, 
+        "sdepth1": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "0.0 0.1", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "0.05", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "0.2", 
+            "axis": "Z"
+        }, 
+        "alternate_hybrid_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "ap: ap b: b ps: ps", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "ap: ap_bnds b: b_bnds ps: ps", 
+            "bounds_values": "", 
+            "long_name": "hybrid sigma pressure coordinate", 
+            "standard_name": "atmosphere_hybrid_sigma_pressure_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "1", 
+            "formula": "p = ap + b*ps", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "1.0", 
+            "axis": "Z"
+        }, 
+        "time2": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "time", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "yes", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "time3": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "Diurnal cycle: monthly mean of the diurnal cycle (1 hour steps).", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "oline": {
+            "requested": [
+                "barents_opening", 
+                "bering_strait", 
+                "canadian_archipelago", 
+                "denmark_strait", 
+                "drake_passage", 
+                "english_channel", 
+                "pacific_equatorial_undercurrent", 
+                "faroe_scotland_channel", 
+                "florida_bahamas_strait", 
+                "fram_strait", 
+                "iceland_faroe_channel", 
+                "indonesian_thoughflow", 
+                "mozambique_channel", 
+                "taiwan_luzon_straits", 
+                "windward_passage"
+            ], 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "ocean passage", 
+            "standard_name": "region", 
+            "value": "", 
+            "out_name": "line", 
+            "type": "character", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "plev14": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "25000.", 
+                "15000.", 
+                "10000.", 
+                "5000.", 
+                "2000.", 
+                "1000.", 
+                "500.", 
+                "100."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev8": {
+            "requested": [
+                "100000.", 
+                "85000.", 
+                "70000.", 
+                "50000.", 
+                "25000.", 
+                "10000.", 
+                "5000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "location": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "location index", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "loc", 
+            "type": "integer", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "latitude": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-90.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "latitude", 
+            "standard_name": "latitude", 
+            "value": "", 
+            "out_name": "lat", 
+            "type": "double", 
+            "units": "degrees_north", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "90.0", 
+            "axis": "Y"
+        }, 
+        "plev3": {
+            "requested": [
+                "85000.", 
+                "50000.", 
+                "25000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "basin": {
+            "requested": [
+                "atlantic_arctic_ocean", 
+                "indian_pacific_ocean", 
+                "global_ocean"
+            ], 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "ocean basin", 
+            "standard_name": "region", 
+            "value": "", 
+            "out_name": "basin", 
+            "type": "character", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "p700": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "700 hPa", 
+            "standard_name": "air_pressure", 
+            "value": "70000.", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev7": {
+            "requested": [
+                "90000.", 
+                "74000.", 
+                "62000.", 
+                "50000.", 
+                "37500.", 
+                "24500.", 
+                "9000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "100000.", 
+                "80000.", 
+                "80000.", 
+                "68000.", 
+                "68000.", 
+                "56000.", 
+                "56000.", 
+                "44000.", 
+                "44000.", 
+                "31000.", 
+                "31000.", 
+                "18000.", 
+                "18000.", 
+                " 0."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev4": {
+            "requested": [
+                "92500.", 
+                "85000.", 
+                "50000.", 
+                "25000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev23": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000.", 
+                "700.", 
+                "500.", 
+                "300.", 
+                "200.", 
+                "100.", 
+                "40."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev39": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "17000.", 
+                "15000.", 
+                "13000.", 
+                "11500.", 
+                "10000.", 
+                "9000.", 
+                "8000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1500.", 
+                "1000.", 
+                "700.", 
+                "500.", 
+                "300.", 
+                "200.", 
+                "150.", 
+                "100.", 
+                "70.", 
+                "50.", 
+                "40.", 
+                "30.", 
+                "20.", 
+                "15.", 
+                "10.", 
+                "7.", 
+                "5.", 
+                "3."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "typepever": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "primary_evergreen_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "typesdec": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "secondary_decidous_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "plev27": {
+            "requested": [
+                "100000.", 
+                "97500.", 
+                "95000.", 
+                "92500.", 
+                "90000.", 
+                "87500.", 
+                "85000.", 
+                "82500.", 
+                "80000.", 
+                "77500.", 
+                "75000.", 
+                "70000.", 
+                "65000.", 
+                "60000.", 
+                "55000.", 
+                "50000.", 
+                "45000.", 
+                "40000.", 
+                "35000.", 
+                "30000.", 
+                "25000.", 
+                "22500.", 
+                "20000.", 
+                "17500.", 
+                "15000.", 
+                "12500.", 
+                "10000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "alt40": {
+            "requested": [
+                "240.", 
+                "720.", 
+                "1200.", 
+                "1680.", 
+                "2160.", 
+                "2640.", 
+                "3120.", 
+                "3600.", 
+                "4080.", 
+                "4560.", 
+                "5040.", 
+                "5520.", 
+                "6000.", 
+                "6480.", 
+                "6960.", 
+                "7440.", 
+                "7920.", 
+                "8400.", 
+                "8880.", 
+                "9360.", 
+                "9840.", 
+                "10320.", 
+                "10800.", 
+                "11280.", 
+                "11760.", 
+                "12240.", 
+                "12720.", 
+                "13200.", 
+                "13680.", 
+                "14160.", 
+                "14640.", 
+                "15120.", 
+                "15600.", 
+                "16080.", 
+                "16560.", 
+                "17040.", 
+                "17520.", 
+                "18000.", 
+                "18480.", 
+                "18960."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "0.", 
+                "480.", 
+                "480.", 
+                "960.", 
+                "960.", 
+                "1440.", 
+                "1440.", 
+                "1920.", 
+                "1920.", 
+                "2400.", 
+                "2400.", 
+                "2880.", 
+                "2880.", 
+                "3360.", 
+                "3360.", 
+                "3840.", 
+                "3840.", 
+                "4320.", 
+                "4320.", 
+                "4800.", 
+                "4800.", 
+                "5280.", 
+                "5280.", 
+                "5760.", 
+                "5760.", 
+                "6240.", 
+                "6240.", 
+                "6720.", 
+                "6720.", 
+                "7200.", 
+                "7200.", 
+                "7680.", 
+                "7680.", 
+                "8160.", 
+                "8160.", 
+                "8640.", 
+                "8640.", 
+                "9120.", 
+                "9120.", 
+                "9600.", 
+                "9600.", 
+                "10080.", 
+                "10080.", 
+                "10560.", 
+                "10560.", 
+                "11040.", 
+                "11040.", 
+                "11520.", 
+                "11520.", 
+                "12000.", 
+                "12000.", 
+                "12480.", 
+                "12480.", 
+                "12960.", 
+                "12960.", 
+                "13440.", 
+                "13440.", 
+                "13920.", 
+                "13920.", 
+                "14400.", 
+                "14400.", 
+                "14880.", 
+                "14880.", 
+                "15360.", 
+                "15360.", 
+                "15840.", 
+                "15840.", 
+                "16320.", 
+                "16320.", 
+                "16800.", 
+                "16800.", 
+                "17280.", 
+                "17280.", 
+                "17760.", 
+                "17760.", 
+                "18240.", 
+                "18240.", 
+                "18720.", 
+                "18720.", 
+                "19200."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "altitude", 
+            "standard_name": "altitude", 
+            "value": "", 
+            "out_name": "alt40", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "time": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "time", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "plev7c": {
+            "requested": [
+                "90000.", 
+                "74000.", 
+                "62000.", 
+                "50000.", 
+                "37500.", 
+                "24500.", 
+                "9000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "height10m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "up", 
+            "must_have_bounds": "no", 
+            "valid_min": "1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "height", 
+            "standard_name": "height", 
+            "value": "10.0", 
+            "out_name": "height", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "30.0", 
+            "axis": "Z"
+        }, 
+        "dbze": {
+            "requested": [
+                "-47.5", 
+                "-42.5", 
+                "-37.5", 
+                "-32.5", 
+                "-27.5", 
+                "-22.5", 
+                "-17.5", 
+                "-12.5", 
+                "-7.5", 
+                "-2.5", 
+                "2.5", 
+                "7.5", 
+                "12.5", 
+                "17.5", 
+                "22.5"
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "-50", 
+                "-45", 
+                "-45", 
+                "-40", 
+                "-40", 
+                "-35", 
+                "-35", 
+                "-30", 
+                "-30", 
+                "-25", 
+                "-25", 
+                "-20", 
+                "-20", 
+                "-15", 
+                "-15", 
+                "-10", 
+                "-10", 
+                "-5", 
+                "-5", 
+                "0", 
+                "0", 
+                "5", 
+                "5", 
+                "10", 
+                "10", 
+                "15", 
+                "15", 
+                "20", 
+                "20", 
+                "25."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "CloudSat simulator equivalent radar reflectivity factor", 
+            "standard_name": "equivalent_reflectivity_factor", 
+            "value": "", 
+            "out_name": "dbze", 
+            "type": "double", 
+            "units": "dBZ", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "typesever": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "secondary_evergreen_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "rho": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "density++++?", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "rho", 
+            "type": "double", 
+            "units": "kg m-3", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "depth100m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "80.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "100.0", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "120.0", 
+            "axis": "Z"
+        }, 
+        "effectRadLi": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "Effective Radius of Liquid Aerosols", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "effectRadLi", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "sdepth": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "200.0", 
+            "axis": "Z"
+        }, 
+        "vegtype": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "plant functional type", 
+            "standard_name": "area_type", 
+            "value": "", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "typec3pft": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "c3_plant_functional_types", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "natural_log_pressure": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "p0: p0 lev: lev", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "p0: p0 lev: lev_bnds", 
+            "bounds_values": "", 
+            "long_name": "atmosphere natural log pressure coordinate", 
+            "standard_name": "atmosphere_ln_pressure_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "p = p0 * exp(-lev)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "20.0", 
+            "axis": "Z"
+        }, 
+        "scatratio": {
+            "requested": [
+                "0.005", 
+                "0.605", 
+                "2.1", 
+                "4.", 
+                "6.", 
+                "8.5", 
+                "12.5", 
+                "17.5", 
+                "22.5", 
+                "27.5", 
+                "35.", 
+                "45.", 
+                "55.", 
+                "70.", 
+                "50040."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "0.", 
+                "0.01", 
+                "0.01", 
+                "1.2", 
+                "1.2", 
+                "3.", 
+                "3.", 
+                "5.", 
+                "5.", 
+                "7.", 
+                "7.", 
+                "10.", 
+                "10.", 
+                "15.", 
+                "15.", 
+                "20.", 
+                "20.", 
+                "25.", 
+                "25.", 
+                "30.", 
+                "30.", 
+                "40.", 
+                "40.", 
+                "50.", 
+                "50.", 
+                "60.", 
+                "60.", 
+                "80.", 
+                "80.", 
+                "100000."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "lidar backscattering ratio", 
+            "standard_name": "backscattering_ratio", 
+            "value": "", 
+            "out_name": "scatratio", 
+            "type": "double", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "standard_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "ptop: ptop sigma: lev ps: ps", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "ptop: ptop sigma: lev_bnds ps: ps", 
+            "bounds_values": "", 
+            "long_name": "sigma coordinate", 
+            "standard_name": "atmosphere_sigma_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "p = ptop + sigma*(ps - ptop)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "1.0", 
+            "axis": "Z"
+        }, 
+        "typepdec": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "primary_deciduous_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "hybrid_height": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "a: lev b: b orog: orog", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "a: lev_bnds b: b_bnds orog: orog", 
+            "bounds_values": "", 
+            "long_name": "hybrid height coordinate", 
+            "standard_name": "atmosphere_hybrid_height_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "m", 
+            "formula": "z = a + b*orog", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "longitude": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "longitude", 
+            "standard_name": "longitude", 
+            "value": "", 
+            "out_name": "lon", 
+            "type": "double", 
+            "units": "degrees_east", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "360.0", 
+            "axis": "X"
+        }, 
+        "effectRadIc": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "Effective Radius of Ice Aerosols", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "effectRadIc", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "p1000": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "1000 hPa", 
+            "standard_name": "air_pressure", 
+            "value": "100000.", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "p500": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "500 hPa", 
+            "standard_name": "air_pressure", 
+            "value": "50000.", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "ocean_double_sigma": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "sigma: sigma depth: depth z1: z1 z2: z2 a: a_coeff href: href k_c: k_c", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "sigma: sigma_bnds depth: depth z1: z1 z2: z2 a: a href: href k_c: k_c", 
+            "bounds_values": "", 
+            "long_name": "ocean double sigma coordinate", 
+            "standard_name": "ocean_double_sigma", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "for k <= k_c:n z(k,j,i)= sigma(k)*f(j,i) n for k > k_c:n z(k,j,i)= f(j,i) + (sigma(k)-1)*(depth(j,i)-f(j,i)) n f(j,i)= 0.5*(z1+ z2) + 0.5*(z1-z2)* tanh(2*a/(z1-z2)*(depth(j,i)-href))", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plevs": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "standard_hybrid_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "p0: p0 a: a b: b ps: ps", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "p0: p0 a: a_bnds b: b_bnds ps: ps", 
+            "bounds_values": "", 
+            "long_name": "hybrid sigma pressure coordinate", 
+            "standard_name": "atmosphere_hybrid_sigma_pressure_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "1", 
+            "formula": "p = a*p0 + b*ps", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "1.0", 
+            "axis": "Z"
+        }, 
+        "p560": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "68000. 44000.", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "56000.0", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }
+    }, 
+    "variable_entry": {
+        "c3h6": {
+            "comment": "", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "C3H6  volume mixing ratio", 
+            "standard_name": "mole_fraction_of_propene_in_air", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "mole mole-1", 
+            "out_name": "c3h6", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "hcho": {
+            "comment": "", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Formaldehyde volume mixing ratio", 
+            "standard_name": "mole_fraction_of_formaldehyde_in_air", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "mole mole-1", 
+            "out_name": "hcho", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "wetnh4": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "wet deposition rate of nh4", 
+            "standard_name": "tendency_of_atmosphere_mass_content_of_ammonium_dry_aerosol_due_to_wet_deposition", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "wetnh4", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "depth_c": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: depth_c", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "c3h8": {
+            "comment": "", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "C3H8  volume mixing ratio", 
+            "standard_name": "mole_fraction_of_propane_in_air", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "mole mole-1", 
+            "out_name": "c3h8", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "wetnh3": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "wet deposition rate of nh3", 
+            "standard_name": "tendency_of_atmosphere_mass_content_of_ammonia_due_to_wet_deposition", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "wetnh3", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "rsutcs": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "toa outgoing clear-sky shortwave radiation", 
+            "standard_name": "toa_outgoing_shortwave_flux_assuming_clear_sky", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "rsutcs", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "wetso4": {
+            "comment": "proposed name: tendency_of_atmosphere_mass_content_of_sulfate_dry_aerosol_due_to_wet_deposition", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "wet deposition rate of so4", 
+            "standard_name": "tendency_of_atmosphere_mass_content_of_sulfate_dry_aerosol_due_to_wet_deposition", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "wetso4", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "mmrpm1": {
+            "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", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "PM1.0 mass mixing ratio", 
+            "standard_name": "mass_fraction_of_pm1_dry_aerosol_in_air", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg kg-1", 
+            "out_name": "mmrpm1", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "photo1d": {
+            "comment": "proposed name: photolysis_rate_of_ozone_to_O1D", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "photolysis rate of O3 to O1d", 
+            "standard_name": "photolysis_rate_of_ozone_to_O1D", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "s-1", 
+            "out_name": "photo1d", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "no2": {
+            "comment": "", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "NO2 volume mixing ratio", 
+            "standard_name": "mole_fraction_of_nitrogen_dioxide_in_air", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "mole mole-1", 
+            "out_name": "no2", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "ptp": {
+            "comment": "2D monthly mean thermal tropopause calculated using WMO tropopause definition on 3d temperature", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Tropopause Air Pressure", 
+            "standard_name": "tropopause_air_pressure", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "Pa", 
+            "out_name": "ptp", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "cli": {
+            "comment": "Includes both large-scale and convective cloud. This is calculated as the mass of cloud ice in the grid cell divided by the mass of air (including the water in all phases) in the grid cell. It includes precipitating hydrometeors ONLY if the precipitating hydrometeors affect the calculation of radiative transfer in model.", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Mass Fraction of Cloud Ice", 
+            "standard_name": "mass_fraction_of_cloud_ice_in_air", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg kg-1", 
+            "out_name": "cli", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "emiaoa": {
+            "comment": "Includes agricultural waste burning but no other biomass burning. We recommend a scale factor of POM=1.4*OC, unless your model has more detailed info available. Tendency of atmosphere mass content of total organic aerosol due to emission: 'mass' refers to the mass of organic matter, not mass of organic carbon alone. Was called emi_apom in old ACCMIP Excel table.  Integrate 3D emission field vertically to 2d field.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "total emission of anthropogenic  organic aerosol", 
+            "standard_name": "unset", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "emiaoa", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "zg": {
+            "comment": "", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Geopotential Height", 
+            "standard_name": "geopotential_height", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "m", 
+            "out_name": "zg", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "clt": {
+            "comment": "cloud area fraction", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Cloud Area Fraction", 
+            "standard_name": "cloud_area_fraction_in_atmosphere_layer", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "1.0", 
+            "out_name": "clt", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "ch3coch3": {
+            "comment": "", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "CH3COCH3  volume mixing ratio", 
+            "standard_name": "mole_fraction_of_acetone_in_air", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "mole mole-1", 
+            "out_name": "ch3coch3", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "clw": {
+            "comment": "Includes both large-scale and convective cloud. Calculate as the mass of cloud liquid water in the grid cell divided by the mass of air (including the water in all phases) in the grid cells. Precipitating hydrometeors are included ONLY if the precipitating hydrometeors affect the calculation of radiative transfer in model.", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Mass Fraction of Cloud Liquid Water", 
+            "standard_name": "mass_fraction_of_cloud_liquid_water_in_air", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg kg-1", 
+            "out_name": "clw", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "cdnc": {
+            "comment": "Cloud Droplet Number Concentration in liquid water clouds. Question: Is this rather a 3D field?", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "cloud droplet number concentration", 
+            "standard_name": "number_concentration_of_cloud_liquid_water_particles_in_air", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "m-3", 
+            "out_name": "cdnc", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "ztp": {
+            "comment": "2D monthly mean thermal tropopause calculated using WMO tropopause definition on 3d temperature", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Tropopause Altitude", 
+            "standard_name": "tropopause_altitude", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "m", 
+            "out_name": "ztp", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "ta": {
+            "comment": "", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Air Temperature", 
+            "standard_name": "air_temperature", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "K", 
+            "out_name": "ta", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "nsigma": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: nsigma", 
+            "type": "integer", 
+            "dimensions": ""
+        }, 
+        "emidust": {
+            "comment": "Integrate 3D emission field vertically to 2d field.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "total emission rate of dust", 
+            "standard_name": "tendency_of_atmosphere_mass_content_of_dust_dry_aerosol_due_to_emission", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "emidust", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "b": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: b(k)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "od550lt1aer": {
+            "comment": "od550 due to particles with wet diameter less than 1 um  (''ambient'' means ''wetted''). When models do not include explicit size information, it can be assumed that all anthropogenic aerosols and natural secondary aerosols have diameter less than 1 um.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "ambient fine mode aerosol optical thickness at 550 nm", 
+            "standard_name": "atmosphere_optical_thickness_due_to_pm1_ambient_aerosol", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "1.0", 
+            "out_name": "od550lt1aer", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "c2h6": {
+            "comment": "", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "C2H6 volume mixing ratio", 
+            "standard_name": "mole_fraction_of_ethane_in_air", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "mole mole-1", 
+            "out_name": "c2h6", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "c2h2": {
+            "comment": "", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "C2H2 volume mixing ratio", 
+            "standard_name": "mole_fraction_of_ethyne_in_air", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "mole mole-1", 
+            "out_name": "c2h2", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "wetdust": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "wet deposition rate of dust", 
+            "standard_name": "tendency_of_atmosphere_mass_content_of_dust_dry_aerosol_due_to_wet_deposition", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "wetdust", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "swtoaasdust": {
+            "comment": "proposed name: toa_instantaneous_shortwave_forcing_due_to_dust_ambient_aerosol", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "all sky sw-rf dust at toa", 
+            "standard_name": "toa_instantaneous_shortwave_forcing_due_to_dust_ambient_aerosol", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "swtoaasdust", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "o3prod": {
+            "comment": "ONLY provide the sum of all the HO2/RO2 + NO reactions (as k*[HO2]*[NO])", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "O3 production rate", 
+            "standard_name": "tendency_of_mole_concentration_of_ozone_due_to_chemical_production", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-3 s-1", 
+            "out_name": "o3prod", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "mmrpm2p5": {
+            "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", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "PM2.5 mass mixing ratio", 
+            "standard_name": "mass_fraction_of_pm2p5_dry_aerosol_in_air", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg kg-1", 
+            "out_name": "mmrpm2p5", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "rlutcs": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "toa outgoing clear-sky longwave radiation", 
+            "standard_name": "toa_outgoing_longwave_flux_assuming_clear_sky", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "rlutcs", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "swtoaasno3": {
+            "comment": "proposed name: toa_instantaneous_shortwave_forcing_due_to_nitrate_ambient_aerosol", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "all sky sw-rf no3 at toa", 
+            "standard_name": "toa_instantaneous_shortwave_forcing_due_to_nitrate_ambient_aerosol", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "swtoaasno3", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "emibc": {
+            "comment": "Integrate 3D emission field vertically to 2d field.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "emission rate of black carbon aerosol mass", 
+            "standard_name": "tendency_of_atmosphere_mass_content_of_black_carbon_dry_aerosol_due_to_emission", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "emibc", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "wetso2": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "wet deposition rate of so2", 
+            "standard_name": "tendency_of_atmosphere_mass_content_of_sulfur_dioxide_due_to_wet_deposition", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "wetso2", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "ttop": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "air temperature at cloud top", 
+            "standard_name": "air_temperature_at_cloud_top", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "K", 
+            "out_name": "ttop", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "pan": {
+            "comment": "", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "PAN volume mixing ratio", 
+            "standard_name": "mole_fraction_of_peroxyacetyl_nitrate_in_air", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "mole mole-1", 
+            "out_name": "pan", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "od870aer": {
+            "comment": "AOD from the ambient aerosls (i.e., includes aerosol water).  Does not include AOD from stratospheric aerosols if these are prescribed but includes other possible background aerosol types.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "ambient aerosol optical thickness at 870 nm", 
+            "standard_name": "", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "1.0", 
+            "out_name": "od870aer", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "swtoaasbb": {
+            "comment": "proposed name: toa_instantaneous_shortwave_forcing_due_to_biomass_burning_ambient_aerosol", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "all sky sw-rf bb at toa", 
+            "standard_name": "toa_instantaneous_shortwave_forcing_due_to_biomass_burning_ambient_aerosol", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "swtoaasbb", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "od550bb": {
+            "comment": "proposed name: atmosphere_optical_thickness_due_to_biomass_burning_ambient_aerosol", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "bb aod at 550nm", 
+            "standard_name": "atmosphere_optical_thickness_due_to_biomass_burning_ambient_aerosol", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "1.0", 
+            "out_name": "od550bb", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "od550bc": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "black carbon aod at 550nm", 
+            "standard_name": "atmosphere_optical_thickness_due_to_black_carbon_ambient_aerosol", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "1.0", 
+            "out_name": "od550bc", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "emianox": {
+            "comment": "NOx=NO+NO2, Includes agricultural waste burning but no other biomass burning. proposed name: tendency_of_atmosphere_mass_content_of_anthropogenic_nox_expressed_as_nitrogen_due_to_emission. Integrate 3D emission field vertically to 2d field.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "anthropogenic emission rate of nox", 
+            "standard_name": "tendency_of_atmosphere_mass_content_of_anthropogenic_nox_expressed_as_nitrogen_due_to_emission", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg (N) m-2 s-1", 
+            "out_name": "emianox", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "vt100": {
+            "comment": "Zonally averaged meridional heat flux at 100 hPa as monthly means derived from daily (or higher frequency) fields.", 
+            "dimensions": "latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Northward heat flux due to eddies", 
+            "standard_name": "northward_heat_flux_in_air_due_to_eddy_advection", 
+            "modeling_realm": "aero", 
+            "cell_measures": "", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "vt100", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "swtoacsaer": {
+            "comment": "proposed name: toa_instantaneous_shortwave_forcing_due_to_ambient_aerosol_assuming_clear_sky", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "clear sky sw-rf aerosols at toa", 
+            "standard_name": "toa_instantaneous_shortwave_forcing_due_to_ambient_aerosol_assuming_clear_sky", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "swtoacsaer", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "wetnoy": {
+            "comment": "proposed name: tendency_of_atmosphere_mass_content_of_all_nitrogen_oxides_due_to_wet_deposition. 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", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "wet deposition of noy incl aerosol nitrate", 
+            "standard_name": "tendency_of_atmosphere_mass_content_of_all_nitrogen_oxides_due_to_wet_deposition", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "wetnoy", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "orog": {
+            "units": "m", 
+            "long_name": "Surface Altitude", 
+            "type": "real", 
+            "dimensions": "longitude latitude"
+        }, 
+        "snc": {
+            "comment": "Fraction of each grid cell that is occupied by snow that rests on land portion of cell.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "snow cover fraction", 
+            "standard_name": "surface_snow_area_fraction", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "%", 
+            "out_name": "snc", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "co2": {
+            "comment": "", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "CO2 volume mixing ratio", 
+            "standard_name": "mole_fraction_of_carbon_dioxide_in_air", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "mole mole-1", 
+            "out_name": "co2", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "dryo3": {
+            "comment": "dry deposition includes gravitational settling, impact scavenging, and turbulent deposition.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "dry deposition rate of o3", 
+            "standard_name": "tendency_of_atmosphere_mass_content_of_ozone_due_to_dry_deposition", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "dryo3", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "abs550aer": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "ambient aerosol absorption optical thickness at 550 nm", 
+            "standard_name": "atmosphere_absorption_optical_thickness_due_to_ambient_aerosol", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "1.0", 
+            "out_name": "abs550aer", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "od550ss": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "sea salt aod at 550nm", 
+            "standard_name": "atmosphere_optical_thickness_due_to_seasalt_ambient_aerosol", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "1.0", 
+            "out_name": "od550ss", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "o3loss": {
+            "comment": "ONLY provide the sum of the following reactions: (i) O(1D)+H2O; (ii) O3+HO2; (iii) O3+OH; (iv) O3+alkenes (isoprene, ethene,etc)", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "O3 destruction rate", 
+            "standard_name": "tendency_of_mole_concentration_of_ozone_due_to_chemical_loss", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-3 s-1", 
+            "out_name": "o3loss", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "tntlw": {
+            "comment": "longwave heating rates", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Longwave heating rate", 
+            "standard_name": "tendency_of_air_temperature_due_to_longwave_heating", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "K s-1", 
+            "out_name": "tntlw", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "od550soa": {
+            "comment": "proposed name: atmosphere_optical_thickness_due_to_secondary_particulate_organic_matter_ambient_aerosol", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "soa aod at 550nm", 
+            "standard_name": "atmosphere_optical_thickness_due_to_secondary_particulate_organic_matter_ambient_aerosol", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "1.0", 
+            "out_name": "od550soa", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "sigma_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: sigma(k+1/2)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "mmrss": {
+            "comment": "", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Sea Salt mass mixing ratio", 
+            "standard_name": "mass_fraction_of_seasalt_dry_aerosol_in_air", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg kg-1", 
+            "out_name": "mmrss", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "chepsoa": {
+            "comment": "Tendency of atmosphere mass content of secondary organic matter_dry aerosol due to net production:  If model lumps SOA emissions with POA, then the sum of POA and SOA emissions is reported as POA emissions. Here, mass refers to the mass of primary organic matter, not mass of organic carbon alone. Instead of emi_soa in original ACCMIP Excel spreadsheet. That variable had notes: This can be a pseudo-emission flux as used in AEROCOM (Dentener et al, ACP, 2006) or the [...]
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "chemical production of dry aerosol secondary organic matter", 
+            "standard_name": "tendency_of_atmosphere_mass_content_of_secondary_particulate_organic_matter_dry_aerosol_due_to_net_chemical_production", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "chepsoa", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "mmrdust": {
+            "comment": "", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Dust aerosol mass mixing ratio", 
+            "standard_name": "mass_fraction_of_dust_dry_aerosol_in_air", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg kg-1", 
+            "out_name": "mmrdust", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "o3": {
+            "comment": "", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Ozone volume mixing ratio", 
+            "standard_name": "mole_fraction_of_ozone_in_air", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "mole mole-1", 
+            "out_name": "o3", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "ptop": {
+            "units": "Pa", 
+            "long_name": "pressure at top of model", 
+            "type": "", 
+            "dimensions": ""
+        }, 
+        "hcl": {
+            "comment": "", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "HCl volume mixing ratio", 
+            "standard_name": "mole_fraction_of_hydrogen_chloride_in_air", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "mole mole-1", 
+            "out_name": "hcl", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "plev": {
+            "comment": "The atmospheric pressure at the model layer midpoints for all times and levels in the associated output variables", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Air Pressure", 
+            "standard_name": "air_pressure", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "Pa", 
+            "out_name": "plev", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "emioa": {
+            "comment": "tendency of atmosphere mass content of organic matter dry aerosol due to net production and emission.  This is the sum of total emission of POA and total production of SOA (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. Was called emi_pom in old ACCMIP Excel table. Integrate 3D emission field vertically to 2d field. ''ma [...]
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "primary emission and chemical production of dry aerosol organic matter", 
+            "standard_name": "tendency_of_atmosphere_mass_content_of_particulate_organic_matter_dry_aerosol_due_to_net_chemical_production_and_emission", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "emioa", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "airmass": {
+            "comment": "", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Vertically integrated mass content of air in layer", 
+            "standard_name": "atmosphere_mass_of_air_per_unit_area", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2", 
+            "out_name": "airmass", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "od440aer": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "ambient aerosol optical thickness at 440 nm", 
+            "standard_name": "", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "1.0", 
+            "out_name": "od440aer", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "wa": {
+            "comment": "", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Upward Air Velocity", 
+            "standard_name": "upward_air_velocity", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "m s-1", 
+            "out_name": "wa", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "rlut": {
+            "comment": "at the top of the atmosphere (to be compared with satellite measurements)", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "toa outgoing longwave radiation", 
+            "standard_name": "toa_outgoing_longwave_flux", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "rlut", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "reffclwtop": {
+            "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 [...]
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "cloud-top effective droplet radius", 
+            "standard_name": "effective_radius_of_cloud_liquid_water_particle_at_liquid_water_cloud_top", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "m", 
+            "out_name": "reffclwtop", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "tntsw": {
+            "comment": "shortwave heating rates", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Shortwave heating rate", 
+            "standard_name": "tendency_of_air_temperature_due_to_shortwave_heating", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "K s-1", 
+            "out_name": "tntsw", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "isop": {
+            "comment": "", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Isoprene volume mixing ratio", 
+            "standard_name": "mole_fraction_of_isoprene_in_air", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "mole mole-1", 
+            "out_name": "isop", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "swtoacsbb": {
+            "comment": "proposed name: toa_instantaneous_shortwave_forcing_due_to_biomass_burning_ambient_aerosol_assuming_clear_sky", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "clear sky sw-rf bb at toa", 
+            "standard_name": "toa_instantaneous_shortwave_forcing_due_to_biomass_burning_ambient_aerosol_assuming_clear_sky", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "swtoacsbb", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "rsds": {
+            "comment": "surface solar irradiance for UV calculations", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "surface downwelling shortwave radiation", 
+            "standard_name": "surface_downwelling_shortwave_flux_in_air", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "rsds", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "ztop": {
+            "units": "m", 
+            "long_name": "height of top of model", 
+            "type": "", 
+            "dimensions": ""
+        }, 
+        "mmrsoa": {
+            "comment": "", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Secondary organic aerosol mass mixing ratio", 
+            "standard_name": "mass_fraction_of_secondary_particulate_organic_matter_dry_aerosol_in_air", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg kg-1", 
+            "out_name": "mmrsoa", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "z1": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: z1", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "z2": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: z2", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "toz": {
+            "comment": "total ozone column in DU", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Total Ozone Column", 
+            "standard_name": "equivalent_thickness_at_stp_of_atmosphere_ozone_content", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "m", 
+            "out_name": "toz", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "pilev": {
+            "comment": "The atmospheric pressure at the model layer interfaces for all times and levels in the associated output variables", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "air pressure at interfaces", 
+            "standard_name": "", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "Pa", 
+            "out_name": "pilev", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "mmrno3": {
+            "comment": "", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "NO3 aerosol mass mixing ratio", 
+            "standard_name": "mass_fraction_of_nitrate_dry_aerosol_in_air", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg kg-1", 
+            "out_name": "mmrno3", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "drynoy": {
+            "comment": "proposed name: tendency_of_atmosphere_mass_content_of_all_nitrogen_oxides_due_to_dry_deposition. 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", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "dry deposition rate of noy", 
+            "standard_name": "tendency_of_atmosphere_mass_content_of_all_nitrogen_oxides_due_to_dry_deposition.", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "drynoy", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "eta": {
+            "units": "m", 
+            "long_name": "Sea Surface Height formula term: thetao", 
+            "type": "real", 
+            "dimensions": "longitude latitude time"
+        }, 
+        "mmrbc": {
+            "comment": "", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Elemental carbon mass mixing ratio", 
+            "standard_name": "mass_fraction_of_black_carbon_dry_aerosol_in_air", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg kg-1", 
+            "out_name": "mmrbc", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "cod": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "cloud optical depth", 
+            "standard_name": "atmosphere_optical_thickness_due_to_cloud", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "1.0", 
+            "out_name": "cod", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "dryoa": {
+            "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 tur [...]
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "dry deposition rate of dry aerosol total organic matter", 
+            "standard_name": "tendency_of_atmosphere_mass_content_of_particulate_organic_matter_dry_aerosol_due_to_dry_deposition", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "dryoa", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "rsus": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "surface upwelling shortwave radiation", 
+            "standard_name": "surface_upwelling_shortwave_flux_in_air", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "rsus", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "swtoaasbcff": {
+            "comment": "proposed name: toa_instantaneous_shortwave_forcing_due_to_black_carbon_ambient_aerosol_from_fossil_fuels", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "all sky sw-rf bcff at toa anthropogenic", 
+            "standard_name": "toa_instantaneous_shortwave_forcing_due_to_black_carbon_ambient_aerosol_from_fossil_fuels", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "swtoaasbcff", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "wetoa": {
+            "comment": "tendency of atmosphere mass content of organic matter dry aerosols due to wet deposition: This is the sum of wet deposition of POA and wet deposition of SOA (see next two entries). ''Mass'' refers to the mass of organic matter, not mass of organic carbon alone. 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", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "wet deposition rate of dry aerosol total organic matter", 
+            "standard_name": "tendency_of_atmosphere_mass_content_of_particulate_organic_matter_dry_aerosol_due_to_wet_deposition", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "wetoa", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "emibvoc": {
+            "comment": "proposed name: tendency_of_atmosphere_mass_content_of_biogenic_non_methane_volatile_organic_compounds_as_carbon_due_to_emission. 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", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "total emission rate of biogenic nmvoc", 
+            "standard_name": "tendency_of_atmosphere_mass_content_of_non_methane_volatile_organic_compounds_expressed_as_carbon_due_to_emission_from_vegetation", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "emibvoc", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "co": {
+            "comment": "", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "CO volume mixing ratio", 
+            "standard_name": "mole_fraction_of_carbon_monoxide_in_air", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "mole mole-1", 
+            "out_name": "co", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "swtoaasaer": {
+            "comment": "proposed name: toa_instantaneous_shortwave_forcing_due_to_ambient_aerosol", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "all sky sw-rf aerosols at toa", 
+            "standard_name": "toa_instantaneous_shortwave_forcing_due_to_ambient_aerosol", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "swtoaasaer", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "iwp": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "ice water path", 
+            "standard_name": "atmosphere_cloud_ice_content", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2", 
+            "out_name": "iwp", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "dryso4": {
+            "comment": "dry deposition includes gravitational settling, impact scavenging, and turbulent deposition", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "dry deposition rate of so4", 
+            "standard_name": "tendency_of_atmosphere_mass_content_of_sulfate_dry_aerosol_due_to_dry_deposition", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "dryso4", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "href": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: href", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "hfls": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "hfls", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "dryso2": {
+            "comment": "dry deposition includes gravitational settling, impact scavenging, and turbulent deposition", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "dry deposition rate of so2", 
+            "standard_name": "tendency_of_atmosphere_mass_content_of_sulfur_dioxide_due_to_dry_deposition", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "dryso2", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "wetbc": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "wet deposition rate of black carbon aerosol mass", 
+            "standard_name": "tendency_of_atmosphere_mass_content_of_black_carbon_dry_aerosol_due_to_wet_deposition", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "wetbc", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "pr": {
+            "comment": "includes both liquid and solid phases", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Precipitation", 
+            "standard_name": "precipitation_flux", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "pr", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "ps": {
+            "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", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Surface Air Pressure", 
+            "standard_name": "surface_air_pressure", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "Pa", 
+            "out_name": "ps", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "swtoaasss": {
+            "comment": "proposed name: toa_instantaneous_shortwave_forcing_due_to_seasalt_ambient_aerosol", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "all sky sw-rf ss at toa", 
+            "standard_name": "toa_instantaneous_shortwave_forcing_due_to_seasalt_ambient_aerosol", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "swtoaasss", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "rlus": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "surface upwelling longwave radiation", 
+            "standard_name": "surface_upwelling_longwave_flux_in_air", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "rlus", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "tos": {
+            "comment": "this may differ from 'surface temperature' in regions of sea ice.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Sea Surface Temperature", 
+            "standard_name": "sea_surface_temperature", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "K", 
+            "out_name": "tos", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "lwp": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "liquid water path", 
+            "standard_name": "atmosphere_cloud_liquid_water_content", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2", 
+            "out_name": "lwp", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "od550no3": {
+            "comment": "proposed name: atmosphere_optical_thickness_due_to_nitrate_ambient_aerosol", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "nitrate aod at 550nm", 
+            "standard_name": "atmosphere_optical_thickness_due_to_nitrate_ambient_aerosol", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "1.0", 
+            "out_name": "od550no3", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "hno3": {
+            "comment": "", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "HNO3 volume mixing ratio", 
+            "standard_name": "mole_fraction_of_nitric_acid_in_air", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "mole mole-1", 
+            "out_name": "hno3", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "od550oa": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "total organic aerosol aod at 550nm", 
+            "standard_name": "atmosphere_optical_thickness_due_to_particulate_organic_matter_ambient_aerosol", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "1.0", 
+            "out_name": "od550oa", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "tatp": {
+            "comment": "2D monthly mean thermal tropopause calculated using WMO tropopause definition on 3d temperature", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Tropopause Air Temperature", 
+            "standard_name": "tropopause_air_temperature", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "K", 
+            "out_name": "tatp", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "swtoacsbcff": {
+            "comment": "proposed name: toa_instantaneous_shortwave_forcing_due_to_black_carbon_ambient_aerosol_from_fossil_fuels_assuming_clear_sky", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "clear sky sw-rf bcff at toa", 
+            "standard_name": "toa_instantaneous_shortwave_forcing_due_to_black_carbon_ambient_aerosol_from_fossil_fuels_assuming_clear_sky", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "swtoacsbcff", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "drynh3": {
+            "comment": "dry deposition includes gravitational settling, impact scavenging, and turbulent deposition", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "dry deposition rate of nh3", 
+            "standard_name": "tendency_of_atmosphere_mass_content_of_ammonia_due_to_dry_deposition", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "drynh3", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "swtoacsoaff": {
+            "comment": "proposed name: toa_instantaneous_shortwave_forcing_due_to_particulate_organic_matter_ambient_aerosol_from_fossil_fuels_assuming_clear_sky", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "clear sky sw-rf oaff at toa anthropogenic", 
+            "standard_name": "toa_instantaneous_shortwave_forcing_due_to_particulate_organic_matter_ambient_aerosol_from_fossil_fuels_assuming_clear_sky", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "swtoacsoaff", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "drynh4": {
+            "comment": "dry deposition includes gravitational settling, impact scavenging, and turbulent deposition", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "dry deposition rate of nh4", 
+            "standard_name": "tendency_of_atmosphere_mass_content_of_ammonium_dry_aerosol_due_to_dry_deposition", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "drynh4", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "od550dust": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "dust aod at 550nm", 
+            "standard_name": "atmosphere_optical_thickness_due_to_dust_ambient_aerosol", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "1.0", 
+            "out_name": "od550dust", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "emiss": {
+            "comment": "Integrate 3D emission field vertically to 2d field.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "total emission rate of seasalt", 
+            "standard_name": "tendency_of_atmosphere_mass_content_of_seasalt_dry_aerosol_due_to_emission", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "emiss", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "mmrnh4": {
+            "comment": "", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "NH4 mass mixing ratio", 
+            "standard_name": "mass_fraction_of_ammonium_dry_aerosol_in_air", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg kg-1", 
+            "out_name": "mmrnh4", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "cnpz": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "canopy height", 
+            "standard_name": "canopy_height", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "m", 
+            "out_name": "cnpz", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "so2": {
+            "comment": "", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "SO2 volume mixing ratio", 
+            "standard_name": "mole_fraction_of_sulfur_dioxide_in_air", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "mole mole-1", 
+            "out_name": "so2", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "hus": {
+            "comment": "", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Specific Humidity", 
+            "standard_name": "specific_humidity", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "1.0", 
+            "out_name": "hus", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "mcu": {
+            "comment": "In accordance with common usage in geophysical disciplines, 'flux' implies per unit area, called 'flux density' in physics. The atmosphere convective mass flux is the vertical transport of mass for a field of cumulus clouds or thermals, given by the product of air density and vertical velocity. For an area-average, cell_methods should specify whether the average is over all the area or the area of updrafts only.", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Convective Updraft Mass Flux", 
+            "standard_name": "atmosphere_updraft_convective_mass_flux", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "mcu", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "emiaco": {
+            "comment": "Includes agricultural waste burning but no other biomass burning. proposed name: tendency_of_atmosphere_mass_content_of_anthropogenic_carbon_monoxide_due_to_emission. Integrate 3D emission field vertically to 2d field.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "total emission rate of anthropogenic co", 
+            "standard_name": "tendency_of_atmosphere_mass_content_of_anthropogenic_carbon_monoxide_due_to_emission", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "emiaco", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "od550so4": {
+            "comment": "proposed name: atmosphere_optical_thickness_due_to_sulfate_ambient_aerosol", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "sulfate aod at 550nm", 
+            "standard_name": "atmosphere_optical_thickness_due_to_sulfate_ambient_aerosol", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "1.0", 
+            "out_name": "od550so4", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "p0": {
+            "units": "Pa", 
+            "long_name": "vertical coordinate formula term: reference pressure", 
+            "type": "", 
+            "dimensions": ""
+        }, 
+        "chegpso4": {
+            "comment": "proposed name: tendency_of_atmosphere_mass_content_of_sulfate_dry_aerosol_due_to_gas_phase_net_chemical_production", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Gas-phase production rate of SO4", 
+            "standard_name": "tendency_of_atmosphere_mass_content_of_sulfate_dry_aerosol_due_to_gas_phase_net_chemical_production", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "chegpso4", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "emilnox": {
+            "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", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "layer-integrated lightning production of NOx", 
+            "standard_name": "tendency_of_atmosphere_mass_content_of_nox_from_lightning", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "emilnox", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "oh": {
+            "comment": "", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "OH volume mixing ratio", 
+            "standard_name": "mole_fraction_of_hydroxyl_radical_in_air", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "mole mole-1", 
+            "out_name": "oh", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "eminox": {
+            "comment": "NOx=NO+NO2. Integrate 3D emission field vertically to 2d field.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "total emission rate of nox", 
+            "standard_name": "tendency_of_atmosphere_mass_content_of_nox_expressed_as_nitrogen_due_to_emission", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "eminox", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "lwtoacsaer": {
+            "comment": "proposed name: toa_instantaneous_longwave_forcing_due_to_ambient_aerosol_assuming_clear_sky", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "clear sky lw-rf aerosols at toa", 
+            "standard_name": "toa_instantaneous_longwave_forcing_due_to_ambient_aerosol_assuming_clear_sky", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "lwtoacsaer", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "dms": {
+            "comment": "", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "DMS volume mixing ratio", 
+            "standard_name": "mole_fraction_of_dimethyl_sulfide_in_air", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "mole mole-1", 
+            "out_name": "dms", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "ch4": {
+            "comment": "", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "CH4 volume mixing ratio", 
+            "standard_name": "mole_fraction_of_methane_in_air", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "mole mole-1", 
+            "out_name": "ch4", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "k_c": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: k_c", 
+            "type": "integer", 
+            "dimensions": ""
+        }, 
+        "ua": {
+            "comment": "", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Eastward Wind", 
+            "standard_name": "eastward_wind", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "m s-1", 
+            "out_name": "ua", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "a_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: a(k+1/2)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "va": {
+            "comment": "", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Northward Wind", 
+            "standard_name": "northward_wind", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "m s-1", 
+            "out_name": "va", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "n2o": {
+            "comment": "", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "N2O volume mixing ratio", 
+            "standard_name": "mole_fraction_of_nitrous_oxide_in_air", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "mole mole-1", 
+            "out_name": "n2o", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "mmroa": {
+            "comment": "We recommend a scale factor of POM=1.4*OC, unless your model has more detailed info available.", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Total organic aerosol mass mixing ratio", 
+            "standard_name": "mass_fraction_of_particulate_organic_matter_dry_aerosol_in_air", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg kg-1", 
+            "out_name": "mmroa", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "drybc": {
+            "comment": "Dry deposition includes gravitational settling, impact scavenging, and turbulent deposition.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "dry deposition rate of black carbon aerosol mass", 
+            "standard_name": "tendency_of_atmosphere_mass_content_of_black_carbon_dry_aerosol_due_to_dry_deposition", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "drybc", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "hfss": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Surface Upward Sensible Heat Flux", 
+            "standard_name": "surface_upward_sensible_heat_flux", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "hfss", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "ap_bnds": {
+            "units": "Pa", 
+            "long_name": "vertical coordinate formula term: ap(k+1/2)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "ap": {
+            "units": "Pa", 
+            "long_name": "vertical coordinate formula term: ap(k)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "albs": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "planetary albedo", 
+            "standard_name": "planetary_albedo", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "1.0", 
+            "out_name": "albs", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "zlev": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: zlev(k)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "lwtoaasaer": {
+            "comment": "proposed name: toa_instantaneous_longwave_forcing_due_to_ambient_aerosol", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "all sky lw-rf aerosols at toa", 
+            "standard_name": "toa_instantaneous_longwave_forcing_due_to_ambient_aerosol", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "lwtoaasaer", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "emico": {
+            "comment": "Integrate 3D emission field vertically to 2d field.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "total emission rate of co", 
+            "standard_name": "tendency_of_atmosphere_mass_content_of_carbon_monoxide_due_to_emission", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "emico", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "mmrso4": {
+            "comment": "", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Aerosol sulfate mass mixing ratio", 
+            "standard_name": "mass_fraction_of_sulfate_dry_aerosol_in_air", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg kg-1", 
+            "out_name": "mmrso4", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "no": {
+            "comment": "", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "NO volume mixing ratio", 
+            "standard_name": "mole_fraction_of_nitrogen_monoxide_in_air", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "mole mole-1", 
+            "out_name": "no", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "lwtoaasdust": {
+            "comment": "proposed name: toa_instantaneous_longwave_forcing_due_to_dust_ambient_aerosol", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "all sky lw-rf dust at toa", 
+            "standard_name": "toa_instantaneous_longwave_forcing_due_to_dust_ambient_aerosol", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "lwtoaasdust", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "depth": {
+            "units": "m", 
+            "long_name": "Sea Floor Depth: formula term: thetao", 
+            "type": "real", 
+            "dimensions": "longitude latitude"
+        }, 
+        "swtoaasso4": {
+            "comment": "proposed name: toa_instantaneous_shortwave_forcing_due_to_sulfate_ambient_aerosol", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "all sky sw-rf so4 at toa", 
+            "standard_name": "toa_instantaneous_shortwave_forcing_due_to_sulfate_ambient_aerosol", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "swtoaasso4", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "sic": {
+            "comment": "fraction of grid cell covered by sea ice.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Sea Ice Area Fraction", 
+            "standard_name": "sea_ice_area_fraction", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "1.0", 
+            "out_name": "sic", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "mmrpm10": {
+            "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", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "PM10 mass mixing ratio", 
+            "standard_name": "mass_fraction_of_pm10_dry_aerosol_in_air", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg kg-1", 
+            "out_name": "mmrpm10", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "emidms": {
+            "comment": "Integrate 3D emission field vertically to 2d field.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "total emission rate of dms", 
+            "standard_name": "tendency_of_atmosphere_mass_content_of_dimethyl_sulfide_due_to_emission", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "emidms", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "dryss": {
+            "comment": "Dry deposition includes gravitational settling, impact scavenging, and turbulent deposition.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "dry deposition rate of seasalt", 
+            "standard_name": "tendency_of_atmosphere_mass_content_of_seasalt_dry_aerosol_due_to_dry_deposition", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "dryss", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "convclt": {
+            "comment": "Convective cloud fraction", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Convective Cloud Area Fraction", 
+            "standard_name": "convective_cloud_area_fraction", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "1.0", 
+            "out_name": "convclt", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "swtoacsdust": {
+            "comment": "proposed name: toa_instantaneous_shortwave_forcing_due_to_dust_ambient_aerosol_assuming_clear_sky", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "clear sky sw-rf dust at toa", 
+            "standard_name": "toa_instantaneous_shortwave_forcing_due_to_dust_ambient_aerosol_assuming_clear_sky", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "swtoacsdust", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "albsrfc": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "surface albedo", 
+            "standard_name": "surface_albedo", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "1.0", 
+            "out_name": "albsrfc", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "od550aer": {
+            "comment": "AOD from the ambient aerosls (i.e., includes aerosol water).  Does not include AOD from stratospheric aerosols if these are prescribed but includes other possible background aerosol types. Needs a comment attribute 'wavelength: 550 nm'", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "ambient aerosol optical thickness at 550 nm", 
+            "standard_name": "atmosphere_optical_thickness_due_to_ambient_aerosol", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "1.0", 
+            "out_name": "od550aer", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "b_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: b(k+1/2)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "lai": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "leaf area index", 
+            "standard_name": "leaf_area_index", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "1.0", 
+            "out_name": "lai", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "emiso2": {
+            "comment": "Integrate 3D emission field vertically to 2d field.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "total emission rate of so2", 
+            "standard_name": "tendency_of_atmosphere_mass_content_of_sulfur_dioxide_due_to_emission", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "emiso2", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "emiso4": {
+            "comment": "expressed as a tendency of atmosphere mass content of SO4.  Direct emission does not include secondary sulfate production. Integrate 3D emission field vertically to 2d field. proposed name: tendency_of_atmosphere_mass_content_of_anthropogenic_sulfate_dry_aerosol_due_to_emission. Integrate 3D emission field vertically to 2d field.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "total direct emission rate of so4", 
+            "standard_name": "tendency_of_atmosphere_mass_content_of_sulfate_dry_aerosol_due_to_emission", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "emiso4", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "swtoaasoaff": {
+            "comment": "proposed name: toa_instantaneous_shortwave_forcing_due_to_particulate_organic_matter_ambient_aerosol_from_fossil_fuels", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "all sky sw-rf oaff at toa anthropogenic", 
+            "standard_name": "toa_instantaneous_shortwave_forcing_due_to_particulate_organic_matter_ambient_aerosol_from_fossil_fuels", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "swtoaasoaff", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "cheaqpso4": {
+            "comment": "proposed name: tendency_of_atmosphere_mass_content_of_sulfate_dry_aerosol_due_to_aqueous_phase_net_chemical_production", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Aqueous-phase production rate of SO4", 
+            "standard_name": "tendency_of_atmosphere_mass_content_of_sulfate_dry_aerosol_due_to_aqueous_phase_net_chemical_production", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "cheaqpso4", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "od550aerh2o": {
+            "comment": "proposed name: atmosphere_optical_thickness_due_to_water_ambient_aerosol", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "aerosol water aod at 550nm", 
+            "standard_name": "atmosphere_optical_thickness_due_to_water_in_ambient_aerosol", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "1.0", 
+            "out_name": "od550aerh2o", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "zlev_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: zlev(k+1/2)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "chepasoa": {
+            "comment": "If model lumps SOA emissions with POA, then the sum of POA and SOA emissions is reported as POA emissions.  'mass' refers to the mass of primary organic matter, not mass of organic carbon alone. proposed name: tendency_of_atmosphere_mass_content_of_anthropogenic_secondary_particulate_organic_matter_dry_aerosol_due_to_net_chemical_production.  Used instead of emi_asoa in original ACCMIP Excel spreadsheet. That variable had notes: This can be a pseudo-emission flux  [...]
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "total net production of anthropogenic secondary organic aerosol", 
+            "standard_name": "unset", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "chepasoa", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "a": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: a(k)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "emiisop": {
+            "comment": "Integrate 3D emission field vertically to 2d field", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "total emission rate of isoprene", 
+            "standard_name": "tendency_of_atmosphere_mass_content_of_isoprene_due_to_emission", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "emiisop", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "wetss": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "wet deposition rate of seasalt", 
+            "standard_name": "tendency_of_atmosphere_mass_content_of_seasalt_dry_aerosol_due_to_wet_deposition", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "wetss", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "mmraerh2o": {
+            "comment": "", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Aerosol water mass mixing ratio", 
+            "standard_name": "mass_fraction_of_water_in_ambient_aerosol_in_air", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg kg-1", 
+            "out_name": "mmraerh2o", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "sigma": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: sigma(k)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "h2o": {
+            "comment": "", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Water vapour volume mixing ratio", 
+            "standard_name": "mole_fraction_of_water_vapor_in_air", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "mole mole-1", 
+            "out_name": "h2o", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "ccn": {
+            "comment": "proposed name: number_concentration_of_ambient_aerosol_in_air_at_liquid_water_cloud_top", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "cloud condensation nuclei concentration at liquid cloud top", 
+            "standard_name": "number_concentration_of_ambient_aerosol_in_air_at_liquid_water_cloud_top", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "m-3", 
+            "out_name": "ccn", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "rsut": {
+            "comment": "at the top of the atmosphere", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "toa outgoing shortwave radiation", 
+            "standard_name": "toa_outgoing_shortwave_flux", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "rsut", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "eminh3": {
+            "comment": "Integrate 3D emission field vertically to 2d field.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "total emission rate of nh3", 
+            "standard_name": "tendency_of_atmosphere_mass_content_of_ammonia_due_to_emission", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "eminh3", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "rlds": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "surface downwelling longwave radiation", 
+            "standard_name": "surface_downwelling_longwave_flux_in_air", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "rlds", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "swtoaassoa": {
+            "comment": "proposed name: toa_instantaneous_shortwave_forcing_due_to_secondary_particulate_organic_matter_ambient_aerosol", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "all sky sw-rf soa at toa", 
+            "standard_name": "toa_instantaneous_shortwave_forcing_due_to_secondary_particulate_organic_matter_ambient_aerosol", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "swtoaassoa", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "drydust": {
+            "comment": "Dry deposition includes gravitational settling, impact scavenging, and turbulent deposition.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "dry deposition rate of dust", 
+            "standard_name": "tendency_of_atmosphere_mass_content_of_dust_dry_aerosol_due_to_dry_deposition", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "drydust", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "tropoz": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "tropospheric ozone column", 
+            "standard_name": "", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "DU", 
+            "out_name": "tropoz", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "emivoc": {
+            "comment": "proposed name: tendency_of_atmosphere_mass_content_of_non_methane_volatile_organic_compounds_as_carbon_due_to_emission. 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", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "total emission rate of nmvoc", 
+            "standard_name": "tendency_of_atmosphere_mass_content_of_non_methane_volatile_organic_compounds_as_carbon_due_to_emission", 
+            "modeling_realm": "aero", 
+            "cell_measures": "time: mean area: mean where sea_ice over sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "emivoc", 
+            "type": "float", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }
+    }
+}
diff --git a/TestTables/CMIP6_aero.json b/TestTables/CMIP6_aero.json
new file mode 100644
index 0000000..93eec01
--- /dev/null
+++ b/TestTables/CMIP6_aero.json
@@ -0,0 +1,3536 @@
+{
+    "Header": {
+        "product": "output", 
+        "approx_interval": "30.00000", 
+        "realm": "aerosol", 
+        "cmor_version": "3.1", 
+        "Conventions": "CF-1.6 CMIP-6.0", 
+        "frequency": "mon", 
+        "table_id": "Table aero", 
+        "data_specs_version": "01.beta.29", 
+        "mip_era": "CMIP6", 
+        "generic_levels": "alevel alev1", 
+        "missing_value": "1e20", 
+        "table_date": "14 June 2016"
+    }, 
+    "axis_entry": {
+        "typebare": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "bare_ground", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "tau": {
+            "requested": [
+                "0.15", 
+                "0.8", 
+                "2.45", 
+                "6.5", 
+                "16.2", 
+                "41.5", 
+                "100."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "0.0", 
+                "0.3", 
+                "0.3", 
+                "1.3", 
+                "1.3", 
+                "3.6", 
+                "3.6", 
+                "9.4", 
+                "9.4", 
+                "23.0", 
+                "23.0", 
+                "60.0", 
+                "60.0", 
+                "100000."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "cloud optical thickness", 
+            "standard_name": "atmosphere_optical_thickness_due_to_cloud", 
+            "value": "", 
+            "out_name": "tau", 
+            "type": "double", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "olayer100m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "0. 100.", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "50.0", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "100.0", 
+            "axis": "Z"
+        }, 
+        "spectband": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "Spectral Band", 
+            "standard_name": "wave_frequency", 
+            "value": "", 
+            "out_name": "spectband", 
+            "type": "double", 
+            "units": "s-1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "ocean_sigma_z": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "sigma: sigma eta: eta depth: depth depth_c: depth_c nsigma: nsigma zlev: zlev", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "sigma: sigma_bnds eta: eta depth: depth depth_c: depth_c nsigma: nsigma zlev: zlev_bnds", 
+            "bounds_values": "", 
+            "long_name": "ocean sigma over z coordinate", 
+            "standard_name": "ocean_sigma_z", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "for k <= nsigma: z(n,k,j,i) = eta(n,j,i) + sigma(k)*(min(depth_c,depth(j,i))+eta(n,j,i)) ; for k > nsigma: z(n,k,j,i) = zlev(k)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev19": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000.", 
+                "500.", 
+                "100."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "p220": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "44000. 0.0", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "22000.0", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev17": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev10": {
+            "requested": [
+                "100000.", 
+                "85000.", 
+                "70000.", 
+                "50000.", 
+                "25000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "site": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "site index", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "site", 
+            "type": "integer", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "smooth_level": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "a: a b1: b1 b2: b2 ztop: ztop zsurf1: zsurf1 zsurf2: zsurf2", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-200.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "a: a_bnds b1: b1_bnds b2: b2_bnds ztop: ztop zsurf1: zsurf1 zsurf2: zsurf2", 
+            "bounds_values": "", 
+            "long_name": "atmosphere smooth level vertical (SLEVE) coordinate", 
+            "standard_name": "atmosphere_sleve_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "m", 
+            "formula": "z = a*ztop + b1*zsurf1 + b2*zsurf2", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "800000.0", 
+            "axis": "Z"
+        }, 
+        "p840": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "100000. 68000.", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "84000.0", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "ocean_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "sigma: lev eta: eta depth: depth", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "sigma: lev_bnds eta: eta depth: depth", 
+            "bounds_values": "", 
+            "long_name": "ocean sigma coordinate", 
+            "standard_name": "ocean_sigma_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "z(n,k,j,i) = eta(n,j,i) + sigma(k)*(depth(j,i)+eta(n,j,i))", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "0.0", 
+            "axis": "Z"
+        }, 
+        "depth0m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "0.0", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "100.0", 
+            "axis": "Z"
+        }, 
+        "ocean_s": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "s: lev eta: eta depth: depth a: a_coeff b: b_coeff depth_c: depth_c", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "s: lev_bnds eta: eta depth: depth a: a b: b depth_c: depth_c", 
+            "bounds_values": "", 
+            "long_name": "ocean s-coordinate", 
+            "standard_name": "ocean_s_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "z(n,k,j,i) = eta(n,j,i)*(1+s(k)) + depth_c*s(k) + (depth(j,i)-depth_c)*C(k) n where n C(k)=(1-b)*sinh(a*s(k))/sinh(a) +n           b*(tanh(a*(s(k)+0.5))/(2*tanh(0.5*a)) - 0.5)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "0.0", 
+            "axis": "Z"
+        }, 
+        "plev4s": {
+            "requested": [
+                "85000.", 
+                "50000.", 
+                "20000.", 
+                "5000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "typec4pft": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "c4_plant_functional_types", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "plev3h": {
+            "requested": [
+                "10000.", 
+                "1000.", 
+                "100."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "height2m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "up", 
+            "must_have_bounds": "no", 
+            "valid_min": "1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "height", 
+            "standard_name": "height", 
+            "value": "2.0", 
+            "out_name": "height", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "10.0", 
+            "axis": "Z"
+        }, 
+        "time1": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "time", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "plev7h": {
+            "requested": [
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "25000.", 
+                "5000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "sza5": {
+            "requested": [
+                "0.", 
+                "20.", 
+                "40.", 
+                "60.", 
+                "80."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "solar zenith angle", 
+            "standard_name": "solar_zenith_angle", 
+            "value": "", 
+            "out_name": "sza", 
+            "type": "double", 
+            "units": "degree", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "depth_coord": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "ocean depth coordinate", 
+            "standard_name": "depth", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "12000.0", 
+            "axis": "Z"
+        }, 
+        "sdepth1": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "0.0 0.1", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "0.05", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "0.2", 
+            "axis": "Z"
+        }, 
+        "alternate_hybrid_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "ap: ap b: b ps: ps", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "ap: ap_bnds b: b_bnds ps: ps", 
+            "bounds_values": "", 
+            "long_name": "hybrid sigma pressure coordinate", 
+            "standard_name": "atmosphere_hybrid_sigma_pressure_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "1", 
+            "formula": "p = ap + b*ps", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "1.0", 
+            "axis": "Z"
+        }, 
+        "time2": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "time", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "yes", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "time3": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "Diurnal cycle: monthly mean of the diurnal cycle (1 hour steps).", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "oline": {
+            "requested": [
+                "barents_opening", 
+                "bering_strait", 
+                "canadian_archipelago", 
+                "denmark_strait", 
+                "drake_passage", 
+                "english_channel", 
+                "pacific_equatorial_undercurrent", 
+                "faroe_scotland_channel", 
+                "florida_bahamas_strait", 
+                "fram_strait", 
+                "iceland_faroe_channel", 
+                "indonesian_thoughflow", 
+                "mozambique_channel", 
+                "taiwan_luzon_straits", 
+                "windward_passage"
+            ], 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "ocean passage", 
+            "standard_name": "region", 
+            "value": "", 
+            "out_name": "line", 
+            "type": "character", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "plev14": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "25000.", 
+                "15000.", 
+                "10000.", 
+                "5000.", 
+                "2000.", 
+                "1000.", 
+                "500.", 
+                "100."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev8": {
+            "requested": [
+                "100000.", 
+                "85000.", 
+                "70000.", 
+                "50000.", 
+                "25000.", 
+                "10000.", 
+                "5000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "location": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "location index", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "loc", 
+            "type": "integer", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "latitude": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-90.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "latitude", 
+            "standard_name": "latitude", 
+            "value": "", 
+            "out_name": "lat", 
+            "type": "double", 
+            "units": "degrees_north", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "90.0", 
+            "axis": "Y"
+        }, 
+        "plev3": {
+            "requested": [
+                "85000.", 
+                "50000.", 
+                "25000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "basin": {
+            "requested": [
+                "atlantic_arctic_ocean", 
+                "indian_pacific_ocean", 
+                "global_ocean"
+            ], 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "ocean basin", 
+            "standard_name": "region", 
+            "value": "", 
+            "out_name": "basin", 
+            "type": "character", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "p700": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "700 hPa", 
+            "standard_name": "air_pressure", 
+            "value": "70000.", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev7": {
+            "requested": [
+                "90000.", 
+                "74000.", 
+                "62000.", 
+                "50000.", 
+                "37500.", 
+                "24500.", 
+                "9000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "100000.", 
+                "80000.", 
+                "80000.", 
+                "68000.", 
+                "68000.", 
+                "56000.", 
+                "56000.", 
+                "44000.", 
+                "44000.", 
+                "31000.", 
+                "31000.", 
+                "18000.", 
+                "18000.", 
+                " 0."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev4": {
+            "requested": [
+                "92500.", 
+                "85000.", 
+                "50000.", 
+                "25000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev23": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000.", 
+                "700.", 
+                "500.", 
+                "300.", 
+                "200.", 
+                "100.", 
+                "40."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev39": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "17000.", 
+                "15000.", 
+                "13000.", 
+                "11500.", 
+                "10000.", 
+                "9000.", 
+                "8000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1500.", 
+                "1000.", 
+                "700.", 
+                "500.", 
+                "300.", 
+                "200.", 
+                "150.", 
+                "100.", 
+                "70.", 
+                "50.", 
+                "40.", 
+                "30.", 
+                "20.", 
+                "15.", 
+                "10.", 
+                "7.", 
+                "5.", 
+                "3."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "typepever": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "primary_evergreen_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "typesdec": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "secondary_decidous_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "plev27": {
+            "requested": [
+                "100000.", 
+                "97500.", 
+                "95000.", 
+                "92500.", 
+                "90000.", 
+                "87500.", 
+                "85000.", 
+                "82500.", 
+                "80000.", 
+                "77500.", 
+                "75000.", 
+                "70000.", 
+                "65000.", 
+                "60000.", 
+                "55000.", 
+                "50000.", 
+                "45000.", 
+                "40000.", 
+                "35000.", 
+                "30000.", 
+                "25000.", 
+                "22500.", 
+                "20000.", 
+                "17500.", 
+                "15000.", 
+                "12500.", 
+                "10000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "alt40": {
+            "requested": [
+                "240.", 
+                "720.", 
+                "1200.", 
+                "1680.", 
+                "2160.", 
+                "2640.", 
+                "3120.", 
+                "3600.", 
+                "4080.", 
+                "4560.", 
+                "5040.", 
+                "5520.", 
+                "6000.", 
+                "6480.", 
+                "6960.", 
+                "7440.", 
+                "7920.", 
+                "8400.", 
+                "8880.", 
+                "9360.", 
+                "9840.", 
+                "10320.", 
+                "10800.", 
+                "11280.", 
+                "11760.", 
+                "12240.", 
+                "12720.", 
+                "13200.", 
+                "13680.", 
+                "14160.", 
+                "14640.", 
+                "15120.", 
+                "15600.", 
+                "16080.", 
+                "16560.", 
+                "17040.", 
+                "17520.", 
+                "18000.", 
+                "18480.", 
+                "18960."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "0.", 
+                "480.", 
+                "480.", 
+                "960.", 
+                "960.", 
+                "1440.", 
+                "1440.", 
+                "1920.", 
+                "1920.", 
+                "2400.", 
+                "2400.", 
+                "2880.", 
+                "2880.", 
+                "3360.", 
+                "3360.", 
+                "3840.", 
+                "3840.", 
+                "4320.", 
+                "4320.", 
+                "4800.", 
+                "4800.", 
+                "5280.", 
+                "5280.", 
+                "5760.", 
+                "5760.", 
+                "6240.", 
+                "6240.", 
+                "6720.", 
+                "6720.", 
+                "7200.", 
+                "7200.", 
+                "7680.", 
+                "7680.", 
+                "8160.", 
+                "8160.", 
+                "8640.", 
+                "8640.", 
+                "9120.", 
+                "9120.", 
+                "9600.", 
+                "9600.", 
+                "10080.", 
+                "10080.", 
+                "10560.", 
+                "10560.", 
+                "11040.", 
+                "11040.", 
+                "11520.", 
+                "11520.", 
+                "12000.", 
+                "12000.", 
+                "12480.", 
+                "12480.", 
+                "12960.", 
+                "12960.", 
+                "13440.", 
+                "13440.", 
+                "13920.", 
+                "13920.", 
+                "14400.", 
+                "14400.", 
+                "14880.", 
+                "14880.", 
+                "15360.", 
+                "15360.", 
+                "15840.", 
+                "15840.", 
+                "16320.", 
+                "16320.", 
+                "16800.", 
+                "16800.", 
+                "17280.", 
+                "17280.", 
+                "17760.", 
+                "17760.", 
+                "18240.", 
+                "18240.", 
+                "18720.", 
+                "18720.", 
+                "19200."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "altitude", 
+            "standard_name": "altitude", 
+            "value": "", 
+            "out_name": "alt40", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "time": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "time", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "plev7c": {
+            "requested": [
+                "90000.", 
+                "74000.", 
+                "62000.", 
+                "50000.", 
+                "37500.", 
+                "24500.", 
+                "9000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "height10m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "up", 
+            "must_have_bounds": "no", 
+            "valid_min": "1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "height", 
+            "standard_name": "height", 
+            "value": "10.0", 
+            "out_name": "height", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "30.0", 
+            "axis": "Z"
+        }, 
+        "dbze": {
+            "requested": [
+                "-47.5", 
+                "-42.5", 
+                "-37.5", 
+                "-32.5", 
+                "-27.5", 
+                "-22.5", 
+                "-17.5", 
+                "-12.5", 
+                "-7.5", 
+                "-2.5", 
+                "2.5", 
+                "7.5", 
+                "12.5", 
+                "17.5", 
+                "22.5"
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "-50", 
+                "-45", 
+                "-45", 
+                "-40", 
+                "-40", 
+                "-35", 
+                "-35", 
+                "-30", 
+                "-30", 
+                "-25", 
+                "-25", 
+                "-20", 
+                "-20", 
+                "-15", 
+                "-15", 
+                "-10", 
+                "-10", 
+                "-5", 
+                "-5", 
+                "0", 
+                "0", 
+                "5", 
+                "5", 
+                "10", 
+                "10", 
+                "15", 
+                "15", 
+                "20", 
+                "20", 
+                "25."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "CloudSat simulator equivalent radar reflectivity factor", 
+            "standard_name": "equivalent_reflectivity_factor", 
+            "value": "", 
+            "out_name": "dbze", 
+            "type": "double", 
+            "units": "dBZ", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "typesever": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "secondary_evergreen_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "rho": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "density++++?", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "rho", 
+            "type": "double", 
+            "units": "kg m-3", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "depth100m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "80.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "100.0", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "120.0", 
+            "axis": "Z"
+        }, 
+        "effectRadLi": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "Effective Radius of Liquid Aerosols", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "effectRadLi", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "sdepth": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "200.0", 
+            "axis": "Z"
+        }, 
+        "vegtype": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "plant functional type", 
+            "standard_name": "area_type", 
+            "value": "", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "typec3pft": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "c3_plant_functional_types", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "natural_log_pressure": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "p0: p0 lev: lev", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "p0: p0 lev: lev_bnds", 
+            "bounds_values": "", 
+            "long_name": "atmosphere natural log pressure coordinate", 
+            "standard_name": "atmosphere_ln_pressure_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "p = p0 * exp(-lev)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "20.0", 
+            "axis": "Z"
+        }, 
+        "scatratio": {
+            "requested": [
+                "0.005", 
+                "0.605", 
+                "2.1", 
+                "4.", 
+                "6.", 
+                "8.5", 
+                "12.5", 
+                "17.5", 
+                "22.5", 
+                "27.5", 
+                "35.", 
+                "45.", 
+                "55.", 
+                "70.", 
+                "50040."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "0.", 
+                "0.01", 
+                "0.01", 
+                "1.2", 
+                "1.2", 
+                "3.", 
+                "3.", 
+                "5.", 
+                "5.", 
+                "7.", 
+                "7.", 
+                "10.", 
+                "10.", 
+                "15.", 
+                "15.", 
+                "20.", 
+                "20.", 
+                "25.", 
+                "25.", 
+                "30.", 
+                "30.", 
+                "40.", 
+                "40.", 
+                "50.", 
+                "50.", 
+                "60.", 
+                "60.", 
+                "80.", 
+                "80.", 
+                "100000."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "lidar backscattering ratio", 
+            "standard_name": "backscattering_ratio", 
+            "value": "", 
+            "out_name": "scatratio", 
+            "type": "double", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "standard_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "ptop: ptop sigma: lev ps: ps", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "ptop: ptop sigma: lev_bnds ps: ps", 
+            "bounds_values": "", 
+            "long_name": "sigma coordinate", 
+            "standard_name": "atmosphere_sigma_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "p = ptop + sigma*(ps - ptop)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "1.0", 
+            "axis": "Z"
+        }, 
+        "typepdec": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "primary_deciduous_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "hybrid_height": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "a: lev b: b orog: orog", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "a: lev_bnds b: b_bnds orog: orog", 
+            "bounds_values": "", 
+            "long_name": "hybrid height coordinate", 
+            "standard_name": "atmosphere_hybrid_height_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "m", 
+            "formula": "z = a + b*orog", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "longitude": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "longitude", 
+            "standard_name": "longitude", 
+            "value": "", 
+            "out_name": "lon", 
+            "type": "double", 
+            "units": "degrees_east", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "360.0", 
+            "axis": "X"
+        }, 
+        "effectRadIc": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "Effective Radius of Ice Aerosols", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "effectRadIc", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "p1000": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "1000 hPa", 
+            "standard_name": "air_pressure", 
+            "value": "100000.", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "p500": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "500 hPa", 
+            "standard_name": "air_pressure", 
+            "value": "50000.", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "ocean_double_sigma": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "sigma: sigma depth: depth z1: z1 z2: z2 a: a_coeff href: href k_c: k_c", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "sigma: sigma_bnds depth: depth z1: z1 z2: z2 a: a href: href k_c: k_c", 
+            "bounds_values": "", 
+            "long_name": "ocean double sigma coordinate", 
+            "standard_name": "ocean_double_sigma", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "for k <= k_c:n z(k,j,i)= sigma(k)*f(j,i) n for k > k_c:n z(k,j,i)= f(j,i) + (sigma(k)-1)*(depth(j,i)-f(j,i)) n f(j,i)= 0.5*(z1+ z2) + 0.5*(z1-z2)* tanh(2*a/(z1-z2)*(depth(j,i)-href))", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plevs": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "standard_hybrid_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "p0: p0 a: a b: b ps: ps", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "p0: p0 a: a_bnds b: b_bnds ps: ps", 
+            "bounds_values": "", 
+            "long_name": "hybrid sigma pressure coordinate", 
+            "standard_name": "atmosphere_hybrid_sigma_pressure_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "1", 
+            "formula": "p = a*p0 + b*ps", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "1.0", 
+            "axis": "Z"
+        }, 
+        "p560": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "68000. 44000.", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "56000.0", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }
+    }, 
+    "variable_entry": {
+        "wetnh4": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Wet Deposition Rate of NH4+NH3", 
+            "standard_name": "tendency_of_atmosphere_mass_content_of_ammonium_dry_aerosol_due_to_wet_deposition", 
+            "modeling_realm": "aerosol", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "wetnh4", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "depth_c": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: depth_c", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "concbc": {
+            "comment": "", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Concentration of Black Carbon Aerosol", 
+            "standard_name": "mass_concentration_of_black_carbon_dry_aerosol_in_air", 
+            "modeling_realm": "aerosol", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-3", 
+            "out_name": "concbc", 
+            "type": "", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "concbb": {
+            "comment": "", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Concentration of Biomass Burning Aerosol", 
+            "standard_name": "mass_concentration_of_biomass_burning_dry_aerosol_in_air", 
+            "modeling_realm": "aerosol", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-3", 
+            "out_name": "concbb", 
+            "type": "", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "wetso2": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Wet Deposition Rate of SO2", 
+            "standard_name": "tendency_of_atmosphere_mass_content_of_sulfur_dioxide_due_to_wet_deposition", 
+            "modeling_realm": "aerosol", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "wetso2", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "wetso4": {
+            "comment": "proposed name: tendency_of_atmosphere_mass_content_of_sulfate_dry_aerosol_due_to_wet_deposition", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Wet Deposition Rate of SO4", 
+            "standard_name": "tendency_of_atmosphere_mass_content_of_sulfate_dry_aerosol_due_to_wet_deposition", 
+            "modeling_realm": "aerosol", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "wetso4", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "concss": {
+            "comment": "", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Concentration of Seasalt", 
+            "standard_name": "mass_concentration_of_seasalt_dry_aerosol_in_air", 
+            "modeling_realm": "aerosol", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-3", 
+            "out_name": "concss", 
+            "type": "", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "loadno3": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Load of NO3", 
+            "standard_name": "atmosphere_mass_content_of_nitrate_dry_aerosol", 
+            "modeling_realm": "aerosol", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2", 
+            "out_name": "loadno3", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "cldnvi": {
+            "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", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Column Integrated Cloud Droplet Number", 
+            "standard_name": "atmosphere_number_content_of_cloud_droplets", 
+            "modeling_realm": "aerosol", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "m-2", 
+            "out_name": "cldnvi", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "reffclwc": {
+            "comment": "Droplets are liquid.  The effective radius is defined as the ratio of the third moment over the second moment of the particle size distribution and the time-mean should be calculated, weighting the individual samples by the cloudy fraction of the grid cell.", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Convective Cloud Droplet Effective Radius", 
+            "standard_name": "effective_radius_of_convective_cloud_liquid_water_particle", 
+            "modeling_realm": "aerosol", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "m", 
+            "out_name": "reffclwc", 
+            "type": "", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "sconcdust": {
+            "comment": "mass concentration of dust dry aerosol in air in model lowest layer", 
+            "dimensions": "longitude latitude alev1 time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Surface Concentration of Dust", 
+            "standard_name": "mass_concentration_of_dust_dry_aerosol_in_air", 
+            "modeling_realm": "aerosol", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-3", 
+            "out_name": "sconcdust", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "reffclws": {
+            "comment": "Droplets are liquid.  The effective radius is defined as the ratio of the third moment over the second moment of the particle size distribution and the time-mean should be calculated, weighting the individual samples by the cloudy fraction of the grid cell.", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Stratiform Cloud Droplet Effective Radius", 
+            "standard_name": "effective_radius_of_stratiform_cloud_liquid_water_particle", 
+            "modeling_realm": "aerosol", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "m", 
+            "out_name": "reffclws", 
+            "type": "", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "cdnc": {
+            "comment": "Cloud Droplet Number Concentration in liquid water clouds. Question: Is this rather a 3D field?", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Cloud Droplet Number Concentration", 
+            "standard_name": "number_concentration_of_cloud_liquid_water_particles_in_air", 
+            "modeling_realm": "aerosol", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "m-3", 
+            "out_name": "cdnc", 
+            "type": "", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "sconcno3": {
+            "comment": "Mass concentration in model lowest layer", 
+            "dimensions": "longitude latitude alev1 time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Surface Concentration of NO3", 
+            "standard_name": "mass_concentration_of_nitrate_dry_aerosol_in_air", 
+            "modeling_realm": "aerosol", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-3", 
+            "out_name": "sconcno3", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "wetsoa": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Wet Deposition Rate of Dry Aerosol Secondary Organic Matter", 
+            "standard_name": "tendency_of_atmosphere_mass_content_of_secondary_particulate_organic_matter_dry_aerosol_due_to_wet_deposition", 
+            "modeling_realm": "aerosol", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "wetsoa", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "loadso4": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Load of SO4", 
+            "standard_name": "atmosphere_mass_content_of_sulfate_dry_aerosol", 
+            "modeling_realm": "aerosol", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2", 
+            "out_name": "loadso4", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "nsigma": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: nsigma", 
+            "type": "integer", 
+            "dimensions": ""
+        }, 
+        "sconcbc": {
+            "comment": "mass concentration of black carbon dry aerosol in air in model lowest layer", 
+            "dimensions": "longitude latitude alev1 time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Surface Concentration of Black Carbon Aerosol", 
+            "standard_name": "mass_concentration_of_black_carbon_dry_aerosol_in_air", 
+            "modeling_realm": "aerosol", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-3", 
+            "out_name": "sconcbc", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "emidust": {
+            "comment": "Integrate 3D emission field vertically to 2d field.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Total Emission Rate of Dust", 
+            "standard_name": "tendency_of_atmosphere_mass_content_of_dust_dry_aerosol_due_to_emission", 
+            "modeling_realm": "aerosol", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "emidust", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "od550lt1aer": {
+            "comment": "od550 due to particles with wet diameter less than 1 um  (''ambient'' means ''wetted''). When models do not include explicit size information, it can be assumed that all anthropogenic aerosols and natural secondary aerosols have diameter less than 1 um.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Ambient Fine Aerosol Optical Thickness at 550 nm", 
+            "standard_name": "atmosphere_optical_thickness_due_to_pm1_ambient_aerosol", 
+            "modeling_realm": "aerosol", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "1.0", 
+            "out_name": "od550lt1aer", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "conccn": {
+            "comment": "", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Aerosol Number Concentration", 
+            "standard_name": "number_concentration_of_ambient_aerosol_in_air", 
+            "modeling_realm": "aerosol", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "m-3", 
+            "out_name": "conccn", 
+            "type": "", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "wetdust": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Wet Deposition Rate of Dust", 
+            "standard_name": "tendency_of_atmosphere_mass_content_of_dust_dry_aerosol_due_to_wet_deposition", 
+            "modeling_realm": "aerosol", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "wetdust", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "loadsoa": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Load of Dry Aerosol Secondary Organic Matter", 
+            "standard_name": "atmosphere_mass_content_of_secondary_particulate_organic_matter_dry_aerosol", 
+            "modeling_realm": "aerosol", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2", 
+            "out_name": "loadsoa", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "emibb": {
+            "comment": "tendency of atmosphere mass content of primary organic matter dry aerosol due to emission: This does not include sources of secondary aerosols from biomass burning aerosols, such as SO2 or SOA.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Total Emission of Primary Aerosol from Biomass Burning", 
+            "standard_name": "tendency_of_atmosphere_mass_content_of_primary_particulate_organic_matter_dry_aerosol_due_to_emission", 
+            "modeling_realm": "aerosol", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "emibb", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "emibc": {
+            "comment": "Integrate 3D emission field vertically to 2d field.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Emission Rate of Black Carbon Aerosol Mass", 
+            "standard_name": "tendency_of_atmosphere_mass_content_of_black_carbon_dry_aerosol_due_to_emission", 
+            "modeling_realm": "aerosol", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "emibc", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "loaddust": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Load of Dust", 
+            "standard_name": "atmosphere_mass_content_of_dust_dry_aerosol", 
+            "modeling_realm": "aerosol", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2", 
+            "out_name": "loaddust", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "orog": {
+            "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", 
+            "positive": "", 
+            "valid_min": "-700", 
+            "long_name": "Surface Altitude", 
+            "standard_name": "surface_altitude", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "m", 
+            "out_name": "orog", 
+            "type": "real", 
+            "valid_max": "1.00E+04", 
+            "ok_max_mean_abs": ""
+        }, 
+        "rsdsdiff": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Surface Diffuse Downwelling Shortwave Radiation", 
+            "standard_name": "surface_diffuse_downwelling_shortwave_flux_in_air", 
+            "modeling_realm": "aerosol land", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "rsdsdiff", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "wetpoa": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Wet Deposition Rate of Dry Aerosol Primary Organic Matter", 
+            "standard_name": "tendency_of_atmosphere_mass_content_of_primary_particulate_organic_matter_dry_aerosol_due_to_wet_deposition", 
+            "modeling_realm": "aerosol", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "wetpoa", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "abs550aer": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Ambient Aerosol Absorption Optical Thickness at 550 nm", 
+            "standard_name": "atmosphere_absorption_optical_thickness_due_to_ambient_aerosol", 
+            "modeling_realm": "aerosol", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "1.0", 
+            "out_name": "abs550aer", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "loadbc": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Load of Black Carbon Aerosol", 
+            "standard_name": "atmosphere_mass_content_of_black_carbon_dry_aerosol", 
+            "modeling_realm": "aerosol", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2", 
+            "out_name": "loadbc", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "sigma_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: sigma(k+1/2)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "chepsoa": {
+            "comment": "Tendency of atmosphere mass content of secondary organic matter_dry aerosol due to net production:  If model lumps SOA emissions with POA, then the sum of POA and SOA emissions is reported as POA emissions. Here, mass refers to the mass of primary organic matter, not mass of organic carbon alone. Instead of emi_soa in original ACCMIP Excel spreadsheet. That variable had notes: This can be a pseudo-emission flux as used in AEROCOM (Dentener et al, ACP, 2006) or the [...]
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Production Rate of Dry Aerosol Secondary Organic Matter", 
+            "standard_name": "tendency_of_atmosphere_mass_content_of_secondary_particulate_organic_matter_dry_aerosol_due_to_net_chemical_production", 
+            "modeling_realm": "aerosol", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "chepsoa", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "ptop": {
+            "units": "Pa", 
+            "long_name": "pressure at top of model", 
+            "type": "", 
+            "dimensions": ""
+        }, 
+        "emioa": {
+            "comment": "tendency of atmosphere mass content of organic matter dry aerosol due to net production and emission.  This is the sum of total emission of POA and total production of SOA (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. Was called emi_pom in old ACCMIP Excel table. Integrate 3D emission field vertically to 2d field. ''ma [...]
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Rate of Emission and Production of Dry Aerosol Total Organic Matter", 
+            "standard_name": "tendency_of_atmosphere_mass_content_of_particulate_organic_matter_dry_aerosol_due_to_net_chemical_production_and_emission", 
+            "modeling_realm": "aerosol", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "emioa", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "concaerh2o": {
+            "comment": "'ambient'  means 'wetted'", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Concentration of Aerosol Water", 
+            "standard_name": "mass_concentration_of_water_in_ambient_aerosol_in_air", 
+            "modeling_realm": "aerosol", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-3", 
+            "out_name": "concaerh2o", 
+            "type": "", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "drypoa": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Dry Deposition Rate of Dry Aerosol Primary Organic Matter", 
+            "standard_name": "tendency_of_atmosphere_mass_content_of_primary_particulate_organic_matter_dry_aerosol_due_to_dry_deposition", 
+            "modeling_realm": "aerosol", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "drypoa", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "reffclwtop": {
+            "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 [...]
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Cloud-Top Effective Droplet Radius", 
+            "standard_name": "effective_radius_of_cloud_liquid_water_particle_at_liquid_water_cloud_top", 
+            "modeling_realm": "aerosol", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "m", 
+            "out_name": "reffclwtop", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "ztop": {
+            "units": "m", 
+            "long_name": "height of top of model", 
+            "type": "", 
+            "dimensions": ""
+        }, 
+        "loadnh4": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Load of NH4", 
+            "standard_name": "atmosphere_mass_content_of_ammonium_dry_aerosol", 
+            "modeling_realm": "aerosol", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2", 
+            "out_name": "loadnh4", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "z1": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: z1", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "z2": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: z2", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "sconcss": {
+            "comment": "mass concentration of seasalt dry aerosol in air in model lowest layer", 
+            "dimensions": "longitude latitude alev1 time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Surface Concentration of Seasalt", 
+            "standard_name": "mass_concentration_of_seasalt_dry_aerosol_in_air", 
+            "modeling_realm": "aerosol", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-3", 
+            "out_name": "sconcss", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "drydms": {
+            "comment": "dry deposition includes gravitational settling, impact scavenging, and turbulent deposition", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Dry Deposition Rate of DMS", 
+            "standard_name": "tendency_of_atmosphere_mass_content_of_dimethyl_sulfide_due_to_dry_deposition", 
+            "modeling_realm": "aerosol", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "drydms", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "eta": {
+            "units": "m", 
+            "long_name": "Sea Surface Height formula term: thetao", 
+            "type": "real", 
+            "dimensions": "longitude latitude time"
+        }, 
+        "dryoa": {
+            "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 tur [...]
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Dry Deposition Rate of Dry Aerosol Organic Matter", 
+            "standard_name": "tendency_of_atmosphere_mass_content_of_particulate_organic_matter_dry_aerosol_due_to_dry_deposition", 
+            "modeling_realm": "aerosol", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "dryoa", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "wetoa": {
+            "comment": "tendency of atmosphere mass content of organic matter dry aerosols due to wet deposition: This is the sum of wet deposition of POA and wet deposition of SOA (see next two entries). ''Mass'' refers to the mass of organic matter, not mass of organic carbon alone. 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", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Wet Deposition Rate of Dry Aerosol Organic Matter", 
+            "standard_name": "tendency_of_atmosphere_mass_content_of_particulate_organic_matter_dry_aerosol_due_to_wet_deposition", 
+            "modeling_realm": "aerosol", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "wetoa", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "concsoa": {
+            "comment": "", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Concentration of Dry Aerosol Secondary Organic Matter", 
+            "standard_name": "mass_concentration_of_secondary_particulate_organic_matter_dry_aerosol_in_air", 
+            "modeling_realm": "aerosol", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-3", 
+            "out_name": "concsoa", 
+            "type": "", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "dryso4": {
+            "comment": "dry deposition includes gravitational settling, impact scavenging, and turbulent deposition", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Dry Deposition Rate of SO4", 
+            "standard_name": "tendency_of_atmosphere_mass_content_of_sulfate_dry_aerosol_due_to_dry_deposition", 
+            "modeling_realm": "aerosol", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "dryso4", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "href": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: href", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "dryso2": {
+            "comment": "dry deposition includes gravitational settling, impact scavenging, and turbulent deposition", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Dry Deposition Rate of SO2", 
+            "standard_name": "tendency_of_atmosphere_mass_content_of_sulfur_dioxide_due_to_dry_deposition", 
+            "modeling_realm": "aerosol", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "dryso2", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "wetbc": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Wet Deposition Rate of Black Carbon Aerosol Mass", 
+            "standard_name": "tendency_of_atmosphere_mass_content_of_black_carbon_dry_aerosol_due_to_wet_deposition", 
+            "modeling_realm": "aerosol", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "wetbc", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "ps": {
+            "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", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Surface Air Pressure", 
+            "standard_name": "surface_air_pressure", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "Pa", 
+            "out_name": "ps", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "zlev_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: zlev(k+1/2)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "sconcoa": {
+            "comment": "mass concentration of particulate organic matter dry aerosol in air in model lowest layer", 
+            "dimensions": "longitude latitude alev1 time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Surface Concentration of Dry Aerosol Organic Matter", 
+            "standard_name": "mass_concentration_of_particulate_organic_matter_dry_aerosol_in_air", 
+            "modeling_realm": "aerosol", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-3", 
+            "out_name": "sconcoa", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "concpoa": {
+            "comment": "", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Concentration of Dry Aerosol Primary Organic Matter", 
+            "standard_name": "mass_concentration_of_primary_particulate_organic_matter_dry_aerosol_in_air", 
+            "modeling_realm": "aerosol", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-3", 
+            "out_name": "concpoa", 
+            "type": "", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "sconcsoa": {
+            "comment": "mass concentration of secondary particulate organic matter dry aerosol in air in model lowest layer.  If the model lumps SOA with POA, then their sum is reported as POA.", 
+            "dimensions": "longitude latitude alev1 time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Surface Concentration of Dry Aerosol Secondary Organic Matter", 
+            "standard_name": "mass_concentration_of_secondary_particulate_organic_matter_dry_aerosol_in_air", 
+            "modeling_realm": "aerosol", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-3", 
+            "out_name": "sconcsoa", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "drynh3": {
+            "comment": "dry deposition includes gravitational settling, impact scavenging, and turbulent deposition", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Dry Deposition Rate of NH3", 
+            "standard_name": "tendency_of_atmosphere_mass_content_of_ammonia_due_to_dry_deposition", 
+            "modeling_realm": "aerosol", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "drynh3", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "drysoa": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Dry Deposition Rate of Dry Aerosol Secondary Organic Matter", 
+            "standard_name": "tendency_of_atmosphere_mass_content_of_secondary_particulate_organic_matter_dry_aerosol_due_to_dry_deposition", 
+            "modeling_realm": "aerosol", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "drysoa", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "drynh4": {
+            "comment": "dry deposition includes gravitational settling, impact scavenging, and turbulent deposition", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Dry Deposition Rate of NH4", 
+            "standard_name": "tendency_of_atmosphere_mass_content_of_ammonium_dry_aerosol_due_to_dry_deposition", 
+            "modeling_realm": "aerosol", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "drynh4", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "loadss": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Load of Seasalt", 
+            "standard_name": "atmosphere_mass_content_of_seasalt_dry_aerosol", 
+            "modeling_realm": "aerosol", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2", 
+            "out_name": "loadss", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "concso2": {
+            "comment": "", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Mole Fraction of SO2", 
+            "standard_name": "mole_fraction_of_sulfur_dioxide_in_air", 
+            "modeling_realm": "aerosol", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "1.0", 
+            "out_name": "concso2", 
+            "type": "", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "concso4": {
+            "comment": "", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Concentration of SO4", 
+            "standard_name": "mass_concentration_of_sulfate_dry_aerosol_in_air", 
+            "modeling_realm": "aerosol", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-3", 
+            "out_name": "concso4", 
+            "type": "", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "loadoa": {
+            "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", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Load of Dry Aerosol Organic Matter", 
+            "standard_name": "atmosphere_mass_content_of_particulate_organic_matter_dry_aerosol", 
+            "modeling_realm": "aerosol", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2", 
+            "out_name": "loadoa", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "concoa": {
+            "comment": "", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Concentration of Dry Aerosol Organic Matter", 
+            "standard_name": "mass_concentration_of_particulate_organic_matter_dry_aerosol_in_air", 
+            "modeling_realm": "aerosol", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-3", 
+            "out_name": "concoa", 
+            "type": "", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "concdms": {
+            "comment": "", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Mole Fraction of DMS", 
+            "standard_name": "mole_fraction_of_dimethyl_sulfide_in_air", 
+            "modeling_realm": "aerosol", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "1.0", 
+            "out_name": "concdms", 
+            "type": "", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "cldncl": {
+            "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", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Cloud Droplet Number Concentration of Cloud Tops", 
+            "standard_name": "number_concentration_of_cloud_liquid_water_particles_in_air_at_liquid_water_cloud_top", 
+            "modeling_realm": "aerosol", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "m-3", 
+            "out_name": "cldncl", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "p0": {
+            "units": "Pa", 
+            "long_name": "vertical coordinate formula term: reference pressure", 
+            "type": "", 
+            "dimensions": ""
+        }, 
+        "b": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: b(k)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "cldnci": {
+            "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", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Ice Crystal Number Concentration of Cloud Tops", 
+            "standard_name": "number_concentration_of_ice_crystals_in_air_at_ice_cloud_top", 
+            "modeling_realm": "aerosol", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "m-3", 
+            "out_name": "cldnci", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "sconcso4": {
+            "comment": "mass concentration of sulfate dry aerosol in air in model lowest layer.", 
+            "dimensions": "longitude latitude alev1 time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Surface Concentration of SO4", 
+            "standard_name": "mass_concentration_of_sulfate_dry_aerosol_in_air", 
+            "modeling_realm": "aerosol", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-3", 
+            "out_name": "sconcso4", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "loadpoa": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Load of Dry Aerosol Primary Organic Matter", 
+            "standard_name": "atmosphere_mass_content_of_primary_particulate_organic_matter_dry_aerosol", 
+            "modeling_realm": "aerosol", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2", 
+            "out_name": "loadpoa", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "k_c": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: k_c", 
+            "type": "integer", 
+            "dimensions": ""
+        }, 
+        "concno3": {
+            "comment": "", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Concentration of NO3 Aerosol", 
+            "standard_name": "mass_concentration_of_nitrate_dry_aerosol_in_air", 
+            "modeling_realm": "aerosol", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-3", 
+            "out_name": "concno3", 
+            "type": "", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "a_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: a(k+1/2)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "drybc": {
+            "comment": "Dry deposition includes gravitational settling, impact scavenging, and turbulent deposition.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Dry Deposition Rate of Black Carbon Aerosol Mass", 
+            "standard_name": "tendency_of_atmosphere_mass_content_of_black_carbon_dry_aerosol_due_to_dry_deposition", 
+            "modeling_realm": "aerosol", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "drybc", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "emiss": {
+            "comment": "Integrate 3D emission field vertically to 2d field.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Total Emission Rate of Seasalt", 
+            "standard_name": "tendency_of_atmosphere_mass_content_of_seasalt_dry_aerosol_due_to_emission", 
+            "modeling_realm": "aerosol", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "emiss", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "ap_bnds": {
+            "units": "Pa", 
+            "long_name": "vertical coordinate formula term: ap(k+1/2)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "ap": {
+            "units": "Pa", 
+            "long_name": "vertical coordinate formula term: ap(k)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "sconcpoa": {
+            "comment": "mass concentration of primary particulate organic matter dry aerosol in air in model lowest layer", 
+            "dimensions": "longitude latitude alev1 time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Surface Concentration of Dry Aerosol Primary Organic Matter", 
+            "standard_name": "mass_concentration_of_primary_particulate_organic_matter_dry_aerosol_in_air", 
+            "modeling_realm": "aerosol", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-3", 
+            "out_name": "sconcpoa", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "zlev": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: zlev(k)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "inc": {
+            "comment": "Ice Crystal number concentration in ice clouds", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Ice Crystal Number Concentration", 
+            "standard_name": "number_concentration_of_ice_crystals_in_air", 
+            "modeling_realm": "aerosol", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "m-3", 
+            "out_name": "inc", 
+            "type": "", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "ec550aer": {
+            "comment": "'ambient' means 'wetted'.  ", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Ambient Aerosol Extinction at 550 nm", 
+            "standard_name": "volume_extinction_coefficient_in_air_due_to_ambient_aerosol", 
+            "modeling_realm": "aerosol", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "m-1", 
+            "out_name": "ec550aer", 
+            "type": "", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "depth": {
+            "units": "m", 
+            "long_name": "Sea Floor Depth: formula term: thetao", 
+            "type": "real", 
+            "dimensions": "longitude latitude"
+        }, 
+        "concdust": {
+            "comment": "", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Concentration of Dust", 
+            "standard_name": "mass_concentration_of_dust_dry_aerosol_in_air", 
+            "modeling_realm": "aerosol", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-3", 
+            "out_name": "concdust", 
+            "type": "", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "emidms": {
+            "comment": "Integrate 3D emission field vertically to 2d field.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Total Emission Rate of DMS", 
+            "standard_name": "tendency_of_atmosphere_mass_content_of_dimethyl_sulfide_due_to_emission", 
+            "modeling_realm": "aerosol", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "emidms", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "dryss": {
+            "comment": "Dry deposition includes gravitational settling, impact scavenging, and turbulent deposition.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Dry Deposition Rate of Seasalt", 
+            "standard_name": "tendency_of_atmosphere_mass_content_of_seasalt_dry_aerosol_due_to_dry_deposition", 
+            "modeling_realm": "aerosol", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "dryss", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "wetdms": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Wet Deposition Rate of DMS", 
+            "standard_name": "tendency_of_atmosphere_mass_content_of_dimethyl_sulfide_due_to_wet_deposition", 
+            "modeling_realm": "aerosol", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "wetdms", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "rsdscsdiff": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Surface Diffuse Downwelling Clear Sky Shortwave Radiation", 
+            "standard_name": "surface_diffuse_downwelling_shortwave_flux_in_air_assuming_clear_sky", 
+            "modeling_realm": "aerosol land", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "rsdscsdiff", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "od550aer": {
+            "comment": "AOD from the ambient aerosls (i.e., includes aerosol water).  Does not include AOD from stratospheric aerosols if these are prescribed but includes other possible background aerosol types. Needs a comment attribute 'wavelength: 550 nm'", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Ambient Aerosol Optical Thickness at 550 nm", 
+            "standard_name": "atmosphere_optical_thickness_due_to_ambient_aerosol", 
+            "modeling_realm": "aerosol", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "1.0", 
+            "out_name": "od550aer", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "b_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: b(k+1/2)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "sconcnh4": {
+            "comment": "Mass concentration in model lowest layer", 
+            "dimensions": "longitude latitude alev1 time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Surface Concentration of NH4", 
+            "standard_name": "mass_concentration_of_ammonium_dry_aerosol_in_air", 
+            "modeling_realm": "aerosol", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-3", 
+            "out_name": "sconcnh4", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "concnh4": {
+            "comment": "", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Concentration of NH4", 
+            "standard_name": "mass_concentration_of_ammonium_dry_aerosol_in_air", 
+            "modeling_realm": "aerosol", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-3", 
+            "out_name": "concnh4", 
+            "type": "", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "emiso2": {
+            "comment": "Integrate 3D emission field vertically to 2d field.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Total Emission Rate of SO2", 
+            "standard_name": "tendency_of_atmosphere_mass_content_of_sulfur_dioxide_due_to_emission", 
+            "modeling_realm": "aerosol", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "emiso2", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "emiso4": {
+            "comment": "expressed as a tendency of atmosphere mass content of SO4.  Direct emission does not include secondary sulfate production. Integrate 3D emission field vertically to 2d field. proposed name: tendency_of_atmosphere_mass_content_of_anthropogenic_sulfate_dry_aerosol_due_to_emission. Integrate 3D emission field vertically to 2d field.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Total Direct Emission Rate of SO4", 
+            "standard_name": "tendency_of_atmosphere_mass_content_of_sulfate_dry_aerosol_due_to_emission", 
+            "modeling_realm": "aerosol", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "emiso4", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "concnmcn": {
+            "comment": "includes all particles with diameter smaller than 3 nm", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Number Concentration of Nucleation Mode Aerosol", 
+            "standard_name": "number_concentration_of_nucleation_mode_ambient_aerosol_in_air", 
+            "modeling_realm": "aerosol", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "m-3", 
+            "out_name": "concnmcn", 
+            "type": "", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "conccmcn": {
+            "comment": "includes all particles with diameter larger than 1 micron", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Number Concentration Coarse Mode Aerosol", 
+            "standard_name": "number_concentration_of_coarse_mode_ambient_aerosol_in_air", 
+            "modeling_realm": "aerosol", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "m-3", 
+            "out_name": "conccmcn", 
+            "type": "", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "a": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: a(k)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "sigma": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: sigma(k)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "emipoa": {
+            "comment": "tendency of atmosphere mass content of primary organic aerosol due to emission:  ''mass'' refers to the mass of primary organic matter, not mass of organic carbon alone.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Emission Rate of Dry Aerosol Primary Organic Matter", 
+            "standard_name": "tendency_of_atmosphere_mass_content_of_primary_particulate_organic_matter_dry_aerosol_due_to_emission", 
+            "modeling_realm": "aerosol", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "emipoa", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "od870aer": {
+            "comment": "AOD from the ambient aerosls (i.e., includes aerosol water).  Does not include AOD from stratospheric aerosols if these are prescribed but includes other possible background aerosol types.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Ambient Aerosol Optical Thickness at 870 nm", 
+            "standard_name": "", 
+            "modeling_realm": "aerosol", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "1.0", 
+            "out_name": "od870aer", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "eminh3": {
+            "comment": "Integrate 3D emission field vertically to 2d field.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Total Emission Rate of NH3", 
+            "standard_name": "tendency_of_atmosphere_mass_content_of_ammonia_due_to_emission", 
+            "modeling_realm": "aerosol", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "eminh3", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "wetss": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Wet Deposition Rate of Seasalt", 
+            "standard_name": "tendency_of_atmosphere_mass_content_of_seasalt_dry_aerosol_due_to_wet_deposition", 
+            "modeling_realm": "aerosol", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "wetss", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "drydust": {
+            "comment": "Dry deposition includes gravitational settling, impact scavenging, and turbulent deposition.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Dry Deposition Rate of Dust", 
+            "standard_name": "tendency_of_atmosphere_mass_content_of_dust_dry_aerosol_due_to_dry_deposition", 
+            "modeling_realm": "aerosol", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "drydust", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }
+    }
+}
diff --git a/TestTables/CMIP6_badOmon.json b/TestTables/CMIP6_badOmon.json
new file mode 100644
index 0000000..df899b3
--- /dev/null
+++ b/TestTables/CMIP6_badOmon.json
@@ -0,0 +1,5825 @@
+{
+    "Header": {
+        "approx_interval": "30.00000", 
+        "realm": "ocean", 
+        "product": "output", 
+        "cmor_version": "3.0", 
+        "Conventions": "CF-1.6 CMIP-6.0", 
+        "frequency": "mon", 
+        "table_id": "Table Omon", 
+        "data_specs_version": "3.0", 
+        "generic_levels": "olevel", 
+        "missing_value": "1e20", 
+        "table_date": "14 April 2016"
+    }, 
+    "axis_entry": {
+        "typebare": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "bare_ground", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "tau": {
+            "requested": [
+                "0.15", 
+                "0.8", 
+                "2.45", 
+                "6.5", 
+                "16.2", 
+                "41.5", 
+                "100."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "0.0", 
+                "0.3", 
+                "0.3", 
+                "1.3", 
+                "1.3", 
+                "3.6", 
+                "3.6", 
+                "9.4", 
+                "9.4", 
+                "23.0", 
+                "23.0", 
+                "60.0", 
+                "60.0", 
+                "100000."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "cloud optical thickness", 
+            "standard_name": "atmosphere_optical_thickness_due_to_cloud", 
+            "value": "", 
+            "out_name": "tau", 
+            "type": "double", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "olayer100m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "0. 100.", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "50.0", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "100.0", 
+            "axis": "Z"
+        }, 
+        "plev4s": {
+            "requested": [
+                "85000.", 
+                "50000.", 
+                "20000.", 
+                "5000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "ocean_sigma_z": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "sigma: sigma eta: eta depth: depth depth_c: depth_c nsigma: nsigma zlev: zlev", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "sigma: sigma_bnds eta: eta depth: depth depth_c: depth_c nsigma: nsigma zlev: zlev_bnds", 
+            "bounds_values": "", 
+            "long_name": "ocean sigma over z coordinate", 
+            "standard_name": "ocean_sigma_z", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "for k <= nsigma: z(n,k,j,i) = eta(n,j,i) + sigma(k)*(min(depth_c,depth(j,i))+eta(n,j,i)) ; for k > nsigma: z(n,k,j,i) = zlev(k)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev19": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000.", 
+                "500.", 
+                "100."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "p220": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "44000. 0.0", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "22000.0", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev17": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev10": {
+            "requested": [
+                "100000.", 
+                "85000.", 
+                "70000.", 
+                "50000.", 
+                "25000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "site": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "site index", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "site", 
+            "type": "integer", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "smooth_level": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "a: a b1: b1 b2: b2 ztop: ztop zsurf1: zsurf1 zsurf2: zsurf2", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-200.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "a: a_bnds b1: b1_bnds b2: b2_bnds ztop: ztop zsurf1: zsurf1 zsurf2: zsurf2", 
+            "bounds_values": "", 
+            "long_name": "atmosphere smooth level vertical (SLEVE) coordinate", 
+            "standard_name": "atmosphere_sleve_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "m", 
+            "formula": "z = a*ztop + b1*zsurf1 + b2*zsurf2", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "800000.0", 
+            "axis": "Z"
+        }, 
+        "p840": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "100000. 68000.", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "84000.0", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "ocean_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "sigma: lev eta: eta depth: depth", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "sigma: lev_bnds eta: eta depth: depth", 
+            "bounds_values": "", 
+            "long_name": "ocean sigma coordinate", 
+            "standard_name": "ocean_sigma_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "z(n,k,j,i) = eta(n,j,i) + sigma(k)*(depth(j,i)+eta(n,j,i))", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "0.0", 
+            "axis": "Z"
+        }, 
+        "depth0m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "0.0", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "100.0", 
+            "axis": "Z"
+        }, 
+        "ocean_s": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "s: lev eta: eta depth: depth a: a_coeff b: b_coeff depth_c: depth_c", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "s: lev_bnds eta: eta depth: depth a: a b: b depth_c: depth_c", 
+            "bounds_values": "", 
+            "long_name": "ocean s-coordinate", 
+            "standard_name": "ocean_s_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "z(n,k,j,i) = eta(n,j,i)*(1+s(k)) + depth_c*s(k) + (depth(j,i)-depth_c)*C(k) n where n C(k)=(1-b)*sinh(a*s(k))/sinh(a) +n           b*(tanh(a*(s(k)+0.5))/(2*tanh(0.5*a)) - 0.5)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "0.0", 
+            "axis": "Z"
+        }, 
+        "typepever": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "primary_evergreen_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "typec4pft": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "c4_plant_functional_types", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "height2m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "up", 
+            "must_have_bounds": "no", 
+            "valid_min": "1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "height", 
+            "standard_name": "height", 
+            "value": "2.0", 
+            "out_name": "height", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "10.0", 
+            "axis": "Z"
+        }, 
+        "time1": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "time", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "vegtype": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "plant functional type", 
+            "standard_name": "area_type", 
+            "value": "", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "sza5": {
+            "requested": [
+                "0.", 
+                "20.", 
+                "40.", 
+                "60.", 
+                "80."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "solar zenith angle", 
+            "standard_name": "solar_zenith_angle", 
+            "value": "", 
+            "out_name": "sza", 
+            "type": "double", 
+            "units": "degree", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "depth_coord": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "ocean depth coordinate", 
+            "standard_name": "depth", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "12000.0", 
+            "axis": "Z"
+        }, 
+        "sdepth1": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "0.0 0.1", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "0.05", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "0.2", 
+            "axis": "Z"
+        }, 
+        "alternate_hybrid_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "ap: ap b: b ps: ps", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "ap: ap_bnds b: b_bnds ps: ps", 
+            "bounds_values": "", 
+            "long_name": "hybrid sigma pressure coordinate", 
+            "standard_name": "atmosphere_hybrid_sigma_pressure_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "1", 
+            "formula": "p = ap + b*ps", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "1.0", 
+            "axis": "Z"
+        }, 
+        "time2": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "time", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "yes", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "oline": {
+            "requested": [
+                "barents_opening", 
+                "bering_strait", 
+                "canadian_archipelago", 
+                "denmark_strait", 
+                "drake_passage", 
+                "english_channel", 
+                "pacific_equatorial_undercurrent", 
+                "faroe_scotland_channel", 
+                "florida_bahamas_strait", 
+                "fram_strait", 
+                "iceland_faroe_channel", 
+                "indonesian_thoughflow", 
+                "mozambique_channel", 
+                "taiwan_luzon_straits", 
+                "windward_passage"
+            ], 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "ocean passage", 
+            "standard_name": "region", 
+            "value": "", 
+            "out_name": "line", 
+            "type": "character", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "alt40": {
+            "requested": [
+                "240.", 
+                "720.", 
+                "1200.", 
+                "1680.", 
+                "2160.", 
+                "2640.", 
+                "3120.", 
+                "3600.", 
+                "4080.", 
+                "4560.", 
+                "5040.", 
+                "5520.", 
+                "6000.", 
+                "6480.", 
+                "6960.", 
+                "7440.", 
+                "7920.", 
+                "8400.", 
+                "8880.", 
+                "9360.", 
+                "9840.", 
+                "10320.", 
+                "10800.", 
+                "11280.", 
+                "11760.", 
+                "12240.", 
+                "12720.", 
+                "13200.", 
+                "13680.", 
+                "14160.", 
+                "14640.", 
+                "15120.", 
+                "15600.", 
+                "16080.", 
+                "16560.", 
+                "17040.", 
+                "17520.", 
+                "18000.", 
+                "18480.", 
+                "18960."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "0.", 
+                "480.", 
+                "480.", 
+                "960.", 
+                "960.", 
+                "1440.", 
+                "1440.", 
+                "1920.", 
+                "1920.", 
+                "2400.", 
+                "2400.", 
+                "2880.", 
+                "2880.", 
+                "3360.", 
+                "3360.", 
+                "3840.", 
+                "3840.", 
+                "4320.", 
+                "4320.", 
+                "4800.", 
+                "4800.", 
+                "5280.", 
+                "5280.", 
+                "5760.", 
+                "5760.", 
+                "6240.", 
+                "6240.", 
+                "6720.", 
+                "6720.", 
+                "7200.", 
+                "7200.", 
+                "7680.", 
+                "7680.", 
+                "8160.", 
+                "8160.", 
+                "8640.", 
+                "8640.", 
+                "9120.", 
+                "9120.", 
+                "9600.", 
+                "9600.", 
+                "10080.", 
+                "10080.", 
+                "10560.", 
+                "10560.", 
+                "11040.", 
+                "11040.", 
+                "11520.", 
+                "11520.", 
+                "12000.", 
+                "12000.", 
+                "12480.", 
+                "12480.", 
+                "12960.", 
+                "12960.", 
+                "13440.", 
+                "13440.", 
+                "13920.", 
+                "13920.", 
+                "14400.", 
+                "14400.", 
+                "14880.", 
+                "14880.", 
+                "15360.", 
+                "15360.", 
+                "15840.", 
+                "15840.", 
+                "16320.", 
+                "16320.", 
+                "16800.", 
+                "16800.", 
+                "17280.", 
+                "17280.", 
+                "17760.", 
+                "17760.", 
+                "18240.", 
+                "18240.", 
+                "18720.", 
+                "18720.", 
+                "19200."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "altitude", 
+            "standard_name": "altitude", 
+            "value": "", 
+            "out_name": "alt40", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev8": {
+            "requested": [
+                "100000.", 
+                "85000.", 
+                "70000.", 
+                "50000.", 
+                "25000.", 
+                "10000.", 
+                "5000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "location": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "location index", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "loc", 
+            "type": "integer", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "latitude": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-90.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "latitude", 
+            "standard_name": "latitude", 
+            "value": "", 
+            "out_name": "lat", 
+            "type": "double", 
+            "units": "degrees_north", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "90.0", 
+            "axis": "Y"
+        }, 
+        "plev3": {
+            "requested": [
+                "85000.", 
+                "50000.", 
+                "25000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "basin": {
+            "requested": [
+                "atlantic_arctic_ocean", 
+                "indian_pacific_ocean", 
+                "global_ocean"
+            ], 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "ocean basin", 
+            "standard_name": "region", 
+            "value": "", 
+            "out_name": "basin", 
+            "type": "character", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "plev7": {
+            "requested": [
+                "90000.", 
+                "74000.", 
+                "62000.", 
+                "50000.", 
+                "37500.", 
+                "24500.", 
+                "9000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "100000.", 
+                "80000.", 
+                "80000.", 
+                "68000.", 
+                "68000.", 
+                "56000.", 
+                "56000.", 
+                "44000.", 
+                "44000.", 
+                "31000.", 
+                "31000.", 
+                "18000.", 
+                "18000.", 
+                " 0."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev4": {
+            "requested": [
+                "92500.", 
+                "85000.", 
+                "50000.", 
+                "25000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev23": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000.", 
+                "700.", 
+                "500.", 
+                "300.", 
+                "200.", 
+                "100.", 
+                "40."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev39": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "17000.", 
+                "15000.", 
+                "13000.", 
+                "11500.", 
+                "10000.", 
+                "9000.", 
+                "8000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1500.", 
+                "1000.", 
+                "700.", 
+                "500.", 
+                "300.", 
+                "200.", 
+                "150.", 
+                "100.", 
+                "70.", 
+                "50.", 
+                "40.", 
+                "30.", 
+                "20.", 
+                "15.", 
+                "10.", 
+                "7.", 
+                "5.", 
+                "3."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "typesdec": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "secondary_decidous_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "plev7h": {
+            "requested": [
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "25000.", 
+                "5000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "typepdec": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "primary_deciduous_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "plev7c": {
+            "requested": [
+                "90000.", 
+                "74000.", 
+                "62000.", 
+                "50000.", 
+                "37500.", 
+                "24500.", 
+                "9000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "height10m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "up", 
+            "must_have_bounds": "no", 
+            "valid_min": "1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "height", 
+            "standard_name": "height", 
+            "value": "10.0", 
+            "out_name": "height", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "30.0", 
+            "axis": "Z"
+        }, 
+        "standard_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "ptop: ptop sigma: lev ps: ps", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "ptop: ptop sigma: lev_bnds ps: ps", 
+            "bounds_values": "", 
+            "long_name": "sigma coordinate", 
+            "standard_name": "atmosphere_sigma_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "p = ptop + sigma*(ps - ptop)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "1.0", 
+            "axis": "Z"
+        }, 
+        "typesever": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "secondary_evergreen_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "rho": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "density++++?", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "rho", 
+            "type": "double", 
+            "units": "kg m-3", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "depth100m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "80.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "100.0", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "120.0", 
+            "axis": "Z"
+        }, 
+        "plev3h": {
+            "requested": [
+                "10000.", 
+                "1000.", 
+                "100."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "sdepth": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "200.0", 
+            "axis": "Z"
+        }, 
+        "typec3pft": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "c3_plant_functional_types", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "natural_log_pressure": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "p0: p0 lev: lev", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "p0: p0 lev: lev_bnds", 
+            "bounds_values": "", 
+            "long_name": "atmosphere natural log pressure coordinate", 
+            "standard_name": "atmosphere_ln_pressure_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "p = p0 * exp(-lev)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "20.0", 
+            "axis": "Z"
+        }, 
+        "scatratio": {
+            "requested": [
+                "0.005", 
+                "0.605", 
+                "2.1", 
+                "4.", 
+                "6.", 
+                "8.5", 
+                "12.5", 
+                "17.5", 
+                "22.5", 
+                "27.5", 
+                "35.", 
+                "45.", 
+                "55.", 
+                "70.", 
+                "50040."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "0.", 
+                "0.01", 
+                "0.01", 
+                "1.2", 
+                "1.2", 
+                "3.", 
+                "3.", 
+                "5.", 
+                "5.", 
+                "7.", 
+                "7.", 
+                "10.", 
+                "10.", 
+                "15.", 
+                "15.", 
+                "20.", 
+                "20.", 
+                "25.", 
+                "25.", 
+                "30.", 
+                "30.", 
+                "40.", 
+                "40.", 
+                "50.", 
+                "50.", 
+                "60.", 
+                "60.", 
+                "80.", 
+                "80.", 
+                "100000."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "lidar backscattering ratio", 
+            "standard_name": "backscattering_ratio", 
+            "value": "", 
+            "out_name": "scatratio", 
+            "type": "double", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "dbze": {
+            "requested": [
+                "-47.5", 
+                "-42.5", 
+                "-37.5", 
+                "-32.5", 
+                "-27.5", 
+                "-22.5", 
+                "-17.5", 
+                "-12.5", 
+                "-7.5", 
+                "-2.5", 
+                "2.5", 
+                "7.5", 
+                "12.5", 
+                "17.5", 
+                "22.5"
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "-50", 
+                "-45", 
+                "-45", 
+                "-40", 
+                "-40", 
+                "-35", 
+                "-35", 
+                "-30", 
+                "-30", 
+                "-25", 
+                "-25", 
+                "-20", 
+                "-20", 
+                "-15", 
+                "-15", 
+                "-10", 
+                "-10", 
+                "-5", 
+                "-5", 
+                "0", 
+                "0", 
+                "5", 
+                "5", 
+                "10", 
+                "10", 
+                "15", 
+                "15", 
+                "20", 
+                "20", 
+                "25."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "CloudSat simulator equivalent radar reflectivity factor", 
+            "standard_name": "equivalent_reflectivity_factor", 
+            "value": "", 
+            "out_name": "dbze", 
+            "type": "double", 
+            "units": "dBZ", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "hybrid_height": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "a: lev b: b orog: orog", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "a: lev_bnds b: b_bnds orog: orog", 
+            "bounds_values": "", 
+            "long_name": "hybrid height coordinate", 
+            "standard_name": "atmosphere_hybrid_height_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "m", 
+            "formula": "z = a + b*orog", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev14": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "25000.", 
+                "15000.", 
+                "10000.", 
+                "5000.", 
+                "2000.", 
+                "1000.", 
+                "500.", 
+                "100."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "longitude": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "longitude", 
+            "standard_name": "longitude", 
+            "value": "", 
+            "out_name": "lon", 
+            "type": "double", 
+            "units": "degrees_east", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "360.0", 
+            "axis": "X"
+        }, 
+        "time": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "time", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "ocean_double_sigma": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "sigma: sigma depth: depth z1: z1 z2: z2 a: a_coeff href: href k_c: k_c", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "sigma: sigma_bnds depth: depth z1: z1 z2: z2 a: a href: href k_c: k_c", 
+            "bounds_values": "", 
+            "long_name": "ocean double sigma coordinate", 
+            "standard_name": "ocean_double_sigma", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "for k <= k_c:n z(k,j,i)= sigma(k)*f(j,i) n for k > k_c:n z(k,j,i)= f(j,i) + (sigma(k)-1)*(depth(j,i)-f(j,i)) n f(j,i)= 0.5*(z1+ z2) + 0.5*(z1-z2)* tanh(2*a/(z1-z2)*(depth(j,i)-href))", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plevs": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev27": {
+            "requested": [
+                "100000.", 
+                "97500.", 
+                "95000.", 
+                "92500.", 
+                "90000.", 
+                "87500.", 
+                "85000.", 
+                "82500.", 
+                "80000.", 
+                "77500.", 
+                "75000.", 
+                "70000.", 
+                "65000.", 
+                "60000.", 
+                "55000.", 
+                "50000.", 
+                "45000.", 
+                "40000.", 
+                "35000.", 
+                "30000.", 
+                "25000.", 
+                "22500.", 
+                "20000.", 
+                "17500.", 
+                "15000.", 
+                "12500.", 
+                "10000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "standard_hybrid_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "p0: p0 a: a b: b ps: ps", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "p0: p0 a: a_bnds b: b_bnds ps: ps", 
+            "bounds_values": "", 
+            "long_name": "hybrid sigma pressure coordinate", 
+            "standard_name": "atmosphere_hybrid_sigma_pressure_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "1", 
+            "formula": "p = a*p0 + b*ps", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "1.0", 
+            "axis": "Z"
+        }, 
+        "p560": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "68000. 44000.", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "56000.0", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }
+    }, 
+    "variable_entry": {
+        "vmo": {
+            "comment": "Y-ward mass transport from resolved and parameterized advective transport.", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Ocean Mass Y Transport", 
+            "standard_name": "ocean_mass_y_transport", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "kg s-1", 
+            "out_name": "vmo", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "intpnitrate": {
+            "comment": "Vertically integrated primary (organic carbon) production by phytoplankton based on nitrate uptake alone", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Primary Organic Carbon Production by Phytoplankton Based on Nitrate Uptake Alone", 
+            "standard_name": "net_primary_mole_productivity_of_carbon_due_to_nitrate_utilization", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-2 s-1", 
+            "out_name": "intpnitrate", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "dpo2": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Delta PO2", 
+            "standard_name": "surface_molecular_oxygen_partial_pressure_difference_between_sea_water_and_air", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "Pa", 
+            "out_name": "dpo2", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "depth_c": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: depth_c", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "limfecalc": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Iron limitation of Calcareous Phytoplankton", 
+            "standard_name": "iron_limitation_of_calcareous_phytoplankton", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "1.0", 
+            "out_name": "limfecalc", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "mfo": {
+            "comment": "", 
+            "dimensions": "oline time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Sea Water Transport", 
+            "standard_name": "sea_water_transport_across_line", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "kg s-1", 
+            "out_name": "mfo", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "ficeberg2d": {
+            "comment": "computed as the iceberg melt water  flux into the ocean divided by the area of the ocean portion of the grid cell.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Water Flux into Sea Water From Icebergs", 
+            "standard_name": "water_flux_into_sea_water_from_icebergs", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "ficeberg2d", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "mlotstsq": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Square of Ocean Mixed Layer Thickness Defined by Sigma T", 
+            "standard_name": "square_of_ocean_mixed_layer_thickness_defined_by_sigma_t", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "m2", 
+            "out_name": "mlotstsq", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "zsatcalc": {
+            "comment": "Depth of calcite saturation horizon (0 if < surface, 'missing' if > bottom, if two, then the shallower)", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Calcite Saturation Depth", 
+            "standard_name": "minimum_depth_of_calcite_undersaturation_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "m", 
+            "out_name": "zsatcalc", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "bsi": {
+            "comment": "sum of particulate silica component concentrations", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Particulate Biogenic Silica Concentration", 
+            "standard_name": "mole_concentration_of_particulate_matter_expressed_as_silicon_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3", 
+            "out_name": "bsi", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "po4": {
+            "comment": "", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Dissolved Phosphate Concentration", 
+            "standard_name": "mole_concentration_of_phosphate_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3", 
+            "out_name": "po4", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "intpbfe": {
+            "comment": "Vertically integrated biogenic iron production", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Iron Production", 
+            "standard_name": "tendency_of_ocean_mole_content_of_iron_due_to_biological_production", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-2 s-1", 
+            "out_name": "intpbfe", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "no3": {
+            "comment": "", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Dissolved Nitrate Concentration", 
+            "standard_name": "mole_concentration_of_nitrate_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3", 
+            "out_name": "no3", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "fbddtdic": {
+            "comment": "vertical integral of net biological terms in time rate of change of dissolved inorganic carbon", 
+            "dimensions": "longitude latitude time olayer100m", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Rate of Change of Dissolved Inorganic Carbon due to Biological Activity", 
+            "standard_name": "tendency_of_ocean_mole_content_of_dissolved_inorganic_carbon_due_to_biological_processes", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-2 s-1", 
+            "out_name": "fbddtdic", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "cfc11": {
+            "comment": "", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Moles Per Unit Mass of CFC-11 in Sea Water", 
+            "standard_name": "moles_of_cfc11_per_unit_mass_in_sea_water", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol kg-1", 
+            "out_name": "cfc11", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "bfe": {
+            "comment": "sum of particulate organic iron component concentrations", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Particulate Biogenic Iron Concentration", 
+            "standard_name": "mole_concentration_of_particulate_organic_matter_expressed_as_iron_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3", 
+            "out_name": "bfe", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "hfevapds": {
+            "comment": "This is defined as 'where ice_free_sea over sea'", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "valid_min": "", 
+            "long_name": "Temperature Flux due to Evaporation Expressed as Heat Flux Out of Sea Water", 
+            "standard_name": "temperature_flux_due_to_evaporation_expressed_as_heat_flux_out_of_sea_water", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean area: mean where ice_free_sea over sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "hfevapds", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "soga": {
+            "comment": "", 
+            "dimensions": "time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Global Mean Sea Water Salinity", 
+            "standard_name": "sea_water_salinity", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "0.001", 
+            "out_name": "soga", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "hfbasinpsmadv": {
+            "comment": "Contributions to heat transport from parameterized mesoscale eddy-induced advective transport. Diagnosed here as a function of latitude and basin.  Use Celsius for temperature scale.", 
+            "dimensions": "latitude basin time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "northward ocean heat transport due to parameterized submesoscale advection", 
+            "standard_name": "northward_ocean_heat_transport_due_to_parameterized_submesoscale_advection", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "W", 
+            "out_name": "hfbasinpsmadv", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "zostoga": {
+            "comment": "There is no CMIP6 request for zosga nor zossga.", 
+            "dimensions": "time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Global Average Thermosteric Sea Level Change", 
+            "standard_name": "global_average_thermosteric_sea_level_change", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "m", 
+            "out_name": "zostoga", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "fbddtdin": {
+            "comment": "vertical integral of net biological terms in time rate of change of nitrogen nutrients (e.g. NO3+NH4)", 
+            "dimensions": "longitude latitude time olayer100m", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Rate of Change of Dissolved Inorganic Nitrogen due to Biological Activity", 
+            "standard_name": "tendency_of_ocean_mole_content_of_dissolved_inorganic_nitrogen_due_to_biological_processes", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-2 s-1", 
+            "out_name": "fbddtdin", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "hfrunoffds2d": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Temperature Flux due to Runoff Expressed as Heat Flux into Sea Water", 
+            "standard_name": "temperature_flux_due_to_runoff_expressed_as_heat_flux_into_sea_water", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "hfrunoffds2d", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "intpoc": {
+            "comment": "Vertically integrated POC", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Particulate Organic Carbon Content", 
+            "standard_name": "ocean_mass_content_of_particulate_organic_carbon", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2", 
+            "out_name": "intpoc", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "fbddtdip": {
+            "comment": "vertical integral of net biological terms in time rate of change of phosphate", 
+            "dimensions": "longitude latitude time olayer100m", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Rate of Change of Dissolved Inorganic Phosphate due to Biological Activity", 
+            "standard_name": "tendency_of_ocean_mole_content_of_dissolved_inorganic_phosphorus_due_to_biological_processes", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-2 s-1", 
+            "out_name": "fbddtdip", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "wmo": {
+            "comment": "Upward mass transport from resolved and parameterized advective transport.", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Upward Ocean Mass Transport", 
+            "standard_name": "upward_ocean_mass_transport", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "kg s-1", 
+            "out_name": "wmo", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "hfsnthermds": {
+            "comment": "", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Heat Flux into Sea Water due to Snow Thermodynamics", 
+            "standard_name": "heat_flux_into_sea_water_due_to_snow_thermodynamics", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "hfsnthermds", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "tauvo": {
+            "comment": "This is the stress on the liquid ocean from overlying atmosphere, sea ice, ice shelf, etc.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "down", 
+            "valid_min": "", 
+            "long_name": "Surface Downward Y Stress", 
+            "standard_name": "surface_downward_y_stress", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "N m-2", 
+            "out_name": "tauvo", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "vsfcorr": {
+            "comment": "It is set to zero in models which receive a real water flux.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Virtual Salt Flux Correction", 
+            "standard_name": "virtual_salt_flux_correction", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "vsfcorr", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "fddtdic": {
+            "comment": "", 
+            "dimensions": "longitude latitude time olayer100m", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Rate of Change of Net Dissolved Inorganic Carbon", 
+            "standard_name": "tendency_of_ocean_mole_content_of_dissolved_inorganic_carbon", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-2 s-1", 
+            "out_name": "fddtdic", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "fgo2": {
+            "comment": "Gas exchange flux of O2 (positive into ocean)", 
+            "dimensions": "longitude latitude time", 
+            "positive": "down", 
+            "valid_min": "", 
+            "long_name": "Surface Downward O2 Flux", 
+            "standard_name": "surface_downward_mole_flux_of_molecular_oxygen", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-2 s-1", 
+            "out_name": "fgo2", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "fddtdin": {
+            "comment": "Net time rate of change of nitrogen nutrients (e.g. NO3+NH4)", 
+            "dimensions": "longitude latitude time olayer100m", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Rate of Change of Net Dissolved Inorganic Nitrogen", 
+            "standard_name": "tendency_of_ocean_mole_content_of_dissolved_inorganic_nitrogen", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-2 s-1", 
+            "out_name": "fddtdin", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "intpcalcite": {
+            "comment": "Vertically integrated calcite production", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Calcite Production", 
+            "standard_name": "tendency_of_ocean_mole_content_of_calcite_expressed_as_carbon_due_to_biological_production", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-2 s-1", 
+            "out_name": "intpcalcite", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "nsigma": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: nsigma", 
+            "type": "integer", 
+            "dimensions": ""
+        }, 
+        "limirrdiaz": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Irradiance limitation of Diazotrophs", 
+            "standard_name": "irradiance_limitation_of_diazotrophs", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "1.0", 
+            "out_name": "limirrdiaz", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "limfediat": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Iron limitation of Diatoms", 
+            "standard_name": "iron_limitation_of_diatoms", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "1.0", 
+            "out_name": "limfediat", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "dissic": {
+            "comment": "Dissolved inorganic carbon (CO3+HCO3+H2CO3) concentration", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Dissolved Inorganic Carbon Concentration", 
+            "standard_name": "mole_concentration_of_dissolved_inorganic_carbon_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3", 
+            "out_name": "dissic", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "msftmrhompa": {
+            "comment": "CMIP5 called this 'due to Bolus Advection'.  Name change respects the more general physics of the mesoscale parameterizations.", 
+            "dimensions": "latitude rho basin time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "ocean meridional overturning mass streamfunction due to parameterized mesoscale advection", 
+            "standard_name": "ocean_meridional_overturning_mass_streamfunction_due_to_parameterized_mesoscale_advection", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean longitude: mean", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "kg s-1", 
+            "out_name": "msftmrhompa", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "icfriver": {
+            "comment": "Inorganic Carbon supply to ocean through runoff (separate from gas exchange)", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Flux of Inorganic Carbon Into Ocean Surface by Runoff", 
+            "standard_name": "tendency_of_ocean_mole_content_of_inorganic_carbon_due_to_runoff_and_sediment_dissolution", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-2 s-1", 
+            "out_name": "icfriver", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "arag": {
+            "comment": "sum of particulate aragonite components (e.g. Phytoplankton, Detrital, etc.)", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Aragonite Concentration", 
+            "standard_name": "mole_concentration_of_aragonite_expressed_as_carbon_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3", 
+            "out_name": "arag", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "fddtdip": {
+            "comment": "vertical integral of net  time rate of change of phosphate", 
+            "dimensions": "longitude latitude time olayer100m", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Rate of Change of Net Dissolved Inorganic Phosphate", 
+            "standard_name": "tendency_of_ocean_mole_content_of_dissolved_inorganic_phosphorus", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-2 s-1", 
+            "out_name": "fddtdip", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "exparag100": {
+            "comment": "", 
+            "dimensions": "longitude latitude time depth100m", 
+            "positive": "down", 
+            "valid_min": "", 
+            "long_name": "Downward Flux of Aragonite", 
+            "standard_name": "sinking_mole_flux_of_aragonite_expressed_as_carbon_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-2 s-1", 
+            "out_name": "exparag100", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "expcalc100": {
+            "comment": "", 
+            "dimensions": "longitude latitude time depth100m", 
+            "positive": "down", 
+            "valid_min": "", 
+            "long_name": "Downward Flux of Calcite", 
+            "standard_name": "sinking_mole_flux_of_calcite_expressed_as_carbon_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-2 s-1", 
+            "out_name": "expcalc100", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "intppmisc": {
+            "comment": "Vertically integrated total primary (organic carbon) production by other phytoplankton components alone", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Primary Organic Carbon Production by Other Phytoplankton", 
+            "standard_name": "net_primary_mole_productivity_of_carbon_by_miscellaneous_phytoplankton", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-2 s-1", 
+            "out_name": "intppmisc", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "sltovgyre": {
+            "comment": "From all advective mass transport processes, resolved and parameterized.", 
+            "dimensions": "latitude basin time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Northward Ocean Salt Transport due to Gyre", 
+            "standard_name": "northward_ocean_salt_transport_due_to_gyre", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean longitude: mean", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "kg s-1", 
+            "out_name": "sltovgyre", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "msftmzsmpa": {
+            "comment": "Report only if there is a submesoscale eddy parameterization.", 
+            "dimensions": "latitude olevel basin time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "ocean meridional overturning mass streamfunction due to parameterized submesoscale advection", 
+            "standard_name": "ocean_meridional_overturning_mass_streamfunction_due_to_parameterized_submesoscale_advection", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean longitude: mean", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "kg s-1", 
+            "out_name": "msftmzsmpa", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "graz": {
+            "comment": "", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Total Grazing of Phytoplankton by Zooplankton", 
+            "standard_name": "tendency_of_mole_concentration_of_organic_matter_expressed_as_carbon_in_sea_water_due_to_grazing_of_phytoplankton", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3 s-1", 
+            "out_name": "graz", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "zooc": {
+            "comment": "sum of zooplankton carbon component concentrations", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Zooplankton Carbon Concentration", 
+            "standard_name": "mole_concentration_of_zooplankton_expressed_as_carbon_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3", 
+            "out_name": "zooc", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "a_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: a(k+1/2)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "limirrpico": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Irradiance limitation of Picophytoplankton", 
+            "standard_name": "irradiance_limitation_of_picophytoplankton", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "1.0", 
+            "out_name": "limirrpico", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "zo2min": {
+            "comment": "Depth of vertical minimum concentration of dissolved oxygen gas (if two, then the shallower)", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Depth of Oxygen Minimum Concentration", 
+            "standard_name": "depth_at_shallowest_local_minimum_in_vertical_profile_of_mole_concentration_of_dissolved_molecular_oxygen_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "m", 
+            "out_name": "zo2min", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "sltovovrt": {
+            "comment": "From all advective mass transport processes, resolved and parameterized.", 
+            "dimensions": "latitude basin time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Northward Ocean Salt Transport due to Overturning", 
+            "standard_name": "northward_ocean_salt_transport_due_to_overturning", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean longitude: mean", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "kg s-1", 
+            "out_name": "sltovovrt", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "dpco2": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Delta PCO2", 
+            "standard_name": "surface_carbon_dioxide_partial_pressure_difference_between_sea_water_and_air", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "Pa", 
+            "out_name": "dpco2", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "limnpico": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Nitrogen limitation of Picophytoplankton", 
+            "standard_name": "nitrogen_limitation_of_picophytoplankton", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "1.0", 
+            "out_name": "limnpico", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "limnmisc": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Nitrogen Limitation of Other Phytoplankton", 
+            "standard_name": "nitrogen_limitation_of_miscellaneous_phytoplankton", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "1.0", 
+            "out_name": "limnmisc", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "intppdiaz": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Net Primary Mole Productivity of Carbon by Diazotrophs", 
+            "standard_name": "net_primary_mole_productivity_of_carbon_by_diazotrophs", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-2 s-1", 
+            "out_name": "intppdiaz", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "hfsithermds2d": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Heat Flux into Sea Water due to Sea Ice Thermodynamics", 
+            "standard_name": "heat_flux_into_sea_water_due_to_sea_ice_thermodynamics", 
+            "modeling_realm": "ocean seaIce", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "hfsithermds2d", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "hfsnthermds2d": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Heat Flux into Sea Water due to Snow Thermodynamics", 
+            "standard_name": "heat_flux_into_sea_water_due_to_snow_thermodynamics", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "hfsnthermds2d", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "rsntds": {
+            "comment": "This is the flux into the surface of liquid sea water only. This excludes shortwave flux absorbed by sea ice, but includes any light that passes through the ice and is absorbed by the ocean.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "down", 
+            "valid_min": "", 
+            "long_name": "Net Downward Shortwave Radiation at Sea Water Surface", 
+            "standard_name": "net_downward_shortwave_flux_at_sea_water_surface", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "rsntds", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "pbo": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Sea Water Pressure at Sea floor", 
+            "standard_name": "sea_water_pressure_at_sea_floor", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "Pa", 
+            "out_name": "pbo", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "evs": {
+            "comment": "computed as the total mass of water vapor evaporating from the ice-free portion of the ocean  divided by the area of the ocean portion of the grid cell.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Water Evaporation Flux Where Ice Free Ocean over Sea", 
+            "standard_name": "water_evaporation_flux", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean area: mean where ice_free_sea over sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "evs", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "intppdiat": {
+            "comment": "Vertically integrated primary (organic carbon) production by the diatom phytoplankton component alone", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Primary Organic Carbon Production by Diatoms", 
+            "standard_name": "net_primary_mole_productivity_of_carbon_by_diatoms", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-2 s-1", 
+            "out_name": "intppdiat", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "hfsifrazil": {
+            "comment": "", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Heat Flux into Sea Water due to Frazil Ice Formation", 
+            "standard_name": "heat_flux_into_sea_water_due_to_freezing_of_frazil_ice", 
+            "modeling_realm": "ocean seaIce", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "hfsifrazil", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "zsatarag": {
+            "comment": "Depth of aragonite saturation horizon (0 if undersaturated at all depths, 'missing' if supersaturated at all depths; if multiple horizons exist, the shallowest should be taken).", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Aragonite Saturation Depth", 
+            "standard_name": "minimum_depth_of_aragonite_undersaturation_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "m", 
+            "out_name": "zsatarag", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "zoomicro": {
+            "comment": "carbon  concentration from the microzooplankton (<20 um) component alone", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Mole Concentration of Microzooplankton expressed as Carbon in Sea Water", 
+            "standard_name": "mole_concentration_of_microzooplankton_expressed_as_carbon_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3", 
+            "out_name": "zoomicro", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "bacc": {
+            "comment": "sum of bacterial carbon component concentrations", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Bacterial Carbon Concentration", 
+            "standard_name": "mole_concentration_of_bacteria_expressed_as_carbon_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3", 
+            "out_name": "bacc", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "fgco2": {
+            "comment": "Gas exchange flux of CO2 (positive into ocean)", 
+            "dimensions": "longitude latitude time", 
+            "positive": "down", 
+            "valid_min": "", 
+            "long_name": "Surface Downward CO2 Flux", 
+            "standard_name": "surface_downward_mass_flux_of_carbon_dioxide_expressed_as_carbon", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "fgco2", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "limfemisc": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Iron Limitation of Other Phytoplankton", 
+            "standard_name": "iron_limitation_of_miscellaneous_phytoplankton", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "1.0", 
+            "out_name": "limfemisc", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "intpppico": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Net Primary Mole Productivity of Carbon by Picophytoplankton", 
+            "standard_name": "net_primary_mole_productivity_of_carbon_by_picophytoplankton", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-2 s-1", 
+            "out_name": "intpppico", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "fsfe": {
+            "comment": "Iron supply through deposition flux onto sea surface, runoff, coasts, sediments, etc", 
+            "dimensions": "longitude latitude time", 
+            "positive": "down", 
+            "valid_min": "", 
+            "long_name": "Surface Downward Net Flux of Iron", 
+            "standard_name": "tendency_of_ocean_mole_content_of_iron_due_to_deposition_and_runoff_and_sediment_dissolution", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-2 s-1", 
+            "out_name": "fsfe", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "msftyrhompa": {
+            "comment": "CMIP5 called this 'due to Bolus Advection'.  Name change respects the more general physics of the mesoscale parameterizations.", 
+            "dimensions": "latitude rho basin time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "ocean Y overturning mass streamfunction due to parameterized mesoscale advection", 
+            "standard_name": "ocean_y_overturning_mass_streamfunction_due_to_parameterized_mesoscale_advection", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean longitude: mean", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "kg s-1", 
+            "out_name": "msftyrhompa", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "frfe": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Iron Loss to Sediments", 
+            "standard_name": "tendency_of_ocean_mole_content_of_iron_due_to_sedimentation", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-2 s-1", 
+            "out_name": "frfe", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "orog": {
+            "units": "m", 
+            "long_name": "Surface Altitude", 
+            "type": "real", 
+            "dimensions": "longitude latitude"
+        }, 
+        "vsf": {
+            "comment": "It is set to zero in models which receive a real water flux.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Virtual Salt Flux into Sea Water", 
+            "standard_name": "virtual_salt_flux_into_sea_water", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "vsf", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "sob": {
+            "comment": "Model prognostic salinity at bottom-most model grid cell", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "sea water salinity at sea floor", 
+            "standard_name": "sea_water_salinity_at_sea_floor", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "0.001", 
+            "out_name": "sob", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "fbddtalk": {
+            "comment": "vertical integral of net biological terms in time rate of change of alkalinity", 
+            "dimensions": "longitude latitude time olayer100m", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Rate of Change of Biological Alkalinity due to Biological Activity", 
+            "standard_name": "integral_wrt_depth_of_tendency_of_sea_water_alkalinity_expressed_as_mole_equivalent_due_to_biological_processes", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-2 s-1", 
+            "out_name": "fbddtalk", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "o2min": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Oxygen Minimum Concentration", 
+            "standard_name": "mole_concentration_of_dissolved_molecular_oxygen_in_sea_water_at_shallowest_local_minimum_in_vertical_profile", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea depth: minimum", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3", 
+            "out_name": "o2min", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "zossq": {
+            "comment": "Surface ocean geoid defines z=0.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Square of Sea Surface Height Above Geoid", 
+            "standard_name": "square_of_sea_surface_height_above_geoid", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "m2", 
+            "out_name": "zossq", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "msftyrho": {
+            "comment": "Overturning mass streamfunction arising from all advective mass transport processes, resolved and parameterized.", 
+            "dimensions": "latitude rho basin time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Ocean Y Overturning Mass Streamfunction", 
+            "standard_name": "ocean_y_overturning_mass_streamfunction", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean longitude: mean", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "kg s-1", 
+            "out_name": "msftyrho", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "co3": {
+            "comment": "", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Mole Concentration of Carbonate ion in Seawater", 
+            "standard_name": "mole_concentration_of_carbonate_ion_in_seawater", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3", 
+            "out_name": "co3", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "intpbn": {
+            "comment": "Vertically integrated biogenic nitrogen production", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Nitrogen Production", 
+            "standard_name": "tendency_of_ocean_mole_content_of_nitrogen_due_to_biological_production", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-2 s-1", 
+            "out_name": "intpbn", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "hfbasinpmadv": {
+            "comment": "Contributions to heat transport from parameterized mesoscale eddy-induced advective transport. Diagnosed here as a function of latitude and basin.  Use Celsius for temperature scale.", 
+            "dimensions": "latitude basin time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "northward ocean heat transport due to parameterized mesoscale advection", 
+            "standard_name": "northward_ocean_heat_transport_due_to_parameterized_mesoscale_advection", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "W", 
+            "out_name": "hfbasinpmadv", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "rlds": {
+            "comment": "This is defined as 'where ice_free_sea over sea'", 
+            "dimensions": "longitude latitude time", 
+            "positive": "down", 
+            "valid_min": "", 
+            "long_name": "Surface Net Downward Longwave Radiation", 
+            "standard_name": "surface_net_downward_longwave_flux", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean area: mean where ice_free_sea over sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "rlds", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "phyp": {
+            "comment": "sum of phytoplankton phosphorus components", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Phytoplankton Phosphorus Concentration", 
+            "standard_name": "mole_concentration_of_phytoplankton_expressed_as_phosphorus_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3", 
+            "out_name": "phyp", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "zhalf": {
+            "comment": "", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Depth Below Geoid of Interfaces Between Ocean Layers", 
+            "standard_name": "depth_below_geoid", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "m", 
+            "out_name": "zhalf", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "poc": {
+            "comment": "sum of particulate organic carbon component concentrations", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Particulate Organic Carbon Concentration", 
+            "standard_name": "mole_concentration_of_particulate_organic_matter_expressed_as_carbon_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3", 
+            "out_name": "poc", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "sigma_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: sigma(k+1/2)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "friver": {
+            "comment": "computed as the river flux of water into the ocean divided by the area of the ocean portion of the grid cell.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Water Flux into Sea Water From Rivers", 
+            "standard_name": "water_flux_into_sea_water_from_rivers", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "friver", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "tauuo": {
+            "comment": "This is the stress on the liquid ocean from overlying atmosphere, sea ice, ice shelf, etc.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "down", 
+            "valid_min": "", 
+            "long_name": "Surface Downward X Stress", 
+            "standard_name": "surface_downward_x_stress", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "N m-2", 
+            "out_name": "tauuo", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "expn100": {
+            "comment": "", 
+            "dimensions": "longitude latitude time depth100m", 
+            "positive": "down", 
+            "valid_min": "", 
+            "long_name": "Downward Flux of Particulate Nitrogen", 
+            "standard_name": "sinking_mole_flux_of_particulate_nitrogen_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-2 s-1", 
+            "out_name": "expn100", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "dissi14cabio": {
+            "comment": "Abiotic Dissolved inorganic 14carbon (CO3+HCO3+H2CO3) concentration", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Abiotic Dissolved Inorganic 14Carbon Concentration", 
+            "standard_name": "mole_concentration_of_dissolved_inorganic_14carbon_in_sea_water_abiotic_component", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3", 
+            "out_name": "dissi14cabio", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "fg14co2abio": {
+            "comment": "Gas exchange flux of abiotic 14CO2 (positive into ocean)", 
+            "dimensions": "longitude latitude time", 
+            "positive": "down", 
+            "valid_min": "", 
+            "long_name": "Surface Downward abiotic 14CO2 Flux", 
+            "standard_name": "surface_downward_mass_flux_of_abiotic_14_carbon_dioxide_expressed_as_carbon", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "fg14co2abio", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "umo": {
+            "comment": "X-ward mass transport from resolved and parameterized advective transport.", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Ocean Mass X Transport", 
+            "standard_name": "ocean_mass_x_transport", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "kg s-1", 
+            "out_name": "umo", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "ptop": {
+            "units": "Pa", 
+            "long_name": "pressure at top of model", 
+            "type": "", 
+            "dimensions": ""
+        }, 
+        "spco2": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Surface Aqueous Partial Pressure of CO2", 
+            "standard_name": "surface_partial_pressure_of_carbon_dioxide_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "Pa", 
+            "out_name": "spco2", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "bigthetao": {
+            "comment": "Diagnostic should be contributed only for models using conservative temperature as prognostic field.", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Sea Water Convervative Temperature", 
+            "standard_name": "sea_water_conservative_temperature", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "degree_C", 
+            "out_name": "bigthetao", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "pr": {
+            "comment": "includes both liquid and solid phases", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Rainfall Flux where Ice Free Ocean over Sea", 
+            "standard_name": "precipitation_flux", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean area: mean where ice_free_sea over sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "pr", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "fgdms": {
+            "comment": "Gas exchange flux of DMS (positive into atmosphere)", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "valid_min": "", 
+            "long_name": "Surface Upward DMS Flux", 
+            "standard_name": "surface_upward_mole_flux_of_dimethyl_sulfide", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-2 s-1", 
+            "out_name": "fgdms", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "dissoc": {
+            "comment": "Sum of dissolved carbon component concentrations explicitly represented (i.e. not ~40 uM refractory unless explicit)", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Dissolved Organic Carbon Concentration", 
+            "standard_name": "mole_concentration_of_dissolved_organic_carbon_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3", 
+            "out_name": "dissoc", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "hfsithermds": {
+            "comment": "", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Heat Flux into Sea Water due to Sea Ice Thermodynamics", 
+            "standard_name": "heat_flux_into_sea_water_due_to_sea_ice_thermodynamics", 
+            "modeling_realm": "ocean seaIce", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "hfsithermds", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "fbddtdisi": {
+            "comment": "vertical integral of net biological terms in time rate of change of dissolved inorganic silicate", 
+            "dimensions": "longitude latitude time olayer100m", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Rate of Change of Dissolved Inorganic Silicate due to Biological Activity", 
+            "standard_name": "tendency_of_ocean_mole_content_of_dissolved_inorganic_silicon_due_to_biological_processes", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-2 s-1", 
+            "out_name": "fbddtdisi", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "rsdo": {
+            "comment": "", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "down", 
+            "valid_min": "", 
+            "long_name": "Downwelling Shortwave Radiation in Sea Water", 
+            "standard_name": "downwelling_shortwave_flux_in_sea_water", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "rsdo", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "msftmrho": {
+            "comment": "Overturning mass streamfunction arising from all advective mass transport processes, resolved and parameterized.", 
+            "dimensions": "latitude rho basin time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Ocean Meridional Overturning Mass Streamfunction", 
+            "standard_name": "ocean_meridional_overturning_mass_streamfunction", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean longitude: mean", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "kg s-1", 
+            "out_name": "msftmrho", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "chldiaz": {
+            "comment": "chlorophyll concentration from the diazotrophic phytoplankton component alone", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Mass Concentration of Diazotrophs expressed as Chlorophyll in Sea Water", 
+            "standard_name": "mass_concentration_of_diazotrophs_expressed_as_chlorophyll_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-3", 
+            "out_name": "chldiaz", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "hfcorr": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "down", 
+            "valid_min": "", 
+            "long_name": "Heat Flux Correction", 
+            "standard_name": "heat_flux_correction", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "hfcorr", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "hfrunoffds": {
+            "comment": "", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Temperature Flux due to Runoff Expressed as Heat Flux into Sea Water", 
+            "standard_name": "temperature_flux_due_to_runoff_expressed_as_heat_flux_into_sea_water", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "hfrunoffds", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "limfediaz": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Iron limitation of Diazotrophs", 
+            "standard_name": "iron_limitation_of_diazotrophs", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "1.0", 
+            "out_name": "limfediaz", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "ztop": {
+            "units": "m", 
+            "long_name": "height of top of model", 
+            "type": "", 
+            "dimensions": ""
+        }, 
+        "ocfriver": {
+            "comment": "Organic Carbon supply to ocean through runoff (separate from gas exchange)", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Flux of Organic Carbon Into Ocean Surface by Runoff", 
+            "standard_name": "tendency_of_ocean_mole_content_of_organic_carbon_due_to_runoff_and_sediment_dissolution", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-2 s-1", 
+            "out_name": "ocfriver", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "z1": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: z1", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "z2": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: z2", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "phyfe": {
+            "comment": "sum of phytoplankton iron component concentrations", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Phytoplankton Iron Concentration", 
+            "standard_name": "mole_concentration_of_phytoplankton_expressed_as_iron_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3", 
+            "out_name": "phyfe", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "wfonocorr": {
+            "comment": "computed as the water  flux (without flux correction) into the ocean divided by the area of the ocean portion of the grid cell.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Water Flux into Sea Water Without Flux Correction", 
+            "standard_name": "water_flux_into_sea_water_without_flux_correction", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "wfonocorr", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "pon": {
+            "comment": "sum of particulate organic nitrogen component concentrations", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Particulate Organic Nitrogen Concentration", 
+            "standard_name": "mole_concentration_of_particulate_organic_matter_expressed_as_nitrogen_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3", 
+            "out_name": "pon", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "cfc12": {
+            "comment": "", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Moles Per Unit Mass of CFC-12 in Sea Water", 
+            "standard_name": "moles_of_cfc12_per_unit_mass_in_sea_water", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol kg-1", 
+            "out_name": "cfc12", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "mlotst": {
+            "comment": "Sigma T is potential density referenced to ocean surface.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Ocean Mixed Layer Thickness Defined by Sigma T", 
+            "standard_name": "ocean_mixed_layer_thickness_defined_by_sigma_t", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "m", 
+            "out_name": "mlotst", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "vsfevap": {
+            "comment": "zero for models using real water fluxes.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Virtual Salt Flux into Sea Water due to Evaporation", 
+            "standard_name": "virtual_salt_flux_into_sea_water_due_to_evaporation", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "vsfevap", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "eta": {
+            "units": "m", 
+            "long_name": "Sea Surface Height formula term: thetao", 
+            "type": "real", 
+            "dimensions": "longitude latitude time"
+        }, 
+        "chldiat": {
+            "comment": "chlorophyll from diatom phytoplankton component concentration alone", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Diatom Chlorophyll Mass Concentration", 
+            "standard_name": "mass_concentration_of_diatoms_expressed_as_chlorophyll_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-3", 
+            "out_name": "chldiat", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "tauucorr": {
+            "comment": "This is the stress on the liquid ocean from overlying atmosphere, sea ice, ice shelf, etc.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "down", 
+            "valid_min": "", 
+            "long_name": "Surface Downward X Stress Correction", 
+            "standard_name": "surface_downward_x_stress_correction", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "N m-2", 
+            "out_name": "tauucorr", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "hfgeou": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "valid_min": "", 
+            "long_name": "Upward Geothermal Heat Flux at Sea Floor", 
+            "standard_name": "upward_geothermal_heat_flux_at_sea_floor", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "hfgeou", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "intppcalc": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Net Primary Mole Productivity of Carbon by Calcareous Phytoplankton", 
+            "standard_name": "net_primary_mole_productivity_of_carbon_by_calcareous_phytoplankton", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-2 s-1", 
+            "out_name": "intppcalc", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "vsfsit": {
+            "comment": "This variable measures the virtual salt flux into sea water due to the melting of sea ice. It is set to zero in models which receive a real water flux.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Virtual Salt Flux into Sea Water due to Sea Ice Thermodynamics", 
+            "standard_name": "virtual_salt_flux_into_sea_water_due_to_sea_ice_thermodynamics", 
+            "modeling_realm": "ocean seaIce", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "vsfsit", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "limirrdiat": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Irradiance limitation of Diatoms", 
+            "standard_name": "irradiance_limitation_of_diatoms", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "1.0", 
+            "out_name": "limirrdiat", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "intpbp": {
+            "comment": "Vertically integrated biogenic phosphorus production", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Phosphorus Production", 
+            "standard_name": "tendency_of_ocean_mole_content_of_phosphorus_due_to_biological_production", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-2 s-1", 
+            "out_name": "intpbp", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "intpp": {
+            "comment": "Vertically integrated total primary (organic carbon) production by phytoplankton.  This should equal the sum of intpdiat+intpphymisc, but those individual components may be unavailable in some models.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Primary Organic Carbon Production by All Types of Phytoplankton", 
+            "standard_name": "net_primary_mole_productivity_of_carbon_by_phytoplankton", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-2 s-1", 
+            "out_name": "intpp", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "co3satarag": {
+            "comment": "", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Mole Concentration of Carbonate ion for Seawater in equilibrium with pure Aragonite", 
+            "standard_name": "mole_concentration_of_carbonate_ion_for_seawater_in equilibrium_with_pure_aragonite", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3", 
+            "out_name": "co3satarag", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "volo": {
+            "comment": "Total volume of liquid seawater.", 
+            "dimensions": "time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Sea Water Volume", 
+            "standard_name": "sea_water_volume", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean area: sum where sea", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "m3", 
+            "out_name": "volo", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "msftmzmpa": {
+            "comment": "CMIP5 called this 'due to Bolus Advection'.  Name change respects the more general physics of the mesoscale parameterizations.", 
+            "dimensions": "latitude olevel basin time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "ocean meridional overturning mass streamfunction due to parameterized mesoscale advection", 
+            "standard_name": "ocean_meridional_overturning_mass_streamfunction_due_to_parameterized_mesoscale_advection", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean longitude: mean", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "kg s-1", 
+            "out_name": "msftmzmpa", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "hfds": {
+            "comment": "This is the net flux of heat entering the liquid water column through its upper surface (excluding any 'flux adjustment') .", 
+            "dimensions": "longitude latitude time", 
+            "positive": "down", 
+            "valid_min": "", 
+            "long_name": "Downward Heat Flux at Sea Water Surface", 
+            "standard_name": "surface_downward_heat_flux_in_sea_water", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "hfds", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "pop": {
+            "comment": "sum of particulate organic phosphorus component concentrations", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Particulate Organic Phosphorus Concentration", 
+            "standard_name": "mole_concentration_of_particulate_organic_matter_expressed_as_phosphorus_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3", 
+            "out_name": "pop", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "hfrainds": {
+            "comment": "This is defined as 'where ice_free_sea over sea'; i.e., the total flux (considered here) entering the ice-free portion of the grid cell divided by the area of the ocean portion of the grid cell.  All such heat fluxes are computed based on Celsius scale.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "down", 
+            "valid_min": "", 
+            "long_name": "Temperature Flux due to Rainfall Expressed as Heat Flux into Sea Water", 
+            "standard_name": "temperature_flux_due_to_rainfall_expressed_as_heat_flux_into_sea_water", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean area: mean where ice_free_sea over sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "hfrainds", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "fsitherm": {
+            "comment": "computed as the sea ice thermodynamic water flux into the ocean divided by the area of the ocean portion of the grid cell.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Water Flux into Sea Water due to Sea Ice Thermodynamics", 
+            "standard_name": "water_flux_into_sea_water_due_to_sea_ice_thermodynamics", 
+            "modeling_realm": "ocean seaIce", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "fsitherm", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "sos": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Sea Surface Salinity", 
+            "standard_name": "sea_surface_salinity", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "0.001", 
+            "out_name": "sos", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "href": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: href", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "hfls": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "down", 
+            "valid_min": "", 
+            "long_name": "Surface Downward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean area: mean where ice_free_sea over sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "hfls", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "fddtdisi": {
+            "comment": "vertical integral of net time rate of change of dissolved inorganic silicate", 
+            "dimensions": "longitude latitude time olayer100m", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Rate of Change of Net Dissolved Inorganic Silicate", 
+            "standard_name": "tendency_of_ocean_mole_content_of_dissolved_inorganic_silicon", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-2 s-1", 
+            "out_name": "fddtdisi", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "vsfpr": {
+            "comment": "zero for models using real water fluxes.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Virtual Salt Flux into Sea Water due to Rainfall", 
+            "standard_name": "virtual_salt_flux_into_sea_water_due_to_rainfall", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "vsfpr", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "hfibthermds2d": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Heat Flux into Sea Water due to Iceberg Thermodynamics", 
+            "standard_name": "heat_flux_into_sea_water_due_to_iceberg_thermodynamics", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "hfibthermds2d", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "chlmisc": {
+            "comment": "chlorophyll from additional phytoplankton component concentrations alone", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Other Phytoplankton Chlorophyll Mass Concentration", 
+            "standard_name": "mass_concentration_of_miscellaneous_phytoplankton_expressed_as_chlorophyll_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-3", 
+            "out_name": "chlmisc", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "phymisc": {
+            "comment": "carbon concentration from additional phytoplankton component alone", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Mole Concentration of Miscellaneous Phytoplankton expressed as Carbon in Sea Water", 
+            "standard_name": "mole_concentration_of_miscellaneous_phytoplankton_expressed_as_carbon_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3", 
+            "out_name": "phymisc", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "htovgyre": {
+            "comment": "From all advective mass transport processes, resolved and parameterized.", 
+            "dimensions": "latitude basin time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Northward Ocean Heat Transport due to Gyre", 
+            "standard_name": "northward_ocean_heat_transport_due_to_gyre", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean longitude: mean", 
+            "#cell_methods": "", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "W", 
+            "out_name": "htovgyre", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "ps": {
+            "units": "Pa", 
+            "long_name": "Surface Air Pressure", 
+            "type": "real", 
+            "dimensions": "longitude latitude time"
+        }, 
+        "pp": {
+            "comment": "total primary (organic carbon) production by phytoplankton", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Primary Carbon Production by Phytoplankton", 
+            "standard_name": "tendency_of_mole_concentration_of_particulate_organic_matter_expressed_as_carbon_in_sea_water_due_to_net_primary_production", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3 s-1", 
+            "out_name": "pp", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "co3satcalc": {
+            "comment": "", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Mole Concentration of Carbonate ion for Seawater in equilibrium with pure Calcite", 
+            "standard_name": "mole_concentration_of_carbonate_ion_for_seawater_in equilibrium_with_pure_calcite", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3", 
+            "out_name": "co3satcalc", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "limndiat": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Nitrogen limitation of Diatoms", 
+            "standard_name": "nitrogen_limitation_of_diatoms", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "1.0", 
+            "out_name": "limndiat", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "physi": {
+            "comment": "sum of phytoplankton silica component concentrations", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Phytoplankton Silica Concentration", 
+            "standard_name": "mole_concentration_of_phytoplankton_expressed_as_silicon_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3", 
+            "out_name": "physi", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "limndiaz": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Nitrogen limitation of Diazotrophs", 
+            "standard_name": "nitrogen_limitation_of_diazotrophs", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "1.0", 
+            "out_name": "limndiaz", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "zlev_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: zlev(k+1/2)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "froc": {
+            "comment": "Organic Carbon loss to sediments", 
+            "dimensions": "longitude latitude time", 
+            "positive": "down", 
+            "valid_min": "", 
+            "long_name": "Downward Organic Carbon Flux at Ocean Bottom", 
+            "standard_name": "tendency_of_ocean_mole_content_of_organic_carbon_due_to_sedimentation", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-2 s-1", 
+            "out_name": "froc", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "phypico": {
+            "comment": "carbon concentration from the picophytoplankton (<2 um) component alone", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Mole Concentration of Picophytoplankton expressed as Carbon in Sea Water", 
+            "standard_name": "mole_concentration_of_picophytoplankton_expressed_as_carbon_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3", 
+            "out_name": "phypico", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "chl": {
+            "comment": "sum of chlorophyll from all phytoplankton group concentrations.  In most models this is equal to chldiat+chlmisc, that is the sum of 'Diatom Chlorophyll Mass Concentration' plus 'Other Phytoplankton Chlorophyll Mass Concentration'", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Total Chlorophyll Mass Concentration", 
+            "standard_name": "mass_concentration_of_phytoplankton_expressed_as_chlorophyll_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-3", 
+            "out_name": "chl", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "frn": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Nitrogen Loss to Sediments and through Denitrification", 
+            "standard_name": "tendency_of_ocean_mole_content_of_elemental_nitrogen_due_to_denitrification_and_sedimentation", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-2 s-1", 
+            "out_name": "frn", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "sf6": {
+            "comment": "", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Moles Per Unit Mass of SF6 in Sea Water", 
+            "standard_name": "moles_of_sf6_per_unit_mass_in_sea_water", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol kg-1", 
+            "out_name": "sf6", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "fddtalk": {
+            "comment": "vertical integral of net time rate of change of alkalinity", 
+            "dimensions": "longitude latitude time olayer100m", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Rate of Change of Alkalinity", 
+            "standard_name": "integral_wrt_depth_of_tendency_of_sea_water_alkalinity_expressed_as_mole_equivalent", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-2 s-1", 
+            "out_name": "fddtalk", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "hfsifrazil2d": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Heat Flux into Sea Water due to Frazil Ice Formation", 
+            "standard_name": "heat_flux_into_sea_water_due_to_freezing_of_frazil_ice", 
+            "modeling_realm": "ocean seaIce", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "hfsifrazil2d", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "tob": {
+            "comment": "Potential temperature at the ocean bottom-most grid cell.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Sea Water Potential Temperature at Sea Floor", 
+            "standard_name": "sea_water_potential_temperature_at_sea_floor", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "C", 
+            "out_name": "tob", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "ph": {
+            "comment": "negative log of hydrogen ion concentration with the concentration expressed as mol H kg-1.", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "pH", 
+            "standard_name": "sea_water_ph_reported_on_total_scale", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "1.0", 
+            "out_name": "ph", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "calc": {
+            "comment": "sum of particulate calcite component concentrations (e.g. Phytoplankton, Detrital, etc.)", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Calcite Concentration", 
+            "standard_name": "mole_concentration_of_calcite_expressed_as_carbon_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3", 
+            "out_name": "calc", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "talknat": {
+            "comment": "total alkalinity equivalent concentration (including carbonate, borate, phosphorus, silicon, and nitrogen components) at preindustrial atmospheric xCO2", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Natural Total Alkalinity", 
+            "standard_name": "seawater_alkalinity_expressed_as_mole_equivalent_natural_component", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3", 
+            "out_name": "talknat", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "a": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: a(k)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "sfdsi": {
+            "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", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Downward Sea Ice Basal Salt Flux", 
+            "standard_name": "downward_sea_ice_basal_salt_flux", 
+            "modeling_realm": "ocean seaIce", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "sfdsi", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "ficeberg": {
+            "comment": "computed as the iceberg melt water  flux into the ocean divided by the area of the ocean portion of the grid cell.", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Water Flux into Sea Water From Icebergs", 
+            "standard_name": "water_flux_into_sea_water_from_icebergs", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "ficeberg", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "tomint": {
+            "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", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "integral wrt depth of product of sea water density and prognostic temperature", 
+            "standard_name": "integral_wrt_depth_of_product_of_sea_water_density_and_prognostic_temperature", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "(kg/m^2)*C", 
+            "out_name": "tomint", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "expc100": {
+            "comment": "", 
+            "dimensions": "longitude latitude time depth100m", 
+            "positive": "down", 
+            "valid_min": "", 
+            "long_name": "Downward Flux of Particle Organic Carbon", 
+            "standard_name": "sinking_mole_flux_of_particulate_organic_matter_expressed_as_carbon_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-2 s-1", 
+            "out_name": "expc100", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "expsi100": {
+            "comment": "", 
+            "dimensions": "longitude latitude time depth100m", 
+            "positive": "down", 
+            "valid_min": "", 
+            "long_name": "Downward Flux of Particulate Silica", 
+            "standard_name": "sinking_mole_flux_of_particulate_silicon_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-2 s-1", 
+            "out_name": "expsi100", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "wfcorr": {
+            "comment": "Positive flux implies correction adds water to ocean.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "down", 
+            "valid_min": "", 
+            "long_name": "Water Flux Correction", 
+            "standard_name": "water_flux_correction", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "wfcorr", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "dfe": {
+            "comment": "dissolved iron in sea water is meant to include both Fe2+ and Fe3+ ions (but not, e.g., particulate detrital iron)", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Dissolved Iron Concentration", 
+            "standard_name": "mole_concentration_of_dissolved_iron_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3", 
+            "out_name": "dfe", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "sfriver": {
+            "comment": "This field is physical, and it arises when rivers carry a nonzero salt content.  Often this is zero, with rivers assumed to be fresh.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Salt Flux into Sea Water from Rivers", 
+            "standard_name": "salt_flux_into_sea_water_from_rivers", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "sfriver", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "intdissoc": {
+            "comment": "Vertically integrated DOC (explicit pools only)", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Dissolved Organic Carbon Content", 
+            "standard_name": "ocean_mass_content_of_dissolved_organic_carbon", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2", 
+            "out_name": "intdissoc", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "expfe100": {
+            "comment": "", 
+            "dimensions": "longitude latitude time depth100m", 
+            "positive": "down", 
+            "valid_min": "", 
+            "long_name": "Downward Flux of Particulate Iron", 
+            "standard_name": "sinking_mole_flux_of_particulate_iron_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-2 s-1", 
+            "out_name": "expfe100", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "thetao": {
+            "comment": "Diagnostic should be contributed even for models using conservative temperature as prognostic field.", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Sea Water Potential Temperature", 
+            "standard_name": "sea_water_potential_temperature", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "degree_C", 
+            "out_name": "thetao", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "p0": {
+            "units": "Pa", 
+            "long_name": "vertical coordinate formula term: reference pressure", 
+            "type": "", 
+            "dimensions": ""
+        }, 
+        "b": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: b(k)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "wfo": {
+            "comment": "computed as the water  flux into the ocean divided by the area of the ocean portion of the grid cell.  This is the sum of the next two variables in this table.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Water Flux into Sea Water", 
+            "standard_name": "water_flux_into_sea_water", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "wfo", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "zfull": {
+            "comment": "", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Depth Below Geoid of Ocean Layer", 
+            "standard_name": "depth_below_geoid", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "m", 
+            "out_name": "zfull", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "intpn2": {
+            "comment": "Vertically integrated nitrogen fixation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Nitrogen Fixation Rate in Ocean", 
+            "standard_name": "tendency_of_ocean_mole_content_of_elemental_nitrogen_due_to_fixation", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-2 s-1", 
+            "out_name": "intpn2", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "intpbsi": {
+            "comment": "Vertically integrated biogenic silica production", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Silica Production", 
+            "standard_name": "tendency_of_ocean_mole_content_of_silicon_due_to_biological_production", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-2 s-1", 
+            "out_name": "intpbsi", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "tosga": {
+            "comment": "This may differ from 'surface temperature' in regions of sea ice.This may differ from 'surface temperature' in regions of sea ice.For models using conservative temperature as prognostic field, they should report the SST as surface potent", 
+            "dimensions": "time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Global Average Sea Surface Temperature", 
+            "standard_name": "sea_surface_temperature", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "degree_C", 
+            "out_name": "tosga", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "uo": {
+            "comment": "Prognostic x-ward velocity component resolved by the model.", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Sea Water X Velocity", 
+            "standard_name": "sea_water_x_velocity", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "m s-1", 
+            "out_name": "uo", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "limfepico": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Iron limitation of Picophytoplankton", 
+            "standard_name": "iron_limitation_of_picophytoplankton", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "1.0", 
+            "out_name": "limfepico", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "msftyyz": {
+            "comment": "Overturning mass streamfunction arising from all advective mass transport processes, resolved and parameterized.", 
+            "dimensions": "latitude olevel basin time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Ocean Y Overturning Mass Streamfunction", 
+            "standard_name": "ocean_y_overturning_mass_streamfunction", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean longitude: mean", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "kg s-1", 
+            "out_name": "msftyyz", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "expc": {
+            "comment": "", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "down", 
+            "valid_min": "", 
+            "long_name": "Sinking Particulate Organic Carbon Flux", 
+            "standard_name": "sinking_mole_flux_of_particulate_organic_matter_expressed_as_carbon_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-2 s-1", 
+            "out_name": "expc", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "phycalc": {
+            "comment": "carbon concentration from calcareous (calcite-producing) phytoplankton component alone", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Mole Concentration of Calcareous Phytoplankton expressed as Carbon in Sea Water", 
+            "standard_name": "mole_concentration_of_calcareous_phytoplankton_expressed_as_carbon_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3", 
+            "out_name": "phycalc", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "k_c": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: k_c", 
+            "type": "integer", 
+            "dimensions": ""
+        }, 
+        "dms": {
+            "comment": "", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Dimethyl Sulphide Concentration", 
+            "standard_name": "mole_fraction_of_dimethyl_sulfide_in_air", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mole mole-1", 
+            "out_name": "dms", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "fgcfc11": {
+            "comment": "gas exchange flux of CFC11", 
+            "dimensions": "longitude latitude time", 
+            "positive": "down", 
+            "valid_min": "", 
+            "long_name": "Surface Downward CFC11 flux", 
+            "standard_name": "surface_downward_mole_flux_of_cfc11", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "mol sec-1 m-2", 
+            "out_name": "fgcfc11", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "fgcfc12": {
+            "comment": "gas exchange flux of CFC12", 
+            "dimensions": "longitude latitude time", 
+            "positive": "down", 
+            "valid_min": "", 
+            "long_name": "Surface Downward CFC12 flux", 
+            "standard_name": "surface_downward_mole_flux_of_cfc12", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "mol sec-1 m-2", 
+            "out_name": "fgcfc12", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "fgco2nat": {
+            "comment": "Gas exchange flux of natural CO2 (positive into ocean)", 
+            "dimensions": "longitude latitude time", 
+            "positive": "down", 
+            "valid_min": "", 
+            "long_name": "Surface Downward natural CO2 Flux", 
+            "standard_name": "surface_downward_mass_flux_of_natural_carbon_dioxide_expressed_as_carbon", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "fgco2nat", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "htovovrt": {
+            "comment": "From all advective mass transport processes, resolved and parameterized.", 
+            "dimensions": "latitude basin time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Northward Ocean Heat Transport due to Overturning", 
+            "standard_name": "northward_ocean_heat_transport_due_to_overturning", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean longitude: mean", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "W", 
+            "out_name": "htovovrt", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "chlpico": {
+            "comment": "chlorophyll concentration from the picophytoplankton (<2 um) component alone", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Mass Concentration of Picophytoplankton expressed as Chlorophyll in Sea Water", 
+            "standard_name": "mass_concentration_of_picophytoplankton_expressed_as_chlorophyll_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-3", 
+            "out_name": "chlpico", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "hfbasinpmdiff": {
+            "comment": "Contributions to heat transport from parameterized mesoscale eddy-induced diffusive transport (i.e., neutral diffusion). Diagnosed here as a function of latitude and basin.", 
+            "dimensions": "latitude basin time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "northward ocean heat transport due to parameterized mesoscale diffusion", 
+            "standard_name": "northward_ocean_heat_transport_due_to_parameterized_mesoscale_diffusion", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "W", 
+            "out_name": "hfbasinpmdiff", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "dissicabio": {
+            "comment": "Abiotic Dissolved inorganic carbon (CO3+HCO3+H2CO3) concentration", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Abiotic Dissolved Inorganic Carbon Concentration", 
+            "standard_name": "mole_concentration_of_dissolved_inorganic_carbon_in_sea_water_abiotic_component", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3", 
+            "out_name": "dissicabio", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "tauvcorr": {
+            "comment": "This is the stress on the liquid ocean from overlying atmosphere, sea ice, ice shelf, etc.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "down", 
+            "valid_min": "", 
+            "long_name": "Surface Downward Y Stress Correction", 
+            "standard_name": "surface_downward_y_stress_correction", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "N m-2", 
+            "out_name": "tauvcorr", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "hfss": {
+            "comment": "This is defined as 'where ice_free_sea over sea'", 
+            "dimensions": "longitude latitude time", 
+            "positive": "down", 
+            "valid_min": "", 
+            "long_name": "Surface Downward Sensible Heat Flux", 
+            "standard_name": "surface_downward_sensible_heat_flux", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean area: mean where ice_free_sea over sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "hfss", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "ap_bnds": {
+            "units": "Pa", 
+            "long_name": "vertical coordinate formula term: ap(k+1/2)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "vo": {
+            "comment": "Prognostic x-ward velocity component resolved by the model.", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Sea Water Y Velocity", 
+            "standard_name": "sea_water_y_velocity", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "m s-1", 
+            "out_name": "vo", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "ap": {
+            "units": "Pa", 
+            "long_name": "vertical coordinate formula term: ap(k)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "phydiaz": {
+            "comment": "carbon concentration from the diazotrophic phytoplankton component alone", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Mole Concentration of Diazotrophs Expressed as Carbon in Sea Water", 
+            "standard_name": "mole_concentration_of_diazotrophs_expressed_as_carbon_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3", 
+            "out_name": "phydiaz", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "tossq": {
+            "comment": "square of temperature of liquid ocean, averaged over the day.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Square of Sea Surface Temperature", 
+            "standard_name": "square_of_sea_surface_temperature", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "degree_C2", 
+            "out_name": "tossq", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "prsn": {
+            "comment": "at surface; includes precipitation of all forms of water in the solid phase", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Snowfall Flux where Ice Free Ocean over Sea", 
+            "standard_name": "snowfall_flux", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean area: mean where ice_free_sea over sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "prsn", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "limirrcalc": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Irradiance limitation of Calcareous Phytoplankton", 
+            "standard_name": "irradiance_limitation_of_calcareous_phytoplankton", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "1.0", 
+            "out_name": "limirrcalc", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "zlev": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: zlev(k)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "phydiat": {
+            "comment": "carbon from the diatom phytoplankton component concentration alone", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Mole Concentration of Diatoms expressed as Carbon in Sea Water", 
+            "standard_name": "mole_concentration_of_diatoms_expressed_as_carbon_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3", 
+            "out_name": "phydiat", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "hfbasin": {
+            "comment": "Contains contributions from all physical processes affecting the northward heat transport, including resolved advection, parameterized advection, lateral diffusion, etc. Diagnosed here as a function of latitude and basin.   Use Celsius for temperature scale.", 
+            "dimensions": "latitude basin time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Northward Ocean Heat Transport", 
+            "standard_name": "northward_ocean_heat_transport", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "W", 
+            "out_name": "hfbasin", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "bigthetaoga": {
+            "comment": "Diagnostic should be contributed only for models using conservative temperature as prognostic field.", 
+            "dimensions": "time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Global Average Sea Water Conservative Temperature", 
+            "standard_name": "sea_water_conservative_temperature", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "degree_C", 
+            "out_name": "bigthetaoga", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "pso": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Sea Water Pressure at Sea Water Surface", 
+            "standard_name": "sea_water_pressure_at_sea_water_surface", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "Pa", 
+            "out_name": "pso", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "o2": {
+            "comment": "", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Dissolved Oxygen Concentration", 
+            "standard_name": "mole_concentration_of_molecular_oxygen_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3", 
+            "out_name": "o2", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "zoocmisc": {
+            "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", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Other Zooplankton Carbon Concentration", 
+            "standard_name": "mole_concentration_of_miscellaneous_zooplankton_expressed_as_carbon_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3", 
+            "out_name": "zoocmisc", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "msftyzsmpa": {
+            "comment": "Report only if there is a submesoscale eddy parameterization.", 
+            "dimensions": "latitude olevel basin time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "ocean Y overturning mass streamfunction due to parameterized submesoscale advection", 
+            "standard_name": "ocean_meridional_overturning_mass_streamfunction_due_to_parameterized_submesoscale_advection", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean longitude: mean", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "kg s-1", 
+            "out_name": "msftyzsmpa", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "intparag": {
+            "comment": "Vertically integrated aragonite production", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Aragonite Production", 
+            "standard_name": "tendency_of_ocean_mole_content_of_aragonite_expressed_as_carbon_due_to_biological_production", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-2 s-1", 
+            "out_name": "intparag", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "fbddtdife": {
+            "comment": "vertical integral of net biological terms in time rate of change of dissolved inorganic iron", 
+            "dimensions": "longitude latitude time olayer100m", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Rate of Change of Dissolved Inorganic Iron due to Biological Activity", 
+            "standard_name": "tendency_of_ocean_mole_content_of_dissolved_inorganic_iron_due_to_biological_processes", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-2 s-1", 
+            "out_name": "fbddtdife", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "si": {
+            "comment": "", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Dissolved Silicate Concentration", 
+            "standard_name": "mole_concentration_of_silicate_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3", 
+            "out_name": "si", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "dissicnat": {
+            "comment": "Dissolved inorganic carbon (CO3+HCO3+H2CO3) concentration at preindustrial atmospheric xCO2", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Natural Dissolved Inorganic Carbon Concentration", 
+            "standard_name": "mole_concentration_of_dissolved_inorganic_carbon_in_sea_water_natural_component", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3", 
+            "out_name": "dissicnat", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "zos": {
+            "comment": "This is the dynamic sea level, so should have zero global area mean. It should not include inverse barometer depressions from sea ice.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Sea Surface Height Above Geoid", 
+            "standard_name": "sea_surface_height_above_geoid", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "m", 
+            "out_name": "zos", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "fgsf6": {
+            "comment": "gas exchange flux of SF6", 
+            "dimensions": "longitude latitude time", 
+            "positive": "down", 
+            "valid_min": "", 
+            "long_name": "Surface Downward SF6 flux", 
+            "standard_name": "surface_downward_mole_flux_of_sf6", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "mol sec-1 m-2", 
+            "out_name": "fgsf6", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "masso": {
+            "comment": "Total mass of liquid seawater. For Boussinesq models, report this diagnostic as Boussinesq reference density times total volume.", 
+            "dimensions": "time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Sea Water Mass", 
+            "standard_name": "sea_water_mass", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean area: sum where sea", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "kg", 
+            "out_name": "masso", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "expp100": {
+            "comment": "", 
+            "dimensions": "longitude latitude time depth100m", 
+            "positive": "down", 
+            "valid_min": "", 
+            "long_name": "Downward Flux of Particulate Phosphorus", 
+            "standard_name": "sinking_mole_flux_of_particulate_phosphorus_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-2 s-1", 
+            "out_name": "expp100", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "masscello": {
+            "comment": "Tracer grid-cell mass per unit area used for computing tracer budgets. For Boussinesq models with static ocean grid cell thickness, masscello = rhozero*thickcello, where thickcello is static cell thickness and rhozero is constant Boussinesq reference density. More generally, masscello is time dependent and reported as part of Omon.", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Sea Water Mass Per Unit Area", 
+            "standard_name": "sea_water_mass_per_unit_area", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "kg/m2", 
+            "out_name": "masscello", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "detoc": {
+            "comment": "sum of detrital organic carbon component concentrations", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Detrital Organic Carbon Concentration", 
+            "standard_name": "mole_concentration_of_organic_detritus_expressed_as_carbon_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3", 
+            "out_name": "detoc", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "intdissic": {
+            "comment": "Vertically integrated DIC", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Dissolved Inorganic Carbon Content", 
+            "standard_name": "ocean_mass_content_of_dissolved_inorganic_carbon", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2", 
+            "out_name": "intdissic", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "b_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: b(k+1/2)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "limncalc": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Nitrogen limitation of Calcareous Phytoplankton", 
+            "standard_name": "nitrogen_limitation_of_calcareous_phytoplankton", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "1.0", 
+            "out_name": "limncalc", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "msftyzmpa": {
+            "comment": "CMIP5 called this 'due to Bolus Advection'.  Name change respects the more general physics of the mesoscale parameterizations.", 
+            "dimensions": "latitude olevel basin time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "ocean Y overturning mass streamfunction due to parameterized mesoscale advection", 
+            "standard_name": "ocean_y_overturning_mass_streamfunction_due_to_parameterized_mesoscale_advection", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean longitude: mean", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "kg s-1", 
+            "out_name": "msftyzmpa", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "thetaoga": {
+            "comment": "Diagnostic should be contributed even for models using conservative temperature as prognostic field", 
+            "dimensions": "time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Global Average Sea Water Potential Temperature", 
+            "standard_name": "sea_water_potential_temperature", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "degree_C", 
+            "out_name": "thetaoga", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "msftmyz": {
+            "comment": "Overturning mass streamfunction arising from all advective mass transport processes, resolved and parameterized.", 
+            "dimensions": "latitude olevel basin time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Ocean Meridional Overturning Mass Streamfunction", 
+            "standard_name": "ocean_meridional_overturning_mass_streamfunction", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean longitude: mean", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "kg s-1", 
+            "out_name": "msftmyz", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "fddtdife": {
+            "comment": "vertical integral of net time rate of change of dissolved inorganic iron", 
+            "dimensions": "longitude latitude time olayer100m", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Rate of Change of Net Dissolved Inorganic Iron", 
+            "standard_name": "tendency_of_ocean_mole_content_of_dissolved_inorganic_iron", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-2 s-1", 
+            "out_name": "fddtdife", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "fgco2abio": {
+            "comment": "Gas exchange flux of abiotic CO2 (positive into ocean)", 
+            "dimensions": "longitude latitude time", 
+            "positive": "down", 
+            "valid_min": "", 
+            "long_name": "Surface Downward abiotic CO2 Flux", 
+            "standard_name": "surface_downward_mass_flux_of_abiotic_carbon_dioxide_expressed_as_carbon", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "fgco2abio", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "phyc": {
+            "comment": "sum of phytoplankton carbon component concentrations.  In most (all?) cases this is the sum of phycdiat and phycmisc (i.e., 'Diatom Carbon Concentration' and 'Non-Diatom Phytoplankton Carbon Concentration'", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Phytoplankton Carbon Concentration", 
+            "standard_name": "mole_concentration_of_phytoplankton_expressed_as_carbon_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3", 
+            "out_name": "phyc", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "msftbarot": {
+            "comment": "Streamfunction or its approximation for free surface models. See OMDP document for details.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Ocean Barotropic Mass Streamfunction", 
+            "standard_name": "ocean_barotropic_mass_streamfunction", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "kg s-1", 
+            "out_name": "msftbarot", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "hfibthermds": {
+            "comment": "", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Heat Flux into Sea Water due to Iceberg Thermodynamics", 
+            "standard_name": "heat_flux_into_sea_water_due_to_iceberg_thermodynamics", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "hfibthermds", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "phyn": {
+            "comment": "sum of phytoplankton nitrogen component concentrations", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Phytoplankton Nitrogen Concentration", 
+            "standard_name": "mole_concentration_of_phytoplankton_expressed_as_nitrogen_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3", 
+            "out_name": "phyn", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "fric": {
+            "comment": "Inorganic Carbon loss to sediments", 
+            "dimensions": "longitude latitude time", 
+            "positive": "down", 
+            "valid_min": "", 
+            "long_name": "Downward Inorganic Carbon Flux at Ocean Bottom", 
+            "standard_name": "tendency_of_ocean_mole_content_of_inorganic_carbon_due_to_sedimentation", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-2 s-1", 
+            "out_name": "fric", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "thkcello": {
+            "comment": "", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Ocean Model Cell Thickness", 
+            "standard_name": "cell_thickness", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "m", 
+            "out_name": "thkcello", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "hfy": {
+            "comment": "Contains all contributions to 'y-ward' heat transport from resolved and parameterized processes. Use Celsius for temperature scale.", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Ocean Heat Y Transport", 
+            "standard_name": "ocean_heat_y_transport", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "W", 
+            "out_name": "hfy", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "hfx": {
+            "comment": "Contains all contributions to 'x-ward' heat transport from resolved and parameterized processes.  Use Celsius for temperature scale.", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Ocean Heat X Transport", 
+            "standard_name": "ocean_heat_x_transport", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "W", 
+            "out_name": "hfx", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "chlcalc": {
+            "comment": "chlorophyll concentration from the calcite-producing phytoplankton component alone", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Mass Concentration of Calcareous Phytoplankton expressed as Chlorophyll in Sea Water", 
+            "standard_name": "mass_concentration_of_calcareous_phytoplankton_expressed_as_chlorophyll_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-3", 
+            "out_name": "chlcalc", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "agessc": {
+            "comment": "Time elapsed since water was last in surface layer of the ocean.", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Sea Water Age Since Surface Contact", 
+            "standard_name": "sea_water_age_since_surface_contact", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "yr", 
+            "out_name": "agessc", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "nh4": {
+            "comment": "", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Dissolved Ammonium Concentration", 
+            "standard_name": "mole_concentration_of_ammonium_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3", 
+            "out_name": "nh4", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "limirrmisc": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Irradiance Limitation of Other Phytoplankton", 
+            "standard_name": "irradiance_limitation_of_miscellaneous_phytoplankton", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "1.0", 
+            "out_name": "limirrmisc", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "tos": {
+            "comment": "this may differ from 'surface temperature' in regions of sea ice.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Sea Surface Temperature", 
+            "standard_name": "sea_surface_temperature", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "K", 
+            "out_name": "tos", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "fsn": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "down", 
+            "valid_min": "", 
+            "long_name": "Surface Downward Net Flux of Nitrogen", 
+            "standard_name": "tendency_of_ocean_mole_content_of_elemental_nitrogen_due_to_deposition_and_fixation_and_runoff", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-2 s-1", 
+            "out_name": "fsn", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "vsfriver": {
+            "comment": "zero for models using real water fluxes.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Virtual Salt Flux into Sea Water From Rivers", 
+            "standard_name": "virtual_salt_flux_into_sea_water_from_rivers", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "vsfriver", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "depth": {
+            "units": "m", 
+            "long_name": "Sea Floor Depth: formula term: thetao", 
+            "type": "real", 
+            "dimensions": "longitude latitude"
+        }, 
+        "zoomeso": {
+            "comment": "carbon  concentration from mesozooplankton (20-200 um) component alone", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Mole Concentration of Mesozooplankton expressed as Carbon in Sea Water", 
+            "standard_name": "mole_concentration_of_mesozooplankton_expressed_as_carbon_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3", 
+            "out_name": "zoomeso", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "so": {
+            "comment": "", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Sea Water Salinity", 
+            "standard_name": "sea_water_salinity", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "0.001", 
+            "out_name": "so", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "hfbasinpadv": {
+            "comment": "Contributions to heat transport from parameterized eddy-induced advective transport due to any subgrid advective process. Diagnosed here as a function of latitude and basin.  Use Celsius for temperature scale.", 
+            "dimensions": "latitude basin time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "northward ocean heat transport due to parameterized eddy advection", 
+            "standard_name": "northward_ocean_heat_transport_due_to_parameterized_eddy_advection", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "W", 
+            "out_name": "hfbasinpadv", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "somint": {
+            "comment": "Full column sum of density*cell thickness*prognostic salinity. If the model is Boussinesq, then use Boussinesq reference density for the density factor.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "integral wrt depth of product of sea water density and prognostic salinity", 
+            "standard_name": "integral_wrt_depth_of_product_of_sea_water_density_and_prognostic_salinity", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "(kg/m^2)*1e-3", 
+            "out_name": "somint", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "sigma": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: sigma(k)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "talk": {
+            "comment": "total alkalinity equivalent concentration (including carbonate, nitrogen, silicate, and borate components)", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Total Alkalinity", 
+            "standard_name": "sea_water_alkalinity_expressed_as_mole_equivalent", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3", 
+            "out_name": "talk", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }
+    }
+}
diff --git a/TestTables/CMIP6_cf3hr.json b/TestTables/CMIP6_cf3hr.json
new file mode 100644
index 0000000..5e9e4fa
--- /dev/null
+++ b/TestTables/CMIP6_cf3hr.json
@@ -0,0 +1,2375 @@
+{
+    "Header": {
+        "product": "output", 
+        "approx_interval": "0.125000", 
+        "realm": "atmos", 
+        "cmor_version": "3.1", 
+        "Conventions": "CF-1.6 CMIP-6.0", 
+        "frequency": "3hr", 
+        "table_id": "Table cf3hr", 
+        "data_specs_version": "01.beta.29", 
+        "mip_era": "CMIP6", 
+        "generic_levels": "", 
+        "missing_value": "1e20", 
+        "table_date": "14 June 2016"
+    }, 
+    "axis_entry": {
+        "typebare": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "bare_ground", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "tau": {
+            "requested": [
+                "0.15", 
+                "0.8", 
+                "2.45", 
+                "6.5", 
+                "16.2", 
+                "41.5", 
+                "100."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "0.0", 
+                "0.3", 
+                "0.3", 
+                "1.3", 
+                "1.3", 
+                "3.6", 
+                "3.6", 
+                "9.4", 
+                "9.4", 
+                "23.0", 
+                "23.0", 
+                "60.0", 
+                "60.0", 
+                "100000."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "cloud optical thickness", 
+            "standard_name": "atmosphere_optical_thickness_due_to_cloud", 
+            "value": "", 
+            "out_name": "tau", 
+            "type": "double", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "olayer100m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "0. 100.", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "50.0", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "100.0", 
+            "axis": "Z"
+        }, 
+        "spectband": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "Spectral Band", 
+            "standard_name": "wave_frequency", 
+            "value": "", 
+            "out_name": "spectband", 
+            "type": "double", 
+            "units": "s-1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "ocean_sigma_z": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "sigma: sigma eta: eta depth: depth depth_c: depth_c nsigma: nsigma zlev: zlev", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "sigma: sigma_bnds eta: eta depth: depth depth_c: depth_c nsigma: nsigma zlev: zlev_bnds", 
+            "bounds_values": "", 
+            "long_name": "ocean sigma over z coordinate", 
+            "standard_name": "ocean_sigma_z", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "for k <= nsigma: z(n,k,j,i) = eta(n,j,i) + sigma(k)*(min(depth_c,depth(j,i))+eta(n,j,i)) ; for k > nsigma: z(n,k,j,i) = zlev(k)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev19": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000.", 
+                "500.", 
+                "100."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "p220": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "44000. 0.0", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "22000.0", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev17": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev10": {
+            "requested": [
+                "100000.", 
+                "85000.", 
+                "70000.", 
+                "50000.", 
+                "25000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "site": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "site index", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "site", 
+            "type": "integer", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "smooth_level": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "a: a b1: b1 b2: b2 ztop: ztop zsurf1: zsurf1 zsurf2: zsurf2", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-200.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "a: a_bnds b1: b1_bnds b2: b2_bnds ztop: ztop zsurf1: zsurf1 zsurf2: zsurf2", 
+            "bounds_values": "", 
+            "long_name": "atmosphere smooth level vertical (SLEVE) coordinate", 
+            "standard_name": "atmosphere_sleve_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "m", 
+            "formula": "z = a*ztop + b1*zsurf1 + b2*zsurf2", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "800000.0", 
+            "axis": "Z"
+        }, 
+        "p840": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "100000. 68000.", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "84000.0", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "ocean_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "sigma: lev eta: eta depth: depth", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "sigma: lev_bnds eta: eta depth: depth", 
+            "bounds_values": "", 
+            "long_name": "ocean sigma coordinate", 
+            "standard_name": "ocean_sigma_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "z(n,k,j,i) = eta(n,j,i) + sigma(k)*(depth(j,i)+eta(n,j,i))", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "0.0", 
+            "axis": "Z"
+        }, 
+        "depth0m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "0.0", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "100.0", 
+            "axis": "Z"
+        }, 
+        "ocean_s": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "s: lev eta: eta depth: depth a: a_coeff b: b_coeff depth_c: depth_c", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "s: lev_bnds eta: eta depth: depth a: a b: b depth_c: depth_c", 
+            "bounds_values": "", 
+            "long_name": "ocean s-coordinate", 
+            "standard_name": "ocean_s_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "z(n,k,j,i) = eta(n,j,i)*(1+s(k)) + depth_c*s(k) + (depth(j,i)-depth_c)*C(k) n where n C(k)=(1-b)*sinh(a*s(k))/sinh(a) +n           b*(tanh(a*(s(k)+0.5))/(2*tanh(0.5*a)) - 0.5)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "0.0", 
+            "axis": "Z"
+        }, 
+        "plev4s": {
+            "requested": [
+                "85000.", 
+                "50000.", 
+                "20000.", 
+                "5000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "typec4pft": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "c4_plant_functional_types", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "plev3h": {
+            "requested": [
+                "10000.", 
+                "1000.", 
+                "100."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "height2m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "up", 
+            "must_have_bounds": "no", 
+            "valid_min": "1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "height", 
+            "standard_name": "height", 
+            "value": "2.0", 
+            "out_name": "height", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "10.0", 
+            "axis": "Z"
+        }, 
+        "time1": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "time", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "plev7h": {
+            "requested": [
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "25000.", 
+                "5000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "sza5": {
+            "requested": [
+                "0.", 
+                "20.", 
+                "40.", 
+                "60.", 
+                "80."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "solar zenith angle", 
+            "standard_name": "solar_zenith_angle", 
+            "value": "", 
+            "out_name": "sza", 
+            "type": "double", 
+            "units": "degree", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "depth_coord": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "ocean depth coordinate", 
+            "standard_name": "depth", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "12000.0", 
+            "axis": "Z"
+        }, 
+        "sdepth1": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "0.0 0.1", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "0.05", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "0.2", 
+            "axis": "Z"
+        }, 
+        "alternate_hybrid_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "ap: ap b: b ps: ps", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "ap: ap_bnds b: b_bnds ps: ps", 
+            "bounds_values": "", 
+            "long_name": "hybrid sigma pressure coordinate", 
+            "standard_name": "atmosphere_hybrid_sigma_pressure_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "1", 
+            "formula": "p = ap + b*ps", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "1.0", 
+            "axis": "Z"
+        }, 
+        "time2": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "time", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "yes", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "time3": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "Diurnal cycle: monthly mean of the diurnal cycle (1 hour steps).", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "oline": {
+            "requested": [
+                "barents_opening", 
+                "bering_strait", 
+                "canadian_archipelago", 
+                "denmark_strait", 
+                "drake_passage", 
+                "english_channel", 
+                "pacific_equatorial_undercurrent", 
+                "faroe_scotland_channel", 
+                "florida_bahamas_strait", 
+                "fram_strait", 
+                "iceland_faroe_channel", 
+                "indonesian_thoughflow", 
+                "mozambique_channel", 
+                "taiwan_luzon_straits", 
+                "windward_passage"
+            ], 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "ocean passage", 
+            "standard_name": "region", 
+            "value": "", 
+            "out_name": "line", 
+            "type": "character", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "plev14": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "25000.", 
+                "15000.", 
+                "10000.", 
+                "5000.", 
+                "2000.", 
+                "1000.", 
+                "500.", 
+                "100."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev8": {
+            "requested": [
+                "100000.", 
+                "85000.", 
+                "70000.", 
+                "50000.", 
+                "25000.", 
+                "10000.", 
+                "5000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "location": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "location index", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "loc", 
+            "type": "integer", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "latitude": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-90.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "latitude", 
+            "standard_name": "latitude", 
+            "value": "", 
+            "out_name": "lat", 
+            "type": "double", 
+            "units": "degrees_north", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "90.0", 
+            "axis": "Y"
+        }, 
+        "plev3": {
+            "requested": [
+                "85000.", 
+                "50000.", 
+                "25000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "basin": {
+            "requested": [
+                "atlantic_arctic_ocean", 
+                "indian_pacific_ocean", 
+                "global_ocean"
+            ], 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "ocean basin", 
+            "standard_name": "region", 
+            "value": "", 
+            "out_name": "basin", 
+            "type": "character", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "p700": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "700 hPa", 
+            "standard_name": "air_pressure", 
+            "value": "70000.", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev7": {
+            "requested": [
+                "90000.", 
+                "74000.", 
+                "62000.", 
+                "50000.", 
+                "37500.", 
+                "24500.", 
+                "9000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "100000.", 
+                "80000.", 
+                "80000.", 
+                "68000.", 
+                "68000.", 
+                "56000.", 
+                "56000.", 
+                "44000.", 
+                "44000.", 
+                "31000.", 
+                "31000.", 
+                "18000.", 
+                "18000.", 
+                " 0."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev4": {
+            "requested": [
+                "92500.", 
+                "85000.", 
+                "50000.", 
+                "25000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev23": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000.", 
+                "700.", 
+                "500.", 
+                "300.", 
+                "200.", 
+                "100.", 
+                "40."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev39": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "17000.", 
+                "15000.", 
+                "13000.", 
+                "11500.", 
+                "10000.", 
+                "9000.", 
+                "8000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1500.", 
+                "1000.", 
+                "700.", 
+                "500.", 
+                "300.", 
+                "200.", 
+                "150.", 
+                "100.", 
+                "70.", 
+                "50.", 
+                "40.", 
+                "30.", 
+                "20.", 
+                "15.", 
+                "10.", 
+                "7.", 
+                "5.", 
+                "3."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "typepever": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "primary_evergreen_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "typesdec": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "secondary_decidous_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "plev27": {
+            "requested": [
+                "100000.", 
+                "97500.", 
+                "95000.", 
+                "92500.", 
+                "90000.", 
+                "87500.", 
+                "85000.", 
+                "82500.", 
+                "80000.", 
+                "77500.", 
+                "75000.", 
+                "70000.", 
+                "65000.", 
+                "60000.", 
+                "55000.", 
+                "50000.", 
+                "45000.", 
+                "40000.", 
+                "35000.", 
+                "30000.", 
+                "25000.", 
+                "22500.", 
+                "20000.", 
+                "17500.", 
+                "15000.", 
+                "12500.", 
+                "10000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "alt40": {
+            "requested": [
+                "240.", 
+                "720.", 
+                "1200.", 
+                "1680.", 
+                "2160.", 
+                "2640.", 
+                "3120.", 
+                "3600.", 
+                "4080.", 
+                "4560.", 
+                "5040.", 
+                "5520.", 
+                "6000.", 
+                "6480.", 
+                "6960.", 
+                "7440.", 
+                "7920.", 
+                "8400.", 
+                "8880.", 
+                "9360.", 
+                "9840.", 
+                "10320.", 
+                "10800.", 
+                "11280.", 
+                "11760.", 
+                "12240.", 
+                "12720.", 
+                "13200.", 
+                "13680.", 
+                "14160.", 
+                "14640.", 
+                "15120.", 
+                "15600.", 
+                "16080.", 
+                "16560.", 
+                "17040.", 
+                "17520.", 
+                "18000.", 
+                "18480.", 
+                "18960."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "0.", 
+                "480.", 
+                "480.", 
+                "960.", 
+                "960.", 
+                "1440.", 
+                "1440.", 
+                "1920.", 
+                "1920.", 
+                "2400.", 
+                "2400.", 
+                "2880.", 
+                "2880.", 
+                "3360.", 
+                "3360.", 
+                "3840.", 
+                "3840.", 
+                "4320.", 
+                "4320.", 
+                "4800.", 
+                "4800.", 
+                "5280.", 
+                "5280.", 
+                "5760.", 
+                "5760.", 
+                "6240.", 
+                "6240.", 
+                "6720.", 
+                "6720.", 
+                "7200.", 
+                "7200.", 
+                "7680.", 
+                "7680.", 
+                "8160.", 
+                "8160.", 
+                "8640.", 
+                "8640.", 
+                "9120.", 
+                "9120.", 
+                "9600.", 
+                "9600.", 
+                "10080.", 
+                "10080.", 
+                "10560.", 
+                "10560.", 
+                "11040.", 
+                "11040.", 
+                "11520.", 
+                "11520.", 
+                "12000.", 
+                "12000.", 
+                "12480.", 
+                "12480.", 
+                "12960.", 
+                "12960.", 
+                "13440.", 
+                "13440.", 
+                "13920.", 
+                "13920.", 
+                "14400.", 
+                "14400.", 
+                "14880.", 
+                "14880.", 
+                "15360.", 
+                "15360.", 
+                "15840.", 
+                "15840.", 
+                "16320.", 
+                "16320.", 
+                "16800.", 
+                "16800.", 
+                "17280.", 
+                "17280.", 
+                "17760.", 
+                "17760.", 
+                "18240.", 
+                "18240.", 
+                "18720.", 
+                "18720.", 
+                "19200."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "altitude", 
+            "standard_name": "altitude", 
+            "value": "", 
+            "out_name": "alt40", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "time": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "time", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "plev7c": {
+            "requested": [
+                "90000.", 
+                "74000.", 
+                "62000.", 
+                "50000.", 
+                "37500.", 
+                "24500.", 
+                "9000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "height10m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "up", 
+            "must_have_bounds": "no", 
+            "valid_min": "1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "height", 
+            "standard_name": "height", 
+            "value": "10.0", 
+            "out_name": "height", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "30.0", 
+            "axis": "Z"
+        }, 
+        "dbze": {
+            "requested": [
+                "-47.5", 
+                "-42.5", 
+                "-37.5", 
+                "-32.5", 
+                "-27.5", 
+                "-22.5", 
+                "-17.5", 
+                "-12.5", 
+                "-7.5", 
+                "-2.5", 
+                "2.5", 
+                "7.5", 
+                "12.5", 
+                "17.5", 
+                "22.5"
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "-50", 
+                "-45", 
+                "-45", 
+                "-40", 
+                "-40", 
+                "-35", 
+                "-35", 
+                "-30", 
+                "-30", 
+                "-25", 
+                "-25", 
+                "-20", 
+                "-20", 
+                "-15", 
+                "-15", 
+                "-10", 
+                "-10", 
+                "-5", 
+                "-5", 
+                "0", 
+                "0", 
+                "5", 
+                "5", 
+                "10", 
+                "10", 
+                "15", 
+                "15", 
+                "20", 
+                "20", 
+                "25."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "CloudSat simulator equivalent radar reflectivity factor", 
+            "standard_name": "equivalent_reflectivity_factor", 
+            "value": "", 
+            "out_name": "dbze", 
+            "type": "double", 
+            "units": "dBZ", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "typesever": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "secondary_evergreen_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "rho": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "density++++?", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "rho", 
+            "type": "double", 
+            "units": "kg m-3", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "depth100m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "80.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "100.0", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "120.0", 
+            "axis": "Z"
+        }, 
+        "effectRadLi": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "Effective Radius of Liquid Aerosols", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "effectRadLi", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "sdepth": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "200.0", 
+            "axis": "Z"
+        }, 
+        "vegtype": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "plant functional type", 
+            "standard_name": "area_type", 
+            "value": "", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "typec3pft": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "c3_plant_functional_types", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "natural_log_pressure": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "p0: p0 lev: lev", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "p0: p0 lev: lev_bnds", 
+            "bounds_values": "", 
+            "long_name": "atmosphere natural log pressure coordinate", 
+            "standard_name": "atmosphere_ln_pressure_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "p = p0 * exp(-lev)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "20.0", 
+            "axis": "Z"
+        }, 
+        "scatratio": {
+            "requested": [
+                "0.005", 
+                "0.605", 
+                "2.1", 
+                "4.", 
+                "6.", 
+                "8.5", 
+                "12.5", 
+                "17.5", 
+                "22.5", 
+                "27.5", 
+                "35.", 
+                "45.", 
+                "55.", 
+                "70.", 
+                "50040."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "0.", 
+                "0.01", 
+                "0.01", 
+                "1.2", 
+                "1.2", 
+                "3.", 
+                "3.", 
+                "5.", 
+                "5.", 
+                "7.", 
+                "7.", 
+                "10.", 
+                "10.", 
+                "15.", 
+                "15.", 
+                "20.", 
+                "20.", 
+                "25.", 
+                "25.", 
+                "30.", 
+                "30.", 
+                "40.", 
+                "40.", 
+                "50.", 
+                "50.", 
+                "60.", 
+                "60.", 
+                "80.", 
+                "80.", 
+                "100000."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "lidar backscattering ratio", 
+            "standard_name": "backscattering_ratio", 
+            "value": "", 
+            "out_name": "scatratio", 
+            "type": "double", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "standard_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "ptop: ptop sigma: lev ps: ps", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "ptop: ptop sigma: lev_bnds ps: ps", 
+            "bounds_values": "", 
+            "long_name": "sigma coordinate", 
+            "standard_name": "atmosphere_sigma_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "p = ptop + sigma*(ps - ptop)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "1.0", 
+            "axis": "Z"
+        }, 
+        "typepdec": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "primary_deciduous_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "hybrid_height": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "a: lev b: b orog: orog", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "a: lev_bnds b: b_bnds orog: orog", 
+            "bounds_values": "", 
+            "long_name": "hybrid height coordinate", 
+            "standard_name": "atmosphere_hybrid_height_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "m", 
+            "formula": "z = a + b*orog", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "longitude": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "longitude", 
+            "standard_name": "longitude", 
+            "value": "", 
+            "out_name": "lon", 
+            "type": "double", 
+            "units": "degrees_east", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "360.0", 
+            "axis": "X"
+        }, 
+        "effectRadIc": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "Effective Radius of Ice Aerosols", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "effectRadIc", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "p1000": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "1000 hPa", 
+            "standard_name": "air_pressure", 
+            "value": "100000.", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "p500": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "500 hPa", 
+            "standard_name": "air_pressure", 
+            "value": "50000.", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "ocean_double_sigma": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "sigma: sigma depth: depth z1: z1 z2: z2 a: a_coeff href: href k_c: k_c", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "sigma: sigma_bnds depth: depth z1: z1 z2: z2 a: a href: href k_c: k_c", 
+            "bounds_values": "", 
+            "long_name": "ocean double sigma coordinate", 
+            "standard_name": "ocean_double_sigma", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "for k <= k_c:n z(k,j,i)= sigma(k)*f(j,i) n for k > k_c:n z(k,j,i)= f(j,i) + (sigma(k)-1)*(depth(j,i)-f(j,i)) n f(j,i)= 0.5*(z1+ z2) + 0.5*(z1-z2)* tanh(2*a/(z1-z2)*(depth(j,i)-href))", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plevs": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "standard_hybrid_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "p0: p0 a: a b: b ps: ps", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "p0: p0 a: a_bnds b: b_bnds ps: ps", 
+            "bounds_values": "", 
+            "long_name": "hybrid sigma pressure coordinate", 
+            "standard_name": "atmosphere_hybrid_sigma_pressure_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "1", 
+            "formula": "p = a*p0 + b*ps", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "1.0", 
+            "axis": "Z"
+        }, 
+        "p560": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "68000. 44000.", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "56000.0", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }
+    }, 
+    "variable_entry": {
+        "clhcalipso": {
+            "comment": "Percentage cloud cover in layer centred on 220hPa", 
+            "dimensions": "location time1 p220", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "CALIPSO High Level Cloud Fraction", 
+            "standard_name": "cloud_area_fraction_in_atmosphere_layer", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "%", 
+            "out_name": "clhcalipso", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "clmcalipso": {
+            "comment": "Percentage cloud cover in layer centred on 560hPa", 
+            "dimensions": "location time1 p560", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "CALIPSO Mid Level Cloud Fraction", 
+            "standard_name": "cloud_area_fraction_in_atmosphere_layer", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "%", 
+            "out_name": "clmcalipso", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "prc": {
+            "comment": "Convective precipitation at surface; includes both liquid and solid phases.", 
+            "dimensions": "longitude latitude time1", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Convective Precipitation", 
+            "standard_name": "convective_precipitation_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "prc", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "depth_c": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: depth_c", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "ap_bnds": {
+            "units": "Pa", 
+            "long_name": "vertical coordinate formula term: ap(k+1/2)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "ap": {
+            "units": "Pa", 
+            "long_name": "vertical coordinate formula term: ap(k)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "href": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: href", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "orog": {
+            "units": "m", 
+            "long_name": "Surface Altitude", 
+            "type": "real", 
+            "dimensions": "longitude latitude"
+        }, 
+        "zlev": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: zlev(k)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "pr": {
+            "comment": "includes both liquid and solid phases", 
+            "dimensions": "longitude latitude time1", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Precipitation", 
+            "standard_name": "precipitation_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "pr", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "ps": {
+            "units": "Pa", 
+            "long_name": "Surface Air Pressure", 
+            "type": "real", 
+            "dimensions": "longitude latitude time"
+        }, 
+        "cltcalipso": {
+            "comment": "", 
+            "dimensions": "location time1", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "CALIPSO Total Cloud Fraction", 
+            "standard_name": "cloud_area_fraction", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "%", 
+            "out_name": "cltcalipso", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "sigma_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: sigma(k+1/2)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "latitude": {
+            "comment": "", 
+            "dimensions": "location time1", 
+            "positive": "", 
+            "valid_min": "-90.0", 
+            "long_name": "Latitude", 
+            "standard_name": "latitude", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "degrees_north", 
+            "out_name": "latitude", 
+            "type": "real", 
+            "valid_max": "90.0", 
+            "ok_max_mean_abs": ""
+        }, 
+        "clcalipso2": {
+            "comment": "Clouds detected by CALIPSO but below the detectability threshold of CloudSat", 
+            "dimensions": "location alt40 time1", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "CALIPSO Cloud Fraction Undetected by CloudSat", 
+            "standard_name": "cloud_area_fraction_in_atmosphere_layer", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "%", 
+            "out_name": "clcalipso2", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "ptop": {
+            "units": "Pa", 
+            "long_name": "pressure at top of model", 
+            "type": "", 
+            "dimensions": ""
+        }, 
+        "b_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: b(k+1/2)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "cfadDbze94": {
+            "comment": "CFADs (Cloud Frequency Altitude Diagrams) are joint height - radar reflectivity (or lidar scattering ratio) distributions.", 
+            "dimensions": "location alt40 dbze time1", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "CloudSat Radar Reflectivity CFAD", 
+            "standard_name": "histogram_of_equivalent_reflectivity_factor_over_height_above_reference_ellipsoid", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "1.0", 
+            "out_name": "cfadDbze94", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "nsigma": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: nsigma", 
+            "type": "integer", 
+            "dimensions": ""
+        }, 
+        "parasolRefl": {
+            "comment": "Simulated reflectance from PARASOL as seen at the top of the atmosphere for 5 solar zenith angles. Valid only over ocean and for one viewing direction (viewing zenith angle of 30 degrees and relative azimuth angle 320 degrees).", 
+            "dimensions": "location sza5 time1", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "PARASOL Reflectance", 
+            "standard_name": "toa_bidirectional_reflectance", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "1.0", 
+            "out_name": "parasolRefl", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "ztop": {
+            "units": "m", 
+            "long_name": "height of top of model", 
+            "type": "", 
+            "dimensions": ""
+        }, 
+        "cfadLidarsr532": {
+            "comment": "CFADs (Cloud Frequency Altitude Diagrams) are joint height - radar reflectivity (or lidar scattering ratio) distributions.", 
+            "dimensions": "location alt40 scatratio time1", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "CALIPSO Scattering Ratio CFAD", 
+            "standard_name": "histogram_of_backscattering_ratio_over_height_above_reference_ellipsoid", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "1.0", 
+            "out_name": "cfadLidarsr532", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "zlev_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: zlev(k+1/2)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "z1": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: z1", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "z2": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: z2", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "a": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: a(k)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "p0": {
+            "units": "Pa", 
+            "long_name": "vertical coordinate formula term: reference pressure", 
+            "type": "", 
+            "dimensions": ""
+        }, 
+        "b": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: b(k)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "toffset": {
+            "comment": "'this ''offset time'' should be added to the value stored in the ''time dimension'' to get the actual time.  This actual time is the time (UTC) of the corresponding point in the satellite orbit used to extract the model data.'", 
+            "dimensions": "location time1", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Offset Time", 
+            "standard_name": "time", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "day", 
+            "out_name": "toffset", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "longitude": {
+            "comment": "", 
+            "dimensions": "location time1", 
+            "positive": "", 
+            "valid_min": "0.0", 
+            "long_name": "Longitude", 
+            "standard_name": "longitude", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "degrees_east", 
+            "out_name": "longitude", 
+            "type": "real", 
+            "valid_max": "360.0", 
+            "ok_max_mean_abs": ""
+        }, 
+        "clcalipso": {
+            "comment": "Percentage cloud cover at CALIPSO standard heights.", 
+            "dimensions": "location alt40 time1", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "CALIPSO Cloud Area Fraction", 
+            "standard_name": "cloud_area_fraction_in_atmosphere_layer", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "%", 
+            "out_name": "clcalipso", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "depth": {
+            "units": "m", 
+            "long_name": "Sea Floor Depth: formula term: thetao", 
+            "type": "real", 
+            "dimensions": "longitude latitude"
+        }, 
+        "eta": {
+            "units": "m", 
+            "long_name": "Sea Surface Height formula term: thetao", 
+            "type": "real", 
+            "dimensions": "longitude latitude time"
+        }, 
+        "k_c": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: k_c", 
+            "type": "integer", 
+            "dimensions": ""
+        }, 
+        "sigma": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: sigma(k)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "cllcalipso": {
+            "comment": "Percentage cloud cover in layer centred on 840hPa", 
+            "dimensions": "location time1 p840", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "CALIPSO Low Level Cloud Fraction", 
+            "standard_name": "cloud_area_fraction_in_atmosphere_layer", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "%", 
+            "out_name": "cllcalipso", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "a_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: a(k+1/2)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }
+    }
+}
diff --git a/TestTables/CMIP6_cfDay.json b/TestTables/CMIP6_cfDay.json
new file mode 100644
index 0000000..6aacfd6
--- /dev/null
+++ b/TestTables/CMIP6_cfDay.json
@@ -0,0 +1,2873 @@
+{
+    "Header": {
+        "product": "output", 
+        "approx_interval": "1.00000", 
+        "realm": "atmos", 
+        "cmor_version": "3.1", 
+        "Conventions": "CF-1.6 CMIP-6.0", 
+        "frequency": "day", 
+        "table_id": "Table cfDay", 
+        "data_specs_version": "01.beta.29", 
+        "mip_era": "CMIP6", 
+        "generic_levels": "alevel alevhalf", 
+        "missing_value": "1e20", 
+        "table_date": "14 June 2016"
+    }, 
+    "axis_entry": {
+        "typebare": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "bare_ground", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "tau": {
+            "requested": [
+                "0.15", 
+                "0.8", 
+                "2.45", 
+                "6.5", 
+                "16.2", 
+                "41.5", 
+                "100."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "0.0", 
+                "0.3", 
+                "0.3", 
+                "1.3", 
+                "1.3", 
+                "3.6", 
+                "3.6", 
+                "9.4", 
+                "9.4", 
+                "23.0", 
+                "23.0", 
+                "60.0", 
+                "60.0", 
+                "100000."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "cloud optical thickness", 
+            "standard_name": "atmosphere_optical_thickness_due_to_cloud", 
+            "value": "", 
+            "out_name": "tau", 
+            "type": "double", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "olayer100m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "0. 100.", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "50.0", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "100.0", 
+            "axis": "Z"
+        }, 
+        "spectband": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "Spectral Band", 
+            "standard_name": "wave_frequency", 
+            "value": "", 
+            "out_name": "spectband", 
+            "type": "double", 
+            "units": "s-1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "ocean_sigma_z": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "sigma: sigma eta: eta depth: depth depth_c: depth_c nsigma: nsigma zlev: zlev", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "sigma: sigma_bnds eta: eta depth: depth depth_c: depth_c nsigma: nsigma zlev: zlev_bnds", 
+            "bounds_values": "", 
+            "long_name": "ocean sigma over z coordinate", 
+            "standard_name": "ocean_sigma_z", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "for k <= nsigma: z(n,k,j,i) = eta(n,j,i) + sigma(k)*(min(depth_c,depth(j,i))+eta(n,j,i)) ; for k > nsigma: z(n,k,j,i) = zlev(k)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev19": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000.", 
+                "500.", 
+                "100."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "p220": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "44000. 0.0", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "22000.0", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev17": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev10": {
+            "requested": [
+                "100000.", 
+                "85000.", 
+                "70000.", 
+                "50000.", 
+                "25000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "site": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "site index", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "site", 
+            "type": "integer", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "smooth_level": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "a: a b1: b1 b2: b2 ztop: ztop zsurf1: zsurf1 zsurf2: zsurf2", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-200.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "a: a_bnds b1: b1_bnds b2: b2_bnds ztop: ztop zsurf1: zsurf1 zsurf2: zsurf2", 
+            "bounds_values": "", 
+            "long_name": "atmosphere smooth level vertical (SLEVE) coordinate", 
+            "standard_name": "atmosphere_sleve_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "m", 
+            "formula": "z = a*ztop + b1*zsurf1 + b2*zsurf2", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "800000.0", 
+            "axis": "Z"
+        }, 
+        "p840": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "100000. 68000.", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "84000.0", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "ocean_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "sigma: lev eta: eta depth: depth", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "sigma: lev_bnds eta: eta depth: depth", 
+            "bounds_values": "", 
+            "long_name": "ocean sigma coordinate", 
+            "standard_name": "ocean_sigma_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "z(n,k,j,i) = eta(n,j,i) + sigma(k)*(depth(j,i)+eta(n,j,i))", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "0.0", 
+            "axis": "Z"
+        }, 
+        "depth0m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "0.0", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "100.0", 
+            "axis": "Z"
+        }, 
+        "ocean_s": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "s: lev eta: eta depth: depth a: a_coeff b: b_coeff depth_c: depth_c", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "s: lev_bnds eta: eta depth: depth a: a b: b depth_c: depth_c", 
+            "bounds_values": "", 
+            "long_name": "ocean s-coordinate", 
+            "standard_name": "ocean_s_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "z(n,k,j,i) = eta(n,j,i)*(1+s(k)) + depth_c*s(k) + (depth(j,i)-depth_c)*C(k) n where n C(k)=(1-b)*sinh(a*s(k))/sinh(a) +n           b*(tanh(a*(s(k)+0.5))/(2*tanh(0.5*a)) - 0.5)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "0.0", 
+            "axis": "Z"
+        }, 
+        "plev4s": {
+            "requested": [
+                "85000.", 
+                "50000.", 
+                "20000.", 
+                "5000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "typec4pft": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "c4_plant_functional_types", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "plev3h": {
+            "requested": [
+                "10000.", 
+                "1000.", 
+                "100."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "height2m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "up", 
+            "must_have_bounds": "no", 
+            "valid_min": "1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "height", 
+            "standard_name": "height", 
+            "value": "2.0", 
+            "out_name": "height", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "10.0", 
+            "axis": "Z"
+        }, 
+        "time1": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "time", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "plev7h": {
+            "requested": [
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "25000.", 
+                "5000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "sza5": {
+            "requested": [
+                "0.", 
+                "20.", 
+                "40.", 
+                "60.", 
+                "80."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "solar zenith angle", 
+            "standard_name": "solar_zenith_angle", 
+            "value": "", 
+            "out_name": "sza", 
+            "type": "double", 
+            "units": "degree", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "depth_coord": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "ocean depth coordinate", 
+            "standard_name": "depth", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "12000.0", 
+            "axis": "Z"
+        }, 
+        "sdepth1": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "0.0 0.1", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "0.05", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "0.2", 
+            "axis": "Z"
+        }, 
+        "alternate_hybrid_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "ap: ap b: b ps: ps", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "ap: ap_bnds b: b_bnds ps: ps", 
+            "bounds_values": "", 
+            "long_name": "hybrid sigma pressure coordinate", 
+            "standard_name": "atmosphere_hybrid_sigma_pressure_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "1", 
+            "formula": "p = ap + b*ps", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "1.0", 
+            "axis": "Z"
+        }, 
+        "time2": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "time", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "yes", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "time3": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "Diurnal cycle: monthly mean of the diurnal cycle (1 hour steps).", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "oline": {
+            "requested": [
+                "barents_opening", 
+                "bering_strait", 
+                "canadian_archipelago", 
+                "denmark_strait", 
+                "drake_passage", 
+                "english_channel", 
+                "pacific_equatorial_undercurrent", 
+                "faroe_scotland_channel", 
+                "florida_bahamas_strait", 
+                "fram_strait", 
+                "iceland_faroe_channel", 
+                "indonesian_thoughflow", 
+                "mozambique_channel", 
+                "taiwan_luzon_straits", 
+                "windward_passage"
+            ], 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "ocean passage", 
+            "standard_name": "region", 
+            "value": "", 
+            "out_name": "line", 
+            "type": "character", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "plev14": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "25000.", 
+                "15000.", 
+                "10000.", 
+                "5000.", 
+                "2000.", 
+                "1000.", 
+                "500.", 
+                "100."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev8": {
+            "requested": [
+                "100000.", 
+                "85000.", 
+                "70000.", 
+                "50000.", 
+                "25000.", 
+                "10000.", 
+                "5000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "location": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "location index", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "loc", 
+            "type": "integer", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "latitude": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-90.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "latitude", 
+            "standard_name": "latitude", 
+            "value": "", 
+            "out_name": "lat", 
+            "type": "double", 
+            "units": "degrees_north", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "90.0", 
+            "axis": "Y"
+        }, 
+        "plev3": {
+            "requested": [
+                "85000.", 
+                "50000.", 
+                "25000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "basin": {
+            "requested": [
+                "atlantic_arctic_ocean", 
+                "indian_pacific_ocean", 
+                "global_ocean"
+            ], 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "ocean basin", 
+            "standard_name": "region", 
+            "value": "", 
+            "out_name": "basin", 
+            "type": "character", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "p700": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "700 hPa", 
+            "standard_name": "air_pressure", 
+            "value": "70000.", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev7": {
+            "requested": [
+                "90000.", 
+                "74000.", 
+                "62000.", 
+                "50000.", 
+                "37500.", 
+                "24500.", 
+                "9000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "100000.", 
+                "80000.", 
+                "80000.", 
+                "68000.", 
+                "68000.", 
+                "56000.", 
+                "56000.", 
+                "44000.", 
+                "44000.", 
+                "31000.", 
+                "31000.", 
+                "18000.", 
+                "18000.", 
+                " 0."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev4": {
+            "requested": [
+                "92500.", 
+                "85000.", 
+                "50000.", 
+                "25000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev23": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000.", 
+                "700.", 
+                "500.", 
+                "300.", 
+                "200.", 
+                "100.", 
+                "40."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev39": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "17000.", 
+                "15000.", 
+                "13000.", 
+                "11500.", 
+                "10000.", 
+                "9000.", 
+                "8000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1500.", 
+                "1000.", 
+                "700.", 
+                "500.", 
+                "300.", 
+                "200.", 
+                "150.", 
+                "100.", 
+                "70.", 
+                "50.", 
+                "40.", 
+                "30.", 
+                "20.", 
+                "15.", 
+                "10.", 
+                "7.", 
+                "5.", 
+                "3."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "typepever": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "primary_evergreen_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "typesdec": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "secondary_decidous_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "plev27": {
+            "requested": [
+                "100000.", 
+                "97500.", 
+                "95000.", 
+                "92500.", 
+                "90000.", 
+                "87500.", 
+                "85000.", 
+                "82500.", 
+                "80000.", 
+                "77500.", 
+                "75000.", 
+                "70000.", 
+                "65000.", 
+                "60000.", 
+                "55000.", 
+                "50000.", 
+                "45000.", 
+                "40000.", 
+                "35000.", 
+                "30000.", 
+                "25000.", 
+                "22500.", 
+                "20000.", 
+                "17500.", 
+                "15000.", 
+                "12500.", 
+                "10000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "alt40": {
+            "requested": [
+                "240.", 
+                "720.", 
+                "1200.", 
+                "1680.", 
+                "2160.", 
+                "2640.", 
+                "3120.", 
+                "3600.", 
+                "4080.", 
+                "4560.", 
+                "5040.", 
+                "5520.", 
+                "6000.", 
+                "6480.", 
+                "6960.", 
+                "7440.", 
+                "7920.", 
+                "8400.", 
+                "8880.", 
+                "9360.", 
+                "9840.", 
+                "10320.", 
+                "10800.", 
+                "11280.", 
+                "11760.", 
+                "12240.", 
+                "12720.", 
+                "13200.", 
+                "13680.", 
+                "14160.", 
+                "14640.", 
+                "15120.", 
+                "15600.", 
+                "16080.", 
+                "16560.", 
+                "17040.", 
+                "17520.", 
+                "18000.", 
+                "18480.", 
+                "18960."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "0.", 
+                "480.", 
+                "480.", 
+                "960.", 
+                "960.", 
+                "1440.", 
+                "1440.", 
+                "1920.", 
+                "1920.", 
+                "2400.", 
+                "2400.", 
+                "2880.", 
+                "2880.", 
+                "3360.", 
+                "3360.", 
+                "3840.", 
+                "3840.", 
+                "4320.", 
+                "4320.", 
+                "4800.", 
+                "4800.", 
+                "5280.", 
+                "5280.", 
+                "5760.", 
+                "5760.", 
+                "6240.", 
+                "6240.", 
+                "6720.", 
+                "6720.", 
+                "7200.", 
+                "7200.", 
+                "7680.", 
+                "7680.", 
+                "8160.", 
+                "8160.", 
+                "8640.", 
+                "8640.", 
+                "9120.", 
+                "9120.", 
+                "9600.", 
+                "9600.", 
+                "10080.", 
+                "10080.", 
+                "10560.", 
+                "10560.", 
+                "11040.", 
+                "11040.", 
+                "11520.", 
+                "11520.", 
+                "12000.", 
+                "12000.", 
+                "12480.", 
+                "12480.", 
+                "12960.", 
+                "12960.", 
+                "13440.", 
+                "13440.", 
+                "13920.", 
+                "13920.", 
+                "14400.", 
+                "14400.", 
+                "14880.", 
+                "14880.", 
+                "15360.", 
+                "15360.", 
+                "15840.", 
+                "15840.", 
+                "16320.", 
+                "16320.", 
+                "16800.", 
+                "16800.", 
+                "17280.", 
+                "17280.", 
+                "17760.", 
+                "17760.", 
+                "18240.", 
+                "18240.", 
+                "18720.", 
+                "18720.", 
+                "19200."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "altitude", 
+            "standard_name": "altitude", 
+            "value": "", 
+            "out_name": "alt40", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "time": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "time", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "plev7c": {
+            "requested": [
+                "90000.", 
+                "74000.", 
+                "62000.", 
+                "50000.", 
+                "37500.", 
+                "24500.", 
+                "9000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "height10m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "up", 
+            "must_have_bounds": "no", 
+            "valid_min": "1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "height", 
+            "standard_name": "height", 
+            "value": "10.0", 
+            "out_name": "height", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "30.0", 
+            "axis": "Z"
+        }, 
+        "dbze": {
+            "requested": [
+                "-47.5", 
+                "-42.5", 
+                "-37.5", 
+                "-32.5", 
+                "-27.5", 
+                "-22.5", 
+                "-17.5", 
+                "-12.5", 
+                "-7.5", 
+                "-2.5", 
+                "2.5", 
+                "7.5", 
+                "12.5", 
+                "17.5", 
+                "22.5"
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "-50", 
+                "-45", 
+                "-45", 
+                "-40", 
+                "-40", 
+                "-35", 
+                "-35", 
+                "-30", 
+                "-30", 
+                "-25", 
+                "-25", 
+                "-20", 
+                "-20", 
+                "-15", 
+                "-15", 
+                "-10", 
+                "-10", 
+                "-5", 
+                "-5", 
+                "0", 
+                "0", 
+                "5", 
+                "5", 
+                "10", 
+                "10", 
+                "15", 
+                "15", 
+                "20", 
+                "20", 
+                "25."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "CloudSat simulator equivalent radar reflectivity factor", 
+            "standard_name": "equivalent_reflectivity_factor", 
+            "value": "", 
+            "out_name": "dbze", 
+            "type": "double", 
+            "units": "dBZ", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "typesever": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "secondary_evergreen_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "rho": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "density++++?", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "rho", 
+            "type": "double", 
+            "units": "kg m-3", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "depth100m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "80.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "100.0", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "120.0", 
+            "axis": "Z"
+        }, 
+        "effectRadLi": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "Effective Radius of Liquid Aerosols", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "effectRadLi", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "sdepth": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "200.0", 
+            "axis": "Z"
+        }, 
+        "vegtype": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "plant functional type", 
+            "standard_name": "area_type", 
+            "value": "", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "typec3pft": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "c3_plant_functional_types", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "natural_log_pressure": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "p0: p0 lev: lev", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "p0: p0 lev: lev_bnds", 
+            "bounds_values": "", 
+            "long_name": "atmosphere natural log pressure coordinate", 
+            "standard_name": "atmosphere_ln_pressure_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "p = p0 * exp(-lev)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "20.0", 
+            "axis": "Z"
+        }, 
+        "scatratio": {
+            "requested": [
+                "0.005", 
+                "0.605", 
+                "2.1", 
+                "4.", 
+                "6.", 
+                "8.5", 
+                "12.5", 
+                "17.5", 
+                "22.5", 
+                "27.5", 
+                "35.", 
+                "45.", 
+                "55.", 
+                "70.", 
+                "50040."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "0.", 
+                "0.01", 
+                "0.01", 
+                "1.2", 
+                "1.2", 
+                "3.", 
+                "3.", 
+                "5.", 
+                "5.", 
+                "7.", 
+                "7.", 
+                "10.", 
+                "10.", 
+                "15.", 
+                "15.", 
+                "20.", 
+                "20.", 
+                "25.", 
+                "25.", 
+                "30.", 
+                "30.", 
+                "40.", 
+                "40.", 
+                "50.", 
+                "50.", 
+                "60.", 
+                "60.", 
+                "80.", 
+                "80.", 
+                "100000."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "lidar backscattering ratio", 
+            "standard_name": "backscattering_ratio", 
+            "value": "", 
+            "out_name": "scatratio", 
+            "type": "double", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "standard_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "ptop: ptop sigma: lev ps: ps", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "ptop: ptop sigma: lev_bnds ps: ps", 
+            "bounds_values": "", 
+            "long_name": "sigma coordinate", 
+            "standard_name": "atmosphere_sigma_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "p = ptop + sigma*(ps - ptop)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "1.0", 
+            "axis": "Z"
+        }, 
+        "typepdec": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "primary_deciduous_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "hybrid_height": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "a: lev b: b orog: orog", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "a: lev_bnds b: b_bnds orog: orog", 
+            "bounds_values": "", 
+            "long_name": "hybrid height coordinate", 
+            "standard_name": "atmosphere_hybrid_height_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "m", 
+            "formula": "z = a + b*orog", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "longitude": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "longitude", 
+            "standard_name": "longitude", 
+            "value": "", 
+            "out_name": "lon", 
+            "type": "double", 
+            "units": "degrees_east", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "360.0", 
+            "axis": "X"
+        }, 
+        "effectRadIc": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "Effective Radius of Ice Aerosols", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "effectRadIc", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "p1000": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "1000 hPa", 
+            "standard_name": "air_pressure", 
+            "value": "100000.", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "p500": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "500 hPa", 
+            "standard_name": "air_pressure", 
+            "value": "50000.", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "ocean_double_sigma": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "sigma: sigma depth: depth z1: z1 z2: z2 a: a_coeff href: href k_c: k_c", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "sigma: sigma_bnds depth: depth z1: z1 z2: z2 a: a href: href k_c: k_c", 
+            "bounds_values": "", 
+            "long_name": "ocean double sigma coordinate", 
+            "standard_name": "ocean_double_sigma", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "for k <= k_c:n z(k,j,i)= sigma(k)*f(j,i) n for k > k_c:n z(k,j,i)= f(j,i) + (sigma(k)-1)*(depth(j,i)-f(j,i)) n f(j,i)= 0.5*(z1+ z2) + 0.5*(z1-z2)* tanh(2*a/(z1-z2)*(depth(j,i)-href))", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plevs": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "standard_hybrid_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "p0: p0 a: a b: b ps: ps", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "p0: p0 a: a_bnds b: b_bnds ps: ps", 
+            "bounds_values": "", 
+            "long_name": "hybrid sigma pressure coordinate", 
+            "standard_name": "atmosphere_hybrid_sigma_pressure_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "1", 
+            "formula": "p = a*p0 + b*ps", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "1.0", 
+            "axis": "Z"
+        }, 
+        "p560": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "68000. 44000.", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "56000.0", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }
+    }, 
+    "variable_entry": {
+        "rsuscs": {
+            "comment": "Surface upwelling clear-sky shortwave radiation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "valid_min": "", 
+            "long_name": "Surface Upwelling Clear-Sky Shortwave Radiation", 
+            "standard_name": "surface_upwelling_shortwave_flux_in_air_assuming_clear_sky", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "rsuscs", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "clhcalipso": {
+            "comment": "Percentage cloud cover in layer centred on 220hPa", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "CALIPSO High Level Cloud Fraction", 
+            "standard_name": "cloud_area_fraction_in_atmosphere_layer", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "%", 
+            "out_name": "clhcalipso", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "hur": {
+            "comment": "The relative humidity with respect to liquid water for T> 0 C, and with respect to ice for T<0 C.", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Relative Humidity", 
+            "standard_name": "relative_humidity", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "%", 
+            "out_name": "hur", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "cltcalipso": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "CALIPSO Total Cloud Fraction", 
+            "standard_name": "cloud_area_fraction", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "%", 
+            "out_name": "cltcalipso", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "cl": {
+            "comment": "Percentage cloud cover, including both large-scale and convective cloud.", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Cloud Area Fraction in Atmosphere Layer", 
+            "standard_name": "cloud_area_fraction_in_atmosphere_layer", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "%", 
+            "out_name": "cl", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "pctisccp": {
+            "comment": "ISCCP Mean Cloud Top Pressure. Time-means are weighted by the ISCCP Total Cloud Fraction (clitisccp) - see  http://cfmip.metoffice.com/COSP.html", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "ISCCP Mean Cloud Top Pressure", 
+            "standard_name": "air_pressure_at_cloud_top", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "Pa", 
+            "out_name": "pctisccp", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "depth_c": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: depth_c", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "hus": {
+            "comment": "", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Specific Humidity", 
+            "standard_name": "specific_humidity", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "1.0", 
+            "out_name": "hus", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "ap_bnds": {
+            "units": "Pa", 
+            "long_name": "vertical coordinate formula term: ap(k+1/2)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "va": {
+            "comment": "", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Northward Wind", 
+            "standard_name": "northward_wind", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "m s-1", 
+            "out_name": "va", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "ap": {
+            "units": "Pa", 
+            "long_name": "vertical coordinate formula term: ap(k)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "rsutcs": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "valid_min": "", 
+            "long_name": "TOA Outgoing Clear-Sky Shortwave Radiation", 
+            "standard_name": "toa_outgoing_shortwave_flux_assuming_clear_sky", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "rsutcs", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "href": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: href", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "orog": {
+            "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", 
+            "positive": "", 
+            "valid_min": "-700", 
+            "long_name": "Surface Altitude", 
+            "standard_name": "surface_altitude", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "m", 
+            "out_name": "orog", 
+            "type": "real", 
+            "valid_max": "1.00E+04", 
+            "ok_max_mean_abs": ""
+        }, 
+        "rldscs": {
+            "comment": "Surface downwelling clear-sky longwave radiation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "down", 
+            "valid_min": "", 
+            "long_name": "Surface Downwelling Clear-Sky Longwave Radiation", 
+            "standard_name": "surface_downwelling_longwave_flux_in_air_assuming_clear_sky", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "rldscs", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "zlev": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: zlev(k)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "clmcalipso": {
+            "comment": "Percentage cloud cover in layer centred on 560hPa", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "CALIPSO Mid Level Cloud Fraction", 
+            "standard_name": "cloud_area_fraction_in_atmosphere_layer", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "%", 
+            "out_name": "clmcalipso", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "ps": {
+            "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", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Surface Air Pressure", 
+            "standard_name": "surface_air_pressure", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "Pa", 
+            "out_name": "ps", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "prc": {
+            "comment": "Convective precipitation at surface; includes both liquid and solid phases.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Convective Precipitation", 
+            "standard_name": "convective_precipitation_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "prc", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "rlus": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "valid_min": "", 
+            "long_name": "Surface Upwelling Longwave Radiation", 
+            "standard_name": "surface_upwelling_longwave_flux_in_air", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "rlus", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "rlds": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "down", 
+            "valid_min": "", 
+            "long_name": "Surface Downwelling Longwave Radiation", 
+            "standard_name": "surface_downwelling_longwave_flux_in_air", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "rlds", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "wap500": {
+            "comment": "Omega (vertical velocity in pressure coordinates, positive downwards) at 500 hPa level; ", 
+            "dimensions": "longitude latitude time p500", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "omega (=dp/dt)", 
+            "standard_name": "lagrangian_tendency_of_air_pressure", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "Pa s-1", 
+            "out_name": "wap500", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "sigma_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: sigma(k+1/2)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "rsdscs": {
+            "comment": "surface solar irradiance clear sky for UV calculations", 
+            "dimensions": "longitude latitude time", 
+            "positive": "down", 
+            "valid_min": "", 
+            "long_name": "Surface Downwelling Clear-Sky Shortwave Radiation", 
+            "standard_name": "surface_downwelling_shortwave_flux_in_air_assuming_clear_sky", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "rsdscs", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "clw": {
+            "comment": "Includes both large-scale and convective cloud. Calculate as the mass of cloud liquid water in the grid cell divided by the mass of air (including the water in all phases) in the grid cells. Precipitating hydrometeors are included ONLY if the precipitating hydrometeors affect the calculation of radiative transfer in model.", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Mass Fraction of Cloud Liquid Water", 
+            "standard_name": "mass_fraction_of_cloud_liquid_water_in_air", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg kg-1", 
+            "out_name": "clw", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "ptop": {
+            "units": "Pa", 
+            "long_name": "pressure at top of model", 
+            "type": "", 
+            "dimensions": ""
+        }, 
+        "clisccp": {
+            "comment": "Percentage cloud cover in optical depth categories.", 
+            "dimensions": "longitude latitude plev7 tau time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "ISCCP Cloud Area Fraction", 
+            "standard_name": "isccp_cloud_area_fraction", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "%", 
+            "out_name": "clisccp", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "ta": {
+            "comment": "", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Air Temperature", 
+            "standard_name": "air_temperature", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "K", 
+            "out_name": "ta", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "clivi": {
+            "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", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Ice Water Path", 
+            "standard_name": "atmosphere_mass_content_of_cloud_ice", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2", 
+            "out_name": "clivi", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "zg": {
+            "comment": "", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Geopotential Height", 
+            "standard_name": "geopotential_height", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "m", 
+            "out_name": "zg", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "b_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: b(k+1/2)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "phalf": {
+            "comment": "Air pressure on model half-levels", 
+            "dimensions": "longitude latitude alevhalf time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Pressure on Model Half-Levels", 
+            "standard_name": "air_pressure", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "Pa", 
+            "out_name": "phalf", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "cltisccp": {
+            "comment": "Percentage total cloud cover, simulating ISCCP observations.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "ISCCP Total Total Cloud Fraction", 
+            "standard_name": "cloud_area_fraction", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "%", 
+            "out_name": "cltisccp", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "ua": {
+            "comment": "", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Eastward Wind", 
+            "standard_name": "eastward_wind", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "m s-1", 
+            "out_name": "ua", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "nsigma": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: nsigma", 
+            "type": "integer", 
+            "dimensions": ""
+        }, 
+        "rsdt": {
+            "comment": "Shortwave radiation incident at the top of the atmosphere", 
+            "dimensions": "longitude latitude time", 
+            "positive": "down", 
+            "valid_min": "", 
+            "long_name": "TOA Incident Shortwave Radiation", 
+            "standard_name": "toa_incoming_shortwave_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "rsdt", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "pfull": {
+            "comment": "Air pressure on model levels", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Pressure on Model Levels", 
+            "standard_name": "air_pressure", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "Pa", 
+            "out_name": "pfull", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "albisccp": {
+            "comment": "ISCCP Mean Cloud Albedo. Time-means are weighted by the ISCCP Total Cloud Fraction (cltisccp) - see  http://cfmip.metoffice.com/COSP.html", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "ISCCP Mean Cloud Albedo", 
+            "standard_name": "cloud_albedo", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "1.0", 
+            "out_name": "albisccp", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "parasolRefl": {
+            "comment": "Simulated reflectance from PARASOL as seen at the top of the atmosphere for 5 solar zenith angles. Valid only over ocean and for one viewing direction (viewing zenith angle of 30 degrees and relative azimuth angle 320 degrees).", 
+            "dimensions": "longitude latitude sza5 time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "PARASOL Reflectance", 
+            "standard_name": "toa_bidirectional_reflectance", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "1.0", 
+            "out_name": "parasolRefl", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "rsds": {
+            "comment": "surface solar irradiance for UV calculations", 
+            "dimensions": "longitude latitude time", 
+            "positive": "down", 
+            "valid_min": "", 
+            "long_name": "Surface Downwelling Shortwave Radiation", 
+            "standard_name": "surface_downwelling_shortwave_flux_in_air", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "rsds", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "ztop": {
+            "units": "m", 
+            "long_name": "height of top of model", 
+            "type": "", 
+            "dimensions": ""
+        }, 
+        "zlev_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: zlev(k+1/2)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "z1": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: z1", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "z2": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: z2", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "cli": {
+            "comment": "Includes both large-scale and convective cloud. This is calculated as the mass of cloud ice in the grid cell divided by the mass of air (including the water in all phases) in the grid cell. It includes precipitating hydrometeors ONLY if the precipitating hydrometeors affect the calculation of radiative transfer in model.", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Mass Fraction of Cloud Ice", 
+            "standard_name": "mass_fraction_of_cloud_ice_in_air", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg kg-1", 
+            "out_name": "cli", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "a": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: a(k)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "p0": {
+            "units": "Pa", 
+            "long_name": "vertical coordinate formula term: reference pressure", 
+            "type": "", 
+            "dimensions": ""
+        }, 
+        "b": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: b(k)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "ta700": {
+            "comment": "Air temperature at 700hPa", 
+            "dimensions": "longitude latitude time p700", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Air Temperature", 
+            "standard_name": "air_temperature", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "K", 
+            "out_name": "ta700", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "mc": {
+            "comment": "The net mass flux should represent the difference between the updraft and downdraft components.  The flux is computed as the mass divided by the area of the grid cell.", 
+            "dimensions": "longitude latitude alevhalf time", 
+            "positive": "up", 
+            "valid_min": "", 
+            "long_name": "Convective Mass Flux", 
+            "standard_name": "atmosphere_net_upward_convective_mass_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "mc", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "rlutcs": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "valid_min": "", 
+            "long_name": "TOA Outgoing Clear-Sky Longwave Radiation", 
+            "standard_name": "toa_outgoing_longwave_flux_assuming_clear_sky", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "rlutcs", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "rlut": {
+            "comment": "at the top of the atmosphere (to be compared with satellite measurements)", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "valid_min": "", 
+            "long_name": "TOA Outgoing Longwave Radiation", 
+            "standard_name": "toa_outgoing_longwave_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "rlut", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "cct": {
+            "comment": "Where convective cloud is present in the grid cell, the instantaneous cloud top altitude should be that of the top of the highest level containing convective cloud. Missing data should be reported in the absence of convective cloud. The time mean should be calculated from these quantities averaging over occasions when convective cloud is present only, and should contain missing data for occasions when no convective cloud is present during the meaning period.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Air Pressure at Convective Cloud Top", 
+            "standard_name": "air_pressure_at_convective_cloud_top", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "Pa", 
+            "out_name": "cct", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "wap": {
+            "comment": "Omega (vertical velocity in pressure coordinates, positive downwards)", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "omega (=dp/dt)", 
+            "standard_name": "lagrangian_tendency_of_air_pressure", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "Pa s-1", 
+            "out_name": "wap", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "clcalipso": {
+            "comment": "Percentage cloud cover at CALIPSO standard heights.", 
+            "dimensions": "longitude latitude alt40 time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "CALIPSO Cloud Fraction", 
+            "standard_name": "cloud_area_fraction_in_atmosphere_layer", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "%", 
+            "out_name": "clcalipso", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "depth": {
+            "units": "m", 
+            "long_name": "Sea Floor Depth: formula term: thetao", 
+            "type": "real", 
+            "dimensions": "longitude latitude"
+        }, 
+        "eta": {
+            "units": "m", 
+            "long_name": "Sea Surface Height formula term: thetao", 
+            "type": "real", 
+            "dimensions": "longitude latitude time"
+        }, 
+        "rsut": {
+            "comment": "at the top of the atmosphere", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "valid_min": "", 
+            "long_name": "TOA Outgoing Shortwave Radiation", 
+            "standard_name": "toa_outgoing_shortwave_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "rsut", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "clwvi": {
+            "comment": "Mass of condensed (liquid + ice) water in the column divided by the area of the column (not just the area of the cloudy portion of the column). Includes precipitating hydrometeors ONLY if the precipitating hydrometeors affect the calculation of radiative transfer in model.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Condensed Water Path", 
+            "standard_name": "atmosphere_cloud_condensed_water_content", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2", 
+            "out_name": "clwvi", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "rsus": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "valid_min": "", 
+            "long_name": "Surface Upwelling Shortwave Radiation", 
+            "standard_name": "surface_upwelling_shortwave_flux_in_air", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "rsus", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "k_c": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: k_c", 
+            "type": "integer", 
+            "dimensions": ""
+        }, 
+        "ccb": {
+            "comment": "Where convective cloud is present in the grid cell, the instantaneous cloud base altitude should be that of the bottom of the lowest level containing convective cloud. Missing data should be reported in the absence of convective cloud. The time mean should be calculated from these quantities averaging over occasions when convective cloud is present only, and should contain missing data for occasions when no convective cloud is present during the meaning period. ", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Air Pressure at Convective Cloud Base", 
+            "standard_name": "air_pressure_at_convective_cloud_base", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "Pa", 
+            "out_name": "ccb", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "sigma": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: sigma(k)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "cllcalipso": {
+            "comment": "Percentage cloud cover in layer centred on 840hPa", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "CALIPSO Low Level Cloud Fraction", 
+            "standard_name": "cloud_area_fraction_in_atmosphere_layer", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "%", 
+            "out_name": "cllcalipso", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "a_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: a(k+1/2)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }
+    }
+}
diff --git a/TestTables/CMIP6_cfMon.json b/TestTables/CMIP6_cfMon.json
new file mode 100644
index 0000000..b872697
--- /dev/null
+++ b/TestTables/CMIP6_cfMon.json
@@ -0,0 +1,3808 @@
+{
+    "Header": {
+        "product": "output", 
+        "approx_interval": "30.00000", 
+        "realm": "atmos", 
+        "cmor_version": "3.1", 
+        "Conventions": "CF-1.6 CMIP-6.0", 
+        "frequency": "mon", 
+        "table_id": "Table cfMon", 
+        "data_specs_version": "01.beta.29", 
+        "mip_era": "CMIP6", 
+        "generic_levels": "alevel alevhalf", 
+        "missing_value": "1e20", 
+        "table_date": "14 June 2016"
+    }, 
+    "axis_entry": {
+        "typebare": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "bare_ground", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "tau": {
+            "requested": [
+                "0.15", 
+                "0.8", 
+                "2.45", 
+                "6.5", 
+                "16.2", 
+                "41.5", 
+                "100."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "0.0", 
+                "0.3", 
+                "0.3", 
+                "1.3", 
+                "1.3", 
+                "3.6", 
+                "3.6", 
+                "9.4", 
+                "9.4", 
+                "23.0", 
+                "23.0", 
+                "60.0", 
+                "60.0", 
+                "100000."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "cloud optical thickness", 
+            "standard_name": "atmosphere_optical_thickness_due_to_cloud", 
+            "value": "", 
+            "out_name": "tau", 
+            "type": "double", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "olayer100m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "0. 100.", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "50.0", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "100.0", 
+            "axis": "Z"
+        }, 
+        "spectband": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "Spectral Band", 
+            "standard_name": "wave_frequency", 
+            "value": "", 
+            "out_name": "spectband", 
+            "type": "double", 
+            "units": "s-1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "ocean_sigma_z": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "sigma: sigma eta: eta depth: depth depth_c: depth_c nsigma: nsigma zlev: zlev", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "sigma: sigma_bnds eta: eta depth: depth depth_c: depth_c nsigma: nsigma zlev: zlev_bnds", 
+            "bounds_values": "", 
+            "long_name": "ocean sigma over z coordinate", 
+            "standard_name": "ocean_sigma_z", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "for k <= nsigma: z(n,k,j,i) = eta(n,j,i) + sigma(k)*(min(depth_c,depth(j,i))+eta(n,j,i)) ; for k > nsigma: z(n,k,j,i) = zlev(k)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev19": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000.", 
+                "500.", 
+                "100."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "p220": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "44000. 0.0", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "22000.0", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev17": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev10": {
+            "requested": [
+                "100000.", 
+                "85000.", 
+                "70000.", 
+                "50000.", 
+                "25000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "site": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "site index", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "site", 
+            "type": "integer", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "smooth_level": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "a: a b1: b1 b2: b2 ztop: ztop zsurf1: zsurf1 zsurf2: zsurf2", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-200.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "a: a_bnds b1: b1_bnds b2: b2_bnds ztop: ztop zsurf1: zsurf1 zsurf2: zsurf2", 
+            "bounds_values": "", 
+            "long_name": "atmosphere smooth level vertical (SLEVE) coordinate", 
+            "standard_name": "atmosphere_sleve_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "m", 
+            "formula": "z = a*ztop + b1*zsurf1 + b2*zsurf2", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "800000.0", 
+            "axis": "Z"
+        }, 
+        "p840": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "100000. 68000.", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "84000.0", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "ocean_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "sigma: lev eta: eta depth: depth", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "sigma: lev_bnds eta: eta depth: depth", 
+            "bounds_values": "", 
+            "long_name": "ocean sigma coordinate", 
+            "standard_name": "ocean_sigma_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "z(n,k,j,i) = eta(n,j,i) + sigma(k)*(depth(j,i)+eta(n,j,i))", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "0.0", 
+            "axis": "Z"
+        }, 
+        "depth0m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "0.0", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "100.0", 
+            "axis": "Z"
+        }, 
+        "ocean_s": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "s: lev eta: eta depth: depth a: a_coeff b: b_coeff depth_c: depth_c", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "s: lev_bnds eta: eta depth: depth a: a b: b depth_c: depth_c", 
+            "bounds_values": "", 
+            "long_name": "ocean s-coordinate", 
+            "standard_name": "ocean_s_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "z(n,k,j,i) = eta(n,j,i)*(1+s(k)) + depth_c*s(k) + (depth(j,i)-depth_c)*C(k) n where n C(k)=(1-b)*sinh(a*s(k))/sinh(a) +n           b*(tanh(a*(s(k)+0.5))/(2*tanh(0.5*a)) - 0.5)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "0.0", 
+            "axis": "Z"
+        }, 
+        "plev4s": {
+            "requested": [
+                "85000.", 
+                "50000.", 
+                "20000.", 
+                "5000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "typec4pft": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "c4_plant_functional_types", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "plev3h": {
+            "requested": [
+                "10000.", 
+                "1000.", 
+                "100."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "height2m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "up", 
+            "must_have_bounds": "no", 
+            "valid_min": "1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "height", 
+            "standard_name": "height", 
+            "value": "2.0", 
+            "out_name": "height", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "10.0", 
+            "axis": "Z"
+        }, 
+        "time1": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "time", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "plev7h": {
+            "requested": [
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "25000.", 
+                "5000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "sza5": {
+            "requested": [
+                "0.", 
+                "20.", 
+                "40.", 
+                "60.", 
+                "80."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "solar zenith angle", 
+            "standard_name": "solar_zenith_angle", 
+            "value": "", 
+            "out_name": "sza", 
+            "type": "double", 
+            "units": "degree", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "depth_coord": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "ocean depth coordinate", 
+            "standard_name": "depth", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "12000.0", 
+            "axis": "Z"
+        }, 
+        "sdepth1": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "0.0 0.1", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "0.05", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "0.2", 
+            "axis": "Z"
+        }, 
+        "alternate_hybrid_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "ap: ap b: b ps: ps", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "ap: ap_bnds b: b_bnds ps: ps", 
+            "bounds_values": "", 
+            "long_name": "hybrid sigma pressure coordinate", 
+            "standard_name": "atmosphere_hybrid_sigma_pressure_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "1", 
+            "formula": "p = ap + b*ps", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "1.0", 
+            "axis": "Z"
+        }, 
+        "time2": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "time", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "yes", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "time3": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "Diurnal cycle: monthly mean of the diurnal cycle (1 hour steps).", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "oline": {
+            "requested": [
+                "barents_opening", 
+                "bering_strait", 
+                "canadian_archipelago", 
+                "denmark_strait", 
+                "drake_passage", 
+                "english_channel", 
+                "pacific_equatorial_undercurrent", 
+                "faroe_scotland_channel", 
+                "florida_bahamas_strait", 
+                "fram_strait", 
+                "iceland_faroe_channel", 
+                "indonesian_thoughflow", 
+                "mozambique_channel", 
+                "taiwan_luzon_straits", 
+                "windward_passage"
+            ], 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "ocean passage", 
+            "standard_name": "region", 
+            "value": "", 
+            "out_name": "line", 
+            "type": "character", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "plev14": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "25000.", 
+                "15000.", 
+                "10000.", 
+                "5000.", 
+                "2000.", 
+                "1000.", 
+                "500.", 
+                "100."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev8": {
+            "requested": [
+                "100000.", 
+                "85000.", 
+                "70000.", 
+                "50000.", 
+                "25000.", 
+                "10000.", 
+                "5000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "location": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "location index", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "loc", 
+            "type": "integer", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "latitude": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-90.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "latitude", 
+            "standard_name": "latitude", 
+            "value": "", 
+            "out_name": "lat", 
+            "type": "double", 
+            "units": "degrees_north", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "90.0", 
+            "axis": "Y"
+        }, 
+        "plev3": {
+            "requested": [
+                "85000.", 
+                "50000.", 
+                "25000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "basin": {
+            "requested": [
+                "atlantic_arctic_ocean", 
+                "indian_pacific_ocean", 
+                "global_ocean"
+            ], 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "ocean basin", 
+            "standard_name": "region", 
+            "value": "", 
+            "out_name": "basin", 
+            "type": "character", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "p700": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "700 hPa", 
+            "standard_name": "air_pressure", 
+            "value": "70000.", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev7": {
+            "requested": [
+                "90000.", 
+                "74000.", 
+                "62000.", 
+                "50000.", 
+                "37500.", 
+                "24500.", 
+                "9000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "100000.", 
+                "80000.", 
+                "80000.", 
+                "68000.", 
+                "68000.", 
+                "56000.", 
+                "56000.", 
+                "44000.", 
+                "44000.", 
+                "31000.", 
+                "31000.", 
+                "18000.", 
+                "18000.", 
+                " 0."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev4": {
+            "requested": [
+                "92500.", 
+                "85000.", 
+                "50000.", 
+                "25000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev23": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000.", 
+                "700.", 
+                "500.", 
+                "300.", 
+                "200.", 
+                "100.", 
+                "40."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev39": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "17000.", 
+                "15000.", 
+                "13000.", 
+                "11500.", 
+                "10000.", 
+                "9000.", 
+                "8000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1500.", 
+                "1000.", 
+                "700.", 
+                "500.", 
+                "300.", 
+                "200.", 
+                "150.", 
+                "100.", 
+                "70.", 
+                "50.", 
+                "40.", 
+                "30.", 
+                "20.", 
+                "15.", 
+                "10.", 
+                "7.", 
+                "5.", 
+                "3."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "typepever": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "primary_evergreen_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "typesdec": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "secondary_decidous_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "plev27": {
+            "requested": [
+                "100000.", 
+                "97500.", 
+                "95000.", 
+                "92500.", 
+                "90000.", 
+                "87500.", 
+                "85000.", 
+                "82500.", 
+                "80000.", 
+                "77500.", 
+                "75000.", 
+                "70000.", 
+                "65000.", 
+                "60000.", 
+                "55000.", 
+                "50000.", 
+                "45000.", 
+                "40000.", 
+                "35000.", 
+                "30000.", 
+                "25000.", 
+                "22500.", 
+                "20000.", 
+                "17500.", 
+                "15000.", 
+                "12500.", 
+                "10000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "alt40": {
+            "requested": [
+                "240.", 
+                "720.", 
+                "1200.", 
+                "1680.", 
+                "2160.", 
+                "2640.", 
+                "3120.", 
+                "3600.", 
+                "4080.", 
+                "4560.", 
+                "5040.", 
+                "5520.", 
+                "6000.", 
+                "6480.", 
+                "6960.", 
+                "7440.", 
+                "7920.", 
+                "8400.", 
+                "8880.", 
+                "9360.", 
+                "9840.", 
+                "10320.", 
+                "10800.", 
+                "11280.", 
+                "11760.", 
+                "12240.", 
+                "12720.", 
+                "13200.", 
+                "13680.", 
+                "14160.", 
+                "14640.", 
+                "15120.", 
+                "15600.", 
+                "16080.", 
+                "16560.", 
+                "17040.", 
+                "17520.", 
+                "18000.", 
+                "18480.", 
+                "18960."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "0.", 
+                "480.", 
+                "480.", 
+                "960.", 
+                "960.", 
+                "1440.", 
+                "1440.", 
+                "1920.", 
+                "1920.", 
+                "2400.", 
+                "2400.", 
+                "2880.", 
+                "2880.", 
+                "3360.", 
+                "3360.", 
+                "3840.", 
+                "3840.", 
+                "4320.", 
+                "4320.", 
+                "4800.", 
+                "4800.", 
+                "5280.", 
+                "5280.", 
+                "5760.", 
+                "5760.", 
+                "6240.", 
+                "6240.", 
+                "6720.", 
+                "6720.", 
+                "7200.", 
+                "7200.", 
+                "7680.", 
+                "7680.", 
+                "8160.", 
+                "8160.", 
+                "8640.", 
+                "8640.", 
+                "9120.", 
+                "9120.", 
+                "9600.", 
+                "9600.", 
+                "10080.", 
+                "10080.", 
+                "10560.", 
+                "10560.", 
+                "11040.", 
+                "11040.", 
+                "11520.", 
+                "11520.", 
+                "12000.", 
+                "12000.", 
+                "12480.", 
+                "12480.", 
+                "12960.", 
+                "12960.", 
+                "13440.", 
+                "13440.", 
+                "13920.", 
+                "13920.", 
+                "14400.", 
+                "14400.", 
+                "14880.", 
+                "14880.", 
+                "15360.", 
+                "15360.", 
+                "15840.", 
+                "15840.", 
+                "16320.", 
+                "16320.", 
+                "16800.", 
+                "16800.", 
+                "17280.", 
+                "17280.", 
+                "17760.", 
+                "17760.", 
+                "18240.", 
+                "18240.", 
+                "18720.", 
+                "18720.", 
+                "19200."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "altitude", 
+            "standard_name": "altitude", 
+            "value": "", 
+            "out_name": "alt40", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "time": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "time", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "plev7c": {
+            "requested": [
+                "90000.", 
+                "74000.", 
+                "62000.", 
+                "50000.", 
+                "37500.", 
+                "24500.", 
+                "9000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "height10m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "up", 
+            "must_have_bounds": "no", 
+            "valid_min": "1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "height", 
+            "standard_name": "height", 
+            "value": "10.0", 
+            "out_name": "height", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "30.0", 
+            "axis": "Z"
+        }, 
+        "dbze": {
+            "requested": [
+                "-47.5", 
+                "-42.5", 
+                "-37.5", 
+                "-32.5", 
+                "-27.5", 
+                "-22.5", 
+                "-17.5", 
+                "-12.5", 
+                "-7.5", 
+                "-2.5", 
+                "2.5", 
+                "7.5", 
+                "12.5", 
+                "17.5", 
+                "22.5"
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "-50", 
+                "-45", 
+                "-45", 
+                "-40", 
+                "-40", 
+                "-35", 
+                "-35", 
+                "-30", 
+                "-30", 
+                "-25", 
+                "-25", 
+                "-20", 
+                "-20", 
+                "-15", 
+                "-15", 
+                "-10", 
+                "-10", 
+                "-5", 
+                "-5", 
+                "0", 
+                "0", 
+                "5", 
+                "5", 
+                "10", 
+                "10", 
+                "15", 
+                "15", 
+                "20", 
+                "20", 
+                "25."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "CloudSat simulator equivalent radar reflectivity factor", 
+            "standard_name": "equivalent_reflectivity_factor", 
+            "value": "", 
+            "out_name": "dbze", 
+            "type": "double", 
+            "units": "dBZ", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "typesever": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "secondary_evergreen_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "rho": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "density++++?", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "rho", 
+            "type": "double", 
+            "units": "kg m-3", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "depth100m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "80.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "100.0", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "120.0", 
+            "axis": "Z"
+        }, 
+        "effectRadLi": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "Effective Radius of Liquid Aerosols", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "effectRadLi", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "sdepth": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "200.0", 
+            "axis": "Z"
+        }, 
+        "vegtype": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "plant functional type", 
+            "standard_name": "area_type", 
+            "value": "", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "typec3pft": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "c3_plant_functional_types", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "natural_log_pressure": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "p0: p0 lev: lev", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "p0: p0 lev: lev_bnds", 
+            "bounds_values": "", 
+            "long_name": "atmosphere natural log pressure coordinate", 
+            "standard_name": "atmosphere_ln_pressure_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "p = p0 * exp(-lev)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "20.0", 
+            "axis": "Z"
+        }, 
+        "scatratio": {
+            "requested": [
+                "0.005", 
+                "0.605", 
+                "2.1", 
+                "4.", 
+                "6.", 
+                "8.5", 
+                "12.5", 
+                "17.5", 
+                "22.5", 
+                "27.5", 
+                "35.", 
+                "45.", 
+                "55.", 
+                "70.", 
+                "50040."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "0.", 
+                "0.01", 
+                "0.01", 
+                "1.2", 
+                "1.2", 
+                "3.", 
+                "3.", 
+                "5.", 
+                "5.", 
+                "7.", 
+                "7.", 
+                "10.", 
+                "10.", 
+                "15.", 
+                "15.", 
+                "20.", 
+                "20.", 
+                "25.", 
+                "25.", 
+                "30.", 
+                "30.", 
+                "40.", 
+                "40.", 
+                "50.", 
+                "50.", 
+                "60.", 
+                "60.", 
+                "80.", 
+                "80.", 
+                "100000."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "lidar backscattering ratio", 
+            "standard_name": "backscattering_ratio", 
+            "value": "", 
+            "out_name": "scatratio", 
+            "type": "double", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "standard_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "ptop: ptop sigma: lev ps: ps", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "ptop: ptop sigma: lev_bnds ps: ps", 
+            "bounds_values": "", 
+            "long_name": "sigma coordinate", 
+            "standard_name": "atmosphere_sigma_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "p = ptop + sigma*(ps - ptop)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "1.0", 
+            "axis": "Z"
+        }, 
+        "typepdec": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "primary_deciduous_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "hybrid_height": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "a: lev b: b orog: orog", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "a: lev_bnds b: b_bnds orog: orog", 
+            "bounds_values": "", 
+            "long_name": "hybrid height coordinate", 
+            "standard_name": "atmosphere_hybrid_height_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "m", 
+            "formula": "z = a + b*orog", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "longitude": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "longitude", 
+            "standard_name": "longitude", 
+            "value": "", 
+            "out_name": "lon", 
+            "type": "double", 
+            "units": "degrees_east", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "360.0", 
+            "axis": "X"
+        }, 
+        "effectRadIc": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "Effective Radius of Ice Aerosols", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "effectRadIc", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "p1000": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "1000 hPa", 
+            "standard_name": "air_pressure", 
+            "value": "100000.", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "p500": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "500 hPa", 
+            "standard_name": "air_pressure", 
+            "value": "50000.", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "ocean_double_sigma": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "sigma: sigma depth: depth z1: z1 z2: z2 a: a_coeff href: href k_c: k_c", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "sigma: sigma_bnds depth: depth z1: z1 z2: z2 a: a href: href k_c: k_c", 
+            "bounds_values": "", 
+            "long_name": "ocean double sigma coordinate", 
+            "standard_name": "ocean_double_sigma", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "for k <= k_c:n z(k,j,i)= sigma(k)*f(j,i) n for k > k_c:n z(k,j,i)= f(j,i) + (sigma(k)-1)*(depth(j,i)-f(j,i)) n f(j,i)= 0.5*(z1+ z2) + 0.5*(z1-z2)* tanh(2*a/(z1-z2)*(depth(j,i)-href))", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plevs": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "standard_hybrid_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "p0: p0 a: a b: b ps: ps", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "p0: p0 a: a_bnds b: b_bnds ps: ps", 
+            "bounds_values": "", 
+            "long_name": "hybrid sigma pressure coordinate", 
+            "standard_name": "atmosphere_hybrid_sigma_pressure_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "1", 
+            "formula": "p = a*p0 + b*ps", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "1.0", 
+            "axis": "Z"
+        }, 
+        "p560": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "68000. 44000.", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "56000.0", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }
+    }, 
+    "variable_entry": {
+        "rlutcs4co2": {
+            "comment": "Top-of-atmosphere outgoing clear-sky longwave radiation calculated using carbon dioxide concentrations increased fourfold", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "valid_min": "", 
+            "long_name": "TOA Outgoing Clear-Sky Longwave Radiation 4XCO2 Atmosphere", 
+            "standard_name": "toa_outgoing_longwave_flux_assuming_clear_sky", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "rlutcs4co2", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "depth_c": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: depth_c", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "parasolRefl": {
+            "comment": "Simulated reflectance from PARASOL as seen at the top of the atmosphere for 5 solar zenith angles. Valid only over ocean and for one viewing direction (viewing zenith angle of 30 degrees and relative azimuth angle 320 degrees).", 
+            "dimensions": "longitude latitude sza5 time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "PARASOL Reflectance", 
+            "standard_name": "toa_bidirectional_reflectance", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "1.0", 
+            "out_name": "parasolRefl", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "rlucs4co2": {
+            "comment": "Upwelling clear-sky longwave radiation calculated using carbon dioxide concentrations increased fourfold (includes the fluxes at the surface and TOA)", 
+            "dimensions": "longitude latitude alevhalf time", 
+            "positive": "up", 
+            "valid_min": "", 
+            "long_name": "Upwelling Clear-Sky Longwave Radiation 4XCO2 Atmosphere", 
+            "standard_name": "upwelling_longwave_flux_in_air_assuming_clear_sky", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "rlucs4co2", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "tnsclihencl": {
+            "comment": "", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Tendency of Mass Fraction of Stratiform Cloud Ice due to Heterogeneous Nucleation From Cloud Liquid", 
+            "standard_name": "tendency_of_mass_fraction_of_stratiform_cloud_ice_in_air_due_to_heterogeneous_nucleation_from_cloud_liquid_water", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "s-1", 
+            "out_name": "tnsclihencl", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "tnhus": {
+            "comment": "Tendency of Specific Humidity", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Tendency of Specific Humidity", 
+            "standard_name": "tendency_of_specific_humidity", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "s-1", 
+            "out_name": "tnhus", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "tnsclids": {
+            "comment": "", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Tendency of Mass Fraction of Stratiform Cloud Ice due to Deposition and Sublimation", 
+            "standard_name": "tendency_of_mass_fraction_of_stratiform_cloud_ice_in_air_due_to_deposition_and_sublimation", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "s-1", 
+            "out_name": "tnsclids", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "clc": {
+            "comment": "Include only convective cloud.", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Convective Cloud Area Fraction", 
+            "standard_name": "convective_cloud_area_fraction_in_atmosphere_layer", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "%", 
+            "out_name": "clc", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "tnsclia": {
+            "comment": "", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Tendency of Mass Fraction of Stratiform Cloud Ice due to Advection", 
+            "standard_name": "tendency_of_mass_fraction_of_stratiform_cloud_ice_in_air_due_to_advection", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "s-1", 
+            "out_name": "tnsclia", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "cls": {
+            "comment": "", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Stratiform Cloud Area Fraction", 
+            "standard_name": "stratiform_cloud_area_fraction_in_atmosphere_layer", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "%", 
+            "out_name": "cls", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "tnsclimr": {
+            "comment": "", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Tendency of Mass Fraction of Stratiform Cloud Ice due to Melting to Rain", 
+            "standard_name": "tendency_of_mass_fraction_of_stratiform_cloud_ice_in_air_due_to_melting_to_rain", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "s-1", 
+            "out_name": "tnsclimr", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "tnsclibl": {
+            "comment": "", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Tendency of Mass Fraction of Stratiform Cloud Ice In Air Due To Boundary Layer Mixing", 
+            "standard_name": "tendency_of_mass_fraction_of_stratiform_cloud_ice_in_air_due_to_boundary_layer_mixing", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "s-1", 
+            "out_name": "tnsclibl", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "nsigma": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: nsigma", 
+            "type": "integer", 
+            "dimensions": ""
+        }, 
+        "b": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: b(k)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "rlucs": {
+            "comment": "Upwelling clear-sky rongwave radiation  (includes the fluxes at the surface and TOA)", 
+            "dimensions": "longitude latitude alevhalf time", 
+            "positive": "up", 
+            "valid_min": "", 
+            "long_name": "Upwelling Clear-Sky Longwave Radiation", 
+            "standard_name": "upwelling_longwave_flux_in_air_assuming_clear_sky", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "rlucs", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "a_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: a(k+1/2)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "tnsclihon": {
+            "comment": "", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Tendency of Mass Fraction of Stratiform Cloud Ice due to Homogeneous Nucleation", 
+            "standard_name": "tendency_of_mass_fraction_of_stratiform_cloud_ice_in_air_due_to_homogeneous_nucleation", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "s-1", 
+            "out_name": "tnsclihon", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "rsucs": {
+            "comment": "Upwelling clear-sky shortwave radiation  (includes the fluxes at the surface and TOA)", 
+            "dimensions": "longitude latitude alevhalf time", 
+            "positive": "up", 
+            "valid_min": "", 
+            "long_name": "Upwelling Clear-Sky Shortwave Radiation", 
+            "standard_name": "upwelling_shortwave_flux_in_air_assuming_clear_sky", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "rsucs", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "tnsclwar": {
+            "comment": "", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Tendency of Mass Fraction of Stratiform Cloud Liquid Water due to Accretion to Rain", 
+            "standard_name": "tendency_of_mass_fraction_of_stratiform_cloud_liquid_water_in_air_due_to_accretion_to_rain", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "s-1", 
+            "out_name": "tnsclwar", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "tnsclwas": {
+            "comment": "", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Tendency of Mass Fraction of Stratiform Cloud Liquid Water due to Accretion to Snow", 
+            "standard_name": "tendency_of_mass_fraction_of_stratiform_cloud_liquid_water_in_air_due_to_accretion_to_snow", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "s-1", 
+            "out_name": "tnsclwas", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "tnsclwmi": {
+            "comment": "", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Tendency of Mass Fraction of Stratiform Cloud Liquid Water due to Melting From Cloud Ice", 
+            "standard_name": "tendency_of_mass_fraction_of_stratiform_cloud_liquid_water_in_air_due_to_melting_from_cloud_ice", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "s-1", 
+            "out_name": "tnsclwmi", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "tntscpbl": {
+            "comment": "Tendency of Air Temperature Due to Stratiform Cloud and Precipitation and Boundary Layer Mixing (to be specified only in  models which do not separate cloud, precipitation and boundary layer terms.  Includes all boundary layer terms including diffusive ones.)", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Tendency of Air Temperature Due to Stratiform Cloud and Precipitation and Boundary Layer Mixing", 
+            "standard_name": "tendency_of_air_temperature_due_to_stratiform_cloud_and_precipitation_and_boundary_layer_mixing", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "K s-1", 
+            "out_name": "tntscpbl", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "tnsclias": {
+            "comment": "", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Tendency of Mass Fraction of Stratiform Cloud Ice due to Accretion to Snow", 
+            "standard_name": "tendency_of_mass_fraction_of_stratiform_cloud_ice_in_air_due_to_accretion_to_snow", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "s-1", 
+            "out_name": "tnsclias", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "tnhusmp": {
+            "comment": "Tendency of specific humidity due to model physics. This includes sources and sinks from parametrized moist physics (e.g. convection, boundary layer, stratiform condensation/evaporation, etc.) and excludes sources and sinks from resolved dynamics or from horizontal or vertical numerical diffusion not associated with model physicsl.  For example any diffusive mixing by the boundary layer scheme would be included.", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Tendency of Specific Humidity due to Model Physics", 
+            "standard_name": "tendency_of_specific_humidity_due_to_model_physics", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "s-1", 
+            "out_name": "tnhusmp", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "orog": {
+            "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", 
+            "positive": "", 
+            "valid_min": "-700", 
+            "long_name": "Surface Altitude", 
+            "standard_name": "surface_altitude", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "m", 
+            "out_name": "orog", 
+            "type": "real", 
+            "valid_max": "1.00E+04", 
+            "ok_max_mean_abs": ""
+        }, 
+        "tnsclwac": {
+            "comment": "", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Tendency of Mass Fraction of Stratiform Cloud Liquid Water due to Autoconversion", 
+            "standard_name": "tendency_of_mass_fraction_of_stratiform_cloud_liquid_water_in_air_due_to_autoconversion", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "s-1", 
+            "out_name": "tnsclwac", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "tnsclwri": {
+            "comment": "", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Tendency of Mass Fraction of Stratiform Cloud Liquid Water due to Riming", 
+            "standard_name": "tendency_of_mass_fraction_of_stratiform_cloud_liquid_water_in_air_due_to_riming", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "s-1", 
+            "out_name": "tnsclwri", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "rsdcs4co2": {
+            "comment": "Downwelling clear-sky shortwave radiation calculated using carbon dioxide concentrations increased fourfold", 
+            "dimensions": "longitude latitude alevhalf time", 
+            "positive": "down", 
+            "valid_min": "", 
+            "long_name": "Downwelling Clear-Sky Shortwave Radiation 4XCO2 Atmosphere", 
+            "standard_name": "downwelling_shortwave_flux_in_air_assuming_clear_sky", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "rsdcs4co2", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "tnsclirir": {
+            "comment": "", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Tendency of Mass Fraction of Stratiform Cloud Ice due to Riming From Rain", 
+            "standard_name": "tendency_of_mass_fraction_of_stratiform_cloud_ice_in_air_due_to_riming_from_rain", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "s-1", 
+            "out_name": "tnsclirir", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "tnsclwhon": {
+            "comment": "", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Tendency of Mass Fraction of Stratiform Cloud Liquid Water due to Homogeneous Nucleation", 
+            "standard_name": "tendency_of_mass_fraction_of_stratiform_cloud_liquid_water_in_air_due_to_homogeneous_nucleation", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "s-1", 
+            "out_name": "tnsclwhon", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "tnsccwbl": {
+            "comment": "", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Tendency of Mass Fraction of Stratiform Cloud Condensed Water In Air Due To Boundary Layer Mixing", 
+            "standard_name": "tendency_of_mass_fraction_of_stratiform_cloud_condensed_water_in_air_due_to_boundary_layer_mixing", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "s-1", 
+            "out_name": "tnsccwbl", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "tnsclw": {
+            "comment": "", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Tendency of Mass Fraction of Stratiform Cloud Liquid Water In Air", 
+            "standard_name": "tendency_of_mass_fraction_of_stratiform_cloud_liquid_water_in_air", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "s-1", 
+            "out_name": "tnsclw", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "rsdcs": {
+            "comment": "Downwelling clear-sky shortwave radiation (includes the fluxes at the surface and top-of-atmosphere)", 
+            "dimensions": "longitude latitude alevhalf time", 
+            "positive": "down", 
+            "valid_min": "", 
+            "long_name": "Downwelling Clear-Sky Shortwave Radiation", 
+            "standard_name": "downwelling_shortwave_flux_in_air_assuming_clear_sky", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "rsdcs", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "sigma_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: sigma(k+1/2)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "tnscli": {
+            "comment": "", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Tendency of Mass Fraction of Stratiform Cloud Ice In Air", 
+            "standard_name": "tendency_of_mass_fraction_of_stratiform_cloud_ice_in_air", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "s-1", 
+            "out_name": "tnscli", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "smc": {
+            "comment": "The net mass flux represents the difference between the updraft and downdraft components.  For models with a distinct shallow convection scheme, this is calculated as convective mass flux divided by the area of the whole grid cell (not just the area of the cloud).", 
+            "dimensions": "longitude latitude alevhalf time", 
+            "positive": "up", 
+            "valid_min": "", 
+            "long_name": "Shallow Convective Mass Flux", 
+            "standard_name": "atmosphere_net_upward_shallow_convective_mass_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "smc", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "ptop": {
+            "units": "Pa", 
+            "long_name": "pressure at top of model", 
+            "type": "", 
+            "dimensions": ""
+        }, 
+        "tntc": {
+            "comment": "Tendencies from cumulus convection scheme.", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Tendency of Air Temperature due to Moist Convection", 
+            "standard_name": "tendency_of_air_temperature_due_to_convection", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "K s-1", 
+            "out_name": "tntc", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "tnta": {
+            "comment": "Tendency of Air Temperature due to Advection", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Tendency of Air Temperature due to Advection", 
+            "standard_name": "tendency_of_air_temperature_due_to_advection", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "K s-1", 
+            "out_name": "tnta", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "rsd4co2": {
+            "comment": "Downwelling shortwave radiation calculated using carbon dioxide concentrations increased fourfold", 
+            "dimensions": "longitude latitude alevhalf time", 
+            "positive": "down", 
+            "valid_min": "", 
+            "long_name": "Downwelling Shortwave Radiation 4XCO2 Atmosphere", 
+            "standard_name": "downwelling_shortwave_flux_in_air", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "rsd4co2", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "rld": {
+            "comment": "Downwelling Longwave Radiation (includes the fluxes at the surface and TOA)", 
+            "dimensions": "longitude latitude alevhalf time", 
+            "positive": "down", 
+            "valid_min": "", 
+            "long_name": "Downwelling Longwave Radiation", 
+            "standard_name": "downwelling_longwave_flux_in_air", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "rld", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "tnscliemi": {
+            "comment": "", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Tendency of Mass Fraction of Stratiform Cloud Ice due to Evaporation of Melting Ice", 
+            "standard_name": "tendency_of_mass_fraction_of_stratiform_cloud_ice_in_air_due_to_evaporation_of_melting_ice", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "s-1", 
+            "out_name": "tnscliemi", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "clwc": {
+            "comment": "Calculated as the mass of convective cloud liquid water in the grid cell divided by the mass of air (including the water in all phases) in the grid cell.  This includes precipitating hydrometeors ONLY if the precipitating hydrometeors affect the calculation of radiative transfer in model.", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Mass Fraction of Convective Cloud Liquid Water", 
+            "standard_name": "mass_fraction_of_convective_cloud_liquid_water_in_air", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "1.0", 
+            "out_name": "clwc", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "tntr": {
+            "comment": "Tendency of Air Temperature due to Radiative Heating", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Tendency of Air Temperature due to Radiative Heating", 
+            "standard_name": "tendency_of_air_temperature_due_to_radiative_heating", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "K s-1", 
+            "out_name": "tntr", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "albisccp": {
+            "comment": "ISCCP Mean Cloud Albedo. Time-means are weighted by the ISCCP Total Cloud Fraction (cltisccp) - see  http://cfmip.metoffice.com/COSP.html", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "ISCCP Mean Cloud Albedo", 
+            "standard_name": "cloud_albedo", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "1.0", 
+            "out_name": "albisccp", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "ztop": {
+            "units": "m", 
+            "long_name": "height of top of model", 
+            "type": "", 
+            "dimensions": ""
+        }, 
+        "rlu": {
+            "comment": "Upwelling longwave radiation (includes the fluxes at the surface and TOA)", 
+            "dimensions": "longitude latitude alevhalf time", 
+            "positive": "up", 
+            "valid_min": "", 
+            "long_name": "Upwelling Longwave Radiation", 
+            "standard_name": "upwelling_longwave_flux_in_air", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "rlu", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "z1": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: z1", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "z2": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: z2", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "clws": {
+            "comment": "Calculated as the mass of stratiform cloud liquid water in the grid cell divided by the mass of air (including the water in all phases) in the grid cell.  This includes precipitating hydrometeors ONLY if the precipitating hydrometeors affect the calculation of radiative transfer in model.", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Mass Fraction of Stratiform Cloud Liquid Water", 
+            "standard_name": "mass_fraction_of_stratiform_cloud_liquid_water_in_air", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "1.0", 
+            "out_name": "clws", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "tnsccw": {
+            "comment": "", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Tendency of Mass Fraction of Stratiform Cloud Condensed Water In Air", 
+            "standard_name": "tendency_of_mass_fraction_of_stratiform_cloud_condensed_water_in_air", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "s-1", 
+            "out_name": "tnsccw", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "tnsclwcd": {
+            "comment": "", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Tendency of Mass Fraction of Stratiform Cloud Liquid Water Due to Convective Detrainment", 
+            "standard_name": "tendency_of_mass_fraction_of_stratiform_cloud_liquid_water_in_air_due_to_convective_detrainment", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "s-1", 
+            "out_name": "tnsclwcd", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "tnsclwce": {
+            "comment": "", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Tendency of Mass Fraction of Stratiform Cloud Liquid Water due to Condensation and Evaporation", 
+            "standard_name": "tendency_of_mass_fraction_of_stratiform_cloud_liquid_water_in_air_due_to_condensation_and_evaporation", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "s-1", 
+            "out_name": "tnsclwce", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "tnsclwcm": {
+            "comment": "", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Tendency of Mass Fraction of Stratiform Cloud Liquid Water In Air Due To Cloud Microphysics", 
+            "standard_name": "tendency_of_mass_fraction_of_stratiform_cloud_liquid_water_in_air_due_to_cloud_microphysics", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "s-1", 
+            "out_name": "tnsclwcm", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "eta": {
+            "units": "m", 
+            "long_name": "Sea Surface Height formula term: thetao", 
+            "type": "real", 
+            "dimensions": "longitude latitude time"
+        }, 
+        "tnsclicm": {
+            "comment": "", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Tendency of Mass Fraction of Stratiform Cloud Ice In Air Due To Cloud Microphysics", 
+            "standard_name": "tendency_of_mass_fraction_of_stratiform_cloud_ice_in_air_due_to_cloud_microphysics", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "s-1", 
+            "out_name": "tnsclicm", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "tnsclicd": {
+            "comment": "", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Tendency of Mass Fraction of Stratiform Cloud Ice Due Convective Detrainment", 
+            "standard_name": "tendency_of_mass_fraction_of_stratiform_cloud_ice_in_air_due_to_convective_detrainment", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "s-1", 
+            "out_name": "tnsclicd", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "rldcs": {
+            "comment": "Downwelling clear-sky longwave radiation (includes the fluxes at the surface and TOA)", 
+            "dimensions": "longitude latitude alevhalf time", 
+            "positive": "down", 
+            "valid_min": "", 
+            "long_name": "Downwelling Clear-Sky Longwave Radiation", 
+            "standard_name": "downwelling_longwave_flux_in_air_assuming_clear_sky", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "rldcs", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "rsut4co2": {
+            "comment": "TOA Outgoing Shortwave Radiation calculated using carbon dioxide concentrations increased fourfold", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "valid_min": "", 
+            "long_name": "TOA Outgoing Shortwave Radiation in 4XCO2 Atmosphere", 
+            "standard_name": "toa_outgoing_shortwave_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "rsut4co2", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "cltcalipso": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "CALIPSO Total Cloud Fraction", 
+            "standard_name": "cloud_area_fraction", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "%", 
+            "out_name": "cltcalipso", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "rsucs4co2": {
+            "comment": "Upwelling clear-sky shortwave radiation calculated using carbon dioxide concentrations increased fourfold", 
+            "dimensions": "longitude latitude alevhalf time", 
+            "positive": "up", 
+            "valid_min": "", 
+            "long_name": "Upwelling Clear-Sky Shortwave Radiation 4XCO2 Atmosphere", 
+            "standard_name": "upwelling_shortwave_flux_in_air_assuming_clear_sky", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "rsucs4co2", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "tnsclihenv": {
+            "comment": "", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Tendency of Mass Fraction of Stratiform Cloud Ice due to Heterogeneous Nucleation From Water Vapor", 
+            "standard_name": "tendency_of_mass_fraction_of_stratiform_cloud_ice_in_air_due_to_heterogeneous_nucleation_from_water_vapor", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "s-1", 
+            "out_name": "tnsclihenv", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "tnscliricl": {
+            "comment": "", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Tendency of Mass Fraction of Stratiform Cloud Ice due to Riming From Cloud Liquid", 
+            "standard_name": "tendency_of_mass_fraction_of_stratiform_cloud_ice_in_air_due_to_riming_from_cloud_liquid_water", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "s-1", 
+            "out_name": "tnscliricl", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "href": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: href", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "rsu4co2": {
+            "comment": "Upwelling Shortwave Radiation calculated using carbon dioxide concentrations increased fourfold", 
+            "dimensions": "longitude latitude alevhalf time", 
+            "positive": "up", 
+            "valid_min": "", 
+            "long_name": "Upwelling Shortwave Radiation 4XCO2 Atmosphere", 
+            "standard_name": "upwelling_shortwave_flux_in_air", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "rsu4co2", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "tnsccwacs": {
+            "comment": "condensed water includes both liquid and ice.", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Tendency of Mass Fraction of Stratiform Cloud Condensed Water due to Autoconversion to Snow", 
+            "standard_name": "tendency_of_mass_fraction_of_stratiform_cloud_condensed_water_in_air_due_to_autoconversion_to_snow", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "s-1", 
+            "out_name": "tnsccwacs", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "tnsccwacr": {
+            "comment": "condensed water includes both liquid and ice.", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Tendency of Mass Fraction of Stratiform Cloud Condensed Water due to Autoconversion to Rain", 
+            "standard_name": "tendency_of_mass_fraction_of_stratiform_cloud_condensed_water_in_air_due_to_autoconversion_to_rain", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "s-1", 
+            "out_name": "tnsccwacr", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "ps": {
+            "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", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Surface Air Pressure", 
+            "standard_name": "surface_air_pressure", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "Pa", 
+            "out_name": "ps", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "p0": {
+            "units": "Pa", 
+            "long_name": "vertical coordinate formula term: reference pressure", 
+            "type": "", 
+            "dimensions": ""
+        }, 
+        "tnsclimcl": {
+            "comment": "", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Tendency of Mass Fraction of Stratiform Cloud Ice due to Melting to Cloud Liquid", 
+            "standard_name": "tendency_of_mass_fraction_of_stratiform_cloud_ice_in_air_due_to_melting_to_cloud_liquid_water", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "s-1", 
+            "out_name": "tnsclimcl", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "tnsclwhen": {
+            "comment": "", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Tendency of Mass Fraction of Stratiform Cloud Liquid Water due to Heterogeneous Nucleation", 
+            "standard_name": "tendency_of_mass_fraction_of_stratiform_cloud_liquid_water_in_air_due_to_heterogeneous_nucleation", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "s-1", 
+            "out_name": "tnsclwhen", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "clisccp": {
+            "comment": "Percentage cloud cover in optical depth categories.", 
+            "dimensions": "longitude latitude plev7 tau time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "ISCCP Cloud Area Fraction", 
+            "standard_name": "isccp_cloud_area_fraction", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "%", 
+            "out_name": "clisccp", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "tnscliif": {
+            "comment": "", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Tendency of Mass Fraction of Stratiform Cloud Ice due to Icefall", 
+            "standard_name": "tendency_of_mass_fraction_of_stratiform_cloud_ice_in_air_due_to_icefall", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "s-1", 
+            "out_name": "tnscliif", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "rsd": {
+            "comment": "Downwelling shortwave radiation (includes the fluxes at the surface and top-of-atmosphere)", 
+            "dimensions": "longitude latitude alevhalf time", 
+            "positive": "down", 
+            "valid_min": "", 
+            "long_name": "Downwelling Shortwave Radiation", 
+            "standard_name": "downwelling_shortwave_flux_in_air", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "rsd", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "mcd": {
+            "comment": "Calculated as the convective mass flux divided by the area of the whole grid cell (not just the area of the cloud).", 
+            "dimensions": "longitude latitude alevhalf time", 
+            "positive": "down", 
+            "valid_min": "", 
+            "long_name": "Downdraft Convective Mass Flux", 
+            "standard_name": "atmosphere_downdraft_convective_mass_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "mcd", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "rldcs4co2": {
+            "comment": "Downwelling clear-sky longwave radiation calculated using carbon dioxide concentrations increased fourfold (includes the fluxes at the surface and TOA)", 
+            "dimensions": "longitude latitude alevhalf time", 
+            "positive": "down", 
+            "valid_min": "", 
+            "long_name": "Downwelling Clear-Sky Longwave Radiation 4XCO2 Atmosphere", 
+            "standard_name": "downwelling_longwave_flux_in_air_assuming_clear_sky", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "rldcs4co2", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "tntmp": {
+            "comment": "Tendency of air temperature due to model physics. his includes sources and sinks from parametrized physics (e.g. radiation, convection, boundary layer, stratiform condensation/evaporation, etc.). It excludes sources and sinks from resolved dynamics and numerical diffusion not associated with parametrized physics.  For example, any vertical diffusion which is part of the boundary layer mixing scheme should be included, while numerical diffusion applied in addition  [...]
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Tendency of Air Temperature due to Diabatic Processes", 
+            "standard_name": "tendency_of_air_temperature_due_to_model_physics", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "K s-1", 
+            "out_name": "tntmp", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "hur": {
+            "comment": "The relative humidity with respect to liquid water for T> 0 C, and with respect to ice for T<0 C.", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "-2.642", 
+            "long_name": "Relative Humidity", 
+            "standard_name": "relative_humidity", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "-10.31", 
+            "units": "%", 
+            "out_name": "hur", 
+            "type": "real", 
+            "valid_max": "135.7", 
+            "ok_max_mean_abs": "97"
+        }, 
+        "hus": {
+            "comment": "", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "-0.000299", 
+            "long_name": "Specific Humidity", 
+            "standard_name": "specific_humidity", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "-0.0003539", 
+            "units": "1.0", 
+            "out_name": "hus", 
+            "type": "real", 
+            "valid_max": "0.02841", 
+            "ok_max_mean_abs": "0.01041"
+        }, 
+        "rsu": {
+            "comment": "Upwelling shortwave radiation  (includes also the fluxes at the surface and top of atmosphere)", 
+            "dimensions": "longitude latitude alevhalf time", 
+            "positive": "up", 
+            "valid_min": "", 
+            "long_name": "Upwelling Shortwave Radiation", 
+            "standard_name": "upwelling_shortwave_flux_in_air", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "rsu", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "mcu": {
+            "comment": "In accordance with common usage in geophysical disciplines, 'flux' implies per unit area, called 'flux density' in physics. The atmosphere convective mass flux is the vertical transport of mass for a field of cumulus clouds or thermals, given by the product of air density and vertical velocity. For an area-average, cell_methods should specify whether the average is over all the area or the area of updrafts only.", 
+            "dimensions": "longitude latitude alevhalf time", 
+            "positive": "up", 
+            "valid_min": "", 
+            "long_name": "Updraft Convective Mass Flux", 
+            "standard_name": "atmosphere_updraft_convective_mass_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "mcu", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "tnt": {
+            "comment": "Tendency of Air Temperature", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Tendency of Air Temperature", 
+            "standard_name": "tendency_of_air_temperature", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "K s-1", 
+            "out_name": "tnt", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "tnsccwce": {
+            "comment": "condensed water includes both liquid and ice.", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Tendency of Mass Fraction of Stratiform Cloud Condensed Water due to Condensation and Evaporation", 
+            "standard_name": "tendency_of_mass_fraction_of_stratiform_cloud_condensed_water_in_air_due_to_condensation_and_evaporation", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "s-1", 
+            "out_name": "tnsccwce", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "dmc": {
+            "comment": "The net mass flux  represents the difference between the updraft and downdraft components.   This is calculated as the convective mass flux divided by the area of the whole grid cell (not just the area of the cloud).", 
+            "dimensions": "longitude latitude alevhalf time", 
+            "positive": "up", 
+            "valid_min": "", 
+            "long_name": "Deep Convective Mass Flux", 
+            "standard_name": "atmosphere_net_upward_deep_convective_mass_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "dmc", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "tnsclwbfpcli": {
+            "comment": "", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Tendency of Mass Fraction of Stratiform Cloud Liquid Water In Air Due To Bergeron Findeisen Process To Cloud Ice", 
+            "standard_name": "tendency_of_mass_fraction_of_stratiform_cloud_liquid_water_in_air_due_to_bergeron_findeisen_process_to_cloud_ice", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "s-1", 
+            "out_name": "tnsclwbfpcli", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "tnsccwcm": {
+            "comment": "", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Tendency of Mass Fraction of Stratiform Cloud Condensed Water In Air Due To Cloud Microphysics", 
+            "standard_name": "tendency_of_mass_fraction_of_stratiform_cloud_condensed_water_in_air_due_to_cloud_microphysics", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "s-1", 
+            "out_name": "tnsccwcm", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "tnsclibfpcl": {
+            "comment": "", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Tendency of Mass Fraction of Stratiform Cloud Ice In Air Due To Bergeron Findeisen Process from Cloud Liquid", 
+            "standard_name": "tendency_of_mass_fraction_of_stratiform_cloud_ice_in_air_due_to_bergeron_findeisen_process_from_cloud_liquid", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "s-1", 
+            "out_name": "tnsclibfpcl", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "tnscliag": {
+            "comment": "", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Tendency of Mass Fraction of Stratiform Cloud Ice due to Aggregation", 
+            "standard_name": "tendency_of_mass_fraction_of_stratiform_cloud_ice_in_air_due_to_aggregation", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "s-1", 
+            "out_name": "tnscliag", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "k_c": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: k_c", 
+            "type": "integer", 
+            "dimensions": ""
+        }, 
+        "ta": {
+            "comment": "", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "157.1", 
+            "long_name": "Air Temperature", 
+            "standard_name": "air_temperature", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "194.3", 
+            "units": "K", 
+            "out_name": "ta", 
+            "type": "real", 
+            "valid_max": "336.3", 
+            "ok_max_mean_abs": "299.8"
+        }, 
+        "clmcalipso": {
+            "comment": "Percentage cloud cover in layer centred on 560hPa", 
+            "dimensions": "longitude latitude time p560", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "CALIPSO Mid Level Cloud Fraction", 
+            "standard_name": "cloud_area_fraction_in_atmosphere_layer", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "%", 
+            "out_name": "clmcalipso", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "tnsccwa": {
+            "comment": "condensed water includes both liquid and ice.", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Tendency of Mass Fraction of Stratiform Cloud Condensed Water due to Advection", 
+            "standard_name": "tendency_of_mass_fraction_of_stratiform_cloud_condensed_water_in_air_due_to_advection", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "s-1", 
+            "out_name": "tnsccwa", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "clis": {
+            "comment": "Calculated as the mass of stratiform cloud ice  in the grid cell divided by the mass of air (including the water in all phases) in the grid cell.  This includes precipitating hydrometeors ONLY if the precipitating hydrometeors affect the calculation of radiative transfer in model.", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Mass Fraction of Stratiform Cloud Ice", 
+            "standard_name": "mass_fraction_of_stratiform_cloud_ice_in_air", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "1.0", 
+            "out_name": "clis", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "pctisccp": {
+            "comment": "ISCCP Mean Cloud Top Pressure. Time-means are weighted by the ISCCP Total Cloud Fraction (clitisccp) - see  http://cfmip.metoffice.com/COSP.html", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "ISCCP Mean Cloud Top Pressure", 
+            "standard_name": "air_pressure_at_cloud_top", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "Pa", 
+            "out_name": "pctisccp", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "ap_bnds": {
+            "units": "Pa", 
+            "long_name": "vertical coordinate formula term: ap(k+1/2)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "ap": {
+            "units": "Pa", 
+            "long_name": "vertical coordinate formula term: ap(k)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "rlu4co2": {
+            "comment": "Upwelling longwave radiation calculated using carbon dioxide concentrations increased fourfold (includes the fluxes at the surface and TOA)", 
+            "dimensions": "longitude latitude alevhalf time", 
+            "positive": "up", 
+            "valid_min": "", 
+            "long_name": "Upwelling Longwave Radiation 4XCO2 Atmosphere", 
+            "standard_name": "upwelling_longwave_flux_in_air", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "rlu4co2", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "clic": {
+            "comment": "Calculated as the mass of convective cloud ice  in the grid cell divided by the mass of air (including the water in all phases) in the grid cell.  This includes precipitating hydrometeors ONLY if the precipitating hydrometeors affect the calculation of radiative transfer in model.", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Mass Fraction of Convective Cloud Ice", 
+            "standard_name": "mass_fraction_of_convective_cloud_ice_in_air", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "1.0", 
+            "out_name": "clic", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "zlev": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: zlev(k)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "rld4co2": {
+            "comment": "Downwelling longwave radiation calculated using carbon dioxide concentrations increased fourfold (includes the fluxes at the surface and TOA)", 
+            "dimensions": "longitude latitude alevhalf time", 
+            "positive": "down", 
+            "valid_min": "", 
+            "long_name": "Downwelling Longwave Radiation 4XCO2 Atmosphere", 
+            "standard_name": "downwelling_longwave_flux_in_air", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "rld4co2", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "rsutcs4co2": {
+            "comment": "TOA Outgoing Clear-Sky Shortwave Radiation calculated using carbon dioxide concentrations increased fourfold", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "valid_min": "", 
+            "long_name": "TOA Outgoing Clear-Sky Shortwave Radiation 4XCO2 Atmosphere", 
+            "standard_name": "toa_outgoing_shortwave_flux_assuming_clear_sky", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "rsutcs4co2", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "tnsclwa": {
+            "comment": "", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Tendency of Mass Fraction of Stratiform Cloud Liquid Water due to Advection", 
+            "standard_name": "tendency_of_mass_fraction_of_stratiform_cloud_liquid_water_in_air_due_to_advection", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "s-1", 
+            "out_name": "tnsclwa", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "tnhusd": {
+            "comment": "Tendency of specific humidity due to numerical diffusion.This includes any horizontal or vertical numerical moisture diffusion not associated with the parametrized moist physics or the resolved dynamics.  For example, any vertical diffusion which is part of the boundary layer mixing scheme should be excluded, as should any diffusion which is included in the terms from the resolved dynamics.   This term is required to check the closure of the moisture budget.", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Tendency of Specific Humidity due to Diffusion", 
+            "standard_name": "tendency_of_specific_humidity_due_to_diffusion", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "s-1", 
+            "out_name": "tnhusd", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "tnhusa": {
+            "comment": "Tendency of Specific Humidity due to Advection", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Tendency of Specific Humidity due to Advection", 
+            "standard_name": "tendency_of_specific_humidity_due_to_advection", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "s-1", 
+            "out_name": "tnhusa", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "tnhusc": {
+            "comment": "Tendencies from cumulus convection scheme.", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Tendency of Specific Humidity due to Convection", 
+            "standard_name": "tendency_of_specific_humidity_due_to_convection", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "s-1", 
+            "out_name": "tnhusc", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "tnsccwif": {
+            "comment": "condensed water includes both liquid and ice.", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Tendency of Mass Fraction of Stratiform Cloud Condensed Water due to Icefall", 
+            "standard_name": "tendency_of_mass_fraction_of_stratiform_cloud_condensed_water_in_air_due_to_icefall", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "s-1", 
+            "out_name": "tnsccwif", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "b_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: b(k+1/2)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "cltisccp": {
+            "comment": "Percentage total cloud cover, simulating ISCCP observations.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "ISCCP Total Cloud Fraction", 
+            "standard_name": "cloud_area_fraction", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "%", 
+            "out_name": "cltisccp", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "rlut4co2": {
+            "comment": "Top-of-atmosphere outgoing longwave radiation calculated using carbon dioxide concentrations increased fourfold", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "valid_min": "", 
+            "long_name": "TOA Outgoing Longwave Radiation 4XCO2 Atmosphere", 
+            "standard_name": "toa_outgoing_longwave_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "rlut4co2", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "zlev_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: zlev(k+1/2)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "a": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: a(k)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "evisct": {
+            "comment": "", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Eddy Diffusivity Coefficients for Temperature", 
+            "standard_name": "atmosphere_heat_diffusivity", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "m2 s-1", 
+            "out_name": "evisct", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "eviscu": {
+            "comment": "", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Eddy Viscosity Coefficients for Momentum", 
+            "standard_name": "atmosphere_momentum_diffusivity", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "m2 s-1", 
+            "out_name": "eviscu", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "clcalipso": {
+            "comment": "Percentage cloud cover at CALIPSO standard heights.", 
+            "dimensions": "longitude latitude alt40 time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "CALIPSO Cloud Fraction", 
+            "standard_name": "cloud_area_fraction_in_atmosphere_layer", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "%", 
+            "out_name": "clcalipso", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "depth": {
+            "units": "m", 
+            "long_name": "Sea Floor Depth: formula term: thetao", 
+            "type": "real", 
+            "dimensions": "longitude latitude"
+        }, 
+        "tnsclwbl": {
+            "comment": "", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Tendency of Mass Fraction of Stratiform Cloud Liquid Water In Air Due To Boundary Layer Mixing", 
+            "standard_name": "tendency_of_mass_fraction_of_stratiform_cloud_liquid_water_in_air_due_to_boundary_layer_mixing", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "s-1", 
+            "out_name": "tnsclwbl", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "tnhusscpbl": {
+            "comment": "Tendency of Specific Humidity Due to Stratiform Cloud and Precipitation and Boundary Layer Mixing  (to be specified only in  models which do not separate budget terms for stratiform cloud, precipitation and boundary layer schemes.  Includes all bounday layer terms including and diffusive terms.)", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Tendency of Specific Humidity due to Stratiform Cloud Condensation and Evaporation", 
+            "standard_name": "tendency_of_specific_humidity_due_to_stratiform_cloud_and_precipitation_and_boundary_layer_mixing", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "s-1", 
+            "out_name": "tnhusscpbl", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "clhcalipso": {
+            "comment": "Percentage cloud cover in layer centred on 220hPa", 
+            "dimensions": "longitude latitude time p220", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "CALIPSO High Level Cloud Fraction", 
+            "standard_name": "cloud_area_fraction_in_atmosphere_layer", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "%", 
+            "out_name": "clhcalipso", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "sigma": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: sigma(k)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "cllcalipso": {
+            "comment": "Percentage cloud cover in layer centred on 840hPa", 
+            "dimensions": "longitude latitude time p840", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "CALIPSO Low Level Cloud Fraction", 
+            "standard_name": "cloud_area_fraction_in_atmosphere_layer", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "%", 
+            "out_name": "cllcalipso", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }
+    }
+}
diff --git a/TestTables/CMIP6_cfOff.json b/TestTables/CMIP6_cfOff.json
new file mode 100644
index 0000000..288ddcd
--- /dev/null
+++ b/TestTables/CMIP6_cfOff.json
@@ -0,0 +1 @@
+no Variable found for cfOff
diff --git a/TestTables/CMIP6_cfSites.json b/TestTables/CMIP6_cfSites.json
new file mode 100644
index 0000000..0ca90a2
--- /dev/null
+++ b/TestTables/CMIP6_cfSites.json
@@ -0,0 +1,3273 @@
+{
+    "Header": {
+        "mip_era":     "CMIP6", 
+        "approx_interval": "0.017361", 
+        "realm": "atmos", 
+        "product": "output", 
+        "cmor_version": "3.0", 
+        "Conventions": "CF-1.6 CMIP-6.0", 
+        "approx_interval_error": "0.75", 
+        "frequency": "subhr", 
+        "table_id": "Table cfsites", 
+        "data_specs_version": "3.0", 
+        "approx_interval_warning": "0.25", 
+        "generic_levels": "alevel alevhalf", 
+        "missing_value": "1e20", 
+        "table_date": "31 March 2016"
+    }, 
+    "axis_entry": {
+        "typebare": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "bare_ground", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "tau": {
+            "requested": [
+                "0.15", 
+                "0.8", 
+                "2.45", 
+                "6.5", 
+                "16.2", 
+                "41.5", 
+                "100."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "0.0", 
+                "0.3", 
+                "0.3", 
+                "1.3", 
+                "1.3", 
+                "3.6", 
+                "3.6", 
+                "9.4", 
+                "9.4", 
+                "23.0", 
+                "23.0", 
+                "60.0", 
+                "60.0", 
+                "100000."
+            ], 
+            "z_bounds_factors": "", 
+            "long_name": "cloud optical thickness", 
+            "standard_name": "atmosphere_optical_thickness_due_to_cloud", 
+            "value": "", 
+            "out_name": "tau", 
+            "type": "double", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "olayer100m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "50.0", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "100.0", 
+            "axis": "Z"
+        }, 
+        "plev4s": {
+            "requested": [
+                "85000.", 
+                "50000.", 
+                "20000.", 
+                "5000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "ocean_sigma_z": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "sigma: sigma eta: eta depth: depth depth_c: depth_c nsigma: nsigma zlev: zlev", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "sigma: sigma_bnds eta: eta depth: depth depth_c: depth_c nsigma: nsigma zlev: zlev_bnds", 
+            "long_name": "ocean sigma over z coordinate", 
+            "standard_name": "ocean_sigma_z", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "for k <= nsigma: z(n,k,j,i) = eta(n,j,i) + sigma(k)*(min(depth_c,depth(j,i))+eta(n,j,i)) ; for k > nsigma: z(n,k,j,i) = zlev(k)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev19": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000.", 
+                "500.", 
+                "100."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "p220": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "22000.0", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev17": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev10": {
+            "requested": [
+                "100000.", 
+                "85000.", 
+                "70000.", 
+                "50000.", 
+                "25000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "site": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "long_name": "site index", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "site", 
+            "type": "integer", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "smooth_level": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "a: a b1: b1 b2: b2 ztop: ztop zsurf1: zsurf1 zsurf2: zsurf2", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-200.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "a: a_bnds b1: b1_bnds b2: b2_bnds ztop: ztop zsurf1: zsurf1 zsurf2: zsurf2", 
+            "long_name": "atmosphere smooth level vertical (SLEVE) coordinate", 
+            "standard_name": "atmosphere_sleve_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "m", 
+            "formula": "z = a*ztop + b1*zsurf1 + b2*zsurf2", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "800000.0", 
+            "axis": "Z"
+        }, 
+        "p840": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "84000.0", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "ocean_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "sigma: lev eta: eta depth: depth", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "sigma: lev_bnds eta: eta depth: depth", 
+            "long_name": "ocean sigma coordinate", 
+            "standard_name": "ocean_sigma_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "z(n,k,j,i) = eta(n,j,i) + sigma(k)*(depth(j,i)+eta(n,j,i))", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "0.0", 
+            "axis": "Z"
+        }, 
+        "depth0m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "0.0", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "100.0", 
+            "axis": "Z"
+        }, 
+        "ocean_s": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "s: lev eta: eta depth: depth a: a_coeff b: b_coeff depth_c: depth_c", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "s: lev_bnds eta: eta depth: depth a: a b: b depth_c: depth_c", 
+            "long_name": "ocean s-coordinate", 
+            "standard_name": "ocean_s_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "z(n,k,j,i) = eta(n,j,i)*(1+s(k)) + depth_c*s(k) + (depth(j,i)-depth_c)*C(k) n where n C(k)=(1-b)*sinh(a*s(k))/sinh(a) +n           b*(tanh(a*(s(k)+0.5))/(2*tanh(0.5*a)) - 0.5)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "0.0", 
+            "axis": "Z"
+        }, 
+        "typepever": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "primary_evergreen_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "typec4pft": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "c4_plant_functional_types", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "height2m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "up", 
+            "must_have_bounds": "no", 
+            "valid_min": "1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "long_name": "height", 
+            "standard_name": "height", 
+            "value": "2.0", 
+            "out_name": "height", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "10.0", 
+            "axis": "Z"
+        }, 
+        "time1": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "long_name": "time", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "vegtype": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "long_name": "plant functional type", 
+            "standard_name": "area_type", 
+            "value": "", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "sza5": {
+            "requested": [
+                "0.", 
+                "20.", 
+                "40.", 
+                "60.", 
+                "80."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "long_name": "solar zenith angle", 
+            "standard_name": "solar_zenith_angle", 
+            "value": "", 
+            "out_name": "sza", 
+            "type": "double", 
+            "units": "degree", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "depth_coord": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "long_name": "ocean depth coordinate", 
+            "standard_name": "depth", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "12000.0", 
+            "axis": "Z"
+        }, 
+        "sdepth1": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "0.05", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "0.2", 
+            "axis": "Z"
+        }, 
+        "alternate_hybrid_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "ap: ap b: b ps: ps", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "ap: ap_bnds b: b_bnds ps: ps", 
+            "long_name": "hybrid sigma pressure coordinate", 
+            "standard_name": "atmosphere_hybrid_sigma_pressure_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "1", 
+            "formula": "p = ap + b*ps", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "1.0", 
+            "axis": "Z"
+        }, 
+        "time2": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "long_name": "time", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "yes", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "oline": {
+            "requested": [
+                "barents_opening", 
+                "bering_strait", 
+                "canadian_archipelago", 
+                "denmark_strait", 
+                "drake_passage", 
+                "english_channel", 
+                "pacific_equatorial_undercurrent", 
+                "faroe_scotland_channel", 
+                "florida_bahamas_strait", 
+                "fram_strait", 
+                "iceland_faroe_channel", 
+                "indonesian_thoughflow", 
+                "mozambique_channel", 
+                "taiwan_luzon_straits", 
+                "windward_passage"
+            ], 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "long_name": "ocean passage", 
+            "standard_name": "region", 
+            "value": "", 
+            "out_name": "line", 
+            "type": "character", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "alt40": {
+            "requested": [
+                "240.", 
+                "720.", 
+                "1200.", 
+                "1680.", 
+                "2160.", 
+                "2640.", 
+                "3120.", 
+                "3600.", 
+                "4080.", 
+                "4560.", 
+                "5040.", 
+                "5520.", 
+                "6000.", 
+                "6480.", 
+                "6960.", 
+                "7440.", 
+                "7920.", 
+                "8400.", 
+                "8880.", 
+                "9360.", 
+                "9840.", 
+                "10320.", 
+                "10800.", 
+                "11280.", 
+                "11760.", 
+                "12240.", 
+                "12720.", 
+                "13200.", 
+                "13680.", 
+                "14160.", 
+                "14640.", 
+                "15120.", 
+                "15600.", 
+                "16080.", 
+                "16560.", 
+                "17040.", 
+                "17520.", 
+                "18000.", 
+                "18480.", 
+                "18960."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "0.", 
+                "480.", 
+                "480.", 
+                "960.", 
+                "960.", 
+                "1440.", 
+                "1440.", 
+                "1920.", 
+                "1920.", 
+                "2400.", 
+                "2400.", 
+                "2880.", 
+                "2880.", 
+                "3360.", 
+                "3360.", 
+                "3840.", 
+                "3840.", 
+                "4320.", 
+                "4320.", 
+                "4800.", 
+                "4800.", 
+                "5280.", 
+                "5280.", 
+                "5760.", 
+                "5760.", 
+                "6240.", 
+                "6240.", 
+                "6720.", 
+                "6720.", 
+                "7200.", 
+                "7200.", 
+                "7680.", 
+                "7680.", 
+                "8160.", 
+                "8160.", 
+                "8640.", 
+                "8640.", 
+                "9120.", 
+                "9120.", 
+                "9600.", 
+                "9600.", 
+                "10080.", 
+                "10080.", 
+                "10560.", 
+                "10560.", 
+                "11040.", 
+                "11040.", 
+                "11520.", 
+                "11520.", 
+                "12000.", 
+                "12000.", 
+                "12480.", 
+                "12480.", 
+                "12960.", 
+                "12960.", 
+                "13440.", 
+                "13440.", 
+                "13920.", 
+                "13920.", 
+                "14400.", 
+                "14400.", 
+                "14880.", 
+                "14880.", 
+                "15360.", 
+                "15360.", 
+                "15840.", 
+                "15840.", 
+                "16320.", 
+                "16320.", 
+                "16800.", 
+                "16800.", 
+                "17280.", 
+                "17280.", 
+                "17760.", 
+                "17760.", 
+                "18240.", 
+                "18240.", 
+                "18720.", 
+                "18720.", 
+                "19200."
+            ], 
+            "z_bounds_factors": "", 
+            "long_name": "altitude", 
+            "standard_name": "altitude", 
+            "value": "", 
+            "out_name": "alt40", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev8": {
+            "requested": [
+                "100000.", 
+                "85000.", 
+                "70000.", 
+                "50000.", 
+                "25000.", 
+                "10000.", 
+                "5000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "location": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "long_name": "location index", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "loc", 
+            "type": "integer", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "latitude": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-90.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "long_name": "latitude", 
+            "standard_name": "latitude", 
+            "value": "", 
+            "out_name": "lat", 
+            "type": "double", 
+            "units": "degrees_north", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "90.0", 
+            "axis": "Y"
+        }, 
+        "plev3": {
+            "requested": [
+                "85000.", 
+                "50000.", 
+                "25000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "basin": {
+            "requested": [
+                "atlantic_arctic_ocean", 
+                "indian_pacific_ocean", 
+                "global_ocean"
+            ], 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "long_name": "ocean basin", 
+            "standard_name": "region", 
+            "value": "", 
+            "out_name": "basin", 
+            "type": "character", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "plev7": {
+            "requested": [
+                "90000.", 
+                "74000.", 
+                "62000.", 
+                "50000.", 
+                "37500.", 
+                "24500.", 
+                "9000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "100000.", 
+                "80000.", 
+                "80000.", 
+                "68000.", 
+                "68000.", 
+                "56000.", 
+                "56000.", 
+                "44000.", 
+                "44000.", 
+                "31000.", 
+                "31000.", 
+                "18000.", 
+                "18000.", 
+                " 0."
+            ], 
+            "z_bounds_factors": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev4": {
+            "requested": [
+                "92500.", 
+                "85000.", 
+                "50000.", 
+                "25000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev23": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000.", 
+                "700.", 
+                "500.", 
+                "300.", 
+                "200.", 
+                "100.", 
+                "40."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev39": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "17000.", 
+                "15000.", 
+                "13000.", 
+                "11500.", 
+                "10000.", 
+                "9000.", 
+                "8000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1500.", 
+                "1000.", 
+                "700.", 
+                "500.", 
+                "300.", 
+                "200.", 
+                "150.", 
+                "100.", 
+                "70.", 
+                "50.", 
+                "40.", 
+                "30.", 
+                "20.", 
+                "15.", 
+                "10.", 
+                "7.", 
+                "5.", 
+                "3."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "typesdec": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "secondary_decidous_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "plev7h": {
+            "requested": [
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "25000.", 
+                "5000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "typepdec": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "primary_deciduous_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "plev7c": {
+            "requested": [
+                "90000.", 
+                "74000.", 
+                "62000.", 
+                "50000.", 
+                "37500.", 
+                "24500.", 
+                "9000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "height10m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "up", 
+            "must_have_bounds": "no", 
+            "valid_min": "1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "long_name": "height", 
+            "standard_name": "height", 
+            "value": "10.0", 
+            "out_name": "height", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "30.0", 
+            "axis": "Z"
+        }, 
+        "standard_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "ptop: ptop sigma: lev ps: ps", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "ptop: ptop sigma: lev_bnds ps: ps", 
+            "long_name": "sigma coordinate", 
+            "standard_name": "atmosphere_sigma_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "p = ptop + sigma*(ps - ptop)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "1.0", 
+            "axis": "Z"
+        }, 
+        "typesever": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "secondary_evergreen_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "rho": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "long_name": "density++++?", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "rho", 
+            "type": "double", 
+            "units": "kg m-3", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "depth100m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "80.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "100.0", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "120.0", 
+            "axis": "Z"
+        }, 
+        "plev3h": {
+            "requested": [
+                "10000.", 
+                "1000.", 
+                "100."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "sdepth": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "200.0", 
+            "axis": "Z"
+        }, 
+        "typec3pft": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "c3_plant_functional_types", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "natural_log_pressure": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "p0: p0 lev: lev", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "p0: p0 lev: lev_bnds", 
+            "long_name": "atmosphere natural log pressure coordinate", 
+            "standard_name": "atmosphere_ln_pressure_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "p = p0 * exp(-lev)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "20.0", 
+            "axis": "Z"
+        }, 
+        "scatratio": {
+            "requested": [
+                "0.005", 
+                "0.605", 
+                "2.1", 
+                "4.", 
+                "6.", 
+                "8.5", 
+                "12.5", 
+                "17.5", 
+                "22.5", 
+                "27.5", 
+                "35.", 
+                "45.", 
+                "55.", 
+                "70.", 
+                "50040."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "0.", 
+                "0.01", 
+                "0.01", 
+                "1.2", 
+                "1.2", 
+                "3.", 
+                "3.", 
+                "5.", 
+                "5.", 
+                "7.", 
+                "7.", 
+                "10.", 
+                "10.", 
+                "15.", 
+                "15.", 
+                "20.", 
+                "20.", 
+                "25.", 
+                "25.", 
+                "30.", 
+                "30.", 
+                "40.", 
+                "40.", 
+                "50.", 
+                "50.", 
+                "60.", 
+                "60.", 
+                "80.", 
+                "80.", 
+                "100000."
+            ], 
+            "z_bounds_factors": "", 
+            "long_name": "lidar backscattering ratio", 
+            "standard_name": "backscattering_ratio", 
+            "value": "", 
+            "out_name": "scatratio", 
+            "type": "double", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "dbze": {
+            "requested": [
+                "-47.5", 
+                "-42.5", 
+                "-37.5", 
+                "-32.5", 
+                "-27.5", 
+                "-22.5", 
+                "-17.5", 
+                "-12.5", 
+                "-7.5", 
+                "-2.5", 
+                "2.5", 
+                "7.5", 
+                "12.5", 
+                "17.5", 
+                "22.5"
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "-50", 
+                "-45", 
+                "-45", 
+                "-40", 
+                "-40", 
+                "-35", 
+                "-35", 
+                "-30", 
+                "-30", 
+                "-25", 
+                "-25", 
+                "-20", 
+                "-20", 
+                "-15", 
+                "-15", 
+                "-10", 
+                "-10", 
+                "-5", 
+                "-5", 
+                "0", 
+                "0", 
+                "5", 
+                "5", 
+                "10", 
+                "10", 
+                "15", 
+                "15", 
+                "20", 
+                "20", 
+                "25."
+            ], 
+            "z_bounds_factors": "", 
+            "long_name": "CloudSat simulator equivalent radar reflectivity factor", 
+            "standard_name": "equivalent_reflectivity_factor", 
+            "value": "", 
+            "out_name": "dbze", 
+            "type": "double", 
+            "units": "dBZ", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "hybrid_height": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "a: lev b: b orog: orog", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "a: lev_bnds b: b_bnds orog: orog", 
+            "long_name": "hybrid height coordinate", 
+            "standard_name": "atmosphere_hybrid_height_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "m", 
+            "formula": "z = a + b*orog", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev14": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "25000.", 
+                "15000.", 
+                "10000.", 
+                "5000.", 
+                "2000.", 
+                "1000.", 
+                "500.", 
+                "100."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "longitude": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "long_name": "longitude", 
+            "standard_name": "longitude", 
+            "value": "", 
+            "out_name": "lon", 
+            "type": "double", 
+            "units": "degrees_east", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "360.0", 
+            "axis": "X"
+        }, 
+        "time": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "long_name": "time", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "ocean_double_sigma": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "sigma: sigma depth: depth z1: z1 z2: z2 a: a_coeff href: href k_c: k_c", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "sigma: sigma_bnds depth: depth z1: z1 z2: z2 a: a href: href k_c: k_c", 
+            "long_name": "ocean double sigma coordinate", 
+            "standard_name": "ocean_double_sigma", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "for k <= k_c:n z(k,j,i)= sigma(k)*f(j,i) n for k > k_c:n z(k,j,i)= f(j,i) + (sigma(k)-1)*(depth(j,i)-f(j,i)) n f(j,i)= 0.5*(z1+ z2) + 0.5*(z1-z2)* tanh(2*a/(z1-z2)*(depth(j,i)-href))", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plevs": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev27": {
+            "requested": [
+                "100000.", 
+                "97500.", 
+                "95000.", 
+                "92500.", 
+                "90000.", 
+                "87500.", 
+                "85000.", 
+                "82500.", 
+                "80000.", 
+                "77500.", 
+                "75000.", 
+                "70000.", 
+                "65000.", 
+                "60000.", 
+                "55000.", 
+                "50000.", 
+                "45000.", 
+                "40000.", 
+                "35000.", 
+                "30000.", 
+                "25000.", 
+                "22500.", 
+                "20000.", 
+                "17500.", 
+                "15000.", 
+                "12500.", 
+                "10000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "standard_hybrid_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "p0: p0 a: a b: b ps: ps", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "p0: p0 a: a_bnds b: b_bnds ps: ps", 
+            "long_name": "hybrid sigma pressure coordinate", 
+            "standard_name": "atmosphere_hybrid_sigma_pressure_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "1", 
+            "formula": "p = a*p0 + b*ps", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "1.0", 
+            "axis": "Z"
+        }, 
+        "p560": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "56000.0", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }
+    }, 
+    "variable_entry": {
+        "sci": {
+            "comment": "Fraction of time that shallow convection occurs in the grid cell.", 
+            "dimensions": "site time1", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Fraction of Time Shallow Convection Occurs", 
+            "standard_name": "shallow_convection_time_fraction", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "1.0", 
+            "out_name": "sci", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "depth_c": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: depth_c", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "rsutcs": {
+            "comment": "", 
+            "dimensions": "site time1", 
+            "positive": "up", 
+            "valid_min": "", 
+            "long_name": "TOA Outgoing Clear-Sky Shortwave Radiation", 
+            "standard_name": "toa_outgoing_shortwave_flux_assuming_clear_sky", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "rsutcs", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "edt": {
+            "comment": "", 
+            "dimensions": "alevel site time1", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Eddy Diffusivity Coefficient for Temperature Variable", 
+            "standard_name": "atmosphere_heat_diffusivity", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "m2 s-1", 
+            "out_name": "edt", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "rldscs": {
+            "comment": "", 
+            "dimensions": "site time1", 
+            "positive": "down", 
+            "valid_min": "", 
+            "long_name": "Surface Downwelling Clear-Sky Longwave Radiation", 
+            "standard_name": "surface_downwelling_longwave_flux_in_air_assuming_clear_sky", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "rldscs", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "tnhus": {
+            "comment": "", 
+            "dimensions": "alevel site time1", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Tendency of Specific Humidity", 
+            "standard_name": "tendency_of_specific_humidity", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "s-1", 
+            "out_name": "tnhus", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "cli": {
+            "comment": "Includes both large-scale and convective cloud. This is calculated as the mass of cloud ice in the grid cell divided by the mass of air (including the water in all phases) in the grid cell. It includes precipitating hydrometeors ONLY if the precipitating hydrometeors affect the calculation of radiative transfer in model.", 
+            "dimensions": "alevel site time1", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Mass Fraction of Cloud Ice", 
+            "standard_name": "mass_fraction_of_cloud_ice_in_air", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "kg kg-1", 
+            "out_name": "cli", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "ts": {
+            "comment": "'skin' temperature (i.e., SST for open ocean)", 
+            "dimensions": "site time1", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Surface Temperature", 
+            "standard_name": "surface_temperature", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "K", 
+            "out_name": "ts", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "clt": {
+            "comment": "cloud area fraction", 
+            "dimensions": "site time1", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Total Cloud Fraction", 
+            "standard_name": "cloud_area_fraction_in_atmosphere_layer", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "1.0", 
+            "out_name": "clt", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "clw": {
+            "comment": "Includes both large-scale and convective cloud. Calculate as the mass of cloud liquid water in the grid cell divided by the mass of air (including the water in all phases) in the grid cells. Precipitating hydrometeors are included ONLY if the precipitating hydrometeors affect the calculation of radiative transfer in model.", 
+            "dimensions": "alevel site time1", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Mass Fraction of Cloud Liquid Water", 
+            "standard_name": "mass_fraction_of_cloud_liquid_water_in_air", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "kg kg-1", 
+            "out_name": "clw", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "ta": {
+            "comment": "", 
+            "dimensions": "alevel site time1", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Air Temperature", 
+            "standard_name": "air_temperature", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "K", 
+            "out_name": "ta", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "psl": {
+            "comment": "", 
+            "dimensions": "site time1", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Sea Level Pressure", 
+            "standard_name": "air_pressure_at_sea_level", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "Pa", 
+            "out_name": "psl", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "nsigma": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: nsigma", 
+            "type": "integer", 
+            "dimensions": ""
+        }, 
+        "rlucs": {
+            "comment": "Includes also the fluxes at the surface and TOA.", 
+            "dimensions": "alevhalf site time1", 
+            "positive": "up", 
+            "valid_min": "", 
+            "long_name": "Upwelling Clear-Sky Longwave Radiation", 
+            "standard_name": "upwelling_longwave_flux_in_air_assuming_clear_sky", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "rlucs", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "sfcWind": {
+            "comment": "near-surface (usually, 10 meters) wind speed.", 
+            "dimensions": "site time1", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Near-Surface Wind Speed", 
+            "standard_name": "wind_speed", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "m s-1", 
+            "out_name": "sfcWind", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "rsucs": {
+            "comment": "Includes also the fluxes at the surface and TOA.", 
+            "dimensions": "alevhalf site time1", 
+            "positive": "up", 
+            "valid_min": "", 
+            "long_name": "Upwelling Clear-Sky Shortwave Radiation", 
+            "standard_name": "upwelling_shortwave_flux_in_air_assuming_clear_sky", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "rsucs", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "clwvi": {
+            "comment": "Mass of condensed (liquid + ice) water in the column divided by the area of the column (not just the area of the cloudy portion of the column). Includes precipitating hydrometeors ONLY if the precipitating hydrometeors affect the calculation of radiative transfer in model.", 
+            "dimensions": "site time1", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Condensed Water Path", 
+            "standard_name": "atmosphere_cloud_condensed_water_content", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2", 
+            "out_name": "clwvi", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "evu": {
+            "comment": "", 
+            "dimensions": "alevel site time1", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Eddy Viscosity Coefficient for Momentum Variables", 
+            "standard_name": "atmosphere_momentum_diffusivity", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "m2 s-1", 
+            "out_name": "evu", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "rsdscs": {
+            "comment": "surface solar irradiance clear sky for UV calculations", 
+            "dimensions": "site time1", 
+            "positive": "down", 
+            "valid_min": "", 
+            "long_name": "Surface Downwelling Clear-Sky Shortwave Radiation", 
+            "standard_name": "surface_downwelling_shortwave_flux_in_air_assuming_clear_sky", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "rsdscs", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "huss": {
+            "comment": "near-surface (usually, 2 meter) specific humidity.", 
+            "dimensions": "site time1", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Near-Surface Specific Humidity", 
+            "standard_name": "specific_humidity", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "1.0", 
+            "out_name": "huss", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "tntscpbl": {
+            "comment": "To be specified only in  models which do not separate cloud, precipitation and boundary layer terms.  Includes all boundary layer terms including diffusive ones.", 
+            "dimensions": "alevel site time1", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Tendency of Air Temperature due to Stratiform Cloud Condensation and Evaporation", 
+            "standard_name": "tendency_of_air_temperature_due_to_stratiform_cloud_and_precipitation_and_boundary_layer_mixing", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "K s-1", 
+            "out_name": "tntscpbl", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "rtmt": {
+            "comment": "i.e., at the top of that portion of the atmosphere where dynamics are explicitly treated by the model. This is reported only if it differs from the net downward radiative flux at the top of the atmosphere.", 
+            "dimensions": "site time1", 
+            "positive": "down", 
+            "valid_min": "", 
+            "long_name": "Net Downward Flux at Top of Model", 
+            "standard_name": "net_downward_radiative_flux_at_top_of_atmosphere_model", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "rtmt", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "evspsbl": {
+            "comment": "at surface; flux of water into the atmosphere due to conversion of both liquid and solid phases to vapor (from underlying surface and vegetation)", 
+            "dimensions": "site time1", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Evaporation", 
+            "standard_name": "water_evaporation_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "evspsbl", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "orog": {
+            "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": "site", 
+            "positive": "", 
+            "valid_min": "-700", 
+            "long_name": "Surface Altitude", 
+            "standard_name": "surface_altitude", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "m", 
+            "out_name": "orog", 
+            "type": "real", 
+            "valid_max": "1.00E+04", 
+            "ok_max_mean_abs": ""
+        }, 
+        "rlds": {
+            "comment": "", 
+            "dimensions": "site time1", 
+            "positive": "down", 
+            "valid_min": "", 
+            "long_name": "Surface Downwelling Longwave Radiation", 
+            "standard_name": "surface_downwelling_longwave_flux_in_air", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "rlds", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "rsdcs": {
+            "comment": "Includes also the fluxes at the surface and TOA.", 
+            "dimensions": "alevhalf site time1", 
+            "positive": "down", 
+            "valid_min": "", 
+            "long_name": "Downwelling Clear-Sky Shortwave Radiation", 
+            "standard_name": "downwelling_shortwave_flux_in_air_assuming_clear_sky", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "rsdcs", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "sigma_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: sigma(k+1/2)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "ptop": {
+            "units": "Pa", 
+            "long_name": "pressure at top of model", 
+            "type": "", 
+            "dimensions": ""
+        }, 
+        "tntc": {
+            "comment": "Tendencies from cumulus convection scheme.", 
+            "dimensions": "alevel site time1", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Tendency of Air Temperature due to Moist Convection", 
+            "standard_name": "tendency_of_air_temperature_due_to_convection", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "K s-1", 
+            "out_name": "tntc", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "tnta": {
+            "comment": "", 
+            "dimensions": "alevel site time1", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Tendency of Air Temperature due to Advection", 
+            "standard_name": "tendency_of_air_temperature_due_to_advection", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "K s-1", 
+            "out_name": "tnta", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "rlut": {
+            "comment": "at the top of the atmosphere (to be compared with satellite measurements)", 
+            "dimensions": "site time1", 
+            "positive": "up", 
+            "valid_min": "", 
+            "long_name": "TOA Outgoing Longwave Radiation", 
+            "standard_name": "toa_outgoing_longwave_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "rlut", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "rld": {
+            "comment": "Includes also the fluxes at the surface and TOA.", 
+            "dimensions": "alevhalf site time1", 
+            "positive": "down", 
+            "valid_min": "", 
+            "long_name": "Downwelling Longwave Radiation", 
+            "standard_name": "downwelling_longwave_flux_in_air", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "rld", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "tntr": {
+            "comment": "", 
+            "dimensions": "alevel site time1", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Tendency of Air Temperature due to Radiative Heating", 
+            "standard_name": "tendency_of_air_temperature_due_to_radiative_heating", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "K s-1", 
+            "out_name": "tntr", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "rsdt": {
+            "comment": "at the top of the atmosphere", 
+            "dimensions": "site time1", 
+            "positive": "down", 
+            "valid_min": "", 
+            "long_name": "TOA Incident Shortwave Radiation", 
+            "standard_name": "toa_incoming_shortwave_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "rsdt", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "rsds": {
+            "comment": "surface solar irradiance for UV calculations", 
+            "dimensions": "site time1", 
+            "positive": "down", 
+            "valid_min": "", 
+            "long_name": "Surface Downwelling Shortwave Radiation", 
+            "standard_name": "surface_downwelling_shortwave_flux_in_air", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "rsds", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "ztop": {
+            "units": "m", 
+            "long_name": "height of top of model", 
+            "type": "", 
+            "dimensions": ""
+        }, 
+        "rlu": {
+            "comment": "Includes also the fluxes at the surface and TOA.", 
+            "dimensions": "alevhalf site time1", 
+            "positive": "up", 
+            "valid_min": "", 
+            "long_name": "Upwelling Longwave Radiation", 
+            "standard_name": "upwelling_longwave_flux_in_air", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "rlu", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "z1": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: z1", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "sbl": {
+            "comment": "The snow and ice sublimation flux is the loss of snow and ice mass from the surface resulting from their conversion to water vapor that enters the atmosphere.", 
+            "dimensions": "site time1", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Surface Snow and Ice Sublimation Flux", 
+            "standard_name": "surface_snow_and_ice_sublimation_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "sbl", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "eta": {
+            "units": "m", 
+            "long_name": "Sea Surface Height formula term: thetao", 
+            "type": "real", 
+            "dimensions": "longitude latitude time"
+        }, 
+        "rsus": {
+            "comment": "", 
+            "dimensions": "site time1", 
+            "positive": "up", 
+            "valid_min": "", 
+            "long_name": "Surface Upwelling Shortwave Radiation", 
+            "standard_name": "surface_upwelling_shortwave_flux_in_air", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "rsus", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "rsut": {
+            "comment": "at the top of the atmosphere", 
+            "dimensions": "site time1", 
+            "positive": "up", 
+            "valid_min": "", 
+            "long_name": "TOA Outgoing Shortwave Radiation", 
+            "standard_name": "toa_outgoing_shortwave_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "rsut", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "rldcs": {
+            "comment": "Includes also the fluxes at the surface and TOA.", 
+            "dimensions": "alevhalf site time1", 
+            "positive": "down", 
+            "valid_min": "", 
+            "long_name": "Downwelling Clear-Sky Longwave Radiation", 
+            "standard_name": "downwelling_longwave_flux_in_air_assuming_clear_sky", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "rldcs", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "ci": {
+            "comment": "Fraction of time that convection occurs in the grid cell .", 
+            "dimensions": "site time1", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Fraction of Time Convection Occurs", 
+            "standard_name": "convection_time_fraction", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "1.0", 
+            "out_name": "ci", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "cl": {
+            "comment": "Includes both large-scale and convective cloud.", 
+            "dimensions": "alevel site time1", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Cloud Area Fraction", 
+            "standard_name": "cloud_area_fraction_in_atmosphere_layer", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "%", 
+            "out_name": "cl", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "rlutcs": {
+            "comment": "", 
+            "dimensions": "site time1", 
+            "positive": "up", 
+            "valid_min": "", 
+            "long_name": "TOA Outgoing Clear-Sky Longwave Radiation", 
+            "standard_name": "toa_outgoing_longwave_flux_assuming_clear_sky", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "rlutcs", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "href": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: href", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "hfls": {
+            "comment": "", 
+            "dimensions": "site time1", 
+            "positive": "up", 
+            "valid_min": "", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "hfls", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "pr": {
+            "comment": "includes both liquid and solid phases", 
+            "dimensions": "site time1", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Precipitation", 
+            "standard_name": "precipitation_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "pr", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "ps": {
+            "comment": "surface pressure (not mean sea-level pressure), 2-D field to calculate the 3-D pressure field from hybrid coordinates", 
+            "dimensions": "site time1", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Surface Air Pressure", 
+            "standard_name": "surface_air_pressure", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "Pa", 
+            "out_name": "ps", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "rlus": {
+            "comment": "", 
+            "dimensions": "site time1", 
+            "positive": "up", 
+            "valid_min": "", 
+            "long_name": "Surface Upwelling Longwave Radiation", 
+            "standard_name": "surface_upwelling_longwave_flux_in_air", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "rlus", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "z2": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: z2", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "vas": {
+            "comment": "", 
+            "dimensions": "site time1", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Northward Near-Surface Wind", 
+            "standard_name": "northward_wind", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "m s-1", 
+            "out_name": "vas", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "wap": {
+            "comment": "commonly referred to as ''omega'', this represents the vertical component of velocity in pressure coordinates (positive down)", 
+            "dimensions": "alevel site time1", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "omega (=dp/dt)", 
+            "standard_name": "lagrangian_tendency_of_air_pressure", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "Pa s-1", 
+            "out_name": "wap", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "a": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: a(k)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "zg": {
+            "comment": "", 
+            "dimensions": "alevel site time1", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Geopotential Height", 
+            "standard_name": "geopotential_height", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "m", 
+            "out_name": "zg", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "hurs": {
+            "comment": "This is the relative humidity with respect to liquid water for T> 0 C, and with respect to ice for T<0 C.", 
+            "dimensions": "site time1", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Near-Surface Relative Humidity", 
+            "standard_name": "relative_humidity", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "%", 
+            "out_name": "hurs", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "latitude": {
+            "comment": "", 
+            "dimensions": "site", 
+            "positive": "", 
+            "valid_min": "-90.0", 
+            "long_name": "Latitude", 
+            "standard_name": "latitude", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "degrees_north", 
+            "out_name": "latitude", 
+            "type": "real", 
+            "valid_max": "90.0", 
+            "ok_max_mean_abs": ""
+        }, 
+        "pfull": {
+            "comment": "", 
+            "dimensions": "alevel site time1", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Pressure on Model Levels", 
+            "standard_name": "air_pressure", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "Pa", 
+            "out_name": "pfull", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "tntmp": {
+            "comment": "This includes sources and sinks from parametrized physics (e.g. radiation, convection, boundary layer, stratiform condensation/evaporation, etc.). It excludes sources and sinks from resolved dynamics and numerical diffusion not associated with parametrized physics.  For example, any vertical diffusion which is part of the boundary layer mixing scheme should be included, while numerical diffusion applied in addition to physics or resolved dynamics should be exclude [...]
+            "dimensions": "alevel site time1", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Tendency of Air Temperature due to Diabatic Processes", 
+            "standard_name": "tendency_of_air_temperature_due_to_model_physics", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "K s-1", 
+            "out_name": "tntmp", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "hur": {
+            "comment": "This is the relative humidity with respect to liquid water for T> 0 C, and with respect to ice for T<0 C.", 
+            "dimensions": "alevel site time1", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Relative Humidity", 
+            "standard_name": "relative_humidity", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "%", 
+            "out_name": "hur", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "hus": {
+            "comment": "", 
+            "dimensions": "alevel site time1", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Specific Humidity", 
+            "standard_name": "specific_humidity", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "1.0", 
+            "out_name": "hus", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "rsu": {
+            "comment": "Includes also the fluxes at the surface and TOA.", 
+            "dimensions": "alevhalf site time1", 
+            "positive": "up", 
+            "valid_min": "", 
+            "long_name": "Upwelling Shortwave Radiation", 
+            "standard_name": "upwelling_shortwave_flux_in_air", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "rsu", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "tnt": {
+            "comment": "", 
+            "dimensions": "alevel site time1", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Tendency of Air Temperature", 
+            "standard_name": "tendency_of_air_temperature", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "K s-1", 
+            "out_name": "tnt", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "p0": {
+            "units": "Pa", 
+            "long_name": "vertical coordinate formula term: reference pressure", 
+            "type": "", 
+            "dimensions": ""
+        }, 
+        "b": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: b(k)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "mc": {
+            "comment": "The net mass flux should represent the difference between the updraft and downdraft components.  The flux is computed as the mass divided by the area of the grid cell.", 
+            "dimensions": "alevhalf site time1", 
+            "positive": "up", 
+            "valid_min": "", 
+            "long_name": "Convective Mass Flux", 
+            "standard_name": "atmosphere_net_upward_convective_mass_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "mc", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "tnhusmp": {
+            "comment": "This includes sources and sinks from parametrized moist physics (e.g. convection, boundary layer, stratiform condensation/evaporation, etc.) and excludes sources and sinks from resolved dynamics or from horizontal or vertical numerical diffusion not associated with model physicsl.  For example any diffusive mixing by the boundary layer scheme would be included.", 
+            "dimensions": "alevel site time1", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Tendency of Specific Humidity due to Model Physics", 
+            "standard_name": "tendency_of_specific_humidity_due_to_model_physics", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "s-1", 
+            "out_name": "tnhusmp", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "longitude": {
+            "comment": "", 
+            "dimensions": "site", 
+            "positive": "", 
+            "valid_min": "0.0", 
+            "long_name": "Longitude", 
+            "standard_name": "longitude", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "degrees_east", 
+            "out_name": "longitude", 
+            "type": "real", 
+            "valid_max": "360.0", 
+            "ok_max_mean_abs": ""
+        }, 
+        "fco2antt": {
+            "comment": "This is requested only for the emission-driven coupled carbon climate model runs.  Does not include natural fire sources but, includes all anthropogenic sources, including fossil fuel use, cement production, agricultural burning, and sources associated with anthropogenic land use change excluding forest regrowth.", 
+            "dimensions": "site time1", 
+            "positive": "up", 
+            "valid_min": "", 
+            "long_name": "Carbon Mass Flux into Atmosphere Due to All Anthropogenic Emissions of CO2", 
+            "standard_name": "tendency_of_atmosphere_mass_content_of_carbon_dioxide_expressed_as_carbon_due_to_anthropogenic_emission", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg  m-2 s-1", 
+            "out_name": "fco2antt", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "tauv": {
+            "comment": "", 
+            "dimensions": "site time1", 
+            "positive": "down", 
+            "valid_min": "", 
+            "long_name": "Surface Downward Northward Wind Stress", 
+            "standard_name": "surface_downward_northward_stress", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "Pa", 
+            "out_name": "tauv", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "tauu": {
+            "comment": "", 
+            "dimensions": "site time1", 
+            "positive": "down", 
+            "valid_min": "", 
+            "long_name": "Surface Downward Eastward Wind Stress", 
+            "standard_name": "surface_downward_eastward_stress", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "Pa", 
+            "out_name": "tauu", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "k_c": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: k_c", 
+            "type": "integer", 
+            "dimensions": ""
+        }, 
+        "ua": {
+            "comment": "", 
+            "dimensions": "alevel site time1", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Eastward Wind", 
+            "standard_name": "eastward_wind", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "m s-1", 
+            "out_name": "ua", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "a_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: a(k+1/2)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "va": {
+            "comment": "", 
+            "dimensions": "alevel site time1", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Northward Wind", 
+            "standard_name": "northward_wind", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "m s-1", 
+            "out_name": "va", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "prc": {
+            "comment": "at surface; includes both liquid and solid phases.", 
+            "dimensions": "site time1", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Convective Precipitation", 
+            "standard_name": "convective_precipitation_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "prc", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "tas": {
+            "comment": "near-surface (usually, 2 meter) air temperature", 
+            "dimensions": "site time1", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Near-Surface Air Temperature", 
+            "standard_name": "air_temperature", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "K", 
+            "out_name": "tas", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "rsuscs": {
+            "comment": "", 
+            "dimensions": "site time1", 
+            "positive": "up", 
+            "valid_min": "", 
+            "long_name": "Surface Upwelling Clear-Sky Shortwave Radiation", 
+            "standard_name": "surface_upwelling_shortwave_flux_in_air_assuming_clear_sky", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "rsuscs", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "uas": {
+            "comment": "near-surface (usually, 10 meters) eastward component of wind.", 
+            "dimensions": "site time1", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Eastward Near-Surface Wind", 
+            "standard_name": "eastward_wind", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "m s-1", 
+            "out_name": "uas", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "hfss": {
+            "comment": "", 
+            "dimensions": "site time1", 
+            "positive": "up", 
+            "valid_min": "", 
+            "long_name": "Surface Upward Sensible Heat Flux", 
+            "standard_name": "surface_upward_sensible_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "hfss", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "ap_bnds": {
+            "units": "Pa", 
+            "long_name": "vertical coordinate formula term: ap(k+1/2)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "ap": {
+            "units": "Pa", 
+            "long_name": "vertical coordinate formula term: ap(k)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "prw": {
+            "comment": "vertically integrated through the atmospheric column", 
+            "dimensions": "site time1", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Water Vapor Path", 
+            "standard_name": "atmosphere_water_vapor_content", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2", 
+            "out_name": "prw", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "prsn": {
+            "comment": "at surface; includes precipitation of all forms of water in the solid phase", 
+            "dimensions": "site time1", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Snowfall Flux", 
+            "standard_name": "snowfall_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "prsn", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "zlev": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: zlev(k)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "fco2nat": {
+            "comment": "This is what the atmosphere sees (on its own grid).  This field should be equivalent to the combined natural fluxes of carbon (requested in the L_mon and O_mon tables) that account for natural exchanges between the atmosphere and land or ocean reservoirs (i.e., ''net ecosystem biospheric productivity'', for land, and ''air to sea CO2 flux'', for ocean.)", 
+            "dimensions": "site time1", 
+            "positive": "up", 
+            "valid_min": "", 
+            "long_name": "Surface Carbon Mass Flux into the Atmosphere Due to Natural Sources", 
+            "standard_name": "surface_upward_mass_flux_of_carbon_dioxide_expressed_as_carbon_due_to_emission_from_natural_sources", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "fco2nat", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "rsd": {
+            "comment": "Includes also the fluxes at the surface and TOA.", 
+            "dimensions": "alevhalf site time1", 
+            "positive": "down", 
+            "valid_min": "", 
+            "long_name": "Downwelling Shortwave Radiation", 
+            "standard_name": "downwelling_shortwave_flux_in_air", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "rsd", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "tnhusd": {
+            "comment": "This includes any horizontal or vertical numerical moisture diffusion not associated with the parametrized moist physics or the resolved dynamics.  For example, any vertical diffusion which is part of the boundary layer mixing scheme should be excluded, as should any diffusion which is included in the terms from the resolved dynamics.   This term is required to check the closure of the moisture budget.", 
+            "dimensions": "alevel site time1", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Tendency of Specific Humidity due to Diffusion", 
+            "standard_name": "tendency_of_specific_humidity_due_to_diffusion", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "s-1", 
+            "out_name": "tnhusd", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "tnhusa": {
+            "comment": "", 
+            "dimensions": "alevel site time1", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Tendency of Specific Humidity due to Advection", 
+            "standard_name": "tendency_of_specific_humidity_due_to_advection", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "s-1", 
+            "out_name": "tnhusa", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "tnhusc": {
+            "comment": "Tendencies from cumulus convection scheme.", 
+            "dimensions": "alevel site time1", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Tendency of Specific Humidity due to Convection", 
+            "standard_name": "tendency_of_specific_humidity_due_to_convection", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "s-1", 
+            "out_name": "tnhusc", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "b_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: b(k+1/2)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "phalf": {
+            "comment": "", 
+            "dimensions": "alevhalf site time1", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Pressure on Model Half-Levels", 
+            "standard_name": "air_pressure", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "Pa", 
+            "out_name": "phalf", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "fco2fos": {
+            "comment": "This is the prescribed anthropogenic CO2 flux from fossil fuel use, including cement production, and flaring (but not from land-use changes, agricultural burning, forest regrowth, etc.)", 
+            "dimensions": "site time1", 
+            "positive": "up", 
+            "valid_min": "", 
+            "long_name": "Carbon Mass Flux into Atmosphere Due to Fossil Fuel Emissions of CO2", 
+            "standard_name": "tendency_of_atmosphere_mass_content_of_carbon_dioxide_expressed_as_carbon_due_to_emission_from_fossil_fuel_combustion", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "fco2fos", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "zlev_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: zlev(k+1/2)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "clivi": {
+            "comment": "Mass of ice water in the column divided by the area of the column (not just the area of the cloudy portion of the column). Includes precipitating frozen hydrometeors ONLY if the precipitating hydrometeor affects the calculation of radiative transfer in model.", 
+            "dimensions": "site time1", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Ice Water Path", 
+            "standard_name": "atmosphere_mass_content_of_cloud_ice", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2", 
+            "out_name": "clivi", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "cct": {
+            "comment": "Where convective cloud is present in the grid cell, the instantaneous cloud top altitude should be that of the top of the highest level containing convective cloud. Missing data should be reported in the absence of convective cloud. The time mean should be calculated from these quantities averaging over occasions when convective cloud is present only, and should contain missing data for occasions when no convective cloud is present during the meaning period.", 
+            "dimensions": "site time1", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Air Pressure at Convective Cloud Top", 
+            "standard_name": "air_pressure_at_convective_cloud_top", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "Pa", 
+            "out_name": "cct", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "depth": {
+            "units": "m", 
+            "long_name": "Sea Floor Depth: formula term: thetao", 
+            "type": "real", 
+            "dimensions": "longitude latitude"
+        }, 
+        "tnhusscpbl": {
+            "comment": "To be specified only in  models which do not separate budget terms for stratiform cloud, precipitation and boundary layer schemes.  Includes all bounday layer terms including and diffusive terms.", 
+            "dimensions": "alevel site time1", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Tendency of Specific Humidity due to Stratiform Cloud Condensation and Evaporation", 
+            "standard_name": "tendency_of_specific_humidity_due_to_stratiform_cloud_and_precipitation_and_boundary_layer_mixing", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "s-1", 
+            "out_name": "tnhusscpbl", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "sigma": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: sigma(k)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "ccb": {
+            "comment": "Where convective cloud is present in the grid cell, the instantaneous cloud base altitude should be that of the bottom of the lowest level containing convective cloud. Missing data should be reported in the absence of convective cloud. The time mean should be calculated from these quantities averaging over occasions when convective cloud is present only, and should contain missing data for occasions when no convective cloud is present during the meaning period. ", 
+            "dimensions": "site time1", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Air Pressure at Convective Cloud Base", 
+            "standard_name": "air_pressure_at_convective_cloud_base", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "Pa", 
+            "out_name": "ccb", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }
+    }
+}
diff --git a/TestTables/CMIP6_cfsites.json b/TestTables/CMIP6_cfsites.json
new file mode 100644
index 0000000..194f77e
--- /dev/null
+++ b/TestTables/CMIP6_cfsites.json
@@ -0,0 +1,3487 @@
+{
+    "Header": {
+        "product": "output", 
+        "approx_interval": "0.017361", 
+        "realm": "atmos", 
+        "mip_era": "CMIP6", 
+        "cmor_version": "3.1", 
+        "Conventions": "CF-1.6 CMIP-6.0", 
+        "approx_interval_error": "0.75", 
+        "frequency": "subhr", 
+        "table_id": "Table cfsites", 
+        "data_specs_version": "01.beta.29", 
+        "approx_interval_warning": "0.25", 
+        "generic_levels": "alevel alevhalf", 
+        "missing_value": "1e20", 
+        "table_date": "14 June 2016"
+    }, 
+    "axis_entry": {
+        "typebare": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "bare_ground", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "tau": {
+            "requested": [
+                "0.15", 
+                "0.8", 
+                "2.45", 
+                "6.5", 
+                "16.2", 
+                "41.5", 
+                "100."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "0.0", 
+                "0.3", 
+                "0.3", 
+                "1.3", 
+                "1.3", 
+                "3.6", 
+                "3.6", 
+                "9.4", 
+                "9.4", 
+                "23.0", 
+                "23.0", 
+                "60.0", 
+                "60.0", 
+                "100000."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "cloud optical thickness", 
+            "standard_name": "atmosphere_optical_thickness_due_to_cloud", 
+            "value": "", 
+            "out_name": "tau", 
+            "type": "double", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "olayer100m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "0. 100.", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "50.0", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "100.0", 
+            "axis": "Z"
+        }, 
+        "spectband": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "Spectral Band", 
+            "standard_name": "wave_frequency", 
+            "value": "", 
+            "out_name": "spectband", 
+            "type": "double", 
+            "units": "s-1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "ocean_sigma_z": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "sigma: sigma eta: eta depth: depth depth_c: depth_c nsigma: nsigma zlev: zlev", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "sigma: sigma_bnds eta: eta depth: depth depth_c: depth_c nsigma: nsigma zlev: zlev_bnds", 
+            "bounds_values": "", 
+            "long_name": "ocean sigma over z coordinate", 
+            "standard_name": "ocean_sigma_z", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "for k <= nsigma: z(n,k,j,i) = eta(n,j,i) + sigma(k)*(min(depth_c,depth(j,i))+eta(n,j,i)) ; for k > nsigma: z(n,k,j,i) = zlev(k)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev19": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000.", 
+                "500.", 
+                "100."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "p220": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "44000. 0.0", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "22000.0", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev17": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev10": {
+            "requested": [
+                "100000.", 
+                "85000.", 
+                "70000.", 
+                "50000.", 
+                "25000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "site": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "site index", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "site", 
+            "type": "integer", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "smooth_level": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "a: a b1: b1 b2: b2 ztop: ztop zsurf1: zsurf1 zsurf2: zsurf2", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-200.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "a: a_bnds b1: b1_bnds b2: b2_bnds ztop: ztop zsurf1: zsurf1 zsurf2: zsurf2", 
+            "bounds_values": "", 
+            "long_name": "atmosphere smooth level vertical (SLEVE) coordinate", 
+            "standard_name": "atmosphere_sleve_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "m", 
+            "formula": "z = a*ztop + b1*zsurf1 + b2*zsurf2", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "800000.0", 
+            "axis": "Z"
+        }, 
+        "p840": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "100000. 68000.", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "84000.0", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "ocean_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "sigma: lev eta: eta depth: depth", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "sigma: lev_bnds eta: eta depth: depth", 
+            "bounds_values": "", 
+            "long_name": "ocean sigma coordinate", 
+            "standard_name": "ocean_sigma_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "z(n,k,j,i) = eta(n,j,i) + sigma(k)*(depth(j,i)+eta(n,j,i))", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "0.0", 
+            "axis": "Z"
+        }, 
+        "depth0m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "0.0", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "100.0", 
+            "axis": "Z"
+        }, 
+        "ocean_s": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "s: lev eta: eta depth: depth a: a_coeff b: b_coeff depth_c: depth_c", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "s: lev_bnds eta: eta depth: depth a: a b: b depth_c: depth_c", 
+            "bounds_values": "", 
+            "long_name": "ocean s-coordinate", 
+            "standard_name": "ocean_s_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "z(n,k,j,i) = eta(n,j,i)*(1+s(k)) + depth_c*s(k) + (depth(j,i)-depth_c)*C(k) n where n C(k)=(1-b)*sinh(a*s(k))/sinh(a) +n           b*(tanh(a*(s(k)+0.5))/(2*tanh(0.5*a)) - 0.5)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "0.0", 
+            "axis": "Z"
+        }, 
+        "plev4s": {
+            "requested": [
+                "85000.", 
+                "50000.", 
+                "20000.", 
+                "5000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "typec4pft": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "c4_plant_functional_types", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "plev3h": {
+            "requested": [
+                "10000.", 
+                "1000.", 
+                "100."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "height2m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "up", 
+            "must_have_bounds": "no", 
+            "valid_min": "1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "height", 
+            "standard_name": "height", 
+            "value": "2.0", 
+            "out_name": "height", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "10.0", 
+            "axis": "Z"
+        }, 
+        "time1": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "time", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "plev7h": {
+            "requested": [
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "25000.", 
+                "5000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "sza5": {
+            "requested": [
+                "0.", 
+                "20.", 
+                "40.", 
+                "60.", 
+                "80."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "solar zenith angle", 
+            "standard_name": "solar_zenith_angle", 
+            "value": "", 
+            "out_name": "sza", 
+            "type": "double", 
+            "units": "degree", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "depth_coord": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "ocean depth coordinate", 
+            "standard_name": "depth", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "12000.0", 
+            "axis": "Z"
+        }, 
+        "sdepth1": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "0.0 0.1", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "0.05", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "0.2", 
+            "axis": "Z"
+        }, 
+        "alternate_hybrid_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "ap: ap b: b ps: ps", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "ap: ap_bnds b: b_bnds ps: ps", 
+            "bounds_values": "", 
+            "long_name": "hybrid sigma pressure coordinate", 
+            "standard_name": "atmosphere_hybrid_sigma_pressure_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "1", 
+            "formula": "p = ap + b*ps", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "1.0", 
+            "axis": "Z"
+        }, 
+        "time2": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "time", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "yes", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "time3": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "Diurnal cycle: monthly mean of the diurnal cycle (1 hour steps).", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "oline": {
+            "requested": [
+                "barents_opening", 
+                "bering_strait", 
+                "canadian_archipelago", 
+                "denmark_strait", 
+                "drake_passage", 
+                "english_channel", 
+                "pacific_equatorial_undercurrent", 
+                "faroe_scotland_channel", 
+                "florida_bahamas_strait", 
+                "fram_strait", 
+                "iceland_faroe_channel", 
+                "indonesian_thoughflow", 
+                "mozambique_channel", 
+                "taiwan_luzon_straits", 
+                "windward_passage"
+            ], 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "ocean passage", 
+            "standard_name": "region", 
+            "value": "", 
+            "out_name": "line", 
+            "type": "character", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "plev14": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "25000.", 
+                "15000.", 
+                "10000.", 
+                "5000.", 
+                "2000.", 
+                "1000.", 
+                "500.", 
+                "100."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev8": {
+            "requested": [
+                "100000.", 
+                "85000.", 
+                "70000.", 
+                "50000.", 
+                "25000.", 
+                "10000.", 
+                "5000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "location": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "location index", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "loc", 
+            "type": "integer", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "latitude": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-90.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "latitude", 
+            "standard_name": "latitude", 
+            "value": "", 
+            "out_name": "lat", 
+            "type": "double", 
+            "units": "degrees_north", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "90.0", 
+            "axis": "Y"
+        }, 
+        "plev3": {
+            "requested": [
+                "85000.", 
+                "50000.", 
+                "25000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "basin": {
+            "requested": [
+                "atlantic_arctic_ocean", 
+                "indian_pacific_ocean", 
+                "global_ocean"
+            ], 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "ocean basin", 
+            "standard_name": "region", 
+            "value": "", 
+            "out_name": "basin", 
+            "type": "character", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "p700": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "700 hPa", 
+            "standard_name": "air_pressure", 
+            "value": "70000.", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev7": {
+            "requested": [
+                "90000.", 
+                "74000.", 
+                "62000.", 
+                "50000.", 
+                "37500.", 
+                "24500.", 
+                "9000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "100000.", 
+                "80000.", 
+                "80000.", 
+                "68000.", 
+                "68000.", 
+                "56000.", 
+                "56000.", 
+                "44000.", 
+                "44000.", 
+                "31000.", 
+                "31000.", 
+                "18000.", 
+                "18000.", 
+                " 0."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev4": {
+            "requested": [
+                "92500.", 
+                "85000.", 
+                "50000.", 
+                "25000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev23": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000.", 
+                "700.", 
+                "500.", 
+                "300.", 
+                "200.", 
+                "100.", 
+                "40."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev39": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "17000.", 
+                "15000.", 
+                "13000.", 
+                "11500.", 
+                "10000.", 
+                "9000.", 
+                "8000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1500.", 
+                "1000.", 
+                "700.", 
+                "500.", 
+                "300.", 
+                "200.", 
+                "150.", 
+                "100.", 
+                "70.", 
+                "50.", 
+                "40.", 
+                "30.", 
+                "20.", 
+                "15.", 
+                "10.", 
+                "7.", 
+                "5.", 
+                "3."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "typepever": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "primary_evergreen_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "typesdec": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "secondary_decidous_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "plev27": {
+            "requested": [
+                "100000.", 
+                "97500.", 
+                "95000.", 
+                "92500.", 
+                "90000.", 
+                "87500.", 
+                "85000.", 
+                "82500.", 
+                "80000.", 
+                "77500.", 
+                "75000.", 
+                "70000.", 
+                "65000.", 
+                "60000.", 
+                "55000.", 
+                "50000.", 
+                "45000.", 
+                "40000.", 
+                "35000.", 
+                "30000.", 
+                "25000.", 
+                "22500.", 
+                "20000.", 
+                "17500.", 
+                "15000.", 
+                "12500.", 
+                "10000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "alt40": {
+            "requested": [
+                "240.", 
+                "720.", 
+                "1200.", 
+                "1680.", 
+                "2160.", 
+                "2640.", 
+                "3120.", 
+                "3600.", 
+                "4080.", 
+                "4560.", 
+                "5040.", 
+                "5520.", 
+                "6000.", 
+                "6480.", 
+                "6960.", 
+                "7440.", 
+                "7920.", 
+                "8400.", 
+                "8880.", 
+                "9360.", 
+                "9840.", 
+                "10320.", 
+                "10800.", 
+                "11280.", 
+                "11760.", 
+                "12240.", 
+                "12720.", 
+                "13200.", 
+                "13680.", 
+                "14160.", 
+                "14640.", 
+                "15120.", 
+                "15600.", 
+                "16080.", 
+                "16560.", 
+                "17040.", 
+                "17520.", 
+                "18000.", 
+                "18480.", 
+                "18960."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "0.", 
+                "480.", 
+                "480.", 
+                "960.", 
+                "960.", 
+                "1440.", 
+                "1440.", 
+                "1920.", 
+                "1920.", 
+                "2400.", 
+                "2400.", 
+                "2880.", 
+                "2880.", 
+                "3360.", 
+                "3360.", 
+                "3840.", 
+                "3840.", 
+                "4320.", 
+                "4320.", 
+                "4800.", 
+                "4800.", 
+                "5280.", 
+                "5280.", 
+                "5760.", 
+                "5760.", 
+                "6240.", 
+                "6240.", 
+                "6720.", 
+                "6720.", 
+                "7200.", 
+                "7200.", 
+                "7680.", 
+                "7680.", 
+                "8160.", 
+                "8160.", 
+                "8640.", 
+                "8640.", 
+                "9120.", 
+                "9120.", 
+                "9600.", 
+                "9600.", 
+                "10080.", 
+                "10080.", 
+                "10560.", 
+                "10560.", 
+                "11040.", 
+                "11040.", 
+                "11520.", 
+                "11520.", 
+                "12000.", 
+                "12000.", 
+                "12480.", 
+                "12480.", 
+                "12960.", 
+                "12960.", 
+                "13440.", 
+                "13440.", 
+                "13920.", 
+                "13920.", 
+                "14400.", 
+                "14400.", 
+                "14880.", 
+                "14880.", 
+                "15360.", 
+                "15360.", 
+                "15840.", 
+                "15840.", 
+                "16320.", 
+                "16320.", 
+                "16800.", 
+                "16800.", 
+                "17280.", 
+                "17280.", 
+                "17760.", 
+                "17760.", 
+                "18240.", 
+                "18240.", 
+                "18720.", 
+                "18720.", 
+                "19200."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "altitude", 
+            "standard_name": "altitude", 
+            "value": "", 
+            "out_name": "alt40", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "time": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "time", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "plev7c": {
+            "requested": [
+                "90000.", 
+                "74000.", 
+                "62000.", 
+                "50000.", 
+                "37500.", 
+                "24500.", 
+                "9000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "height10m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "up", 
+            "must_have_bounds": "no", 
+            "valid_min": "1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "height", 
+            "standard_name": "height", 
+            "value": "10.0", 
+            "out_name": "height", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "30.0", 
+            "axis": "Z"
+        }, 
+        "dbze": {
+            "requested": [
+                "-47.5", 
+                "-42.5", 
+                "-37.5", 
+                "-32.5", 
+                "-27.5", 
+                "-22.5", 
+                "-17.5", 
+                "-12.5", 
+                "-7.5", 
+                "-2.5", 
+                "2.5", 
+                "7.5", 
+                "12.5", 
+                "17.5", 
+                "22.5"
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "-50", 
+                "-45", 
+                "-45", 
+                "-40", 
+                "-40", 
+                "-35", 
+                "-35", 
+                "-30", 
+                "-30", 
+                "-25", 
+                "-25", 
+                "-20", 
+                "-20", 
+                "-15", 
+                "-15", 
+                "-10", 
+                "-10", 
+                "-5", 
+                "-5", 
+                "0", 
+                "0", 
+                "5", 
+                "5", 
+                "10", 
+                "10", 
+                "15", 
+                "15", 
+                "20", 
+                "20", 
+                "25."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "CloudSat simulator equivalent radar reflectivity factor", 
+            "standard_name": "equivalent_reflectivity_factor", 
+            "value": "", 
+            "out_name": "dbze", 
+            "type": "double", 
+            "units": "dBZ", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "typesever": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "secondary_evergreen_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "rho": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "density++++?", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "rho", 
+            "type": "double", 
+            "units": "kg m-3", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "depth100m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "80.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "100.0", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "120.0", 
+            "axis": "Z"
+        }, 
+        "effectRadLi": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "Effective Radius of Liquid Aerosols", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "effectRadLi", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "sdepth": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "200.0", 
+            "axis": "Z"
+        }, 
+        "vegtype": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "plant functional type", 
+            "standard_name": "area_type", 
+            "value": "", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "typec3pft": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "c3_plant_functional_types", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "natural_log_pressure": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "p0: p0 lev: lev", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "p0: p0 lev: lev_bnds", 
+            "bounds_values": "", 
+            "long_name": "atmosphere natural log pressure coordinate", 
+            "standard_name": "atmosphere_ln_pressure_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "p = p0 * exp(-lev)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "20.0", 
+            "axis": "Z"
+        }, 
+        "scatratio": {
+            "requested": [
+                "0.005", 
+                "0.605", 
+                "2.1", 
+                "4.", 
+                "6.", 
+                "8.5", 
+                "12.5", 
+                "17.5", 
+                "22.5", 
+                "27.5", 
+                "35.", 
+                "45.", 
+                "55.", 
+                "70.", 
+                "50040."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "0.", 
+                "0.01", 
+                "0.01", 
+                "1.2", 
+                "1.2", 
+                "3.", 
+                "3.", 
+                "5.", 
+                "5.", 
+                "7.", 
+                "7.", 
+                "10.", 
+                "10.", 
+                "15.", 
+                "15.", 
+                "20.", 
+                "20.", 
+                "25.", 
+                "25.", 
+                "30.", 
+                "30.", 
+                "40.", 
+                "40.", 
+                "50.", 
+                "50.", 
+                "60.", 
+                "60.", 
+                "80.", 
+                "80.", 
+                "100000."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "lidar backscattering ratio", 
+            "standard_name": "backscattering_ratio", 
+            "value": "", 
+            "out_name": "scatratio", 
+            "type": "double", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "standard_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "ptop: ptop sigma: lev ps: ps", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "ptop: ptop sigma: lev_bnds ps: ps", 
+            "bounds_values": "", 
+            "long_name": "sigma coordinate", 
+            "standard_name": "atmosphere_sigma_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "p = ptop + sigma*(ps - ptop)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "1.0", 
+            "axis": "Z"
+        }, 
+        "typepdec": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "primary_deciduous_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "hybrid_height": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "a: lev b: b orog: orog", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "a: lev_bnds b: b_bnds orog: orog", 
+            "bounds_values": "", 
+            "long_name": "hybrid height coordinate", 
+            "standard_name": "atmosphere_hybrid_height_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "m", 
+            "formula": "z = a + b*orog", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "longitude": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "longitude", 
+            "standard_name": "longitude", 
+            "value": "", 
+            "out_name": "lon", 
+            "type": "double", 
+            "units": "degrees_east", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "360.0", 
+            "axis": "X"
+        }, 
+        "effectRadIc": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "Effective Radius of Ice Aerosols", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "effectRadIc", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "p1000": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "1000 hPa", 
+            "standard_name": "air_pressure", 
+            "value": "100000.", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "p500": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "500 hPa", 
+            "standard_name": "air_pressure", 
+            "value": "50000.", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "ocean_double_sigma": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "sigma: sigma depth: depth z1: z1 z2: z2 a: a_coeff href: href k_c: k_c", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "sigma: sigma_bnds depth: depth z1: z1 z2: z2 a: a href: href k_c: k_c", 
+            "bounds_values": "", 
+            "long_name": "ocean double sigma coordinate", 
+            "standard_name": "ocean_double_sigma", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "for k <= k_c:n z(k,j,i)= sigma(k)*f(j,i) n for k > k_c:n z(k,j,i)= f(j,i) + (sigma(k)-1)*(depth(j,i)-f(j,i)) n f(j,i)= 0.5*(z1+ z2) + 0.5*(z1-z2)* tanh(2*a/(z1-z2)*(depth(j,i)-href))", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plevs": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "standard_hybrid_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "p0: p0 a: a b: b ps: ps", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "p0: p0 a: a_bnds b: b_bnds ps: ps", 
+            "bounds_values": "", 
+            "long_name": "hybrid sigma pressure coordinate", 
+            "standard_name": "atmosphere_hybrid_sigma_pressure_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "1", 
+            "formula": "p = a*p0 + b*ps", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "1.0", 
+            "axis": "Z"
+        }, 
+        "p560": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "68000. 44000.", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "56000.0", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }
+    }, 
+    "variable_entry": {
+        "sci": {
+            "comment": "Fraction of time that shallow convection occurs in the grid cell.", 
+            "dimensions": "site time1", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Fraction of Time Shallow Convection Occurs", 
+            "standard_name": "shallow_convection_time_fraction", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "1.0", 
+            "out_name": "sci", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "depth_c": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: depth_c", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "rsutcs": {
+            "comment": "", 
+            "dimensions": "site time1", 
+            "positive": "up", 
+            "valid_min": "", 
+            "long_name": "TOA Outgoing Clear-Sky Shortwave Radiation", 
+            "standard_name": "toa_outgoing_shortwave_flux_assuming_clear_sky", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "rsutcs", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "edt": {
+            "comment": "", 
+            "dimensions": "alevel site time1", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Eddy Diffusivity Coefficient for Temperature Variable", 
+            "standard_name": "atmosphere_heat_diffusivity", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "m2 s-1", 
+            "out_name": "edt", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "rldscs": {
+            "comment": "Surface downwelling clear-sky longwave radiation", 
+            "dimensions": "site time1", 
+            "positive": "down", 
+            "valid_min": "", 
+            "long_name": "Surface Downwelling Clear-Sky Longwave Radiation", 
+            "standard_name": "surface_downwelling_longwave_flux_in_air_assuming_clear_sky", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "rldscs", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "tnhus": {
+            "comment": "Tendency of Specific Humidity", 
+            "dimensions": "alevel site time1", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Tendency of Specific Humidity", 
+            "standard_name": "tendency_of_specific_humidity", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "s-1", 
+            "out_name": "tnhus", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "cli": {
+            "comment": "Includes both large-scale and convective cloud. This is calculated as the mass of cloud ice in the grid cell divided by the mass of air (including the water in all phases) in the grid cell. It includes precipitating hydrometeors ONLY if the precipitating hydrometeors affect the calculation of radiative transfer in model.", 
+            "dimensions": "alevel site time1", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Mass Fraction of Cloud Ice", 
+            "standard_name": "mass_fraction_of_cloud_ice_in_air", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "kg kg-1", 
+            "out_name": "cli", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "ts": {
+            "comment": "Temperature of the lower boundary of the atmosphere", 
+            "dimensions": "site time1", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Surface Temperature", 
+            "standard_name": "surface_temperature", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "K", 
+            "out_name": "ts", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "clt": {
+            "comment": "cloud area fraction", 
+            "dimensions": "site time1", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Total Cloud Fraction", 
+            "standard_name": "cloud_area_fraction_in_atmosphere_layer", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "1.0", 
+            "out_name": "clt", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "clw": {
+            "comment": "Includes both large-scale and convective cloud. Calculate as the mass of cloud liquid water in the grid cell divided by the mass of air (including the water in all phases) in the grid cells. Precipitating hydrometeors are included ONLY if the precipitating hydrometeors affect the calculation of radiative transfer in model.", 
+            "dimensions": "alevel site time1", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Mass Fraction of Cloud Liquid Water", 
+            "standard_name": "mass_fraction_of_cloud_liquid_water_in_air", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "kg kg-1", 
+            "out_name": "clw", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "ta": {
+            "comment": "", 
+            "dimensions": "alevel site time1", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Air Temperature", 
+            "standard_name": "air_temperature", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "K", 
+            "out_name": "ta", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "psl": {
+            "comment": "Sea Level Pressure", 
+            "dimensions": "site time1", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Sea Level Pressure", 
+            "standard_name": "air_pressure_at_sea_level", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "Pa", 
+            "out_name": "psl", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "nsigma": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: nsigma", 
+            "type": "integer", 
+            "dimensions": ""
+        }, 
+        "rlucs": {
+            "comment": "Upwelling clear-sky rongwave radiation  (includes the fluxes at the surface and TOA)", 
+            "dimensions": "alevhalf site time1", 
+            "positive": "up", 
+            "valid_min": "", 
+            "long_name": "Upwelling Clear-Sky Longwave Radiation", 
+            "standard_name": "upwelling_longwave_flux_in_air_assuming_clear_sky", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "rlucs", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "sfcWind": {
+            "comment": "near-surface (usually, 10 meters) wind speed.", 
+            "dimensions": "site time1 height10m", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Near-Surface Wind Speed", 
+            "standard_name": "wind_speed", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "m s-1", 
+            "out_name": "sfcWind", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "rsucs": {
+            "comment": "Upwelling clear-sky shortwave radiation  (includes the fluxes at the surface and TOA)", 
+            "dimensions": "alevhalf site time1", 
+            "positive": "up", 
+            "valid_min": "", 
+            "long_name": "Upwelling Clear-Sky Shortwave Radiation", 
+            "standard_name": "upwelling_shortwave_flux_in_air_assuming_clear_sky", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "rsucs", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "clwvi": {
+            "comment": "Mass of condensed (liquid + ice) water in the column divided by the area of the column (not just the area of the cloudy portion of the column). Includes precipitating hydrometeors ONLY if the precipitating hydrometeors affect the calculation of radiative transfer in model.", 
+            "dimensions": "site time1", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Condensed Water Path", 
+            "standard_name": "atmosphere_cloud_condensed_water_content", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2", 
+            "out_name": "clwvi", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "evu": {
+            "comment": "", 
+            "dimensions": "alevel site time1", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Eddy Viscosity Coefficient for Momentum Variables", 
+            "standard_name": "atmosphere_momentum_diffusivity", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "m2 s-1", 
+            "out_name": "evu", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "rsdscs": {
+            "comment": "surface solar irradiance clear sky for UV calculations", 
+            "dimensions": "site time1", 
+            "positive": "down", 
+            "valid_min": "", 
+            "long_name": "Surface Downwelling Clear-Sky Shortwave Radiation", 
+            "standard_name": "surface_downwelling_shortwave_flux_in_air_assuming_clear_sky", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "rsdscs", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "huss": {
+            "comment": "Near-surface (usually, 2 meter) specific humidity.", 
+            "dimensions": "site time1 height2m", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Near-Surface Specific Humidity", 
+            "standard_name": "specific_humidity", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "1.0", 
+            "out_name": "huss", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "tntscpbl": {
+            "comment": "Tendency of Air Temperature Due to Stratiform Cloud and Precipitation and Boundary Layer Mixing (to be specified only in  models which do not separate cloud, precipitation and boundary layer terms.  Includes all boundary layer terms including diffusive ones.)", 
+            "dimensions": "alevel site time1", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Tendency of Air Temperature due to Stratiform Cloud Condensation and Evaporation", 
+            "standard_name": "tendency_of_air_temperature_due_to_stratiform_cloud_and_precipitation_and_boundary_layer_mixing", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "K s-1", 
+            "out_name": "tntscpbl", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "rtmt": {
+            "comment": "Net Downward Radiative Flux at Top of Model : I.e., at the top of that portion of the atmosphere where dynamics are explicitly treated by the model. This is reported only if it differs from the net downward radiative flux at the top of the atmosphere.", 
+            "dimensions": "site time1", 
+            "positive": "down", 
+            "valid_min": "", 
+            "long_name": "Net Downward Flux at Top of Model", 
+            "standard_name": "net_downward_radiative_flux_at_top_of_atmosphere_model", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "rtmt", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "evspsbl": {
+            "comment": "Evaporation at surface: flux of water into the atmosphere due to conversion of both liquid and solid phases to vapor (from underlying surface and vegetation)", 
+            "dimensions": "site time1", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Evaporation", 
+            "standard_name": "water_evaporation_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "evspsbl", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "orog": {
+            "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": "site", 
+            "positive": "", 
+            "valid_min": "-700", 
+            "long_name": "Surface Altitude", 
+            "standard_name": "surface_altitude", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "m", 
+            "out_name": "orog", 
+            "type": "real", 
+            "valid_max": "1.00E+04", 
+            "ok_max_mean_abs": ""
+        }, 
+        "rlds": {
+            "comment": "", 
+            "dimensions": "site time1", 
+            "positive": "down", 
+            "valid_min": "", 
+            "long_name": "Surface Downwelling Longwave Radiation", 
+            "standard_name": "surface_downwelling_longwave_flux_in_air", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "rlds", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "rsdcs": {
+            "comment": "Downwelling clear-sky shortwave radiation (includes the fluxes at the surface and top-of-atmosphere)", 
+            "dimensions": "alevhalf site time1", 
+            "positive": "down", 
+            "valid_min": "", 
+            "long_name": "Downwelling Clear-Sky Shortwave Radiation", 
+            "standard_name": "downwelling_shortwave_flux_in_air_assuming_clear_sky", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "rsdcs", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "sigma_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: sigma(k+1/2)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "ptop": {
+            "units": "Pa", 
+            "long_name": "pressure at top of model", 
+            "type": "", 
+            "dimensions": ""
+        }, 
+        "tntc": {
+            "comment": "Tendencies from cumulus convection scheme.", 
+            "dimensions": "alevel site time1", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Tendency of Air Temperature due to Moist Convection", 
+            "standard_name": "tendency_of_air_temperature_due_to_convection", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "K s-1", 
+            "out_name": "tntc", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "tnta": {
+            "comment": "Tendency of Air Temperature due to Advection", 
+            "dimensions": "alevel site time1", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Tendency of Air Temperature due to Advection", 
+            "standard_name": "tendency_of_air_temperature_due_to_advection", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "K s-1", 
+            "out_name": "tnta", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "rlut": {
+            "comment": "at the top of the atmosphere (to be compared with satellite measurements)", 
+            "dimensions": "site time1", 
+            "positive": "up", 
+            "valid_min": "", 
+            "long_name": "TOA Outgoing Longwave Radiation", 
+            "standard_name": "toa_outgoing_longwave_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "rlut", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "rld": {
+            "comment": "Downwelling Longwave Radiation (includes the fluxes at the surface and TOA)", 
+            "dimensions": "alevhalf site time1", 
+            "positive": "down", 
+            "valid_min": "", 
+            "long_name": "Downwelling Longwave Radiation", 
+            "standard_name": "downwelling_longwave_flux_in_air", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "rld", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "tntr": {
+            "comment": "Tendency of Air Temperature due to Radiative Heating", 
+            "dimensions": "alevel site time1", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Tendency of Air Temperature due to Radiative Heating", 
+            "standard_name": "tendency_of_air_temperature_due_to_radiative_heating", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "K s-1", 
+            "out_name": "tntr", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "rsdt": {
+            "comment": "Shortwave radiation incident at the top of the atmosphere", 
+            "dimensions": "site time1", 
+            "positive": "down", 
+            "valid_min": "", 
+            "long_name": "TOA Incident Shortwave Radiation", 
+            "standard_name": "toa_incoming_shortwave_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "rsdt", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "rsds": {
+            "comment": "surface solar irradiance for UV calculations", 
+            "dimensions": "site time1", 
+            "positive": "down", 
+            "valid_min": "", 
+            "long_name": "Surface Downwelling Shortwave Radiation", 
+            "standard_name": "surface_downwelling_shortwave_flux_in_air", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "rsds", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "ztop": {
+            "units": "m", 
+            "long_name": "height of top of model", 
+            "type": "", 
+            "dimensions": ""
+        }, 
+        "rlu": {
+            "comment": "Upwelling longwave radiation (includes the fluxes at the surface and TOA)", 
+            "dimensions": "alevhalf site time1", 
+            "positive": "up", 
+            "valid_min": "", 
+            "long_name": "Upwelling Longwave Radiation", 
+            "standard_name": "upwelling_longwave_flux_in_air", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "rlu", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "z1": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: z1", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "sbl": {
+            "comment": "The snow and ice sublimation flux is the loss of snow and ice mass from the surface resulting from their conversion to water vapor that enters the atmosphere.", 
+            "dimensions": "site time1", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Surface Snow and Ice Sublimation Flux", 
+            "standard_name": "surface_snow_and_ice_sublimation_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "sbl", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "eta": {
+            "units": "m", 
+            "long_name": "Sea Surface Height formula term: thetao", 
+            "type": "real", 
+            "dimensions": "longitude latitude time"
+        }, 
+        "rsus": {
+            "comment": "", 
+            "dimensions": "site time1", 
+            "positive": "up", 
+            "valid_min": "", 
+            "long_name": "Surface Upwelling Shortwave Radiation", 
+            "standard_name": "surface_upwelling_shortwave_flux_in_air", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "rsus", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "rsut": {
+            "comment": "at the top of the atmosphere", 
+            "dimensions": "site time1", 
+            "positive": "up", 
+            "valid_min": "", 
+            "long_name": "TOA Outgoing Shortwave Radiation", 
+            "standard_name": "toa_outgoing_shortwave_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "rsut", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "rldcs": {
+            "comment": "Downwelling clear-sky longwave radiation (includes the fluxes at the surface and TOA)", 
+            "dimensions": "alevhalf site time1", 
+            "positive": "down", 
+            "valid_min": "", 
+            "long_name": "Downwelling Clear-Sky Longwave Radiation", 
+            "standard_name": "downwelling_longwave_flux_in_air_assuming_clear_sky", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "rldcs", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "ci": {
+            "comment": "Fraction of time that convection occurs in the grid cell.", 
+            "dimensions": "site time1", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Fraction of Time Convection Occurs", 
+            "standard_name": "convection_time_fraction", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "1.0", 
+            "out_name": "ci", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "cl": {
+            "comment": "Percentage cloud cover, including both large-scale and convective cloud.", 
+            "dimensions": "alevel site time1", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Cloud Area Fraction", 
+            "standard_name": "cloud_area_fraction_in_atmosphere_layer", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "%", 
+            "out_name": "cl", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "rlutcs": {
+            "comment": "", 
+            "dimensions": "site time1", 
+            "positive": "up", 
+            "valid_min": "", 
+            "long_name": "TOA Outgoing Clear-Sky Longwave Radiation", 
+            "standard_name": "toa_outgoing_longwave_flux_assuming_clear_sky", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "rlutcs", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "href": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: href", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "hfls": {
+            "comment": "", 
+            "dimensions": "site time1", 
+            "positive": "up", 
+            "valid_min": "", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "hfls", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "pr": {
+            "comment": "includes both liquid and solid phases", 
+            "dimensions": "site time1", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Precipitation", 
+            "standard_name": "precipitation_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "pr", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "ps": {
+            "comment": "surface pressure (not mean sea-level pressure), 2-D field to calculate the 3-D pressure field from hybrid coordinates", 
+            "dimensions": "site time1", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Surface Air Pressure", 
+            "standard_name": "surface_air_pressure", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "Pa", 
+            "out_name": "ps", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "rlus": {
+            "comment": "", 
+            "dimensions": "site time1", 
+            "positive": "up", 
+            "valid_min": "", 
+            "long_name": "Surface Upwelling Longwave Radiation", 
+            "standard_name": "surface_upwelling_longwave_flux_in_air", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "rlus", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "z2": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: z2", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "vas": {
+            "comment": "Northward component of the near surface wind", 
+            "dimensions": "site time1 height10m", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Northward Near-Surface Wind", 
+            "standard_name": "northward_wind", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "m s-1", 
+            "out_name": "vas", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "wap": {
+            "comment": "Omega (vertical velocity in pressure coordinates, positive downwards)", 
+            "dimensions": "alevel site time1", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "omega (=dp/dt)", 
+            "standard_name": "lagrangian_tendency_of_air_pressure", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "Pa s-1", 
+            "out_name": "wap", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "a": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: a(k)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "zg": {
+            "comment": "", 
+            "dimensions": "alevel site time1", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Geopotential Height", 
+            "standard_name": "geopotential_height", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "m", 
+            "out_name": "zg", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "hurs": {
+            "comment": "The relative humidity with respect to liquid water for T> 0 C, and with respect to ice for T<0 C.", 
+            "dimensions": "site time1 height2m", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Near-Surface Relative Humidity", 
+            "standard_name": "relative_humidity", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "%", 
+            "out_name": "hurs", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "latitude": {
+            "comment": "", 
+            "dimensions": "site", 
+            "positive": "", 
+            "valid_min": "-90.0", 
+            "long_name": "Latitude", 
+            "standard_name": "latitude", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "degrees_north", 
+            "out_name": "latitude", 
+            "type": "real", 
+            "valid_max": "90.0", 
+            "ok_max_mean_abs": ""
+        }, 
+        "pfull": {
+            "comment": "Air pressure on model levels", 
+            "dimensions": "alevel site time1", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Pressure on Model Levels", 
+            "standard_name": "air_pressure", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "Pa", 
+            "out_name": "pfull", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "tntmp": {
+            "comment": "Tendency of air temperature due to model physics. his includes sources and sinks from parametrized physics (e.g. radiation, convection, boundary layer, stratiform condensation/evaporation, etc.). It excludes sources and sinks from resolved dynamics and numerical diffusion not associated with parametrized physics.  For example, any vertical diffusion which is part of the boundary layer mixing scheme should be included, while numerical diffusion applied in addition  [...]
+            "dimensions": "alevel site time1", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Tendency of Air Temperature due to Diabatic Processes", 
+            "standard_name": "tendency_of_air_temperature_due_to_model_physics", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "K s-1", 
+            "out_name": "tntmp", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "hur": {
+            "comment": "The relative humidity with respect to liquid water for T> 0 C, and with respect to ice for T<0 C.", 
+            "dimensions": "alevel site time1", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Relative Humidity", 
+            "standard_name": "relative_humidity", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "%", 
+            "out_name": "hur", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "hus": {
+            "comment": "", 
+            "dimensions": "alevel site time1", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Specific Humidity", 
+            "standard_name": "specific_humidity", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "1.0", 
+            "out_name": "hus", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "rsu": {
+            "comment": "Upwelling shortwave radiation  (includes also the fluxes at the surface and top of atmosphere)", 
+            "dimensions": "alevhalf site time1", 
+            "positive": "up", 
+            "valid_min": "", 
+            "long_name": "Upwelling Shortwave Radiation", 
+            "standard_name": "upwelling_shortwave_flux_in_air", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "rsu", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "tnt": {
+            "comment": "Tendency of Air Temperature", 
+            "dimensions": "alevel site time1", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Tendency of Air Temperature", 
+            "standard_name": "tendency_of_air_temperature", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "K s-1", 
+            "out_name": "tnt", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "p0": {
+            "units": "Pa", 
+            "long_name": "vertical coordinate formula term: reference pressure", 
+            "type": "", 
+            "dimensions": ""
+        }, 
+        "b": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: b(k)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "mc": {
+            "comment": "The net mass flux should represent the difference between the updraft and downdraft components.  The flux is computed as the mass divided by the area of the grid cell.", 
+            "dimensions": "alevhalf site time1", 
+            "positive": "up", 
+            "valid_min": "", 
+            "long_name": "Convective Mass Flux", 
+            "standard_name": "atmosphere_net_upward_convective_mass_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "mc", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "tnhusmp": {
+            "comment": "Tendency of specific humidity due to model physics. This includes sources and sinks from parametrized moist physics (e.g. convection, boundary layer, stratiform condensation/evaporation, etc.) and excludes sources and sinks from resolved dynamics or from horizontal or vertical numerical diffusion not associated with model physicsl.  For example any diffusive mixing by the boundary layer scheme would be included.", 
+            "dimensions": "alevel site time1", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Tendency of Specific Humidity due to Model Physics", 
+            "standard_name": "tendency_of_specific_humidity_due_to_model_physics", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "s-1", 
+            "out_name": "tnhusmp", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "longitude": {
+            "comment": "", 
+            "dimensions": "site", 
+            "positive": "", 
+            "valid_min": "0.0", 
+            "long_name": "Longitude", 
+            "standard_name": "longitude", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "degrees_east", 
+            "out_name": "longitude", 
+            "type": "real", 
+            "valid_max": "360.0", 
+            "ok_max_mean_abs": ""
+        }, 
+        "fco2antt": {
+            "comment": "This is requested only for the emission-driven coupled carbon climate model runs.  Does not include natural fire sources but, includes all anthropogenic sources, including fossil fuel use, cement production, agricultural burning, and sources associated with anthropogenic land use change excluding forest regrowth.", 
+            "dimensions": "site time1", 
+            "positive": "up", 
+            "valid_min": "", 
+            "long_name": "Carbon Mass Flux into Atmosphere Due to All Anthropogenic Emissions of CO2", 
+            "standard_name": "tendency_of_atmosphere_mass_content_of_carbon_dioxide_expressed_as_carbon_due_to_anthropogenic_emission", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg  m-2 s-1", 
+            "out_name": "fco2antt", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "tauv": {
+            "comment": "Downward northward wind stress at the surface", 
+            "dimensions": "site time1", 
+            "positive": "down", 
+            "valid_min": "", 
+            "long_name": "Surface Downward Northward Wind Stress", 
+            "standard_name": "surface_downward_northward_stress", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "Pa", 
+            "out_name": "tauv", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "tauu": {
+            "comment": "Downward eastward wind stress at the surface", 
+            "dimensions": "site time1", 
+            "positive": "down", 
+            "valid_min": "", 
+            "long_name": "Surface Downward Eastward Wind Stress", 
+            "standard_name": "surface_downward_eastward_stress", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "Pa", 
+            "out_name": "tauu", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "k_c": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: k_c", 
+            "type": "integer", 
+            "dimensions": ""
+        }, 
+        "ua": {
+            "comment": "", 
+            "dimensions": "alevel site time1", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Eastward Wind", 
+            "standard_name": "eastward_wind", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "m s-1", 
+            "out_name": "ua", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "a_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: a(k+1/2)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "va": {
+            "comment": "", 
+            "dimensions": "alevel site time1", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Northward Wind", 
+            "standard_name": "northward_wind", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "m s-1", 
+            "out_name": "va", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "prc": {
+            "comment": "Convective precipitation at surface; includes both liquid and solid phases.", 
+            "dimensions": "site time1", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Convective Precipitation", 
+            "standard_name": "convective_precipitation_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "prc", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "tas": {
+            "comment": "near-surface (usually, 2 meter) air temperature", 
+            "dimensions": "site time1 height2m", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Near-Surface Air Temperature", 
+            "standard_name": "air_temperature", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "K", 
+            "out_name": "tas", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "rsuscs": {
+            "comment": "Surface upwelling clear-sky shortwave radiation", 
+            "dimensions": "site time1", 
+            "positive": "up", 
+            "valid_min": "", 
+            "long_name": "Surface Upwelling Clear-Sky Shortwave Radiation", 
+            "standard_name": "surface_upwelling_shortwave_flux_in_air_assuming_clear_sky", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "rsuscs", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "uas": {
+            "comment": "Eastward component of the near-surface (usually, 10 meters)  wind", 
+            "dimensions": "site time1 height10m", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Eastward Near-Surface Wind", 
+            "standard_name": "eastward_wind", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "m s-1", 
+            "out_name": "uas", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "hfss": {
+            "comment": "", 
+            "dimensions": "site time1", 
+            "positive": "up", 
+            "valid_min": "", 
+            "long_name": "Surface Upward Sensible Heat Flux", 
+            "standard_name": "surface_upward_sensible_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "hfss", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "ap_bnds": {
+            "units": "Pa", 
+            "long_name": "vertical coordinate formula term: ap(k+1/2)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "ap": {
+            "units": "Pa", 
+            "long_name": "vertical coordinate formula term: ap(k)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "prw": {
+            "comment": "vertically integrated through the atmospheric column", 
+            "dimensions": "site time1", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Water Vapor Path", 
+            "standard_name": "atmosphere_water_vapor_content", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2", 
+            "out_name": "prw", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "prsn": {
+            "comment": "at surface; includes precipitation of all forms of water in the solid phase", 
+            "dimensions": "site time1", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Snowfall Flux", 
+            "standard_name": "snowfall_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "prsn", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "zlev": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: zlev(k)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "fco2nat": {
+            "comment": "This is what the atmosphere sees (on its own grid).  This field should be equivalent to the combined natural fluxes of carbon  that account for natural exchanges between the atmosphere and land (nep) or ocean (fgco2) reservoirs.", 
+            "dimensions": "site time1", 
+            "positive": "up", 
+            "valid_min": "", 
+            "long_name": "Surface Carbon Mass Flux into the Atmosphere Due to Natural Sources", 
+            "standard_name": "surface_upward_mass_flux_of_carbon_dioxide_expressed_as_carbon_due_to_emission_from_natural_sources", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "fco2nat", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "rsd": {
+            "comment": "Downwelling shortwave radiation (includes the fluxes at the surface and top-of-atmosphere)", 
+            "dimensions": "alevhalf site time1", 
+            "positive": "down", 
+            "valid_min": "", 
+            "long_name": "Downwelling Shortwave Radiation", 
+            "standard_name": "downwelling_shortwave_flux_in_air", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "rsd", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "tnhusd": {
+            "comment": "Tendency of specific humidity due to numerical diffusion.This includes any horizontal or vertical numerical moisture diffusion not associated with the parametrized moist physics or the resolved dynamics.  For example, any vertical diffusion which is part of the boundary layer mixing scheme should be excluded, as should any diffusion which is included in the terms from the resolved dynamics.   This term is required to check the closure of the moisture budget.", 
+            "dimensions": "alevel site time1", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Tendency of Specific Humidity due to Diffusion", 
+            "standard_name": "tendency_of_specific_humidity_due_to_diffusion", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "s-1", 
+            "out_name": "tnhusd", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "tnhusa": {
+            "comment": "Tendency of Specific Humidity due to Advection", 
+            "dimensions": "alevel site time1", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Tendency of Specific Humidity due to Advection", 
+            "standard_name": "tendency_of_specific_humidity_due_to_advection", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "s-1", 
+            "out_name": "tnhusa", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "tnhusc": {
+            "comment": "Tendencies from cumulus convection scheme.", 
+            "dimensions": "alevel site time1", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Tendency of Specific Humidity due to Convection", 
+            "standard_name": "tendency_of_specific_humidity_due_to_convection", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "s-1", 
+            "out_name": "tnhusc", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "b_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: b(k+1/2)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "phalf": {
+            "comment": "Air pressure on model half-levels", 
+            "dimensions": "alevhalf site time1", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Pressure on Model Half-Levels", 
+            "standard_name": "air_pressure", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "Pa", 
+            "out_name": "phalf", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "fco2fos": {
+            "comment": "This is the prescribed anthropogenic CO2 flux from fossil fuel use, including cement production, and flaring (but not from land-use changes, agricultural burning, forest regrowth, etc.)", 
+            "dimensions": "site time1", 
+            "positive": "up", 
+            "valid_min": "", 
+            "long_name": "Carbon Mass Flux into Atmosphere Due to Fossil Fuel Emissions of CO2", 
+            "standard_name": "tendency_of_atmosphere_mass_content_of_carbon_dioxide_expressed_as_carbon_due_to_emission_from_fossil_fuel_combustion", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "fco2fos", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "zlev_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: zlev(k+1/2)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "clivi": {
+            "comment": "Mass of ice water in the column divided by the area of the column (not just the area of the cloudy portion of the column). Includes precipitating frozen hydrometeors ONLY if the precipitating hydrometeor affects the calculation of radiative transfer in model.", 
+            "dimensions": "site time1", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Ice Water Path", 
+            "standard_name": "atmosphere_mass_content_of_cloud_ice", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2", 
+            "out_name": "clivi", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "cct": {
+            "comment": "Where convective cloud is present in the grid cell, the instantaneous cloud top altitude should be that of the top of the highest level containing convective cloud. Missing data should be reported in the absence of convective cloud. The time mean should be calculated from these quantities averaging over occasions when convective cloud is present only, and should contain missing data for occasions when no convective cloud is present during the meaning period.", 
+            "dimensions": "site time1", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Air Pressure at Convective Cloud Top", 
+            "standard_name": "air_pressure_at_convective_cloud_top", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "Pa", 
+            "out_name": "cct", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "depth": {
+            "units": "m", 
+            "long_name": "Sea Floor Depth: formula term: thetao", 
+            "type": "real", 
+            "dimensions": "longitude latitude"
+        }, 
+        "tnhusscpbl": {
+            "comment": "Tendency of Specific Humidity Due to Stratiform Cloud and Precipitation and Boundary Layer Mixing  (to be specified only in  models which do not separate budget terms for stratiform cloud, precipitation and boundary layer schemes.  Includes all bounday layer terms including and diffusive terms.)", 
+            "dimensions": "alevel site time1", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Tendency of Specific Humidity due to Stratiform Cloud Condensation and Evaporation", 
+            "standard_name": "tendency_of_specific_humidity_due_to_stratiform_cloud_and_precipitation_and_boundary_layer_mixing", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "s-1", 
+            "out_name": "tnhusscpbl", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "sigma": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: sigma(k)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "ccb": {
+            "comment": "Where convective cloud is present in the grid cell, the instantaneous cloud base altitude should be that of the bottom of the lowest level containing convective cloud. Missing data should be reported in the absence of convective cloud. The time mean should be calculated from these quantities averaging over occasions when convective cloud is present only, and should contain missing data for occasions when no convective cloud is present during the meaning period. ", 
+            "dimensions": "site time1", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Air Pressure at Convective Cloud Base", 
+            "standard_name": "air_pressure_at_convective_cloud_base", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "Pa", 
+            "out_name": "ccb", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }
+    }
+}
diff --git a/TestTables/CMIP6_configure.json b/TestTables/CMIP6_configure.json
new file mode 100644
index 0000000..64d2594
--- /dev/null
+++ b/TestTables/CMIP6_configure.json
@@ -0,0 +1,5 @@
+    "CMIP6_configuration":{
+                    "activity_id":"",
+                    "experiment_id":"",
+              },
+
diff --git a/TestTables/CMIP6_day.json b/TestTables/CMIP6_day.json
new file mode 100644
index 0000000..41b45ef
--- /dev/null
+++ b/TestTables/CMIP6_day.json
@@ -0,0 +1,2851 @@
+{
+    "Header": {
+        "product": "output", 
+        "approx_interval": "1.00000", 
+        "realm": "atmos", 
+        "cmor_version": "3.1", 
+        "Conventions": "CF-1.6 CMIP-6.0", 
+        "frequency": "day", 
+        "table_id": "Table day", 
+        "data_specs_version": "01.beta.29", 
+        "mip_era": "CMIP6", 
+        "generic_levels": "", 
+        "missing_value": "1e20", 
+        "table_date": "14 June 2016"
+    }, 
+    "axis_entry": {
+        "typebare": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "bare_ground", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "tau": {
+            "requested": [
+                "0.15", 
+                "0.8", 
+                "2.45", 
+                "6.5", 
+                "16.2", 
+                "41.5", 
+                "100."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "0.0", 
+                "0.3", 
+                "0.3", 
+                "1.3", 
+                "1.3", 
+                "3.6", 
+                "3.6", 
+                "9.4", 
+                "9.4", 
+                "23.0", 
+                "23.0", 
+                "60.0", 
+                "60.0", 
+                "100000."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "cloud optical thickness", 
+            "standard_name": "atmosphere_optical_thickness_due_to_cloud", 
+            "value": "", 
+            "out_name": "tau", 
+            "type": "double", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "olayer100m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "0. 100.", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "50.0", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "100.0", 
+            "axis": "Z"
+        }, 
+        "spectband": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "Spectral Band", 
+            "standard_name": "wave_frequency", 
+            "value": "", 
+            "out_name": "spectband", 
+            "type": "double", 
+            "units": "s-1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "ocean_sigma_z": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "sigma: sigma eta: eta depth: depth depth_c: depth_c nsigma: nsigma zlev: zlev", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "sigma: sigma_bnds eta: eta depth: depth depth_c: depth_c nsigma: nsigma zlev: zlev_bnds", 
+            "bounds_values": "", 
+            "long_name": "ocean sigma over z coordinate", 
+            "standard_name": "ocean_sigma_z", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "for k <= nsigma: z(n,k,j,i) = eta(n,j,i) + sigma(k)*(min(depth_c,depth(j,i))+eta(n,j,i)) ; for k > nsigma: z(n,k,j,i) = zlev(k)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev19": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000.", 
+                "500.", 
+                "100."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "p220": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "44000. 0.0", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "22000.0", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev17": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev10": {
+            "requested": [
+                "100000.", 
+                "85000.", 
+                "70000.", 
+                "50000.", 
+                "25000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "site": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "site index", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "site", 
+            "type": "integer", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "smooth_level": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "a: a b1: b1 b2: b2 ztop: ztop zsurf1: zsurf1 zsurf2: zsurf2", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-200.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "a: a_bnds b1: b1_bnds b2: b2_bnds ztop: ztop zsurf1: zsurf1 zsurf2: zsurf2", 
+            "bounds_values": "", 
+            "long_name": "atmosphere smooth level vertical (SLEVE) coordinate", 
+            "standard_name": "atmosphere_sleve_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "m", 
+            "formula": "z = a*ztop + b1*zsurf1 + b2*zsurf2", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "800000.0", 
+            "axis": "Z"
+        }, 
+        "p840": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "100000. 68000.", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "84000.0", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "ocean_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "sigma: lev eta: eta depth: depth", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "sigma: lev_bnds eta: eta depth: depth", 
+            "bounds_values": "", 
+            "long_name": "ocean sigma coordinate", 
+            "standard_name": "ocean_sigma_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "z(n,k,j,i) = eta(n,j,i) + sigma(k)*(depth(j,i)+eta(n,j,i))", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "0.0", 
+            "axis": "Z"
+        }, 
+        "depth0m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "0.0", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "100.0", 
+            "axis": "Z"
+        }, 
+        "ocean_s": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "s: lev eta: eta depth: depth a: a_coeff b: b_coeff depth_c: depth_c", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "s: lev_bnds eta: eta depth: depth a: a b: b depth_c: depth_c", 
+            "bounds_values": "", 
+            "long_name": "ocean s-coordinate", 
+            "standard_name": "ocean_s_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "z(n,k,j,i) = eta(n,j,i)*(1+s(k)) + depth_c*s(k) + (depth(j,i)-depth_c)*C(k) n where n C(k)=(1-b)*sinh(a*s(k))/sinh(a) +n           b*(tanh(a*(s(k)+0.5))/(2*tanh(0.5*a)) - 0.5)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "0.0", 
+            "axis": "Z"
+        }, 
+        "plev4s": {
+            "requested": [
+                "85000.", 
+                "50000.", 
+                "20000.", 
+                "5000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "typec4pft": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "c4_plant_functional_types", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "plev3h": {
+            "requested": [
+                "10000.", 
+                "1000.", 
+                "100."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "height2m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "up", 
+            "must_have_bounds": "no", 
+            "valid_min": "1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "height", 
+            "standard_name": "height", 
+            "value": "2.0", 
+            "out_name": "height", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "10.0", 
+            "axis": "Z"
+        }, 
+        "time1": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "time", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "plev7h": {
+            "requested": [
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "25000.", 
+                "5000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "sza5": {
+            "requested": [
+                "0.", 
+                "20.", 
+                "40.", 
+                "60.", 
+                "80."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "solar zenith angle", 
+            "standard_name": "solar_zenith_angle", 
+            "value": "", 
+            "out_name": "sza", 
+            "type": "double", 
+            "units": "degree", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "depth_coord": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "ocean depth coordinate", 
+            "standard_name": "depth", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "12000.0", 
+            "axis": "Z"
+        }, 
+        "sdepth1": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "0.0 0.1", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "0.05", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "0.2", 
+            "axis": "Z"
+        }, 
+        "alternate_hybrid_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "ap: ap b: b ps: ps", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "ap: ap_bnds b: b_bnds ps: ps", 
+            "bounds_values": "", 
+            "long_name": "hybrid sigma pressure coordinate", 
+            "standard_name": "atmosphere_hybrid_sigma_pressure_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "1", 
+            "formula": "p = ap + b*ps", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "1.0", 
+            "axis": "Z"
+        }, 
+        "time2": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "time", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "yes", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "time3": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "Diurnal cycle: monthly mean of the diurnal cycle (1 hour steps).", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "oline": {
+            "requested": [
+                "barents_opening", 
+                "bering_strait", 
+                "canadian_archipelago", 
+                "denmark_strait", 
+                "drake_passage", 
+                "english_channel", 
+                "pacific_equatorial_undercurrent", 
+                "faroe_scotland_channel", 
+                "florida_bahamas_strait", 
+                "fram_strait", 
+                "iceland_faroe_channel", 
+                "indonesian_thoughflow", 
+                "mozambique_channel", 
+                "taiwan_luzon_straits", 
+                "windward_passage"
+            ], 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "ocean passage", 
+            "standard_name": "region", 
+            "value": "", 
+            "out_name": "line", 
+            "type": "character", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "plev14": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "25000.", 
+                "15000.", 
+                "10000.", 
+                "5000.", 
+                "2000.", 
+                "1000.", 
+                "500.", 
+                "100."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev8": {
+            "requested": [
+                "100000.", 
+                "85000.", 
+                "70000.", 
+                "50000.", 
+                "25000.", 
+                "10000.", 
+                "5000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "location": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "location index", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "loc", 
+            "type": "integer", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "latitude": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-90.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "latitude", 
+            "standard_name": "latitude", 
+            "value": "", 
+            "out_name": "lat", 
+            "type": "double", 
+            "units": "degrees_north", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "90.0", 
+            "axis": "Y"
+        }, 
+        "plev3": {
+            "requested": [
+                "85000.", 
+                "50000.", 
+                "25000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "basin": {
+            "requested": [
+                "atlantic_arctic_ocean", 
+                "indian_pacific_ocean", 
+                "global_ocean"
+            ], 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "ocean basin", 
+            "standard_name": "region", 
+            "value": "", 
+            "out_name": "basin", 
+            "type": "character", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "p700": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "700 hPa", 
+            "standard_name": "air_pressure", 
+            "value": "70000.", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev7": {
+            "requested": [
+                "90000.", 
+                "74000.", 
+                "62000.", 
+                "50000.", 
+                "37500.", 
+                "24500.", 
+                "9000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "100000.", 
+                "80000.", 
+                "80000.", 
+                "68000.", 
+                "68000.", 
+                "56000.", 
+                "56000.", 
+                "44000.", 
+                "44000.", 
+                "31000.", 
+                "31000.", 
+                "18000.", 
+                "18000.", 
+                " 0."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev4": {
+            "requested": [
+                "92500.", 
+                "85000.", 
+                "50000.", 
+                "25000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev23": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000.", 
+                "700.", 
+                "500.", 
+                "300.", 
+                "200.", 
+                "100.", 
+                "40."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev39": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "17000.", 
+                "15000.", 
+                "13000.", 
+                "11500.", 
+                "10000.", 
+                "9000.", 
+                "8000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1500.", 
+                "1000.", 
+                "700.", 
+                "500.", 
+                "300.", 
+                "200.", 
+                "150.", 
+                "100.", 
+                "70.", 
+                "50.", 
+                "40.", 
+                "30.", 
+                "20.", 
+                "15.", 
+                "10.", 
+                "7.", 
+                "5.", 
+                "3."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "typepever": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "primary_evergreen_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "typesdec": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "secondary_decidous_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "plev27": {
+            "requested": [
+                "100000.", 
+                "97500.", 
+                "95000.", 
+                "92500.", 
+                "90000.", 
+                "87500.", 
+                "85000.", 
+                "82500.", 
+                "80000.", 
+                "77500.", 
+                "75000.", 
+                "70000.", 
+                "65000.", 
+                "60000.", 
+                "55000.", 
+                "50000.", 
+                "45000.", 
+                "40000.", 
+                "35000.", 
+                "30000.", 
+                "25000.", 
+                "22500.", 
+                "20000.", 
+                "17500.", 
+                "15000.", 
+                "12500.", 
+                "10000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "alt40": {
+            "requested": [
+                "240.", 
+                "720.", 
+                "1200.", 
+                "1680.", 
+                "2160.", 
+                "2640.", 
+                "3120.", 
+                "3600.", 
+                "4080.", 
+                "4560.", 
+                "5040.", 
+                "5520.", 
+                "6000.", 
+                "6480.", 
+                "6960.", 
+                "7440.", 
+                "7920.", 
+                "8400.", 
+                "8880.", 
+                "9360.", 
+                "9840.", 
+                "10320.", 
+                "10800.", 
+                "11280.", 
+                "11760.", 
+                "12240.", 
+                "12720.", 
+                "13200.", 
+                "13680.", 
+                "14160.", 
+                "14640.", 
+                "15120.", 
+                "15600.", 
+                "16080.", 
+                "16560.", 
+                "17040.", 
+                "17520.", 
+                "18000.", 
+                "18480.", 
+                "18960."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "0.", 
+                "480.", 
+                "480.", 
+                "960.", 
+                "960.", 
+                "1440.", 
+                "1440.", 
+                "1920.", 
+                "1920.", 
+                "2400.", 
+                "2400.", 
+                "2880.", 
+                "2880.", 
+                "3360.", 
+                "3360.", 
+                "3840.", 
+                "3840.", 
+                "4320.", 
+                "4320.", 
+                "4800.", 
+                "4800.", 
+                "5280.", 
+                "5280.", 
+                "5760.", 
+                "5760.", 
+                "6240.", 
+                "6240.", 
+                "6720.", 
+                "6720.", 
+                "7200.", 
+                "7200.", 
+                "7680.", 
+                "7680.", 
+                "8160.", 
+                "8160.", 
+                "8640.", 
+                "8640.", 
+                "9120.", 
+                "9120.", 
+                "9600.", 
+                "9600.", 
+                "10080.", 
+                "10080.", 
+                "10560.", 
+                "10560.", 
+                "11040.", 
+                "11040.", 
+                "11520.", 
+                "11520.", 
+                "12000.", 
+                "12000.", 
+                "12480.", 
+                "12480.", 
+                "12960.", 
+                "12960.", 
+                "13440.", 
+                "13440.", 
+                "13920.", 
+                "13920.", 
+                "14400.", 
+                "14400.", 
+                "14880.", 
+                "14880.", 
+                "15360.", 
+                "15360.", 
+                "15840.", 
+                "15840.", 
+                "16320.", 
+                "16320.", 
+                "16800.", 
+                "16800.", 
+                "17280.", 
+                "17280.", 
+                "17760.", 
+                "17760.", 
+                "18240.", 
+                "18240.", 
+                "18720.", 
+                "18720.", 
+                "19200."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "altitude", 
+            "standard_name": "altitude", 
+            "value": "", 
+            "out_name": "alt40", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "time": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "time", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "plev7c": {
+            "requested": [
+                "90000.", 
+                "74000.", 
+                "62000.", 
+                "50000.", 
+                "37500.", 
+                "24500.", 
+                "9000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "height10m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "up", 
+            "must_have_bounds": "no", 
+            "valid_min": "1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "height", 
+            "standard_name": "height", 
+            "value": "10.0", 
+            "out_name": "height", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "30.0", 
+            "axis": "Z"
+        }, 
+        "dbze": {
+            "requested": [
+                "-47.5", 
+                "-42.5", 
+                "-37.5", 
+                "-32.5", 
+                "-27.5", 
+                "-22.5", 
+                "-17.5", 
+                "-12.5", 
+                "-7.5", 
+                "-2.5", 
+                "2.5", 
+                "7.5", 
+                "12.5", 
+                "17.5", 
+                "22.5"
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "-50", 
+                "-45", 
+                "-45", 
+                "-40", 
+                "-40", 
+                "-35", 
+                "-35", 
+                "-30", 
+                "-30", 
+                "-25", 
+                "-25", 
+                "-20", 
+                "-20", 
+                "-15", 
+                "-15", 
+                "-10", 
+                "-10", 
+                "-5", 
+                "-5", 
+                "0", 
+                "0", 
+                "5", 
+                "5", 
+                "10", 
+                "10", 
+                "15", 
+                "15", 
+                "20", 
+                "20", 
+                "25."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "CloudSat simulator equivalent radar reflectivity factor", 
+            "standard_name": "equivalent_reflectivity_factor", 
+            "value": "", 
+            "out_name": "dbze", 
+            "type": "double", 
+            "units": "dBZ", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "typesever": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "secondary_evergreen_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "rho": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "density++++?", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "rho", 
+            "type": "double", 
+            "units": "kg m-3", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "depth100m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "80.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "100.0", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "120.0", 
+            "axis": "Z"
+        }, 
+        "effectRadLi": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "Effective Radius of Liquid Aerosols", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "effectRadLi", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "sdepth": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "200.0", 
+            "axis": "Z"
+        }, 
+        "vegtype": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "plant functional type", 
+            "standard_name": "area_type", 
+            "value": "", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "typec3pft": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "c3_plant_functional_types", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "natural_log_pressure": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "p0: p0 lev: lev", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "p0: p0 lev: lev_bnds", 
+            "bounds_values": "", 
+            "long_name": "atmosphere natural log pressure coordinate", 
+            "standard_name": "atmosphere_ln_pressure_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "p = p0 * exp(-lev)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "20.0", 
+            "axis": "Z"
+        }, 
+        "scatratio": {
+            "requested": [
+                "0.005", 
+                "0.605", 
+                "2.1", 
+                "4.", 
+                "6.", 
+                "8.5", 
+                "12.5", 
+                "17.5", 
+                "22.5", 
+                "27.5", 
+                "35.", 
+                "45.", 
+                "55.", 
+                "70.", 
+                "50040."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "0.", 
+                "0.01", 
+                "0.01", 
+                "1.2", 
+                "1.2", 
+                "3.", 
+                "3.", 
+                "5.", 
+                "5.", 
+                "7.", 
+                "7.", 
+                "10.", 
+                "10.", 
+                "15.", 
+                "15.", 
+                "20.", 
+                "20.", 
+                "25.", 
+                "25.", 
+                "30.", 
+                "30.", 
+                "40.", 
+                "40.", 
+                "50.", 
+                "50.", 
+                "60.", 
+                "60.", 
+                "80.", 
+                "80.", 
+                "100000."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "lidar backscattering ratio", 
+            "standard_name": "backscattering_ratio", 
+            "value": "", 
+            "out_name": "scatratio", 
+            "type": "double", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "standard_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "ptop: ptop sigma: lev ps: ps", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "ptop: ptop sigma: lev_bnds ps: ps", 
+            "bounds_values": "", 
+            "long_name": "sigma coordinate", 
+            "standard_name": "atmosphere_sigma_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "p = ptop + sigma*(ps - ptop)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "1.0", 
+            "axis": "Z"
+        }, 
+        "typepdec": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "primary_deciduous_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "hybrid_height": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "a: lev b: b orog: orog", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "a: lev_bnds b: b_bnds orog: orog", 
+            "bounds_values": "", 
+            "long_name": "hybrid height coordinate", 
+            "standard_name": "atmosphere_hybrid_height_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "m", 
+            "formula": "z = a + b*orog", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "longitude": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "longitude", 
+            "standard_name": "longitude", 
+            "value": "", 
+            "out_name": "lon", 
+            "type": "double", 
+            "units": "degrees_east", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "360.0", 
+            "axis": "X"
+        }, 
+        "effectRadIc": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "Effective Radius of Ice Aerosols", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "effectRadIc", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "p1000": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "1000 hPa", 
+            "standard_name": "air_pressure", 
+            "value": "100000.", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "p500": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "500 hPa", 
+            "standard_name": "air_pressure", 
+            "value": "50000.", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "ocean_double_sigma": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "sigma: sigma depth: depth z1: z1 z2: z2 a: a_coeff href: href k_c: k_c", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "sigma: sigma_bnds depth: depth z1: z1 z2: z2 a: a href: href k_c: k_c", 
+            "bounds_values": "", 
+            "long_name": "ocean double sigma coordinate", 
+            "standard_name": "ocean_double_sigma", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "for k <= k_c:n z(k,j,i)= sigma(k)*f(j,i) n for k > k_c:n z(k,j,i)= f(j,i) + (sigma(k)-1)*(depth(j,i)-f(j,i)) n f(j,i)= 0.5*(z1+ z2) + 0.5*(z1-z2)* tanh(2*a/(z1-z2)*(depth(j,i)-href))", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plevs": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "standard_hybrid_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "p0: p0 a: a b: b ps: ps", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "p0: p0 a: a_bnds b: b_bnds ps: ps", 
+            "bounds_values": "", 
+            "long_name": "hybrid sigma pressure coordinate", 
+            "standard_name": "atmosphere_hybrid_sigma_pressure_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "1", 
+            "formula": "p = a*p0 + b*ps", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "1.0", 
+            "axis": "Z"
+        }, 
+        "p560": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "68000. 44000.", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "56000.0", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }
+    }, 
+    "variable_entry": {
+        "va": {
+            "comment": "", 
+            "dimensions": "longitude latitude plev8 time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Northward Wind", 
+            "standard_name": "northward_wind", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "m s-1", 
+            "out_name": "va", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "rsds": {
+            "comment": "surface solar irradiance for UV calculations", 
+            "dimensions": "longitude latitude time", 
+            "positive": "down", 
+            "valid_min": "", 
+            "long_name": "Surface Downwelling Shortwave Radiation", 
+            "standard_name": "surface_downwelling_shortwave_flux_in_air", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "rsds", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "prc": {
+            "comment": "Convective precipitation at surface; includes both liquid and solid phases.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Convective Precipitation", 
+            "standard_name": "convective_precipitation_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "prc", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "tas": {
+            "comment": "near-surface (usually, 2 meter) air temperature", 
+            "dimensions": "longitude latitude time height2m", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Near-Surface Air Temperature", 
+            "standard_name": "air_temperature", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "K", 
+            "out_name": "tas", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "prsn": {
+            "comment": "at surface; includes precipitation of all forms of water in the solid phase", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Snowfall Flux", 
+            "standard_name": "snowfall_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "prsn", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "rhsmin": {
+            "comment": "Surface daily minimum of relative humidity with respect to liquid water for T> 0 C, and with respect to ice for T<0 C.", 
+            "dimensions": "longitude latitude time height2m", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Surface Daily Minimum Relative Humidity", 
+            "standard_name": "relative_humidity", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: minimum", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "%", 
+            "out_name": "rhsmin", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "depth_c": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: depth_c", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "hus": {
+            "comment": "", 
+            "dimensions": "longitude latitude plev8 time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Specific Humidity", 
+            "standard_name": "specific_humidity", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "1.0", 
+            "out_name": "hus", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "hfss": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "valid_min": "", 
+            "long_name": "Surface Upward Sensible Heat Flux", 
+            "standard_name": "surface_upward_sensible_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "hfss", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "ap_bnds": {
+            "units": "Pa", 
+            "long_name": "vertical coordinate formula term: ap(k+1/2)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "ap": {
+            "units": "Pa", 
+            "long_name": "vertical coordinate formula term: ap(k)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "href": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: href", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "zg": {
+            "comment": "", 
+            "dimensions": "longitude latitude plev8 time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Geopotential Height", 
+            "standard_name": "geopotential_height", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "m", 
+            "out_name": "zg", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "orog": {
+            "units": "m", 
+            "long_name": "Surface Altitude", 
+            "type": "real", 
+            "dimensions": "longitude latitude"
+        }, 
+        "vsi": {
+            "comment": "'Reported as ''missing'' in regions free of sea ice.'", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Y-Component of Sea Ice Velocity", 
+            "standard_name": "sea_ice_y_velocity", 
+            "modeling_realm": "seaIce ocean", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "m s-1", 
+            "out_name": "vsi", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "zlev": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: zlev(k)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "tslsi": {
+            "comment": "'skin' temperature of all surfaces except open ocean.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Surface Temperature Where Land or Sea Ice", 
+            "standard_name": "surface_temperature", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "K", 
+            "out_name": "tslsi", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "pr": {
+            "comment": "includes both liquid and solid phases", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Precipitation", 
+            "standard_name": "precipitation_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "pr", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "ps": {
+            "units": "Pa", 
+            "long_name": "Surface Air Pressure", 
+            "type": "real", 
+            "dimensions": "longitude latitude time"
+        }, 
+        "rlus": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "valid_min": "", 
+            "long_name": "Surface Upwelling Longwave Radiation", 
+            "standard_name": "surface_upwelling_longwave_flux_in_air", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "rlus", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "sit": {
+            "comment": "the mean thickness of sea ice in the ocean portion of the grid cell (averaging over the entire ocean portion, including the ice-free fraction).  Reported as 0.0 in regions free of sea ice.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Sea Ice Thickness", 
+            "standard_name": "sea_ice_thickness", 
+            "modeling_realm": "seaIce ocean", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "m", 
+            "out_name": "sit", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "rlds": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "down", 
+            "valid_min": "", 
+            "long_name": "Surface Downwelling Longwave Radiation", 
+            "standard_name": "surface_downwelling_longwave_flux_in_air", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "rlds", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "usi": {
+            "comment": "'Reported as ''missing'' in regions free of sea ice.'", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "X-Component of Sea Ice Velocity", 
+            "standard_name": "sea_ice_x_velocity", 
+            "modeling_realm": "seaIce ocean", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "m s-1", 
+            "out_name": "usi", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "sic": {
+            "comment": "fraction of grid cell covered by sea ice.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Sea Ice Area Fraction", 
+            "standard_name": "sea_ice_area_fraction", 
+            "modeling_realm": "seaIce ocean", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "1.0", 
+            "out_name": "sic", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "sigma_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: sigma(k+1/2)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "mrsos": {
+            "comment": "The mass of water in all phases in the upper 10cm of the  soil layer.", 
+            "dimensions": "longitude latitude time sdepth1", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Moisture in Upper Portion of Soil Column", 
+            "standard_name": "moisture_content_of_soil_layer", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2", 
+            "out_name": "mrsos", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "clt": {
+            "comment": "cloud area fraction", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Total Cloud Fraction", 
+            "standard_name": "cloud_area_fraction_in_atmosphere_layer", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "1.0", 
+            "out_name": "clt", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "vas": {
+            "comment": "Northward component of the near surface wind", 
+            "dimensions": "longitude latitude time height10m", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Northward Near-Surface Wind", 
+            "standard_name": "northward_wind", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "m s-1", 
+            "out_name": "vas", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "ptop": {
+            "units": "Pa", 
+            "long_name": "pressure at top of model", 
+            "type": "", 
+            "dimensions": ""
+        }, 
+        "uas": {
+            "comment": "Eastward component of the near-surface (usually, 10 meters)  wind", 
+            "dimensions": "longitude latitude time height10m", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Eastward Near-Surface Wind", 
+            "standard_name": "eastward_wind", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "m s-1", 
+            "out_name": "uas", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "ta": {
+            "comment": "", 
+            "dimensions": "longitude latitude plev8 time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Air Temperature", 
+            "standard_name": "air_temperature", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "K", 
+            "out_name": "ta", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "huss": {
+            "comment": "Near-surface (usually, 2 meter) specific humidity.", 
+            "dimensions": "longitude latitude time height2m", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Near-Surface Specific Humidity", 
+            "standard_name": "specific_humidity", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "1.0", 
+            "out_name": "huss", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "b_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: b(k+1/2)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "snc": {
+            "comment": "Fraction of each grid cell that is occupied by snow that rests on land portion of cell.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Snow Area Fraction", 
+            "standard_name": "surface_snow_area_fraction", 
+            "modeling_realm": "landIce land", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "%", 
+            "out_name": "snc", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "psl": {
+            "comment": "Sea Level Pressure", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Sea Level Pressure", 
+            "standard_name": "air_pressure_at_sea_level", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "Pa", 
+            "out_name": "psl", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "rlut": {
+            "comment": "at the top of the atmosphere (to be compared with satellite measurements)", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "valid_min": "", 
+            "long_name": "TOA Outgoing Longwave Radiation", 
+            "standard_name": "toa_outgoing_longwave_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "rlut", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "rhs": {
+            "comment": "This is the relative humidity with respect to liquid water for T> 0 C, and with respect to ice for T<0 C.", 
+            "dimensions": "longitude latitude time height2m", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Near-Surface Relative Humidity", 
+            "standard_name": "relative_humidity", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "%", 
+            "out_name": "rhs", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "rhsmax": {
+            "comment": "Surface daily maximum of relative humidity with respect to liquid water for T> 0 C, and with respect to ice for T<0 C.", 
+            "dimensions": "longitude latitude time height2m", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Surface Daily Maximum Relative Humidity", 
+            "standard_name": "relative_humidity", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: maximum", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "%", 
+            "out_name": "rhsmax", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "nsigma": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: nsigma", 
+            "type": "integer", 
+            "dimensions": ""
+        }, 
+        "omldamax": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Daily Maximum Ocean Mixed Layer Thickness Defined by Mixing Scheme", 
+            "standard_name": "ocean_mixed_layer_thickness_defined_by_mixing_scheme", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: maximum", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "m", 
+            "out_name": "omldamax", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "hur": {
+            "comment": "The relative humidity with respect to liquid water for T> 0 C, and with respect to ice for T<0 C.", 
+            "dimensions": "longitude latitude plev8 time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Relative Humidity", 
+            "standard_name": "relative_humidity", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "%", 
+            "out_name": "hur", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "ztop": {
+            "units": "m", 
+            "long_name": "height of top of model", 
+            "type": "", 
+            "dimensions": ""
+        }, 
+        "zlev_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: zlev(k+1/2)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "z1": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: z1", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "z2": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: z2", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "a": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: a(k)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "p0": {
+            "units": "Pa", 
+            "long_name": "vertical coordinate formula term: reference pressure", 
+            "type": "", 
+            "dimensions": ""
+        }, 
+        "b": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: b(k)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "snw": {
+            "comment": "The mass of surface snow on the land portion of the grid cell divided by the land area in the grid cell; reported as missing where the land fraction is 0; excludes snow on vegetation canopy or on sea ice.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Surface Snow Amount", 
+            "standard_name": "surface_snow_amount", 
+            "modeling_realm": "landIce land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2", 
+            "out_name": "snw", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "sfcWindmax": {
+            "comment": "Daily maximum near-surface (usually, 10 meters) wind speed.", 
+            "dimensions": "longitude latitude time height10m", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Daily Maximum Near-Surface Wind Speed", 
+            "standard_name": "wind_speed", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: maximum", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "m s-1", 
+            "out_name": "sfcWindmax", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "ua": {
+            "comment": "", 
+            "dimensions": "longitude latitude plev8 time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Eastward Wind", 
+            "standard_name": "eastward_wind", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "m s-1", 
+            "out_name": "ua", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "mrro": {
+            "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", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Total Runoff", 
+            "standard_name": "runoff_flux", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "mrro", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "sfcWind": {
+            "comment": "near-surface (usually, 10 meters) wind speed.", 
+            "dimensions": "longitude latitude time height10m", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Daily-Mean Near-Surface Wind Speed", 
+            "standard_name": "wind_speed", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "m s-1", 
+            "out_name": "sfcWind", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "tossq": {
+            "comment": "square of temperature of liquid ocean, averaged over the day.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Square of Sea Surface Temperature", 
+            "standard_name": "square_of_sea_surface_temperature", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "degree_C2", 
+            "out_name": "tossq", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "depth": {
+            "units": "m", 
+            "long_name": "Sea Floor Depth: formula term: thetao", 
+            "type": "real", 
+            "dimensions": "longitude latitude"
+        }, 
+        "eta": {
+            "units": "m", 
+            "long_name": "Sea Surface Height formula term: thetao", 
+            "type": "real", 
+            "dimensions": "longitude latitude time"
+        }, 
+        "hfls": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "valid_min": "", 
+            "long_name": "Surface Upward Latent Heat Flux", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "hfls", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "tasmin": {
+            "comment": "minimum near-surface (usually, 2 meter) air temperature (add cell_method attribute 'time: min')", 
+            "dimensions": "longitude latitude time height2m", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Daily Minimum Near-Surface Air Temperature", 
+            "standard_name": "air_temperature", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: minimum", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "K", 
+            "out_name": "tasmin", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "tos": {
+            "comment": "this may differ from 'surface temperature' in regions of sea ice.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Sea Surface Temperature", 
+            "standard_name": "sea_surface_temperature", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "K", 
+            "out_name": "tos", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "tasmax": {
+            "comment": "maximum near-surface (usually, 2 meter) air temperature (add cell_method attribute 'time: max')", 
+            "dimensions": "longitude latitude time height2m", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Daily Maximum Near-Surface Air Temperature", 
+            "standard_name": "air_temperature", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: maximum", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "K", 
+            "out_name": "tasmax", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "rsus": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "valid_min": "", 
+            "long_name": "Surface Upwelling Shortwave Radiation", 
+            "standard_name": "surface_upwelling_shortwave_flux_in_air", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "rsus", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "k_c": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: k_c", 
+            "type": "integer", 
+            "dimensions": ""
+        }, 
+        "wap": {
+            "comment": "Omega (vertical velocity in pressure coordinates, positive downwards)", 
+            "dimensions": "longitude latitude plev8 time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "omega (=dp/dt)", 
+            "standard_name": "lagrangian_tendency_of_air_pressure", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "Pa s-1", 
+            "out_name": "wap", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "sigma": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: sigma(k)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "a_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: a(k+1/2)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }
+    }
+}
diff --git a/TestTables/CMIP6_em.json b/TestTables/CMIP6_em.json
new file mode 100644
index 0000000..a19d1cb
--- /dev/null
+++ b/TestTables/CMIP6_em.json
@@ -0,0 +1 @@
+no Variable found for em
diff --git a/TestTables/CMIP6_em1hr.json b/TestTables/CMIP6_em1hr.json
new file mode 100644
index 0000000..7a91b9a
--- /dev/null
+++ b/TestTables/CMIP6_em1hr.json
@@ -0,0 +1 @@
+no Variable found for em1hr
diff --git a/TestTables/CMIP6_em1hrclimmon.json b/TestTables/CMIP6_em1hrclimmon.json
new file mode 100644
index 0000000..f486511
--- /dev/null
+++ b/TestTables/CMIP6_em1hrclimmon.json
@@ -0,0 +1 @@
+no Variable found for em1hrclimmon
diff --git a/TestTables/CMIP6_em3hr.json b/TestTables/CMIP6_em3hr.json
new file mode 100644
index 0000000..de69c07
--- /dev/null
+++ b/TestTables/CMIP6_em3hr.json
@@ -0,0 +1,2171 @@
+{
+    "Header": {
+        "product": "output", 
+        "approx_interval": "0.125000", 
+        "realm": "", 
+        "cmor_version": "3.1", 
+        "Conventions": "CF-1.6 CMIP-6.0", 
+        "frequency": "3hr", 
+        "table_id": "Table em3hr", 
+        "data_specs_version": "01.beta.29", 
+        "mip_era": "CMIP6", 
+        "generic_levels": "", 
+        "missing_value": "1e20", 
+        "table_date": "14 June 2016"
+    }, 
+    "axis_entry": {
+        "typebare": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "bare_ground", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "tau": {
+            "requested": [
+                "0.15", 
+                "0.8", 
+                "2.45", 
+                "6.5", 
+                "16.2", 
+                "41.5", 
+                "100."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "0.0", 
+                "0.3", 
+                "0.3", 
+                "1.3", 
+                "1.3", 
+                "3.6", 
+                "3.6", 
+                "9.4", 
+                "9.4", 
+                "23.0", 
+                "23.0", 
+                "60.0", 
+                "60.0", 
+                "100000."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "cloud optical thickness", 
+            "standard_name": "atmosphere_optical_thickness_due_to_cloud", 
+            "value": "", 
+            "out_name": "tau", 
+            "type": "double", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "olayer100m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "0. 100.", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "50.0", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "100.0", 
+            "axis": "Z"
+        }, 
+        "spectband": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "Spectral Band", 
+            "standard_name": "wave_frequency", 
+            "value": "", 
+            "out_name": "spectband", 
+            "type": "double", 
+            "units": "s-1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "ocean_sigma_z": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "sigma: sigma eta: eta depth: depth depth_c: depth_c nsigma: nsigma zlev: zlev", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "sigma: sigma_bnds eta: eta depth: depth depth_c: depth_c nsigma: nsigma zlev: zlev_bnds", 
+            "bounds_values": "", 
+            "long_name": "ocean sigma over z coordinate", 
+            "standard_name": "ocean_sigma_z", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "for k <= nsigma: z(n,k,j,i) = eta(n,j,i) + sigma(k)*(min(depth_c,depth(j,i))+eta(n,j,i)) ; for k > nsigma: z(n,k,j,i) = zlev(k)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev19": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000.", 
+                "500.", 
+                "100."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "p220": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "44000. 0.0", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "22000.0", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev17": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev10": {
+            "requested": [
+                "100000.", 
+                "85000.", 
+                "70000.", 
+                "50000.", 
+                "25000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "site": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "site index", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "site", 
+            "type": "integer", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "smooth_level": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "a: a b1: b1 b2: b2 ztop: ztop zsurf1: zsurf1 zsurf2: zsurf2", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-200.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "a: a_bnds b1: b1_bnds b2: b2_bnds ztop: ztop zsurf1: zsurf1 zsurf2: zsurf2", 
+            "bounds_values": "", 
+            "long_name": "atmosphere smooth level vertical (SLEVE) coordinate", 
+            "standard_name": "atmosphere_sleve_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "m", 
+            "formula": "z = a*ztop + b1*zsurf1 + b2*zsurf2", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "800000.0", 
+            "axis": "Z"
+        }, 
+        "p840": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "100000. 68000.", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "84000.0", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "ocean_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "sigma: lev eta: eta depth: depth", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "sigma: lev_bnds eta: eta depth: depth", 
+            "bounds_values": "", 
+            "long_name": "ocean sigma coordinate", 
+            "standard_name": "ocean_sigma_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "z(n,k,j,i) = eta(n,j,i) + sigma(k)*(depth(j,i)+eta(n,j,i))", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "0.0", 
+            "axis": "Z"
+        }, 
+        "depth0m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "0.0", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "100.0", 
+            "axis": "Z"
+        }, 
+        "ocean_s": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "s: lev eta: eta depth: depth a: a_coeff b: b_coeff depth_c: depth_c", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "s: lev_bnds eta: eta depth: depth a: a b: b depth_c: depth_c", 
+            "bounds_values": "", 
+            "long_name": "ocean s-coordinate", 
+            "standard_name": "ocean_s_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "z(n,k,j,i) = eta(n,j,i)*(1+s(k)) + depth_c*s(k) + (depth(j,i)-depth_c)*C(k) n where n C(k)=(1-b)*sinh(a*s(k))/sinh(a) +n           b*(tanh(a*(s(k)+0.5))/(2*tanh(0.5*a)) - 0.5)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "0.0", 
+            "axis": "Z"
+        }, 
+        "plev4s": {
+            "requested": [
+                "85000.", 
+                "50000.", 
+                "20000.", 
+                "5000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "typec4pft": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "c4_plant_functional_types", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "plev3h": {
+            "requested": [
+                "10000.", 
+                "1000.", 
+                "100."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "height2m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "up", 
+            "must_have_bounds": "no", 
+            "valid_min": "1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "height", 
+            "standard_name": "height", 
+            "value": "2.0", 
+            "out_name": "height", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "10.0", 
+            "axis": "Z"
+        }, 
+        "time1": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "time", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "plev7h": {
+            "requested": [
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "25000.", 
+                "5000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "sza5": {
+            "requested": [
+                "0.", 
+                "20.", 
+                "40.", 
+                "60.", 
+                "80."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "solar zenith angle", 
+            "standard_name": "solar_zenith_angle", 
+            "value": "", 
+            "out_name": "sza", 
+            "type": "double", 
+            "units": "degree", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "depth_coord": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "ocean depth coordinate", 
+            "standard_name": "depth", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "12000.0", 
+            "axis": "Z"
+        }, 
+        "sdepth1": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "0.0 0.1", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "0.05", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "0.2", 
+            "axis": "Z"
+        }, 
+        "alternate_hybrid_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "ap: ap b: b ps: ps", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "ap: ap_bnds b: b_bnds ps: ps", 
+            "bounds_values": "", 
+            "long_name": "hybrid sigma pressure coordinate", 
+            "standard_name": "atmosphere_hybrid_sigma_pressure_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "1", 
+            "formula": "p = ap + b*ps", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "1.0", 
+            "axis": "Z"
+        }, 
+        "time2": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "time", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "yes", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "time3": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "Diurnal cycle: monthly mean of the diurnal cycle (1 hour steps).", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "oline": {
+            "requested": [
+                "barents_opening", 
+                "bering_strait", 
+                "canadian_archipelago", 
+                "denmark_strait", 
+                "drake_passage", 
+                "english_channel", 
+                "pacific_equatorial_undercurrent", 
+                "faroe_scotland_channel", 
+                "florida_bahamas_strait", 
+                "fram_strait", 
+                "iceland_faroe_channel", 
+                "indonesian_thoughflow", 
+                "mozambique_channel", 
+                "taiwan_luzon_straits", 
+                "windward_passage"
+            ], 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "ocean passage", 
+            "standard_name": "region", 
+            "value": "", 
+            "out_name": "line", 
+            "type": "character", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "plev14": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "25000.", 
+                "15000.", 
+                "10000.", 
+                "5000.", 
+                "2000.", 
+                "1000.", 
+                "500.", 
+                "100."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev8": {
+            "requested": [
+                "100000.", 
+                "85000.", 
+                "70000.", 
+                "50000.", 
+                "25000.", 
+                "10000.", 
+                "5000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "location": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "location index", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "loc", 
+            "type": "integer", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "latitude": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-90.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "latitude", 
+            "standard_name": "latitude", 
+            "value": "", 
+            "out_name": "lat", 
+            "type": "double", 
+            "units": "degrees_north", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "90.0", 
+            "axis": "Y"
+        }, 
+        "plev3": {
+            "requested": [
+                "85000.", 
+                "50000.", 
+                "25000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "basin": {
+            "requested": [
+                "atlantic_arctic_ocean", 
+                "indian_pacific_ocean", 
+                "global_ocean"
+            ], 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "ocean basin", 
+            "standard_name": "region", 
+            "value": "", 
+            "out_name": "basin", 
+            "type": "character", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "p700": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "700 hPa", 
+            "standard_name": "air_pressure", 
+            "value": "70000.", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev7": {
+            "requested": [
+                "90000.", 
+                "74000.", 
+                "62000.", 
+                "50000.", 
+                "37500.", 
+                "24500.", 
+                "9000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "100000.", 
+                "80000.", 
+                "80000.", 
+                "68000.", 
+                "68000.", 
+                "56000.", 
+                "56000.", 
+                "44000.", 
+                "44000.", 
+                "31000.", 
+                "31000.", 
+                "18000.", 
+                "18000.", 
+                " 0."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev4": {
+            "requested": [
+                "92500.", 
+                "85000.", 
+                "50000.", 
+                "25000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev23": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000.", 
+                "700.", 
+                "500.", 
+                "300.", 
+                "200.", 
+                "100.", 
+                "40."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev39": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "17000.", 
+                "15000.", 
+                "13000.", 
+                "11500.", 
+                "10000.", 
+                "9000.", 
+                "8000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1500.", 
+                "1000.", 
+                "700.", 
+                "500.", 
+                "300.", 
+                "200.", 
+                "150.", 
+                "100.", 
+                "70.", 
+                "50.", 
+                "40.", 
+                "30.", 
+                "20.", 
+                "15.", 
+                "10.", 
+                "7.", 
+                "5.", 
+                "3."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "typepever": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "primary_evergreen_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "typesdec": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "secondary_decidous_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "plev27": {
+            "requested": [
+                "100000.", 
+                "97500.", 
+                "95000.", 
+                "92500.", 
+                "90000.", 
+                "87500.", 
+                "85000.", 
+                "82500.", 
+                "80000.", 
+                "77500.", 
+                "75000.", 
+                "70000.", 
+                "65000.", 
+                "60000.", 
+                "55000.", 
+                "50000.", 
+                "45000.", 
+                "40000.", 
+                "35000.", 
+                "30000.", 
+                "25000.", 
+                "22500.", 
+                "20000.", 
+                "17500.", 
+                "15000.", 
+                "12500.", 
+                "10000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "alt40": {
+            "requested": [
+                "240.", 
+                "720.", 
+                "1200.", 
+                "1680.", 
+                "2160.", 
+                "2640.", 
+                "3120.", 
+                "3600.", 
+                "4080.", 
+                "4560.", 
+                "5040.", 
+                "5520.", 
+                "6000.", 
+                "6480.", 
+                "6960.", 
+                "7440.", 
+                "7920.", 
+                "8400.", 
+                "8880.", 
+                "9360.", 
+                "9840.", 
+                "10320.", 
+                "10800.", 
+                "11280.", 
+                "11760.", 
+                "12240.", 
+                "12720.", 
+                "13200.", 
+                "13680.", 
+                "14160.", 
+                "14640.", 
+                "15120.", 
+                "15600.", 
+                "16080.", 
+                "16560.", 
+                "17040.", 
+                "17520.", 
+                "18000.", 
+                "18480.", 
+                "18960."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "0.", 
+                "480.", 
+                "480.", 
+                "960.", 
+                "960.", 
+                "1440.", 
+                "1440.", 
+                "1920.", 
+                "1920.", 
+                "2400.", 
+                "2400.", 
+                "2880.", 
+                "2880.", 
+                "3360.", 
+                "3360.", 
+                "3840.", 
+                "3840.", 
+                "4320.", 
+                "4320.", 
+                "4800.", 
+                "4800.", 
+                "5280.", 
+                "5280.", 
+                "5760.", 
+                "5760.", 
+                "6240.", 
+                "6240.", 
+                "6720.", 
+                "6720.", 
+                "7200.", 
+                "7200.", 
+                "7680.", 
+                "7680.", 
+                "8160.", 
+                "8160.", 
+                "8640.", 
+                "8640.", 
+                "9120.", 
+                "9120.", 
+                "9600.", 
+                "9600.", 
+                "10080.", 
+                "10080.", 
+                "10560.", 
+                "10560.", 
+                "11040.", 
+                "11040.", 
+                "11520.", 
+                "11520.", 
+                "12000.", 
+                "12000.", 
+                "12480.", 
+                "12480.", 
+                "12960.", 
+                "12960.", 
+                "13440.", 
+                "13440.", 
+                "13920.", 
+                "13920.", 
+                "14400.", 
+                "14400.", 
+                "14880.", 
+                "14880.", 
+                "15360.", 
+                "15360.", 
+                "15840.", 
+                "15840.", 
+                "16320.", 
+                "16320.", 
+                "16800.", 
+                "16800.", 
+                "17280.", 
+                "17280.", 
+                "17760.", 
+                "17760.", 
+                "18240.", 
+                "18240.", 
+                "18720.", 
+                "18720.", 
+                "19200."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "altitude", 
+            "standard_name": "altitude", 
+            "value": "", 
+            "out_name": "alt40", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "time": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "time", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "plev7c": {
+            "requested": [
+                "90000.", 
+                "74000.", 
+                "62000.", 
+                "50000.", 
+                "37500.", 
+                "24500.", 
+                "9000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "height10m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "up", 
+            "must_have_bounds": "no", 
+            "valid_min": "1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "height", 
+            "standard_name": "height", 
+            "value": "10.0", 
+            "out_name": "height", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "30.0", 
+            "axis": "Z"
+        }, 
+        "dbze": {
+            "requested": [
+                "-47.5", 
+                "-42.5", 
+                "-37.5", 
+                "-32.5", 
+                "-27.5", 
+                "-22.5", 
+                "-17.5", 
+                "-12.5", 
+                "-7.5", 
+                "-2.5", 
+                "2.5", 
+                "7.5", 
+                "12.5", 
+                "17.5", 
+                "22.5"
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "-50", 
+                "-45", 
+                "-45", 
+                "-40", 
+                "-40", 
+                "-35", 
+                "-35", 
+                "-30", 
+                "-30", 
+                "-25", 
+                "-25", 
+                "-20", 
+                "-20", 
+                "-15", 
+                "-15", 
+                "-10", 
+                "-10", 
+                "-5", 
+                "-5", 
+                "0", 
+                "0", 
+                "5", 
+                "5", 
+                "10", 
+                "10", 
+                "15", 
+                "15", 
+                "20", 
+                "20", 
+                "25."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "CloudSat simulator equivalent radar reflectivity factor", 
+            "standard_name": "equivalent_reflectivity_factor", 
+            "value": "", 
+            "out_name": "dbze", 
+            "type": "double", 
+            "units": "dBZ", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "typesever": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "secondary_evergreen_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "rho": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "density++++?", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "rho", 
+            "type": "double", 
+            "units": "kg m-3", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "depth100m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "80.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "100.0", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "120.0", 
+            "axis": "Z"
+        }, 
+        "effectRadLi": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "Effective Radius of Liquid Aerosols", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "effectRadLi", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "sdepth": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "200.0", 
+            "axis": "Z"
+        }, 
+        "vegtype": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "plant functional type", 
+            "standard_name": "area_type", 
+            "value": "", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "typec3pft": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "c3_plant_functional_types", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "natural_log_pressure": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "p0: p0 lev: lev", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "p0: p0 lev: lev_bnds", 
+            "bounds_values": "", 
+            "long_name": "atmosphere natural log pressure coordinate", 
+            "standard_name": "atmosphere_ln_pressure_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "p = p0 * exp(-lev)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "20.0", 
+            "axis": "Z"
+        }, 
+        "scatratio": {
+            "requested": [
+                "0.005", 
+                "0.605", 
+                "2.1", 
+                "4.", 
+                "6.", 
+                "8.5", 
+                "12.5", 
+                "17.5", 
+                "22.5", 
+                "27.5", 
+                "35.", 
+                "45.", 
+                "55.", 
+                "70.", 
+                "50040."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "0.", 
+                "0.01", 
+                "0.01", 
+                "1.2", 
+                "1.2", 
+                "3.", 
+                "3.", 
+                "5.", 
+                "5.", 
+                "7.", 
+                "7.", 
+                "10.", 
+                "10.", 
+                "15.", 
+                "15.", 
+                "20.", 
+                "20.", 
+                "25.", 
+                "25.", 
+                "30.", 
+                "30.", 
+                "40.", 
+                "40.", 
+                "50.", 
+                "50.", 
+                "60.", 
+                "60.", 
+                "80.", 
+                "80.", 
+                "100000."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "lidar backscattering ratio", 
+            "standard_name": "backscattering_ratio", 
+            "value": "", 
+            "out_name": "scatratio", 
+            "type": "double", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "standard_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "ptop: ptop sigma: lev ps: ps", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "ptop: ptop sigma: lev_bnds ps: ps", 
+            "bounds_values": "", 
+            "long_name": "sigma coordinate", 
+            "standard_name": "atmosphere_sigma_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "p = ptop + sigma*(ps - ptop)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "1.0", 
+            "axis": "Z"
+        }, 
+        "typepdec": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "primary_deciduous_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "hybrid_height": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "a: lev b: b orog: orog", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "a: lev_bnds b: b_bnds orog: orog", 
+            "bounds_values": "", 
+            "long_name": "hybrid height coordinate", 
+            "standard_name": "atmosphere_hybrid_height_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "m", 
+            "formula": "z = a + b*orog", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "longitude": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "longitude", 
+            "standard_name": "longitude", 
+            "value": "", 
+            "out_name": "lon", 
+            "type": "double", 
+            "units": "degrees_east", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "360.0", 
+            "axis": "X"
+        }, 
+        "effectRadIc": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "Effective Radius of Ice Aerosols", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "effectRadIc", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "p1000": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "1000 hPa", 
+            "standard_name": "air_pressure", 
+            "value": "100000.", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "p500": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "500 hPa", 
+            "standard_name": "air_pressure", 
+            "value": "50000.", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "ocean_double_sigma": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "sigma: sigma depth: depth z1: z1 z2: z2 a: a_coeff href: href k_c: k_c", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "sigma: sigma_bnds depth: depth z1: z1 z2: z2 a: a href: href k_c: k_c", 
+            "bounds_values": "", 
+            "long_name": "ocean double sigma coordinate", 
+            "standard_name": "ocean_double_sigma", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "for k <= k_c:n z(k,j,i)= sigma(k)*f(j,i) n for k > k_c:n z(k,j,i)= f(j,i) + (sigma(k)-1)*(depth(j,i)-f(j,i)) n f(j,i)= 0.5*(z1+ z2) + 0.5*(z1-z2)* tanh(2*a/(z1-z2)*(depth(j,i)-href))", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plevs": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "standard_hybrid_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "p0: p0 a: a b: b ps: ps", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "p0: p0 a: a_bnds b: b_bnds ps: ps", 
+            "bounds_values": "", 
+            "long_name": "hybrid sigma pressure coordinate", 
+            "standard_name": "atmosphere_hybrid_sigma_pressure_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "1", 
+            "formula": "p = a*p0 + b*ps", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "1.0", 
+            "axis": "Z"
+        }, 
+        "p560": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "68000. 44000.", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "56000.0", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }
+    }, 
+    "variable_entry": {
+        "depth_c": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: depth_c", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "ap_bnds": {
+            "units": "Pa", 
+            "long_name": "vertical coordinate formula term: ap(k+1/2)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "ap": {
+            "units": "Pa", 
+            "long_name": "vertical coordinate formula term: ap(k)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "href": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: href", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "orog": {
+            "units": "m", 
+            "long_name": "Surface Altitude", 
+            "type": "real", 
+            "dimensions": "longitude latitude"
+        }, 
+        "zlev": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: zlev(k)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "pr": {
+            "comment": "includes both liquid and solid phases", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Precipitation", 
+            "standard_name": "precipitation_flux", 
+            "modeling_realm": "", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg m-2 s-1", 
+            "out_name": "pr", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "ps": {
+            "units": "Pa", 
+            "long_name": "Surface Air Pressure", 
+            "type": "real", 
+            "dimensions": "longitude latitude time"
+        }, 
+        "sigma_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: sigma(k+1/2)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "ptop": {
+            "units": "Pa", 
+            "long_name": "pressure at top of model", 
+            "type": "", 
+            "dimensions": ""
+        }, 
+        "b_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: b(k+1/2)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "nsigma": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: nsigma", 
+            "type": "integer", 
+            "dimensions": ""
+        }, 
+        "rsds": {
+            "comment": "surface solar irradiance for UV calculations", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Surface Downwelling Shortwave Radiation", 
+            "standard_name": "surface_downwelling_shortwave_flux_in_air", 
+            "modeling_realm": "", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "W m-2", 
+            "out_name": "rsds", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "ztop": {
+            "units": "m", 
+            "long_name": "height of top of model", 
+            "type": "", 
+            "dimensions": ""
+        }, 
+        "zlev_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: zlev(k+1/2)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "z1": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: z1", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "z2": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: z2", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "a": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: a(k)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "p0": {
+            "units": "Pa", 
+            "long_name": "vertical coordinate formula term: reference pressure", 
+            "type": "", 
+            "dimensions": ""
+        }, 
+        "b": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: b(k)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "depth": {
+            "units": "m", 
+            "long_name": "Sea Floor Depth: formula term: thetao", 
+            "type": "real", 
+            "dimensions": "longitude latitude"
+        }, 
+        "eta": {
+            "units": "m", 
+            "long_name": "Sea Surface Height formula term: thetao", 
+            "type": "real", 
+            "dimensions": "longitude latitude time"
+        }, 
+        "k_c": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: k_c", 
+            "type": "integer", 
+            "dimensions": ""
+        }, 
+        "sigma": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: sigma(k)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "a_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: a(k+1/2)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }
+    }
+}
diff --git a/TestTables/CMIP6_em3hrpt.json b/TestTables/CMIP6_em3hrpt.json
new file mode 100644
index 0000000..1ed4ca4
--- /dev/null
+++ b/TestTables/CMIP6_em3hrpt.json
@@ -0,0 +1,2171 @@
+{
+    "Header": {
+        "product": "output", 
+        "approx_interval": "0.125000", 
+        "realm": "", 
+        "cmor_version": "3.1", 
+        "Conventions": "CF-1.6 CMIP-6.0", 
+        "frequency": "3hr", 
+        "table_id": "Table em3hrpt", 
+        "data_specs_version": "01.beta.29", 
+        "mip_era": "CMIP6", 
+        "generic_levels": "", 
+        "missing_value": "1e20", 
+        "table_date": "14 June 2016"
+    }, 
+    "axis_entry": {
+        "typebare": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "bare_ground", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "tau": {
+            "requested": [
+                "0.15", 
+                "0.8", 
+                "2.45", 
+                "6.5", 
+                "16.2", 
+                "41.5", 
+                "100."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "0.0", 
+                "0.3", 
+                "0.3", 
+                "1.3", 
+                "1.3", 
+                "3.6", 
+                "3.6", 
+                "9.4", 
+                "9.4", 
+                "23.0", 
+                "23.0", 
+                "60.0", 
+                "60.0", 
+                "100000."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "cloud optical thickness", 
+            "standard_name": "atmosphere_optical_thickness_due_to_cloud", 
+            "value": "", 
+            "out_name": "tau", 
+            "type": "double", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "olayer100m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "0. 100.", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "50.0", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "100.0", 
+            "axis": "Z"
+        }, 
+        "spectband": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "Spectral Band", 
+            "standard_name": "wave_frequency", 
+            "value": "", 
+            "out_name": "spectband", 
+            "type": "double", 
+            "units": "s-1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "ocean_sigma_z": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "sigma: sigma eta: eta depth: depth depth_c: depth_c nsigma: nsigma zlev: zlev", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "sigma: sigma_bnds eta: eta depth: depth depth_c: depth_c nsigma: nsigma zlev: zlev_bnds", 
+            "bounds_values": "", 
+            "long_name": "ocean sigma over z coordinate", 
+            "standard_name": "ocean_sigma_z", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "for k <= nsigma: z(n,k,j,i) = eta(n,j,i) + sigma(k)*(min(depth_c,depth(j,i))+eta(n,j,i)) ; for k > nsigma: z(n,k,j,i) = zlev(k)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev19": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000.", 
+                "500.", 
+                "100."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "p220": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "44000. 0.0", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "22000.0", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev17": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev10": {
+            "requested": [
+                "100000.", 
+                "85000.", 
+                "70000.", 
+                "50000.", 
+                "25000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "site": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "site index", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "site", 
+            "type": "integer", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "smooth_level": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "a: a b1: b1 b2: b2 ztop: ztop zsurf1: zsurf1 zsurf2: zsurf2", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-200.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "a: a_bnds b1: b1_bnds b2: b2_bnds ztop: ztop zsurf1: zsurf1 zsurf2: zsurf2", 
+            "bounds_values": "", 
+            "long_name": "atmosphere smooth level vertical (SLEVE) coordinate", 
+            "standard_name": "atmosphere_sleve_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "m", 
+            "formula": "z = a*ztop + b1*zsurf1 + b2*zsurf2", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "800000.0", 
+            "axis": "Z"
+        }, 
+        "p840": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "100000. 68000.", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "84000.0", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "ocean_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "sigma: lev eta: eta depth: depth", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "sigma: lev_bnds eta: eta depth: depth", 
+            "bounds_values": "", 
+            "long_name": "ocean sigma coordinate", 
+            "standard_name": "ocean_sigma_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "z(n,k,j,i) = eta(n,j,i) + sigma(k)*(depth(j,i)+eta(n,j,i))", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "0.0", 
+            "axis": "Z"
+        }, 
+        "depth0m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "0.0", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "100.0", 
+            "axis": "Z"
+        }, 
+        "ocean_s": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "s: lev eta: eta depth: depth a: a_coeff b: b_coeff depth_c: depth_c", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "s: lev_bnds eta: eta depth: depth a: a b: b depth_c: depth_c", 
+            "bounds_values": "", 
+            "long_name": "ocean s-coordinate", 
+            "standard_name": "ocean_s_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "z(n,k,j,i) = eta(n,j,i)*(1+s(k)) + depth_c*s(k) + (depth(j,i)-depth_c)*C(k) n where n C(k)=(1-b)*sinh(a*s(k))/sinh(a) +n           b*(tanh(a*(s(k)+0.5))/(2*tanh(0.5*a)) - 0.5)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "0.0", 
+            "axis": "Z"
+        }, 
+        "plev4s": {
+            "requested": [
+                "85000.", 
+                "50000.", 
+                "20000.", 
+                "5000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "typec4pft": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "c4_plant_functional_types", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "plev3h": {
+            "requested": [
+                "10000.", 
+                "1000.", 
+                "100."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "height2m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "up", 
+            "must_have_bounds": "no", 
+            "valid_min": "1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "height", 
+            "standard_name": "height", 
+            "value": "2.0", 
+            "out_name": "height", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "10.0", 
+            "axis": "Z"
+        }, 
+        "time1": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "time", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "plev7h": {
+            "requested": [
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "25000.", 
+                "5000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "sza5": {
+            "requested": [
+                "0.", 
+                "20.", 
+                "40.", 
+                "60.", 
+                "80."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "solar zenith angle", 
+            "standard_name": "solar_zenith_angle", 
+            "value": "", 
+            "out_name": "sza", 
+            "type": "double", 
+            "units": "degree", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "depth_coord": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "ocean depth coordinate", 
+            "standard_name": "depth", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "12000.0", 
+            "axis": "Z"
+        }, 
+        "sdepth1": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "0.0 0.1", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "0.05", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "0.2", 
+            "axis": "Z"
+        }, 
+        "alternate_hybrid_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "ap: ap b: b ps: ps", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "ap: ap_bnds b: b_bnds ps: ps", 
+            "bounds_values": "", 
+            "long_name": "hybrid sigma pressure coordinate", 
+            "standard_name": "atmosphere_hybrid_sigma_pressure_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "1", 
+            "formula": "p = ap + b*ps", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "1.0", 
+            "axis": "Z"
+        }, 
+        "time2": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "time", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "yes", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "time3": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "Diurnal cycle: monthly mean of the diurnal cycle (1 hour steps).", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "oline": {
+            "requested": [
+                "barents_opening", 
+                "bering_strait", 
+                "canadian_archipelago", 
+                "denmark_strait", 
+                "drake_passage", 
+                "english_channel", 
+                "pacific_equatorial_undercurrent", 
+                "faroe_scotland_channel", 
+                "florida_bahamas_strait", 
+                "fram_strait", 
+                "iceland_faroe_channel", 
+                "indonesian_thoughflow", 
+                "mozambique_channel", 
+                "taiwan_luzon_straits", 
+                "windward_passage"
+            ], 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "ocean passage", 
+            "standard_name": "region", 
+            "value": "", 
+            "out_name": "line", 
+            "type": "character", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "plev14": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "25000.", 
+                "15000.", 
+                "10000.", 
+                "5000.", 
+                "2000.", 
+                "1000.", 
+                "500.", 
+                "100."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev8": {
+            "requested": [
+                "100000.", 
+                "85000.", 
+                "70000.", 
+                "50000.", 
+                "25000.", 
+                "10000.", 
+                "5000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "location": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "location index", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "loc", 
+            "type": "integer", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "latitude": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-90.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "latitude", 
+            "standard_name": "latitude", 
+            "value": "", 
+            "out_name": "lat", 
+            "type": "double", 
+            "units": "degrees_north", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "90.0", 
+            "axis": "Y"
+        }, 
+        "plev3": {
+            "requested": [
+                "85000.", 
+                "50000.", 
+                "25000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "basin": {
+            "requested": [
+                "atlantic_arctic_ocean", 
+                "indian_pacific_ocean", 
+                "global_ocean"
+            ], 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "ocean basin", 
+            "standard_name": "region", 
+            "value": "", 
+            "out_name": "basin", 
+            "type": "character", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "p700": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "700 hPa", 
+            "standard_name": "air_pressure", 
+            "value": "70000.", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev7": {
+            "requested": [
+                "90000.", 
+                "74000.", 
+                "62000.", 
+                "50000.", 
+                "37500.", 
+                "24500.", 
+                "9000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "100000.", 
+                "80000.", 
+                "80000.", 
+                "68000.", 
+                "68000.", 
+                "56000.", 
+                "56000.", 
+                "44000.", 
+                "44000.", 
+                "31000.", 
+                "31000.", 
+                "18000.", 
+                "18000.", 
+                " 0."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev4": {
+            "requested": [
+                "92500.", 
+                "85000.", 
+                "50000.", 
+                "25000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev23": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000.", 
+                "700.", 
+                "500.", 
+                "300.", 
+                "200.", 
+                "100.", 
+                "40."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev39": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "17000.", 
+                "15000.", 
+                "13000.", 
+                "11500.", 
+                "10000.", 
+                "9000.", 
+                "8000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1500.", 
+                "1000.", 
+                "700.", 
+                "500.", 
+                "300.", 
+                "200.", 
+                "150.", 
+                "100.", 
+                "70.", 
+                "50.", 
+                "40.", 
+                "30.", 
+                "20.", 
+                "15.", 
+                "10.", 
+                "7.", 
+                "5.", 
+                "3."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "typepever": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "primary_evergreen_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "typesdec": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "secondary_decidous_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "plev27": {
+            "requested": [
+                "100000.", 
+                "97500.", 
+                "95000.", 
+                "92500.", 
+                "90000.", 
+                "87500.", 
+                "85000.", 
+                "82500.", 
+                "80000.", 
+                "77500.", 
+                "75000.", 
+                "70000.", 
+                "65000.", 
+                "60000.", 
+                "55000.", 
+                "50000.", 
+                "45000.", 
+                "40000.", 
+                "35000.", 
+                "30000.", 
+                "25000.", 
+                "22500.", 
+                "20000.", 
+                "17500.", 
+                "15000.", 
+                "12500.", 
+                "10000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "alt40": {
+            "requested": [
+                "240.", 
+                "720.", 
+                "1200.", 
+                "1680.", 
+                "2160.", 
+                "2640.", 
+                "3120.", 
+                "3600.", 
+                "4080.", 
+                "4560.", 
+                "5040.", 
+                "5520.", 
+                "6000.", 
+                "6480.", 
+                "6960.", 
+                "7440.", 
+                "7920.", 
+                "8400.", 
+                "8880.", 
+                "9360.", 
+                "9840.", 
+                "10320.", 
+                "10800.", 
+                "11280.", 
+                "11760.", 
+                "12240.", 
+                "12720.", 
+                "13200.", 
+                "13680.", 
+                "14160.", 
+                "14640.", 
+                "15120.", 
+                "15600.", 
+                "16080.", 
+                "16560.", 
+                "17040.", 
+                "17520.", 
+                "18000.", 
+                "18480.", 
+                "18960."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "0.", 
+                "480.", 
+                "480.", 
+                "960.", 
+                "960.", 
+                "1440.", 
+                "1440.", 
+                "1920.", 
+                "1920.", 
+                "2400.", 
+                "2400.", 
+                "2880.", 
+                "2880.", 
+                "3360.", 
+                "3360.", 
+                "3840.", 
+                "3840.", 
+                "4320.", 
+                "4320.", 
+                "4800.", 
+                "4800.", 
+                "5280.", 
+                "5280.", 
+                "5760.", 
+                "5760.", 
+                "6240.", 
+                "6240.", 
+                "6720.", 
+                "6720.", 
+                "7200.", 
+                "7200.", 
+                "7680.", 
+                "7680.", 
+                "8160.", 
+                "8160.", 
+                "8640.", 
+                "8640.", 
+                "9120.", 
+                "9120.", 
+                "9600.", 
+                "9600.", 
+                "10080.", 
+                "10080.", 
+                "10560.", 
+                "10560.", 
+                "11040.", 
+                "11040.", 
+                "11520.", 
+                "11520.", 
+                "12000.", 
+                "12000.", 
+                "12480.", 
+                "12480.", 
+                "12960.", 
+                "12960.", 
+                "13440.", 
+                "13440.", 
+                "13920.", 
+                "13920.", 
+                "14400.", 
+                "14400.", 
+                "14880.", 
+                "14880.", 
+                "15360.", 
+                "15360.", 
+                "15840.", 
+                "15840.", 
+                "16320.", 
+                "16320.", 
+                "16800.", 
+                "16800.", 
+                "17280.", 
+                "17280.", 
+                "17760.", 
+                "17760.", 
+                "18240.", 
+                "18240.", 
+                "18720.", 
+                "18720.", 
+                "19200."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "altitude", 
+            "standard_name": "altitude", 
+            "value": "", 
+            "out_name": "alt40", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "time": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "time", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "plev7c": {
+            "requested": [
+                "90000.", 
+                "74000.", 
+                "62000.", 
+                "50000.", 
+                "37500.", 
+                "24500.", 
+                "9000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "height10m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "up", 
+            "must_have_bounds": "no", 
+            "valid_min": "1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "height", 
+            "standard_name": "height", 
+            "value": "10.0", 
+            "out_name": "height", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "30.0", 
+            "axis": "Z"
+        }, 
+        "dbze": {
+            "requested": [
+                "-47.5", 
+                "-42.5", 
+                "-37.5", 
+                "-32.5", 
+                "-27.5", 
+                "-22.5", 
+                "-17.5", 
+                "-12.5", 
+                "-7.5", 
+                "-2.5", 
+                "2.5", 
+                "7.5", 
+                "12.5", 
+                "17.5", 
+                "22.5"
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "-50", 
+                "-45", 
+                "-45", 
+                "-40", 
+                "-40", 
+                "-35", 
+                "-35", 
+                "-30", 
+                "-30", 
+                "-25", 
+                "-25", 
+                "-20", 
+                "-20", 
+                "-15", 
+                "-15", 
+                "-10", 
+                "-10", 
+                "-5", 
+                "-5", 
+                "0", 
+                "0", 
+                "5", 
+                "5", 
+                "10", 
+                "10", 
+                "15", 
+                "15", 
+                "20", 
+                "20", 
+                "25."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "CloudSat simulator equivalent radar reflectivity factor", 
+            "standard_name": "equivalent_reflectivity_factor", 
+            "value": "", 
+            "out_name": "dbze", 
+            "type": "double", 
+            "units": "dBZ", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "typesever": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "secondary_evergreen_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "rho": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "density++++?", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "rho", 
+            "type": "double", 
+            "units": "kg m-3", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "depth100m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "80.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "100.0", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "120.0", 
+            "axis": "Z"
+        }, 
+        "effectRadLi": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "Effective Radius of Liquid Aerosols", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "effectRadLi", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "sdepth": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "200.0", 
+            "axis": "Z"
+        }, 
+        "vegtype": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "plant functional type", 
+            "standard_name": "area_type", 
+            "value": "", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "typec3pft": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "c3_plant_functional_types", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "natural_log_pressure": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "p0: p0 lev: lev", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "p0: p0 lev: lev_bnds", 
+            "bounds_values": "", 
+            "long_name": "atmosphere natural log pressure coordinate", 
+            "standard_name": "atmosphere_ln_pressure_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "p = p0 * exp(-lev)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "20.0", 
+            "axis": "Z"
+        }, 
+        "scatratio": {
+            "requested": [
+                "0.005", 
+                "0.605", 
+                "2.1", 
+                "4.", 
+                "6.", 
+                "8.5", 
+                "12.5", 
+                "17.5", 
+                "22.5", 
+                "27.5", 
+                "35.", 
+                "45.", 
+                "55.", 
+                "70.", 
+                "50040."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "0.", 
+                "0.01", 
+                "0.01", 
+                "1.2", 
+                "1.2", 
+                "3.", 
+                "3.", 
+                "5.", 
+                "5.", 
+                "7.", 
+                "7.", 
+                "10.", 
+                "10.", 
+                "15.", 
+                "15.", 
+                "20.", 
+                "20.", 
+                "25.", 
+                "25.", 
+                "30.", 
+                "30.", 
+                "40.", 
+                "40.", 
+                "50.", 
+                "50.", 
+                "60.", 
+                "60.", 
+                "80.", 
+                "80.", 
+                "100000."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "lidar backscattering ratio", 
+            "standard_name": "backscattering_ratio", 
+            "value": "", 
+            "out_name": "scatratio", 
+            "type": "double", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "standard_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "ptop: ptop sigma: lev ps: ps", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "ptop: ptop sigma: lev_bnds ps: ps", 
+            "bounds_values": "", 
+            "long_name": "sigma coordinate", 
+            "standard_name": "atmosphere_sigma_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "p = ptop + sigma*(ps - ptop)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "1.0", 
+            "axis": "Z"
+        }, 
+        "typepdec": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "primary_deciduous_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "hybrid_height": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "a: lev b: b orog: orog", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "a: lev_bnds b: b_bnds orog: orog", 
+            "bounds_values": "", 
+            "long_name": "hybrid height coordinate", 
+            "standard_name": "atmosphere_hybrid_height_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "m", 
+            "formula": "z = a + b*orog", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "longitude": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "longitude", 
+            "standard_name": "longitude", 
+            "value": "", 
+            "out_name": "lon", 
+            "type": "double", 
+            "units": "degrees_east", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "360.0", 
+            "axis": "X"
+        }, 
+        "effectRadIc": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "Effective Radius of Ice Aerosols", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "effectRadIc", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "p1000": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "1000 hPa", 
+            "standard_name": "air_pressure", 
+            "value": "100000.", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "p500": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "500 hPa", 
+            "standard_name": "air_pressure", 
+            "value": "50000.", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "ocean_double_sigma": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "sigma: sigma depth: depth z1: z1 z2: z2 a: a_coeff href: href k_c: k_c", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "sigma: sigma_bnds depth: depth z1: z1 z2: z2 a: a href: href k_c: k_c", 
+            "bounds_values": "", 
+            "long_name": "ocean double sigma coordinate", 
+            "standard_name": "ocean_double_sigma", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "for k <= k_c:n z(k,j,i)= sigma(k)*f(j,i) n for k > k_c:n z(k,j,i)= f(j,i) + (sigma(k)-1)*(depth(j,i)-f(j,i)) n f(j,i)= 0.5*(z1+ z2) + 0.5*(z1-z2)* tanh(2*a/(z1-z2)*(depth(j,i)-href))", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plevs": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "standard_hybrid_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "p0: p0 a: a b: b ps: ps", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "p0: p0 a: a_bnds b: b_bnds ps: ps", 
+            "bounds_values": "", 
+            "long_name": "hybrid sigma pressure coordinate", 
+            "standard_name": "atmosphere_hybrid_sigma_pressure_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "1", 
+            "formula": "p = a*p0 + b*ps", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "1.0", 
+            "axis": "Z"
+        }, 
+        "p560": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "68000. 44000.", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "56000.0", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }
+    }, 
+    "variable_entry": {
+        "tas": {
+            "comment": "near-surface (usually, 2 meter) air temperature", 
+            "dimensions": "longitude latitude time1", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "", 
+            "standard_name": "air_temperature", 
+            "modeling_realm": "", 
+            "cell_measures": "time: point", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "K", 
+            "out_name": "tas", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "depth_c": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: depth_c", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "huss": {
+            "comment": "Near-surface (usually, 2 meter) specific humidity.", 
+            "dimensions": "longitude latitude time1", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Near-Surface Specific Humidity", 
+            "standard_name": "specific_humidity", 
+            "modeling_realm": "", 
+            "cell_measures": "time: point", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "1.0", 
+            "out_name": "huss", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "ap_bnds": {
+            "units": "Pa", 
+            "long_name": "vertical coordinate formula term: ap(k+1/2)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "ap": {
+            "units": "Pa", 
+            "long_name": "vertical coordinate formula term: ap(k)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "href": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: href", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "orog": {
+            "units": "m", 
+            "long_name": "Surface Altitude", 
+            "type": "real", 
+            "dimensions": "longitude latitude"
+        }, 
+        "zlev": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: zlev(k)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "ps": {
+            "units": "Pa", 
+            "long_name": "Surface Air Pressure", 
+            "type": "real", 
+            "dimensions": "longitude latitude time"
+        }, 
+        "sigma_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: sigma(k+1/2)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "ptop": {
+            "units": "Pa", 
+            "long_name": "pressure at top of model", 
+            "type": "", 
+            "dimensions": ""
+        }, 
+        "b_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: b(k+1/2)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "nsigma": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: nsigma", 
+            "type": "integer", 
+            "dimensions": ""
+        }, 
+        "ztop": {
+            "units": "m", 
+            "long_name": "height of top of model", 
+            "type": "", 
+            "dimensions": ""
+        }, 
+        "zlev_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: zlev(k+1/2)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "z1": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: z1", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "z2": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: z2", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "a": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: a(k)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "p0": {
+            "units": "Pa", 
+            "long_name": "vertical coordinate formula term: reference pressure", 
+            "type": "", 
+            "dimensions": ""
+        }, 
+        "b": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: b(k)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "depth": {
+            "units": "m", 
+            "long_name": "Sea Floor Depth: formula term: thetao", 
+            "type": "real", 
+            "dimensions": "longitude latitude"
+        }, 
+        "eta": {
+            "units": "m", 
+            "long_name": "Sea Surface Height formula term: thetao", 
+            "type": "real", 
+            "dimensions": "longitude latitude time"
+        }, 
+        "k_c": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: k_c", 
+            "type": "integer", 
+            "dimensions": ""
+        }, 
+        "sigma": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: sigma(k)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "a_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: a(k+1/2)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }
+    }
+}
diff --git a/TestTables/CMIP6_emDay.json b/TestTables/CMIP6_emDay.json
new file mode 100644
index 0000000..b701eb5
--- /dev/null
+++ b/TestTables/CMIP6_emDay.json
@@ -0,0 +1,4058 @@
+{
+    "Header": {
+        "product": "output", 
+        "approx_interval": "1.00000", 
+        "realm": "land", 
+        "cmor_version": "3.1", 
+        "Conventions": "CF-1.6 CMIP-6.0", 
+        "frequency": "day", 
+        "table_id": "Table emDay", 
+        "data_specs_version": "01.beta.29", 
+        "mip_era": "CMIP6", 
+        "generic_levels": "", 
+        "missing_value": "1e20", 
+        "table_date": "14 June 2016"
+    }, 
+    "axis_entry": {
+        "typebare": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "bare_ground", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "tau": {
+            "requested": [
+                "0.15", 
+                "0.8", 
+                "2.45", 
+                "6.5", 
+                "16.2", 
+                "41.5", 
+                "100."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "0.0", 
+                "0.3", 
+                "0.3", 
+                "1.3", 
+                "1.3", 
+                "3.6", 
+                "3.6", 
+                "9.4", 
+                "9.4", 
+                "23.0", 
+                "23.0", 
+                "60.0", 
+                "60.0", 
+                "100000."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "cloud optical thickness", 
+            "standard_name": "atmosphere_optical_thickness_due_to_cloud", 
+            "value": "", 
+            "out_name": "tau", 
+            "type": "double", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "olayer100m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "0. 100.", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "50.0", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "100.0", 
+            "axis": "Z"
+        }, 
+        "spectband": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "Spectral Band", 
+            "standard_name": "wave_frequency", 
+            "value": "", 
+            "out_name": "spectband", 
+            "type": "double", 
+            "units": "s-1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "ocean_sigma_z": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "sigma: sigma eta: eta depth: depth depth_c: depth_c nsigma: nsigma zlev: zlev", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "sigma: sigma_bnds eta: eta depth: depth depth_c: depth_c nsigma: nsigma zlev: zlev_bnds", 
+            "bounds_values": "", 
+            "long_name": "ocean sigma over z coordinate", 
+            "standard_name": "ocean_sigma_z", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "for k <= nsigma: z(n,k,j,i) = eta(n,j,i) + sigma(k)*(min(depth_c,depth(j,i))+eta(n,j,i)) ; for k > nsigma: z(n,k,j,i) = zlev(k)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev19": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000.", 
+                "500.", 
+                "100."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "p220": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "44000. 0.0", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "22000.0", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev17": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev10": {
+            "requested": [
+                "100000.", 
+                "85000.", 
+                "70000.", 
+                "50000.", 
+                "25000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "site": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "site index", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "site", 
+            "type": "integer", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "smooth_level": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "a: a b1: b1 b2: b2 ztop: ztop zsurf1: zsurf1 zsurf2: zsurf2", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-200.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "a: a_bnds b1: b1_bnds b2: b2_bnds ztop: ztop zsurf1: zsurf1 zsurf2: zsurf2", 
+            "bounds_values": "", 
+            "long_name": "atmosphere smooth level vertical (SLEVE) coordinate", 
+            "standard_name": "atmosphere_sleve_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "m", 
+            "formula": "z = a*ztop + b1*zsurf1 + b2*zsurf2", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "800000.0", 
+            "axis": "Z"
+        }, 
+        "p840": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "100000. 68000.", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "84000.0", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "ocean_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "sigma: lev eta: eta depth: depth", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "sigma: lev_bnds eta: eta depth: depth", 
+            "bounds_values": "", 
+            "long_name": "ocean sigma coordinate", 
+            "standard_name": "ocean_sigma_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "z(n,k,j,i) = eta(n,j,i) + sigma(k)*(depth(j,i)+eta(n,j,i))", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "0.0", 
+            "axis": "Z"
+        }, 
+        "depth0m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "0.0", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "100.0", 
+            "axis": "Z"
+        }, 
+        "ocean_s": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "s: lev eta: eta depth: depth a: a_coeff b: b_coeff depth_c: depth_c", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "s: lev_bnds eta: eta depth: depth a: a b: b depth_c: depth_c", 
+            "bounds_values": "", 
+            "long_name": "ocean s-coordinate", 
+            "standard_name": "ocean_s_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "z(n,k,j,i) = eta(n,j,i)*(1+s(k)) + depth_c*s(k) + (depth(j,i)-depth_c)*C(k) n where n C(k)=(1-b)*sinh(a*s(k))/sinh(a) +n           b*(tanh(a*(s(k)+0.5))/(2*tanh(0.5*a)) - 0.5)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "0.0", 
+            "axis": "Z"
+        }, 
+        "plev4s": {
+            "requested": [
+                "85000.", 
+                "50000.", 
+                "20000.", 
+                "5000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "typec4pft": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "c4_plant_functional_types", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "plev3h": {
+            "requested": [
+                "10000.", 
+                "1000.", 
+                "100."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "height2m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "up", 
+            "must_have_bounds": "no", 
+            "valid_min": "1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "height", 
+            "standard_name": "height", 
+            "value": "2.0", 
+            "out_name": "height", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "10.0", 
+            "axis": "Z"
+        }, 
+        "time1": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "time", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "plev7h": {
+            "requested": [
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "25000.", 
+                "5000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "sza5": {
+            "requested": [
+                "0.", 
+                "20.", 
+                "40.", 
+                "60.", 
+                "80."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "solar zenith angle", 
+            "standard_name": "solar_zenith_angle", 
+            "value": "", 
+            "out_name": "sza", 
+            "type": "double", 
+            "units": "degree", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "depth_coord": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "ocean depth coordinate", 
+            "standard_name": "depth", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "12000.0", 
+            "axis": "Z"
+        }, 
+        "sdepth1": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "0.0 0.1", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "0.05", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "0.2", 
+            "axis": "Z"
+        }, 
+        "alternate_hybrid_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "ap: ap b: b ps: ps", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "ap: ap_bnds b: b_bnds ps: ps", 
+            "bounds_values": "", 
+            "long_name": "hybrid sigma pressure coordinate", 
+            "standard_name": "atmosphere_hybrid_sigma_pressure_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "1", 
+            "formula": "p = ap + b*ps", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "1.0", 
+            "axis": "Z"
+        }, 
+        "time2": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "time", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "yes", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "time3": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "Diurnal cycle: monthly mean of the diurnal cycle (1 hour steps).", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "oline": {
+            "requested": [
+                "barents_opening", 
+                "bering_strait", 
+                "canadian_archipelago", 
+                "denmark_strait", 
+                "drake_passage", 
+                "english_channel", 
+                "pacific_equatorial_undercurrent", 
+                "faroe_scotland_channel", 
+                "florida_bahamas_strait", 
+                "fram_strait", 
+                "iceland_faroe_channel", 
+                "indonesian_thoughflow", 
+                "mozambique_channel", 
+                "taiwan_luzon_straits", 
+                "windward_passage"
+            ], 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "ocean passage", 
+            "standard_name": "region", 
+            "value": "", 
+            "out_name": "line", 
+            "type": "character", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "plev14": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "25000.", 
+                "15000.", 
+                "10000.", 
+                "5000.", 
+                "2000.", 
+                "1000.", 
+                "500.", 
+                "100."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev8": {
+            "requested": [
+                "100000.", 
+                "85000.", 
+                "70000.", 
+                "50000.", 
+                "25000.", 
+                "10000.", 
+                "5000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "location": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "location index", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "loc", 
+            "type": "integer", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "latitude": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-90.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "latitude", 
+            "standard_name": "latitude", 
+            "value": "", 
+            "out_name": "lat", 
+            "type": "double", 
+            "units": "degrees_north", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "90.0", 
+            "axis": "Y"
+        }, 
+        "plev3": {
+            "requested": [
+                "85000.", 
+                "50000.", 
+                "25000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "basin": {
+            "requested": [
+                "atlantic_arctic_ocean", 
+                "indian_pacific_ocean", 
+                "global_ocean"
+            ], 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "ocean basin", 
+            "standard_name": "region", 
+            "value": "", 
+            "out_name": "basin", 
+            "type": "character", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "p700": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "700 hPa", 
+            "standard_name": "air_pressure", 
+            "value": "70000.", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev7": {
+            "requested": [
+                "90000.", 
+                "74000.", 
+                "62000.", 
+                "50000.", 
+                "37500.", 
+                "24500.", 
+                "9000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "100000.", 
+                "80000.", 
+                "80000.", 
+                "68000.", 
+                "68000.", 
+                "56000.", 
+                "56000.", 
+                "44000.", 
+                "44000.", 
+                "31000.", 
+                "31000.", 
+                "18000.", 
+                "18000.", 
+                " 0."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev4": {
+            "requested": [
+                "92500.", 
+                "85000.", 
+                "50000.", 
+                "25000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev23": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000.", 
+                "700.", 
+                "500.", 
+                "300.", 
+                "200.", 
+                "100.", 
+                "40."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev39": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "17000.", 
+                "15000.", 
+                "13000.", 
+                "11500.", 
+                "10000.", 
+                "9000.", 
+                "8000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1500.", 
+                "1000.", 
+                "700.", 
+                "500.", 
+                "300.", 
+                "200.", 
+                "150.", 
+                "100.", 
+                "70.", 
+                "50.", 
+                "40.", 
+                "30.", 
+                "20.", 
+                "15.", 
+                "10.", 
+                "7.", 
+                "5.", 
+                "3."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "typepever": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "primary_evergreen_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "typesdec": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "secondary_decidous_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "plev27": {
+            "requested": [
+                "100000.", 
+                "97500.", 
+                "95000.", 
+                "92500.", 
+                "90000.", 
+                "87500.", 
+                "85000.", 
+                "82500.", 
+                "80000.", 
+                "77500.", 
+                "75000.", 
+                "70000.", 
+                "65000.", 
+                "60000.", 
+                "55000.", 
+                "50000.", 
+                "45000.", 
+                "40000.", 
+                "35000.", 
+                "30000.", 
+                "25000.", 
+                "22500.", 
+                "20000.", 
+                "17500.", 
+                "15000.", 
+                "12500.", 
+                "10000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "alt40": {
+            "requested": [
+                "240.", 
+                "720.", 
+                "1200.", 
+                "1680.", 
+                "2160.", 
+                "2640.", 
+                "3120.", 
+                "3600.", 
+                "4080.", 
+                "4560.", 
+                "5040.", 
+                "5520.", 
+                "6000.", 
+                "6480.", 
+                "6960.", 
+                "7440.", 
+                "7920.", 
+                "8400.", 
+                "8880.", 
+                "9360.", 
+                "9840.", 
+                "10320.", 
+                "10800.", 
+                "11280.", 
+                "11760.", 
+                "12240.", 
+                "12720.", 
+                "13200.", 
+                "13680.", 
+                "14160.", 
+                "14640.", 
+                "15120.", 
+                "15600.", 
+                "16080.", 
+                "16560.", 
+                "17040.", 
+                "17520.", 
+                "18000.", 
+                "18480.", 
+                "18960."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "0.", 
+                "480.", 
+                "480.", 
+                "960.", 
+                "960.", 
+                "1440.", 
+                "1440.", 
+                "1920.", 
+                "1920.", 
+                "2400.", 
+                "2400.", 
+                "2880.", 
+                "2880.", 
+                "3360.", 
+                "3360.", 
+                "3840.", 
+                "3840.", 
+                "4320.", 
+                "4320.", 
+                "4800.", 
+                "4800.", 
+                "5280.", 
+                "5280.", 
+                "5760.", 
+                "5760.", 
+                "6240.", 
+                "6240.", 
+                "6720.", 
+                "6720.", 
+                "7200.", 
+                "7200.", 
+                "7680.", 
+                "7680.", 
+                "8160.", 
+                "8160.", 
+                "8640.", 
+                "8640.", 
+                "9120.", 
+                "9120.", 
+                "9600.", 
+                "9600.", 
+                "10080.", 
+                "10080.", 
+                "10560.", 
+                "10560.", 
+                "11040.", 
+                "11040.", 
+                "11520.", 
+                "11520.", 
+                "12000.", 
+                "12000.", 
+                "12480.", 
+                "12480.", 
+                "12960.", 
+                "12960.", 
+                "13440.", 
+                "13440.", 
+                "13920.", 
+                "13920.", 
+                "14400.", 
+                "14400.", 
+                "14880.", 
+                "14880.", 
+                "15360.", 
+                "15360.", 
+                "15840.", 
+                "15840.", 
+                "16320.", 
+                "16320.", 
+                "16800.", 
+                "16800.", 
+                "17280.", 
+                "17280.", 
+                "17760.", 
+                "17760.", 
+                "18240.", 
+                "18240.", 
+                "18720.", 
+                "18720.", 
+                "19200."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "altitude", 
+            "standard_name": "altitude", 
+            "value": "", 
+            "out_name": "alt40", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "time": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "time", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "plev7c": {
+            "requested": [
+                "90000.", 
+                "74000.", 
+                "62000.", 
+                "50000.", 
+                "37500.", 
+                "24500.", 
+                "9000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "height10m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "up", 
+            "must_have_bounds": "no", 
+            "valid_min": "1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "height", 
+            "standard_name": "height", 
+            "value": "10.0", 
+            "out_name": "height", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "30.0", 
+            "axis": "Z"
+        }, 
+        "dbze": {
+            "requested": [
+                "-47.5", 
+                "-42.5", 
+                "-37.5", 
+                "-32.5", 
+                "-27.5", 
+                "-22.5", 
+                "-17.5", 
+                "-12.5", 
+                "-7.5", 
+                "-2.5", 
+                "2.5", 
+                "7.5", 
+                "12.5", 
+                "17.5", 
+                "22.5"
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "-50", 
+                "-45", 
+                "-45", 
+                "-40", 
+                "-40", 
+                "-35", 
+                "-35", 
+                "-30", 
+                "-30", 
+                "-25", 
+                "-25", 
+                "-20", 
+                "-20", 
+                "-15", 
+                "-15", 
+                "-10", 
+                "-10", 
+                "-5", 
+                "-5", 
+                "0", 
+                "0", 
+                "5", 
+                "5", 
+                "10", 
+                "10", 
+                "15", 
+                "15", 
+                "20", 
+                "20", 
+                "25."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "CloudSat simulator equivalent radar reflectivity factor", 
+            "standard_name": "equivalent_reflectivity_factor", 
+            "value": "", 
+            "out_name": "dbze", 
+            "type": "double", 
+            "units": "dBZ", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "typesever": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "secondary_evergreen_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "rho": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "density++++?", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "rho", 
+            "type": "double", 
+            "units": "kg m-3", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "depth100m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "80.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "100.0", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "120.0", 
+            "axis": "Z"
+        }, 
+        "effectRadLi": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "Effective Radius of Liquid Aerosols", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "effectRadLi", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "sdepth": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "200.0", 
+            "axis": "Z"
+        }, 
+        "vegtype": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "plant functional type", 
+            "standard_name": "area_type", 
+            "value": "", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "typec3pft": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "c3_plant_functional_types", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "natural_log_pressure": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "p0: p0 lev: lev", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "p0: p0 lev: lev_bnds", 
+            "bounds_values": "", 
+            "long_name": "atmosphere natural log pressure coordinate", 
+            "standard_name": "atmosphere_ln_pressure_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "p = p0 * exp(-lev)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "20.0", 
+            "axis": "Z"
+        }, 
+        "scatratio": {
+            "requested": [
+                "0.005", 
+                "0.605", 
+                "2.1", 
+                "4.", 
+                "6.", 
+                "8.5", 
+                "12.5", 
+                "17.5", 
+                "22.5", 
+                "27.5", 
+                "35.", 
+                "45.", 
+                "55.", 
+                "70.", 
+                "50040."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "0.", 
+                "0.01", 
+                "0.01", 
+                "1.2", 
+                "1.2", 
+                "3.", 
+                "3.", 
+                "5.", 
+                "5.", 
+                "7.", 
+                "7.", 
+                "10.", 
+                "10.", 
+                "15.", 
+                "15.", 
+                "20.", 
+                "20.", 
+                "25.", 
+                "25.", 
+                "30.", 
+                "30.", 
+                "40.", 
+                "40.", 
+                "50.", 
+                "50.", 
+                "60.", 
+                "60.", 
+                "80.", 
+                "80.", 
+                "100000."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "lidar backscattering ratio", 
+            "standard_name": "backscattering_ratio", 
+            "value": "", 
+            "out_name": "scatratio", 
+            "type": "double", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "standard_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "ptop: ptop sigma: lev ps: ps", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "ptop: ptop sigma: lev_bnds ps: ps", 
+            "bounds_values": "", 
+            "long_name": "sigma coordinate", 
+            "standard_name": "atmosphere_sigma_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "p = ptop + sigma*(ps - ptop)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "1.0", 
+            "axis": "Z"
+        }, 
+        "typepdec": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "primary_deciduous_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "hybrid_height": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "a: lev b: b orog: orog", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "a: lev_bnds b: b_bnds orog: orog", 
+            "bounds_values": "", 
+            "long_name": "hybrid height coordinate", 
+            "standard_name": "atmosphere_hybrid_height_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "m", 
+            "formula": "z = a + b*orog", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "longitude": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "longitude", 
+            "standard_name": "longitude", 
+            "value": "", 
+            "out_name": "lon", 
+            "type": "double", 
+            "units": "degrees_east", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "360.0", 
+            "axis": "X"
+        }, 
+        "effectRadIc": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "Effective Radius of Ice Aerosols", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "effectRadIc", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "p1000": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "1000 hPa", 
+            "standard_name": "air_pressure", 
+            "value": "100000.", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "p500": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "500 hPa", 
+            "standard_name": "air_pressure", 
+            "value": "50000.", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "ocean_double_sigma": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "sigma: sigma depth: depth z1: z1 z2: z2 a: a_coeff href: href k_c: k_c", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "sigma: sigma_bnds depth: depth z1: z1 z2: z2 a: a href: href k_c: k_c", 
+            "bounds_values": "", 
+            "long_name": "ocean double sigma coordinate", 
+            "standard_name": "ocean_double_sigma", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "for k <= k_c:n z(k,j,i)= sigma(k)*f(j,i) n for k > k_c:n z(k,j,i)= f(j,i) + (sigma(k)-1)*(depth(j,i)-f(j,i)) n f(j,i)= 0.5*(z1+ z2) + 0.5*(z1-z2)* tanh(2*a/(z1-z2)*(depth(j,i)-href))", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plevs": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "standard_hybrid_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "p0: p0 a: a b: b ps: ps", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "p0: p0 a: a_bnds b: b_bnds ps: ps", 
+            "bounds_values": "", 
+            "long_name": "hybrid sigma pressure coordinate", 
+            "standard_name": "atmosphere_hybrid_sigma_pressure_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "1", 
+            "formula": "p = a*p0 + b*ps", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "1.0", 
+            "axis": "Z"
+        }, 
+        "p560": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "68000. 44000.", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "56000.0", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }
+    }, 
+    "variable_entry": {
+        "depth_c": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: depth_c", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "agesno": {
+            "comment": "Age of Snow (when computing the time-mean here, the time samples, weighted by the mass of snow on the land portion of the grid cell, are accumulated and then divided by the sum of the weights.  Reported as missing data in regions free of snow on land.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Mean Age of Snow", 
+            "standard_name": "age_of_surface_snow", 
+            "modeling_realm": "landIce land", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "day", 
+            "out_name": "agesno", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "tcs": {
+            "comment": "Vegetation temperature, averaged over all vegetation types", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Vegetation Canopy Temperature", 
+            "standard_name": "canopy_temperature", 
+            "modeling_realm": "__unset__", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "K", 
+            "out_name": "tcs", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "mrsfl": {
+            "comment": "as specified by C4MIP", 
+            "dimensions": "longitude latitude sdepth time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Frozen water content of soil layer", 
+            "standard_name": "frozen_moisture_content_of_soil_layer", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg m-2", 
+            "out_name": "mrsfl", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "loadsoa": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Load of Dry Aerosol Secondary Organic Matter", 
+            "standard_name": "atmosphere_mass_content_of_secondary_particulate_organic_matter_dry_aerosol", 
+            "modeling_realm": "aerosol", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2", 
+            "out_name": "loadsoa", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "reffsclwtop": {
+            "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 co [...]
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Cloud-Top Effective Droplet Radius In Stratiform Cloud", 
+            "standard_name": "effective_radius_of_stratiform_cloud_liquid_water_particle_at_liquid_water_cloud_top", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "m", 
+            "out_name": "reffsclwtop", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "dslw": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Change in soil moisture", 
+            "standard_name": "change_over_time_in_water_content_of_soil_layer", 
+            "modeling_realm": "__unset__", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg/m2", 
+            "out_name": "dslw", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "tsl": {
+            "comment": "Temperature of each soil layer. Reported as missing for grid cells with no land.", 
+            "dimensions": "longitude latitude sdepth time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Temperature of Soil", 
+            "standard_name": "soil_temperature", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "K", 
+            "out_name": "tsl", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "snmsl": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Water flowing out of snowpack", 
+            "standard_name": "surface_snow_melt_flux_into_soil_layer", 
+            "modeling_realm": "__unset__", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg/m2/s", 
+            "out_name": "snmsl", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "tr": {
+            "comment": "Effective radiative surface temperature, averaged over the grid cell", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Surface Radiative Temperature", 
+            "standard_name": "surface_temperature?", 
+            "modeling_realm": "__unset__", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "K", 
+            "out_name": "tr", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "ts": {
+            "comment": "Temperature of the lower boundary of the atmosphere", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "176.8", 
+            "long_name": "Surface Temperature", 
+            "standard_name": "surface_temperature", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "262.8", 
+            "units": "K", 
+            "out_name": "ts", 
+            "type": "real", 
+            "valid_max": "339.6", 
+            "ok_max_mean_abs": "293.3"
+        }, 
+        "albsn": {
+            "comment": "Albedo of the snow-covered surface, averaged over the grid cell.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Snow Albedo", 
+            "standard_name": "snow_and_ice_albedo", 
+            "modeling_realm": "__unset__", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "1.0", 
+            "out_name": "albsn", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "loadso4": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Load of SO4", 
+            "standard_name": "atmosphere_mass_content_of_sulfate_dry_aerosol", 
+            "modeling_realm": "aerosol", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2", 
+            "out_name": "loadso4", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "psl": {
+            "comment": "Sea Level Pressure", 
+            "dimensions": "longitude latitude  time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Sea Level Pressure", 
+            "standard_name": "air_pressure_at_sea_level", 
+            "modeling_realm": "", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "Pa", 
+            "out_name": "psl", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "rivi": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "River Discharge", 
+            "standard_name": "water_flux_to_downstream", 
+            "modeling_realm": "__unset__", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "m3/s", 
+            "out_name": "rivi", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "nsigma": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: nsigma", 
+            "type": "integer", 
+            "dimensions": ""
+        }, 
+        "mrros": {
+            "comment": "The total surface run off leaving the land portion of the grid cell (excluding drainage through the base of the soil model).", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "-6.802e-06", 
+            "long_name": "Surface Run off", 
+            "standard_name": "surface_runoff_flux", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "-5.867e-06", 
+            "units": "kg m-2 s-1", 
+            "out_name": "mrros", 
+            "type": "real", 
+            "valid_max": "0.0009825", 
+            "ok_max_mean_abs": "1.302e-05"
+        }, 
+        "ua200": {
+            "comment": "Zonal wind (positive eastwards) at 200hPa", 
+            "dimensions": "longitude latitude time p200", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Eastward Wind", 
+            "standard_name": "eastward_wind", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "m s-1", 
+            "out_name": "ua200", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "mrrob": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Subsurface runoff", 
+            "standard_name": "subsurface_runoff_flux", 
+            "modeling_realm": "__unset__", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg/m2/s", 
+            "out_name": "mrrob", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "tran": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "valid_min": "", 
+            "long_name": "Transpiration", 
+            "standard_name": "transpiration_flux", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "tran", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "hfsbl": {
+            "comment": "Energy consumed or released during vapor/solid phase changes.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Energy of sublimation", 
+            "standard_name": "surface_snow_and_ice_sublimation_heat_flux", 
+            "modeling_realm": "__unset__", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "W/m2", 
+            "out_name": "hfsbl", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "lqsn": {
+            "comment": "Fraction of Snow Equivalent Water which is in the liquid phase. 3D variable for multi-layer snow schemes.", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Snow liquid fraction", 
+            "standard_name": "mass_fraction_of_liquid_water_in_snow", 
+            "modeling_realm": "__unset__", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "-", 
+            "out_name": "lqsn", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "hurmin": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Daily Minimum Near-Surface Relative Humidity", 
+            "standard_name": "relative_humidity", 
+            "modeling_realm": "__unset__", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "%", 
+            "out_name": "hurmin", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "sootsn": {
+            "comment": "the entire land portion of the grid cell is considered, with snow soot content set to 0.0 in regions free of snow.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Snow Soot Content", 
+            "standard_name": "soot_content_of_surface_snow", 
+            "modeling_realm": "landIce land", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2", 
+            "out_name": "sootsn", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "hurmax": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Daily Maximum Near-Surface Relative Humidity", 
+            "standard_name": "relative_humidity", 
+            "modeling_realm": "__unset__", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "%", 
+            "out_name": "hurmax", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "clwvic": {
+            "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", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Convective Condensed Water Path", 
+            "standard_name": "atmosphere_convective_cloud_condensed_water_content", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg m-2 ", 
+            "out_name": "clwvic", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "dmlt": {
+            "comment": "Depth from surface to the zero degree isotherm. Above this isotherm T > 0o, and below this line T < 0o.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Depth to soil thaw", 
+            "standard_name": "depth_of_subsurface_melting", 
+            "modeling_realm": "__unset__", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "m", 
+            "out_name": "dmlt", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "loaddust": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Load of Dust", 
+            "standard_name": "atmosphere_mass_content_of_dust_dry_aerosol", 
+            "modeling_realm": "aerosol", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2", 
+            "out_name": "loaddust", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "ccldncl": {
+            "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", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Cloud Droplet Number Concentration of Convective Cloud Tops", 
+            "standard_name": "number_concentration_of_convective_cloud_liquid_water_particles_in_air_at_liquid_water_cloud_top", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "m-3", 
+            "out_name": "ccldncl", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "zg": {
+            "comment": "", 
+            "dimensions": "longitude latitude plev8 time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Geopotential Height", 
+            "standard_name": "geopotential_height", 
+            "modeling_realm": "", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "m", 
+            "out_name": "zg", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "ec": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Interception evaporation", 
+            "standard_name": "liquid_water_evaporation_flux_from_canopy", 
+            "modeling_realm": "__unset__", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg/m2/s", 
+            "out_name": "ec", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "orog": {
+            "units": "m", 
+            "long_name": "Surface Altitude", 
+            "type": "real", 
+            "dimensions": "longitude latitude"
+        }, 
+        "et": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Total Evapotranspiration", 
+            "standard_name": "surface_evapotranspiration", 
+            "modeling_realm": "__unset__", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg/m2/s", 
+            "out_name": "et", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "es": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Bare soil evaporation", 
+            "standard_name": "liquid_water_evaporation_flux_from_soil", 
+            "modeling_realm": "__unset__", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg/m2/s", 
+            "out_name": "es", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "snc": {
+            "comment": "Fraction of each grid cell that is occupied by snow that rests on land portion of cell.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Snow Area Fraction", 
+            "standard_name": "surface_snow_area_fraction", 
+            "modeling_realm": "landIce land", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "-29.01", 
+            "units": "%", 
+            "out_name": "snc", 
+            "type": "real", 
+            "valid_max": "105", 
+            "ok_max_mean_abs": "78.46"
+        }, 
+        "sbl": {
+            "comment": "The snow and ice sublimation flux is the loss of snow and ice mass from the surface resulting from their conversion to water vapor that enters the atmosphere.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "-0.004959", 
+            "long_name": "Surface Snow and Ice Sublimation Flux", 
+            "standard_name": "surface_snow_and_ice_sublimation_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "-5.521e-05", 
+            "units": "kg m-2 s-1", 
+            "out_name": "sbl", 
+            "type": "real", 
+            "valid_max": "0.0009936", 
+            "ok_max_mean_abs": "9.61e-05"
+        }, 
+        "mrsol": {
+            "comment": "as specified by C4MIP", 
+            "dimensions": "longitude latitude sdepth time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Total water content of soil layer", 
+            "standard_name": "total_moisture_content_of_soil_layer", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg m-2", 
+            "out_name": "mrsol", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "dsw": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Change in Surface Water Storage", 
+            "standard_name": "change_over_time_in_surface_water_amount", 
+            "modeling_realm": "__unset__", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg/m2", 
+            "out_name": "dsw", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "ua850": {
+            "comment": "Zonal wind on the 850 hPa surface", 
+            "dimensions": "longitude latitude time p850", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Eastward Wind at 850 hPa", 
+            "standard_name": "eastward_wind", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "m s-1", 
+            "out_name": "ua850", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "loadbc": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Load of Black Carbon Aerosol", 
+            "standard_name": "atmosphere_mass_content_of_black_carbon_dry_aerosol", 
+            "modeling_realm": "aerosol", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2", 
+            "out_name": "loadbc", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "dsn": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Change in snow water equivalent", 
+            "standard_name": "change_over_time_in_surface_snow_and_ice_amount", 
+            "modeling_realm": "__unset__", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg/m2", 
+            "out_name": "dsn", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "sigma_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: sigma(k+1/2)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "mrsow": {
+            "comment": "Vertically integrated soil moisture divided by maximum allowable soil moisture above wilting point.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Total Soil Wetness", 
+            "standard_name": "volume_fraction_of_condensed_water_in_soil_at_field_capacity?", 
+            "modeling_realm": "__unset__", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "1.0", 
+            "out_name": "mrsow", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "cnc": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Canopy covered fraction", 
+            "standard_name": "vegetation_area_fraction", 
+            "modeling_realm": "__unset__", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "", 
+            "out_name": "cnc", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "dtesn": {
+            "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", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Change in snow/ice cold content", 
+            "standard_name": "change_over_time_in_thermal_energy_content_of_surface_snow_and_ice", 
+            "modeling_realm": "__unset__", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "J/m2", 
+            "out_name": "dtesn", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "esn": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Snow Evaporation", 
+            "standard_name": "liquid_water_evaporation_flux_from_surface_snow", 
+            "modeling_realm": "__unset__", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg/m2/s", 
+            "out_name": "esn", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "ptop": {
+            "units": "Pa", 
+            "long_name": "pressure at top of model", 
+            "type": "", 
+            "dimensions": ""
+        }, 
+        "va200": {
+            "comment": "Northward component of the wind", 
+            "dimensions": "longitude latitude time p200", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Northward Wind", 
+            "standard_name": "northward_wind", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "m s-1", 
+            "out_name": "va200", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "snwc": {
+            "comment": "Total water mass of the snowpack (liquid or frozen), averaged over a grid cell and interecepted by the canopy.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "SWE intercepted by the vegetation", 
+            "standard_name": "canopy_snow_amount", 
+            "modeling_realm": "__unset__", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg/m2", 
+            "out_name": "snwc", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "wtd": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Water table depth", 
+            "standard_name": "depth_of_soil_moisture_saturation", 
+            "modeling_realm": "__unset__", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "m", 
+            "out_name": "wtd", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "rsds": {
+            "comment": "surface solar irradiance for UV calculations", 
+            "dimensions": "longitude latitude time", 
+            "positive": "down", 
+            "valid_min": "-0.002946", 
+            "long_name": "Surface Downwelling Shortwave Radiation", 
+            "standard_name": "surface_downwelling_shortwave_flux_in_air", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "143.9", 
+            "units": "W m-2", 
+            "out_name": "rsds", 
+            "type": "real", 
+            "valid_max": "524.4", 
+            "ok_max_mean_abs": "181.6"
+        }, 
+        "ztop": {
+            "units": "m", 
+            "long_name": "height of top of model", 
+            "type": "", 
+            "dimensions": ""
+        }, 
+        "dcw": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Change in interception storage", 
+            "standard_name": "change_over_time_in_canopy_water_amount", 
+            "modeling_realm": "__unset__", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg/m2", 
+            "out_name": "dcw", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "zg500": {
+            "comment": "geopotential height on the 500 hPa surface", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Geopotential Height at 500 hPa", 
+            "standard_name": "geopotential_height", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "m", 
+            "out_name": "zg500", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "z1": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: z1", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "z2": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: z2", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "snrefr": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Re-freezing of water in the snow", 
+            "standard_name": "surface_snow_and_ice_refreezing_flux", 
+            "modeling_realm": "__unset__", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg/m2/s", 
+            "out_name": "snrefr", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "eta": {
+            "units": "m", 
+            "long_name": "Sea Surface Height formula term: thetao", 
+            "type": "real", 
+            "dimensions": "longitude latitude time"
+        }, 
+        "slbnosn": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Sublimation of the snow free area", 
+            "standard_name": "sublimation_amount_assuming_no_snow", 
+            "modeling_realm": "__unset__", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg/m2/s", 
+            "out_name": "slbnosn", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "loadnh4": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Load of NH4", 
+            "standard_name": "atmosphere_mass_content_of_ammonium_dry_aerosol", 
+            "modeling_realm": "aerosol", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2", 
+            "out_name": "loadnh4", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "tgs": {
+            "comment": "Surface bare soil temperature", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Temperature of bare soil", 
+            "standard_name": "surface_temperature", 
+            "modeling_realm": "__unset__", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "K", 
+            "out_name": "tgs", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "reffcclwtop": {
+            "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 co [...]
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Cloud-Top Effective Droplet Radius In Convective Cloud", 
+            "standard_name": "effective_radius_of_convective_cloud_liquid_water_particle_at_liquid_water_cloud_top", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "m", 
+            "out_name": "reffcclwtop", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "rivo": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "River Inflow", 
+            "standard_name": "water_flux_from_upstream", 
+            "modeling_realm": "__unset__", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "m3/s", 
+            "out_name": "rivo", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "mrfsofr": {
+            "comment": "Fraction of soil moisture mass in the solid phase in each user-defined soil layer (3D variable)", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Average layer fraction of frozen moisture", 
+            "standard_name": "mass_fraction_of_frozen_water_in_soil_moisture", 
+            "modeling_realm": "__unset__", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "1.0", 
+            "out_name": "mrfsofr", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "hfds": {
+            "comment": "This is the net flux of heat entering the liquid water column through its upper surface (excluding any 'flux adjustment') .", 
+            "dimensions": "longitude latitude time", 
+            "positive": "down", 
+            "valid_min": "", 
+            "long_name": "Downward Heat Flux at Sea Water Surface", 
+            "standard_name": "surface_downward_heat_flux_in_sea_water", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "hfds", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "href": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: href", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "lwsnl": {
+            "comment": "where land over land: this is computed as the total mass of liquid water contained interstitially within the snow layer of the land portion of a grid cell divided by the area of the land portion of the cell.", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Liquid Water Content of Snow Layer", 
+            "standard_name": "liquid_water_content_of_snow_layer", 
+            "modeling_realm": "landIce land", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2", 
+            "out_name": "lwsnl", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "pflw": {
+            "comment": "''where land over land'', i.e., this is the total mass of liquid water contained within the permafrost layer within the land portion of a grid cell divided by the area of the land portion of the cell.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Liquid Water Content of Permafrost Layer", 
+            "standard_name": "liquid_water_content_of_permafrost_layer", 
+            "modeling_realm": "landIce land", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2", 
+            "out_name": "pflw", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "cw": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Total canopy water storage", 
+            "standard_name": "canopy_water_amount", 
+            "modeling_realm": "__unset__", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg/m2", 
+            "out_name": "cw", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "pr": {
+            "comment": "includes both liquid and solid phases", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Precipitation", 
+            "standard_name": "precipitation_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "2.156e-05", 
+            "units": "kg m-2 s-1", 
+            "out_name": "pr", 
+            "type": "real", 
+            "valid_max": "0.001254", 
+            "ok_max_mean_abs": "3.215e-05"
+        }, 
+        "ps": {
+            "units": "Pa", 
+            "long_name": "Surface Air Pressure", 
+            "type": "real", 
+            "dimensions": "longitude latitude time"
+        }, 
+        "rlus": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "valid_min": "43.75", 
+            "long_name": "surface upwelling longwave radiation", 
+            "standard_name": "surface_upwelling_longwave_flux_in_air", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "325.6", 
+            "units": "W m-2", 
+            "out_name": "rlus", 
+            "type": "real", 
+            "valid_max": "658", 
+            "ok_max_mean_abs": "376.3"
+        }, 
+        "aod550volso4": {
+            "comment": "aerosol optical depth at 550 nm due to stratospheric volcanic aerosols ", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Aerosol optical depth at 550 nm due to stratospheric volcanic aerosols ", 
+            "standard_name": "aerosol optical depth due to stratospheric volcanic aerosols ", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "1e-09", 
+            "out_name": "aod550volso4", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "dfr": {
+            "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", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Frozen soil depth", 
+            "standard_name": "depth_of_frozen_soil", 
+            "modeling_realm": "__unset__", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "m", 
+            "out_name": "dfr", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "hfdsn": {
+            "comment": "the net downward heat flux from the atmosphere into the snow that lies on land divided by the land area in the grid cell; reported as 0.0 for snow-free land regions or where the land fraction is 0.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "down", 
+            "valid_min": "", 
+            "long_name": "Downward Heat Flux into Snow Where Land over Land", 
+            "standard_name": "surface_downward_heat_flux_in_snow", 
+            "modeling_realm": "landIce land", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "hfdsn", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "tws": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Terrestrial Water Storage", 
+            "standard_name": "canopy_and_surface_and_subsurface_water_amount", 
+            "modeling_realm": "__unset__", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg/m2", 
+            "out_name": "tws", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "ares": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Aerodynamic resistance", 
+            "standard_name": "aerodynamic_resistance", 
+            "modeling_realm": "__unset__", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "s/m", 
+            "out_name": "ares", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "qgwr": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Groundwater recharge from soil layer", 
+            "standard_name": "water_flux_from_soil_layer_to_groundwater", 
+            "modeling_realm": "__unset__", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg/m2/s", 
+            "out_name": "qgwr", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "clivic": {
+            "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", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Convective Ice Water Path", 
+            "standard_name": "atmosphere_convective_cloud_ice_content", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg m-2 ", 
+            "out_name": "clivic", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "tsnl": {
+            "comment": "Temperature in the snow pack present in the grid-cell. 3D variable for multi-layer snow schemes.", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Temperature profile in the snow", 
+            "standard_name": "snow_temperature", 
+            "modeling_realm": "__unset__", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "K", 
+            "out_name": "tsnl", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "prrsn": {
+            "comment": "The fraction of the grid averaged rainfall which falls on the snow pack", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Fraction of rainfall on snow.", 
+            "standard_name": "mass_fraction_of_rainfall_onto_snow", 
+            "modeling_realm": "__unset__", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "-", 
+            "out_name": "prrsn", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "va850": {
+            "comment": "Northward component of the wind at 850hPa", 
+            "dimensions": "longitude latitude time p850", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Northward Wind", 
+            "standard_name": "northward_wind", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "m s-1", 
+            "out_name": "va850", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "mrlqso": {
+            "comment": "Fraction of soil moisture mass in the liquid phase in each user-defined soil layer (3D variable)", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Average layer fraction of liquid moisture", 
+            "standard_name": "mass_fraction_of_unfrozen_water_in_soil_moisture", 
+            "modeling_realm": "__unset__", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "1.0", 
+            "out_name": "mrlqso", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "potet": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Potential Evapotranspiration", 
+            "standard_name": "water_potential_evapotranspiration_flux", 
+            "modeling_realm": "__unset__", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg/m2/s", 
+            "out_name": "potet", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "prsnc": {
+            "comment": "convective precipitation of all forms of water in the solid phase.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Convective Snowfall Flux", 
+            "standard_name": "convective_snowfall_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "prsnc", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "loadoa": {
+            "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", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Load of Dry Aerosol Organic Matter", 
+            "standard_name": "atmosphere_mass_content_of_particulate_organic_matter_dry_aerosol", 
+            "modeling_realm": "aerosol", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2", 
+            "out_name": "loadoa", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "hur": {
+            "comment": "The relative humidity with respect to liquid water for T> 0 C, and with respect to ice for T<0 C.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Relative Humidity", 
+            "standard_name": "relative_humidity", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "%", 
+            "out_name": "hur", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "mrlsl": {
+            "comment": "The mass of water in all phases, including ice, in soil layers.  Report as missing for grid cells with no land.", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Water Content per Unit Area of Soil Layers", 
+            "standard_name": "moisture_content_of_soil_layer", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2", 
+            "out_name": "mrlsl", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "tsns": {
+            "comment": "Temperature of the snow surface as it interacts with the atmosphere, averaged over a grid cell.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Snow Surface Temperature", 
+            "standard_name": "surface_temperature", 
+            "modeling_realm": "__unset__", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "K", 
+            "out_name": "tsns", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "rls": {
+            "comment": "Net longwave surface radiation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Net Longwave Surface Radiation", 
+            "standard_name": "surface_net_downward_longwave_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "W m-2", 
+            "out_name": "rls", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "p0": {
+            "units": "Pa", 
+            "long_name": "vertical coordinate formula term: reference pressure", 
+            "type": "", 
+            "dimensions": ""
+        }, 
+        "b": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: b(k)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "mrsll": {
+            "comment": "as specified by C4MIP", 
+            "dimensions": "longitude latitude sdepth time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Liquid water content of soil layer", 
+            "standard_name": "liquid_moisture_content_of_soil_layer", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg m-2", 
+            "out_name": "mrsll", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "mrro": {
+            "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", 
+            "positive": "", 
+            "valid_min": "-0.0002019", 
+            "long_name": "Total Run-off", 
+            "standard_name": "runoff_flux", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "-6.668e-06", 
+            "units": "kg m-2 s-1", 
+            "out_name": "mrro", 
+            "type": "real", 
+            "valid_max": "0.001065", 
+            "ok_max_mean_abs": "1.874e-05"
+        }, 
+        "tasmin": {
+            "comment": "minimum near-surface (usually, 2 meter) air temperature (add cell_method attribute 'time: min')", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Daily Minimum Near-Surface Air Temperature", 
+            "standard_name": "air_temperature", 
+            "modeling_realm": "__unset__", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "K", 
+            "out_name": "tasmin", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "loadpoa": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Load of Dry Aerosol Primary Organic Matter", 
+            "standard_name": "atmosphere_mass_content_of_primary_particulate_organic_matter_dry_aerosol", 
+            "modeling_realm": "aerosol", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2", 
+            "out_name": "loadpoa", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "tasmax": {
+            "comment": "maximum near-surface (usually, 2 meter) air temperature (add cell_method attribute 'time: max')", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Daily Maximum Near-Surface Air Temperature", 
+            "standard_name": "air_temperature", 
+            "modeling_realm": "__unset__", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "K", 
+            "out_name": "tasmax", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "k_c": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: k_c", 
+            "type": "integer", 
+            "dimensions": ""
+        }, 
+        "ta850": {
+            "comment": "Air temperature at 850hPa", 
+            "dimensions": "longitude latitude time p850", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Air Temperature", 
+            "standard_name": "air_temperature", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "K", 
+            "out_name": "ta850", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "rzwc": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Root zone soil moisture", 
+            "standard_name": "water_content_of_root_zone", 
+            "modeling_realm": "__unset__", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg/m2", 
+            "out_name": "rzwc", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "a_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: a(k+1/2)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "tau": {
+            "comment": "module of the momentum lost by the atmosphere to the surface.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Momentum flux", 
+            "standard_name": "surface_downward_stress", 
+            "modeling_realm": "__unset__", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "N/m2", 
+            "out_name": "tau", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "albc": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Canopy Albedo", 
+            "standard_name": "canopy_albedo", 
+            "modeling_realm": "__unset__", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "1.0", 
+            "out_name": "albc", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "ap_bnds": {
+            "units": "Pa", 
+            "long_name": "vertical coordinate formula term: ap(k+1/2)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "ap": {
+            "units": "Pa", 
+            "long_name": "vertical coordinate formula term: ap(k)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "prw": {
+            "comment": "vertically integrated through the atmospheric column", 
+            "dimensions": "longitude latitude  time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Water Vapor Path", 
+            "standard_name": "atmosphere_water_vapor_content", 
+            "modeling_realm": "", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg m-2", 
+            "out_name": "prw", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "prsn": {
+            "comment": "at surface; includes precipitation of all forms of water in the solid phase", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Snowfall Flux", 
+            "standard_name": "snowfall_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "1.449e-06", 
+            "units": "kg m-2 s-1", 
+            "out_name": "prsn", 
+            "type": "real", 
+            "valid_max": "0.0002987", 
+            "ok_max_mean_abs": "6.11e-06"
+        }, 
+        "scldncl": {
+            "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", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Cloud Droplet Number Concentration of Stratiform Cloud Tops", 
+            "standard_name": "number_concentration_of_stratiform_cloud_liquid_water_particles_in_air_at_liquid_water_cloud_top", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "m-3", 
+            "out_name": "scldncl", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "zlev": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: zlev(k)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "albs": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "planetary albedo", 
+            "standard_name": "planetary_albedo", 
+            "modeling_realm": "__unset__", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "1.0", 
+            "out_name": "albs", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "prhmax": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Daily Maximum Hourly Precipitation Rate", 
+            "standard_name": "precipitation_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "prhmax", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "loadno3": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Load of NO3", 
+            "standard_name": "atmosphere_mass_content_of_nitrate_dry_aerosol", 
+            "modeling_realm": "aerosol", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2", 
+            "out_name": "loadno3", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "loadss": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Load of Seasalt", 
+            "standard_name": "atmosphere_mass_content_of_seasalt_dry_aerosol", 
+            "modeling_realm": "aerosol", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2", 
+            "out_name": "loadss", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "snd": {
+            "comment": "where land over land, this is computed as the mean thickness of snow in the land portion of the grid cell (averaging over the entire land portion, including the snow-free fraction).  Reported as 0.0 where the land fraction is 0.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Snow Depth", 
+            "standard_name": "surface_snow_thickness", 
+            "modeling_realm": "landIce land", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "-1.961", 
+            "units": "m", 
+            "out_name": "snd", 
+            "type": "real", 
+            "valid_max": "962.9", 
+            "ok_max_mean_abs": "4.503"
+        }, 
+        "b_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: b(k+1/2)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "lai": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "leaf area index", 
+            "standard_name": "leaf_area_index", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "1.0", 
+            "out_name": "lai", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "zmla": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Height of Boundary Layer", 
+            "standard_name": "atmosphere_boundary_layer_thickness", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "m", 
+            "out_name": "zmla", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "snm": {
+            "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", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Surface Snow Melt", 
+            "standard_name": "surface_snow_melt_flux", 
+            "modeling_realm": "landIce land", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "-2.092e-06", 
+            "units": "kg m-2 s-1", 
+            "out_name": "snm", 
+            "type": "real", 
+            "valid_max": "0.0003926", 
+            "ok_max_mean_abs": "6.123e-06"
+        }, 
+        "hfrs": {
+            "comment": "Heat transferred to a snow cover by rain..", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Heat transferred to snowpack by rainfall", 
+            "standard_name": "temperature_flux_due_to_rainfall_expressed_as_heat_flux_onto_snow_and_ice", 
+            "modeling_realm": "__unset__", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "W/m2", 
+            "out_name": "hfrs", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "snw": {
+            "comment": "The mass of surface snow on the land portion of the grid cell divided by the land area in the grid cell; reported as missing where the land fraction is 0; excludes snow on vegetation canopy or on sea ice.", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "-0.007542", 
+            "long_name": "Surface Snow Amount", 
+            "standard_name": "surface_snow_amount", 
+            "modeling_realm": "landIce land", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "-6025", 
+            "units": "kg m-2", 
+            "out_name": "snw", 
+            "type": "real", 
+            "valid_max": "9.555e+05", 
+            "ok_max_mean_abs": "1.213e+04"
+        }, 
+        "dgw": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Change in groundwater", 
+            "standard_name": "change_over_time_in_groundwater", 
+            "modeling_realm": "__unset__", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg/m2", 
+            "out_name": "dgw", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "prra": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Rainfall rate", 
+            "standard_name": "rainfall_flux", 
+            "modeling_realm": "__unset__", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg/m2/s", 
+            "out_name": "prra", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "prrc": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Convective Rainfall rate", 
+            "standard_name": "convective_rainfall_flux", 
+            "modeling_realm": "__unset__", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg/m2/s", 
+            "out_name": "prrc", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "zlev_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: zlev(k+1/2)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "prveg": {
+            "comment": "The precipitation flux that is intercepted by the vegetation canopy (if present in model) before reaching the ground.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Precipitation onto Canopy", 
+            "standard_name": "precipitation_flux_onto_canopy", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "prveg", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "a": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: a(k)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "tpf": {
+            "comment": "The mean thickness of the permafrost layer in the land portion of the grid cell.  Reported as zero in permafrost-free regions.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Permafrost Layer Thickness", 
+            "standard_name": "permafrost_layer_thickness", 
+            "modeling_realm": "landIce land", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "m", 
+            "out_name": "tpf", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "prsnsn": {
+            "comment": "The fraction of the snowfall which falls on the snow pack", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Fraction of snowfall on snow.", 
+            "standard_name": "mass_fraction_of_snowfall_onto_snow", 
+            "modeling_realm": "__unset__", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "-", 
+            "out_name": "prsnsn", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "hfmlt": {
+            "comment": "Energy consumed or released during liquid/solid phase changes.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Energy of fusion", 
+            "standard_name": "surface_snow_and_ice_melt_heat_flux", 
+            "modeling_realm": "__unset__", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "W/m2", 
+            "out_name": "hfmlt", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "sw": {
+            "comment": "Total liquid water storage, other than soil, snow or interception storage (i.e. lakes, river channel or depression storage).", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Surface Water Storage", 
+            "standard_name": "surface_water_amount_assuming_no_snow", 
+            "modeling_realm": "__unset__", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg/m2", 
+            "out_name": "sw", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "dtes": {
+            "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", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Change in surface heat storage", 
+            "standard_name": "change_over_time_in_thermal_energy_content_of_surface", 
+            "modeling_realm": "__unset__", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "J/m2", 
+            "out_name": "dtes", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "depth": {
+            "units": "m", 
+            "long_name": "Sea Floor Depth: formula term: thetao", 
+            "type": "real", 
+            "dimensions": "longitude latitude"
+        }, 
+        "eow": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Open water evaporation", 
+            "standard_name": "liquid_water_evaporation_flux_from_open_water", 
+            "modeling_realm": "__unset__", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg/m2/s", 
+            "out_name": "eow", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "rlds": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "down", 
+            "valid_min": "30.71", 
+            "long_name": "surface downwelling longwave radiation", 
+            "standard_name": "surface_downwelling_longwave_flux_in_air", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "271.2", 
+            "units": "W m-2", 
+            "out_name": "rlds", 
+            "type": "real", 
+            "valid_max": "520.5", 
+            "ok_max_mean_abs": "323.6"
+        }, 
+        "sigma": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: sigma(k)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "drivw": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Change in river storage", 
+            "standard_name": "change_over_time_in_river_water_amount", 
+            "modeling_realm": "__unset__", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg/m2", 
+            "out_name": "drivw", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }
+    }
+}
diff --git a/TestTables/CMIP6_emDayZ.json b/TestTables/CMIP6_emDayZ.json
new file mode 100644
index 0000000..896e40d
--- /dev/null
+++ b/TestTables/CMIP6_emDayZ.json
@@ -0,0 +1,2222 @@
+{
+    "Header": {
+        "product": "output", 
+        "approx_interval": "1.00000", 
+        "realm": "", 
+        "cmor_version": "3.1", 
+        "Conventions": "CF-1.6 CMIP-6.0", 
+        "frequency": "day", 
+        "table_id": "Table emDayZ", 
+        "data_specs_version": "01.beta.29", 
+        "mip_era": "CMIP6", 
+        "generic_levels": "", 
+        "missing_value": "1e20", 
+        "table_date": "14 June 2016"
+    }, 
+    "axis_entry": {
+        "typebare": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "bare_ground", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "tau": {
+            "requested": [
+                "0.15", 
+                "0.8", 
+                "2.45", 
+                "6.5", 
+                "16.2", 
+                "41.5", 
+                "100."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "0.0", 
+                "0.3", 
+                "0.3", 
+                "1.3", 
+                "1.3", 
+                "3.6", 
+                "3.6", 
+                "9.4", 
+                "9.4", 
+                "23.0", 
+                "23.0", 
+                "60.0", 
+                "60.0", 
+                "100000."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "cloud optical thickness", 
+            "standard_name": "atmosphere_optical_thickness_due_to_cloud", 
+            "value": "", 
+            "out_name": "tau", 
+            "type": "double", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "olayer100m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "0. 100.", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "50.0", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "100.0", 
+            "axis": "Z"
+        }, 
+        "spectband": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "Spectral Band", 
+            "standard_name": "wave_frequency", 
+            "value": "", 
+            "out_name": "spectband", 
+            "type": "double", 
+            "units": "s-1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "ocean_sigma_z": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "sigma: sigma eta: eta depth: depth depth_c: depth_c nsigma: nsigma zlev: zlev", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "sigma: sigma_bnds eta: eta depth: depth depth_c: depth_c nsigma: nsigma zlev: zlev_bnds", 
+            "bounds_values": "", 
+            "long_name": "ocean sigma over z coordinate", 
+            "standard_name": "ocean_sigma_z", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "for k <= nsigma: z(n,k,j,i) = eta(n,j,i) + sigma(k)*(min(depth_c,depth(j,i))+eta(n,j,i)) ; for k > nsigma: z(n,k,j,i) = zlev(k)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev19": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000.", 
+                "500.", 
+                "100."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "p220": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "44000. 0.0", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "22000.0", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev17": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev10": {
+            "requested": [
+                "100000.", 
+                "85000.", 
+                "70000.", 
+                "50000.", 
+                "25000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "site": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "site index", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "site", 
+            "type": "integer", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "smooth_level": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "a: a b1: b1 b2: b2 ztop: ztop zsurf1: zsurf1 zsurf2: zsurf2", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-200.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "a: a_bnds b1: b1_bnds b2: b2_bnds ztop: ztop zsurf1: zsurf1 zsurf2: zsurf2", 
+            "bounds_values": "", 
+            "long_name": "atmosphere smooth level vertical (SLEVE) coordinate", 
+            "standard_name": "atmosphere_sleve_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "m", 
+            "formula": "z = a*ztop + b1*zsurf1 + b2*zsurf2", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "800000.0", 
+            "axis": "Z"
+        }, 
+        "p840": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "100000. 68000.", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "84000.0", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "ocean_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "sigma: lev eta: eta depth: depth", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "sigma: lev_bnds eta: eta depth: depth", 
+            "bounds_values": "", 
+            "long_name": "ocean sigma coordinate", 
+            "standard_name": "ocean_sigma_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "z(n,k,j,i) = eta(n,j,i) + sigma(k)*(depth(j,i)+eta(n,j,i))", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "0.0", 
+            "axis": "Z"
+        }, 
+        "depth0m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "0.0", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "100.0", 
+            "axis": "Z"
+        }, 
+        "ocean_s": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "s: lev eta: eta depth: depth a: a_coeff b: b_coeff depth_c: depth_c", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "s: lev_bnds eta: eta depth: depth a: a b: b depth_c: depth_c", 
+            "bounds_values": "", 
+            "long_name": "ocean s-coordinate", 
+            "standard_name": "ocean_s_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "z(n,k,j,i) = eta(n,j,i)*(1+s(k)) + depth_c*s(k) + (depth(j,i)-depth_c)*C(k) n where n C(k)=(1-b)*sinh(a*s(k))/sinh(a) +n           b*(tanh(a*(s(k)+0.5))/(2*tanh(0.5*a)) - 0.5)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "0.0", 
+            "axis": "Z"
+        }, 
+        "plev4s": {
+            "requested": [
+                "85000.", 
+                "50000.", 
+                "20000.", 
+                "5000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "typec4pft": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "c4_plant_functional_types", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "plev3h": {
+            "requested": [
+                "10000.", 
+                "1000.", 
+                "100."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "height2m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "up", 
+            "must_have_bounds": "no", 
+            "valid_min": "1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "height", 
+            "standard_name": "height", 
+            "value": "2.0", 
+            "out_name": "height", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "10.0", 
+            "axis": "Z"
+        }, 
+        "time1": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "time", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "plev7h": {
+            "requested": [
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "25000.", 
+                "5000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "sza5": {
+            "requested": [
+                "0.", 
+                "20.", 
+                "40.", 
+                "60.", 
+                "80."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "solar zenith angle", 
+            "standard_name": "solar_zenith_angle", 
+            "value": "", 
+            "out_name": "sza", 
+            "type": "double", 
+            "units": "degree", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "depth_coord": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "ocean depth coordinate", 
+            "standard_name": "depth", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "12000.0", 
+            "axis": "Z"
+        }, 
+        "sdepth1": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "0.0 0.1", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "0.05", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "0.2", 
+            "axis": "Z"
+        }, 
+        "alternate_hybrid_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "ap: ap b: b ps: ps", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "ap: ap_bnds b: b_bnds ps: ps", 
+            "bounds_values": "", 
+            "long_name": "hybrid sigma pressure coordinate", 
+            "standard_name": "atmosphere_hybrid_sigma_pressure_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "1", 
+            "formula": "p = ap + b*ps", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "1.0", 
+            "axis": "Z"
+        }, 
+        "time2": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "time", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "yes", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "time3": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "Diurnal cycle: monthly mean of the diurnal cycle (1 hour steps).", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "oline": {
+            "requested": [
+                "barents_opening", 
+                "bering_strait", 
+                "canadian_archipelago", 
+                "denmark_strait", 
+                "drake_passage", 
+                "english_channel", 
+                "pacific_equatorial_undercurrent", 
+                "faroe_scotland_channel", 
+                "florida_bahamas_strait", 
+                "fram_strait", 
+                "iceland_faroe_channel", 
+                "indonesian_thoughflow", 
+                "mozambique_channel", 
+                "taiwan_luzon_straits", 
+                "windward_passage"
+            ], 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "ocean passage", 
+            "standard_name": "region", 
+            "value": "", 
+            "out_name": "line", 
+            "type": "character", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "plev14": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "25000.", 
+                "15000.", 
+                "10000.", 
+                "5000.", 
+                "2000.", 
+                "1000.", 
+                "500.", 
+                "100."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev8": {
+            "requested": [
+                "100000.", 
+                "85000.", 
+                "70000.", 
+                "50000.", 
+                "25000.", 
+                "10000.", 
+                "5000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "location": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "location index", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "loc", 
+            "type": "integer", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "latitude": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-90.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "latitude", 
+            "standard_name": "latitude", 
+            "value": "", 
+            "out_name": "lat", 
+            "type": "double", 
+            "units": "degrees_north", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "90.0", 
+            "axis": "Y"
+        }, 
+        "plev3": {
+            "requested": [
+                "85000.", 
+                "50000.", 
+                "25000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "basin": {
+            "requested": [
+                "atlantic_arctic_ocean", 
+                "indian_pacific_ocean", 
+                "global_ocean"
+            ], 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "ocean basin", 
+            "standard_name": "region", 
+            "value": "", 
+            "out_name": "basin", 
+            "type": "character", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "p700": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "700 hPa", 
+            "standard_name": "air_pressure", 
+            "value": "70000.", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev7": {
+            "requested": [
+                "90000.", 
+                "74000.", 
+                "62000.", 
+                "50000.", 
+                "37500.", 
+                "24500.", 
+                "9000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "100000.", 
+                "80000.", 
+                "80000.", 
+                "68000.", 
+                "68000.", 
+                "56000.", 
+                "56000.", 
+                "44000.", 
+                "44000.", 
+                "31000.", 
+                "31000.", 
+                "18000.", 
+                "18000.", 
+                " 0."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev4": {
+            "requested": [
+                "92500.", 
+                "85000.", 
+                "50000.", 
+                "25000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev23": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000.", 
+                "700.", 
+                "500.", 
+                "300.", 
+                "200.", 
+                "100.", 
+                "40."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev39": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "17000.", 
+                "15000.", 
+                "13000.", 
+                "11500.", 
+                "10000.", 
+                "9000.", 
+                "8000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1500.", 
+                "1000.", 
+                "700.", 
+                "500.", 
+                "300.", 
+                "200.", 
+                "150.", 
+                "100.", 
+                "70.", 
+                "50.", 
+                "40.", 
+                "30.", 
+                "20.", 
+                "15.", 
+                "10.", 
+                "7.", 
+                "5.", 
+                "3."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "typepever": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "primary_evergreen_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "typesdec": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "secondary_decidous_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "plev27": {
+            "requested": [
+                "100000.", 
+                "97500.", 
+                "95000.", 
+                "92500.", 
+                "90000.", 
+                "87500.", 
+                "85000.", 
+                "82500.", 
+                "80000.", 
+                "77500.", 
+                "75000.", 
+                "70000.", 
+                "65000.", 
+                "60000.", 
+                "55000.", 
+                "50000.", 
+                "45000.", 
+                "40000.", 
+                "35000.", 
+                "30000.", 
+                "25000.", 
+                "22500.", 
+                "20000.", 
+                "17500.", 
+                "15000.", 
+                "12500.", 
+                "10000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "alt40": {
+            "requested": [
+                "240.", 
+                "720.", 
+                "1200.", 
+                "1680.", 
+                "2160.", 
+                "2640.", 
+                "3120.", 
+                "3600.", 
+                "4080.", 
+                "4560.", 
+                "5040.", 
+                "5520.", 
+                "6000.", 
+                "6480.", 
+                "6960.", 
+                "7440.", 
+                "7920.", 
+                "8400.", 
+                "8880.", 
+                "9360.", 
+                "9840.", 
+                "10320.", 
+                "10800.", 
+                "11280.", 
+                "11760.", 
+                "12240.", 
+                "12720.", 
+                "13200.", 
+                "13680.", 
+                "14160.", 
+                "14640.", 
+                "15120.", 
+                "15600.", 
+                "16080.", 
+                "16560.", 
+                "17040.", 
+                "17520.", 
+                "18000.", 
+                "18480.", 
+                "18960."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "0.", 
+                "480.", 
+                "480.", 
+                "960.", 
+                "960.", 
+                "1440.", 
+                "1440.", 
+                "1920.", 
+                "1920.", 
+                "2400.", 
+                "2400.", 
+                "2880.", 
+                "2880.", 
+                "3360.", 
+                "3360.", 
+                "3840.", 
+                "3840.", 
+                "4320.", 
+                "4320.", 
+                "4800.", 
+                "4800.", 
+                "5280.", 
+                "5280.", 
+                "5760.", 
+                "5760.", 
+                "6240.", 
+                "6240.", 
+                "6720.", 
+                "6720.", 
+                "7200.", 
+                "7200.", 
+                "7680.", 
+                "7680.", 
+                "8160.", 
+                "8160.", 
+                "8640.", 
+                "8640.", 
+                "9120.", 
+                "9120.", 
+                "9600.", 
+                "9600.", 
+                "10080.", 
+                "10080.", 
+                "10560.", 
+                "10560.", 
+                "11040.", 
+                "11040.", 
+                "11520.", 
+                "11520.", 
+                "12000.", 
+                "12000.", 
+                "12480.", 
+                "12480.", 
+                "12960.", 
+                "12960.", 
+                "13440.", 
+                "13440.", 
+                "13920.", 
+                "13920.", 
+                "14400.", 
+                "14400.", 
+                "14880.", 
+                "14880.", 
+                "15360.", 
+                "15360.", 
+                "15840.", 
+                "15840.", 
+                "16320.", 
+                "16320.", 
+                "16800.", 
+                "16800.", 
+                "17280.", 
+                "17280.", 
+                "17760.", 
+                "17760.", 
+                "18240.", 
+                "18240.", 
+                "18720.", 
+                "18720.", 
+                "19200."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "altitude", 
+            "standard_name": "altitude", 
+            "value": "", 
+            "out_name": "alt40", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "time": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "time", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "plev7c": {
+            "requested": [
+                "90000.", 
+                "74000.", 
+                "62000.", 
+                "50000.", 
+                "37500.", 
+                "24500.", 
+                "9000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "height10m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "up", 
+            "must_have_bounds": "no", 
+            "valid_min": "1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "height", 
+            "standard_name": "height", 
+            "value": "10.0", 
+            "out_name": "height", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "30.0", 
+            "axis": "Z"
+        }, 
+        "dbze": {
+            "requested": [
+                "-47.5", 
+                "-42.5", 
+                "-37.5", 
+                "-32.5", 
+                "-27.5", 
+                "-22.5", 
+                "-17.5", 
+                "-12.5", 
+                "-7.5", 
+                "-2.5", 
+                "2.5", 
+                "7.5", 
+                "12.5", 
+                "17.5", 
+                "22.5"
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "-50", 
+                "-45", 
+                "-45", 
+                "-40", 
+                "-40", 
+                "-35", 
+                "-35", 
+                "-30", 
+                "-30", 
+                "-25", 
+                "-25", 
+                "-20", 
+                "-20", 
+                "-15", 
+                "-15", 
+                "-10", 
+                "-10", 
+                "-5", 
+                "-5", 
+                "0", 
+                "0", 
+                "5", 
+                "5", 
+                "10", 
+                "10", 
+                "15", 
+                "15", 
+                "20", 
+                "20", 
+                "25."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "CloudSat simulator equivalent radar reflectivity factor", 
+            "standard_name": "equivalent_reflectivity_factor", 
+            "value": "", 
+            "out_name": "dbze", 
+            "type": "double", 
+            "units": "dBZ", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "typesever": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "secondary_evergreen_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "rho": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "density++++?", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "rho", 
+            "type": "double", 
+            "units": "kg m-3", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "depth100m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "80.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "100.0", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "120.0", 
+            "axis": "Z"
+        }, 
+        "effectRadLi": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "Effective Radius of Liquid Aerosols", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "effectRadLi", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "sdepth": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "200.0", 
+            "axis": "Z"
+        }, 
+        "vegtype": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "plant functional type", 
+            "standard_name": "area_type", 
+            "value": "", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "typec3pft": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "c3_plant_functional_types", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "natural_log_pressure": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "p0: p0 lev: lev", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "p0: p0 lev: lev_bnds", 
+            "bounds_values": "", 
+            "long_name": "atmosphere natural log pressure coordinate", 
+            "standard_name": "atmosphere_ln_pressure_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "p = p0 * exp(-lev)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "20.0", 
+            "axis": "Z"
+        }, 
+        "scatratio": {
+            "requested": [
+                "0.005", 
+                "0.605", 
+                "2.1", 
+                "4.", 
+                "6.", 
+                "8.5", 
+                "12.5", 
+                "17.5", 
+                "22.5", 
+                "27.5", 
+                "35.", 
+                "45.", 
+                "55.", 
+                "70.", 
+                "50040."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "0.", 
+                "0.01", 
+                "0.01", 
+                "1.2", 
+                "1.2", 
+                "3.", 
+                "3.", 
+                "5.", 
+                "5.", 
+                "7.", 
+                "7.", 
+                "10.", 
+                "10.", 
+                "15.", 
+                "15.", 
+                "20.", 
+                "20.", 
+                "25.", 
+                "25.", 
+                "30.", 
+                "30.", 
+                "40.", 
+                "40.", 
+                "50.", 
+                "50.", 
+                "60.", 
+                "60.", 
+                "80.", 
+                "80.", 
+                "100000."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "lidar backscattering ratio", 
+            "standard_name": "backscattering_ratio", 
+            "value": "", 
+            "out_name": "scatratio", 
+            "type": "double", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "standard_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "ptop: ptop sigma: lev ps: ps", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "ptop: ptop sigma: lev_bnds ps: ps", 
+            "bounds_values": "", 
+            "long_name": "sigma coordinate", 
+            "standard_name": "atmosphere_sigma_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "p = ptop + sigma*(ps - ptop)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "1.0", 
+            "axis": "Z"
+        }, 
+        "typepdec": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "primary_deciduous_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "hybrid_height": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "a: lev b: b orog: orog", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "a: lev_bnds b: b_bnds orog: orog", 
+            "bounds_values": "", 
+            "long_name": "hybrid height coordinate", 
+            "standard_name": "atmosphere_hybrid_height_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "m", 
+            "formula": "z = a + b*orog", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "longitude": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "longitude", 
+            "standard_name": "longitude", 
+            "value": "", 
+            "out_name": "lon", 
+            "type": "double", 
+            "units": "degrees_east", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "360.0", 
+            "axis": "X"
+        }, 
+        "effectRadIc": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "Effective Radius of Ice Aerosols", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "effectRadIc", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "p1000": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "1000 hPa", 
+            "standard_name": "air_pressure", 
+            "value": "100000.", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "p500": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "500 hPa", 
+            "standard_name": "air_pressure", 
+            "value": "50000.", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "ocean_double_sigma": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "sigma: sigma depth: depth z1: z1 z2: z2 a: a_coeff href: href k_c: k_c", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "sigma: sigma_bnds depth: depth z1: z1 z2: z2 a: a href: href k_c: k_c", 
+            "bounds_values": "", 
+            "long_name": "ocean double sigma coordinate", 
+            "standard_name": "ocean_double_sigma", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "for k <= k_c:n z(k,j,i)= sigma(k)*f(j,i) n for k > k_c:n z(k,j,i)= f(j,i) + (sigma(k)-1)*(depth(j,i)-f(j,i)) n f(j,i)= 0.5*(z1+ z2) + 0.5*(z1-z2)* tanh(2*a/(z1-z2)*(depth(j,i)-href))", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plevs": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "standard_hybrid_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "p0: p0 a: a b: b ps: ps", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "p0: p0 a: a_bnds b: b_bnds ps: ps", 
+            "bounds_values": "", 
+            "long_name": "hybrid sigma pressure coordinate", 
+            "standard_name": "atmosphere_hybrid_sigma_pressure_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "1", 
+            "formula": "p = a*p0 + b*ps", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "1.0", 
+            "axis": "Z"
+        }, 
+        "p560": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "68000. 44000.", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "56000.0", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }
+    }, 
+    "variable_entry": {
+        "va": {
+            "comment": "", 
+            "dimensions": "latitude plev19 time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Northward Wind", 
+            "standard_name": "northward_wind", 
+            "modeling_realm": "", 
+            "cell_measures": "", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "m s-1", 
+            "out_name": "va", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "depth_c": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: depth_c", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "hus": {
+            "comment": "", 
+            "dimensions": "latitude plev19 time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Specific Humidity", 
+            "standard_name": "specific_humidity", 
+            "modeling_realm": "", 
+            "cell_measures": "", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "1.0", 
+            "out_name": "hus", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "ap_bnds": {
+            "units": "Pa", 
+            "long_name": "vertical coordinate formula term: ap(k+1/2)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "ap": {
+            "units": "Pa", 
+            "long_name": "vertical coordinate formula term: ap(k)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "href": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: href", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "orog": {
+            "units": "m", 
+            "long_name": "Surface Altitude", 
+            "type": "real", 
+            "dimensions": "longitude latitude"
+        }, 
+        "zlev": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: zlev(k)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "ps": {
+            "units": "Pa", 
+            "long_name": "Surface Air Pressure", 
+            "type": "real", 
+            "dimensions": "longitude latitude time"
+        }, 
+        "sigma_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: sigma(k+1/2)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "ptop": {
+            "units": "Pa", 
+            "long_name": "pressure at top of model", 
+            "type": "", 
+            "dimensions": ""
+        }, 
+        "ta": {
+            "comment": "", 
+            "dimensions": "latitude plev19 time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Air Temperature", 
+            "standard_name": "air_temperature", 
+            "modeling_realm": "", 
+            "cell_measures": "", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "K", 
+            "out_name": "ta", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "zg": {
+            "comment": "", 
+            "dimensions": "latitude plev19 time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Geopotential Height", 
+            "standard_name": "geopotential_height", 
+            "modeling_realm": "", 
+            "cell_measures": "", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "m", 
+            "out_name": "zg", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "b_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: b(k+1/2)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "nsigma": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: nsigma", 
+            "type": "integer", 
+            "dimensions": ""
+        }, 
+        "ztop": {
+            "units": "m", 
+            "long_name": "height of top of model", 
+            "type": "", 
+            "dimensions": ""
+        }, 
+        "zlev_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: zlev(k+1/2)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "z1": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: z1", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "z2": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: z2", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "a": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: a(k)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "p0": {
+            "units": "Pa", 
+            "long_name": "vertical coordinate formula term: reference pressure", 
+            "type": "", 
+            "dimensions": ""
+        }, 
+        "b": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: b(k)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "ua": {
+            "comment": "", 
+            "dimensions": "latitude plev19 time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Eastward Wind", 
+            "standard_name": "eastward_wind", 
+            "modeling_realm": "", 
+            "cell_measures": "", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "m s-1", 
+            "out_name": "ua", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "depth": {
+            "units": "m", 
+            "long_name": "Sea Floor Depth: formula term: thetao", 
+            "type": "real", 
+            "dimensions": "longitude latitude"
+        }, 
+        "eta": {
+            "units": "m", 
+            "long_name": "Sea Surface Height formula term: thetao", 
+            "type": "real", 
+            "dimensions": "longitude latitude time"
+        }, 
+        "k_c": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: k_c", 
+            "type": "integer", 
+            "dimensions": ""
+        }, 
+        "sigma": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: sigma(k)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "a_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: a(k+1/2)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }
+    }
+}
diff --git a/TestTables/CMIP6_emDaypt.json b/TestTables/CMIP6_emDaypt.json
new file mode 100644
index 0000000..276098f
--- /dev/null
+++ b/TestTables/CMIP6_emDaypt.json
@@ -0,0 +1 @@
+no Variable found for emDaypt
diff --git a/TestTables/CMIP6_emFx.json b/TestTables/CMIP6_emFx.json
new file mode 100644
index 0000000..c222fc2
--- /dev/null
+++ b/TestTables/CMIP6_emFx.json
@@ -0,0 +1,2256 @@
+{
+    "Header": {
+        "product": "output", 
+        "approx_interval": "0.00000", 
+        "realm": "landIce", 
+        "cmor_version": "3.1", 
+        "Conventions": "CF-1.6 CMIP-6.0", 
+        "frequency": "fx", 
+        "table_id": "Table emFx", 
+        "data_specs_version": "01.beta.29", 
+        "mip_era": "CMIP6", 
+        "generic_levels": "", 
+        "missing_value": "1e20", 
+        "table_date": "14 June 2016"
+    }, 
+    "axis_entry": {
+        "typebare": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "bare_ground", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "tau": {
+            "requested": [
+                "0.15", 
+                "0.8", 
+                "2.45", 
+                "6.5", 
+                "16.2", 
+                "41.5", 
+                "100."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "0.0", 
+                "0.3", 
+                "0.3", 
+                "1.3", 
+                "1.3", 
+                "3.6", 
+                "3.6", 
+                "9.4", 
+                "9.4", 
+                "23.0", 
+                "23.0", 
+                "60.0", 
+                "60.0", 
+                "100000."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "cloud optical thickness", 
+            "standard_name": "atmosphere_optical_thickness_due_to_cloud", 
+            "value": "", 
+            "out_name": "tau", 
+            "type": "double", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "olayer100m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "0. 100.", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "50.0", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "100.0", 
+            "axis": "Z"
+        }, 
+        "spectband": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "Spectral Band", 
+            "standard_name": "wave_frequency", 
+            "value": "", 
+            "out_name": "spectband", 
+            "type": "double", 
+            "units": "s-1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "ocean_sigma_z": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "sigma: sigma eta: eta depth: depth depth_c: depth_c nsigma: nsigma zlev: zlev", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "sigma: sigma_bnds eta: eta depth: depth depth_c: depth_c nsigma: nsigma zlev: zlev_bnds", 
+            "bounds_values": "", 
+            "long_name": "ocean sigma over z coordinate", 
+            "standard_name": "ocean_sigma_z", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "for k <= nsigma: z(n,k,j,i) = eta(n,j,i) + sigma(k)*(min(depth_c,depth(j,i))+eta(n,j,i)) ; for k > nsigma: z(n,k,j,i) = zlev(k)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev19": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000.", 
+                "500.", 
+                "100."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "p220": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "44000. 0.0", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "22000.0", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev17": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev10": {
+            "requested": [
+                "100000.", 
+                "85000.", 
+                "70000.", 
+                "50000.", 
+                "25000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "site": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "site index", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "site", 
+            "type": "integer", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "smooth_level": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "a: a b1: b1 b2: b2 ztop: ztop zsurf1: zsurf1 zsurf2: zsurf2", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-200.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "a: a_bnds b1: b1_bnds b2: b2_bnds ztop: ztop zsurf1: zsurf1 zsurf2: zsurf2", 
+            "bounds_values": "", 
+            "long_name": "atmosphere smooth level vertical (SLEVE) coordinate", 
+            "standard_name": "atmosphere_sleve_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "m", 
+            "formula": "z = a*ztop + b1*zsurf1 + b2*zsurf2", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "800000.0", 
+            "axis": "Z"
+        }, 
+        "p840": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "100000. 68000.", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "84000.0", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "ocean_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "sigma: lev eta: eta depth: depth", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "sigma: lev_bnds eta: eta depth: depth", 
+            "bounds_values": "", 
+            "long_name": "ocean sigma coordinate", 
+            "standard_name": "ocean_sigma_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "z(n,k,j,i) = eta(n,j,i) + sigma(k)*(depth(j,i)+eta(n,j,i))", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "0.0", 
+            "axis": "Z"
+        }, 
+        "depth0m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "0.0", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "100.0", 
+            "axis": "Z"
+        }, 
+        "ocean_s": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "s: lev eta: eta depth: depth a: a_coeff b: b_coeff depth_c: depth_c", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "s: lev_bnds eta: eta depth: depth a: a b: b depth_c: depth_c", 
+            "bounds_values": "", 
+            "long_name": "ocean s-coordinate", 
+            "standard_name": "ocean_s_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "z(n,k,j,i) = eta(n,j,i)*(1+s(k)) + depth_c*s(k) + (depth(j,i)-depth_c)*C(k) n where n C(k)=(1-b)*sinh(a*s(k))/sinh(a) +n           b*(tanh(a*(s(k)+0.5))/(2*tanh(0.5*a)) - 0.5)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "0.0", 
+            "axis": "Z"
+        }, 
+        "plev4s": {
+            "requested": [
+                "85000.", 
+                "50000.", 
+                "20000.", 
+                "5000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "typec4pft": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "c4_plant_functional_types", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "plev3h": {
+            "requested": [
+                "10000.", 
+                "1000.", 
+                "100."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "height2m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "up", 
+            "must_have_bounds": "no", 
+            "valid_min": "1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "height", 
+            "standard_name": "height", 
+            "value": "2.0", 
+            "out_name": "height", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "10.0", 
+            "axis": "Z"
+        }, 
+        "time1": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "time", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "plev7h": {
+            "requested": [
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "25000.", 
+                "5000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "sza5": {
+            "requested": [
+                "0.", 
+                "20.", 
+                "40.", 
+                "60.", 
+                "80."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "solar zenith angle", 
+            "standard_name": "solar_zenith_angle", 
+            "value": "", 
+            "out_name": "sza", 
+            "type": "double", 
+            "units": "degree", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "depth_coord": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "ocean depth coordinate", 
+            "standard_name": "depth", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "12000.0", 
+            "axis": "Z"
+        }, 
+        "sdepth1": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "0.0 0.1", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "0.05", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "0.2", 
+            "axis": "Z"
+        }, 
+        "alternate_hybrid_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "ap: ap b: b ps: ps", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "ap: ap_bnds b: b_bnds ps: ps", 
+            "bounds_values": "", 
+            "long_name": "hybrid sigma pressure coordinate", 
+            "standard_name": "atmosphere_hybrid_sigma_pressure_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "1", 
+            "formula": "p = ap + b*ps", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "1.0", 
+            "axis": "Z"
+        }, 
+        "time2": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "time", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "yes", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "time3": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "Diurnal cycle: monthly mean of the diurnal cycle (1 hour steps).", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "oline": {
+            "requested": [
+                "barents_opening", 
+                "bering_strait", 
+                "canadian_archipelago", 
+                "denmark_strait", 
+                "drake_passage", 
+                "english_channel", 
+                "pacific_equatorial_undercurrent", 
+                "faroe_scotland_channel", 
+                "florida_bahamas_strait", 
+                "fram_strait", 
+                "iceland_faroe_channel", 
+                "indonesian_thoughflow", 
+                "mozambique_channel", 
+                "taiwan_luzon_straits", 
+                "windward_passage"
+            ], 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "ocean passage", 
+            "standard_name": "region", 
+            "value": "", 
+            "out_name": "line", 
+            "type": "character", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "plev14": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "25000.", 
+                "15000.", 
+                "10000.", 
+                "5000.", 
+                "2000.", 
+                "1000.", 
+                "500.", 
+                "100."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev8": {
+            "requested": [
+                "100000.", 
+                "85000.", 
+                "70000.", 
+                "50000.", 
+                "25000.", 
+                "10000.", 
+                "5000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "location": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "location index", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "loc", 
+            "type": "integer", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "latitude": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-90.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "latitude", 
+            "standard_name": "latitude", 
+            "value": "", 
+            "out_name": "lat", 
+            "type": "double", 
+            "units": "degrees_north", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "90.0", 
+            "axis": "Y"
+        }, 
+        "plev3": {
+            "requested": [
+                "85000.", 
+                "50000.", 
+                "25000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "basin": {
+            "requested": [
+                "atlantic_arctic_ocean", 
+                "indian_pacific_ocean", 
+                "global_ocean"
+            ], 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "ocean basin", 
+            "standard_name": "region", 
+            "value": "", 
+            "out_name": "basin", 
+            "type": "character", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "p700": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "700 hPa", 
+            "standard_name": "air_pressure", 
+            "value": "70000.", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev7": {
+            "requested": [
+                "90000.", 
+                "74000.", 
+                "62000.", 
+                "50000.", 
+                "37500.", 
+                "24500.", 
+                "9000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "100000.", 
+                "80000.", 
+                "80000.", 
+                "68000.", 
+                "68000.", 
+                "56000.", 
+                "56000.", 
+                "44000.", 
+                "44000.", 
+                "31000.", 
+                "31000.", 
+                "18000.", 
+                "18000.", 
+                " 0."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev4": {
+            "requested": [
+                "92500.", 
+                "85000.", 
+                "50000.", 
+                "25000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev23": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000.", 
+                "700.", 
+                "500.", 
+                "300.", 
+                "200.", 
+                "100.", 
+                "40."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev39": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "17000.", 
+                "15000.", 
+                "13000.", 
+                "11500.", 
+                "10000.", 
+                "9000.", 
+                "8000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1500.", 
+                "1000.", 
+                "700.", 
+                "500.", 
+                "300.", 
+                "200.", 
+                "150.", 
+                "100.", 
+                "70.", 
+                "50.", 
+                "40.", 
+                "30.", 
+                "20.", 
+                "15.", 
+                "10.", 
+                "7.", 
+                "5.", 
+                "3."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "typepever": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "primary_evergreen_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "typesdec": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "secondary_decidous_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "plev27": {
+            "requested": [
+                "100000.", 
+                "97500.", 
+                "95000.", 
+                "92500.", 
+                "90000.", 
+                "87500.", 
+                "85000.", 
+                "82500.", 
+                "80000.", 
+                "77500.", 
+                "75000.", 
+                "70000.", 
+                "65000.", 
+                "60000.", 
+                "55000.", 
+                "50000.", 
+                "45000.", 
+                "40000.", 
+                "35000.", 
+                "30000.", 
+                "25000.", 
+                "22500.", 
+                "20000.", 
+                "17500.", 
+                "15000.", 
+                "12500.", 
+                "10000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "alt40": {
+            "requested": [
+                "240.", 
+                "720.", 
+                "1200.", 
+                "1680.", 
+                "2160.", 
+                "2640.", 
+                "3120.", 
+                "3600.", 
+                "4080.", 
+                "4560.", 
+                "5040.", 
+                "5520.", 
+                "6000.", 
+                "6480.", 
+                "6960.", 
+                "7440.", 
+                "7920.", 
+                "8400.", 
+                "8880.", 
+                "9360.", 
+                "9840.", 
+                "10320.", 
+                "10800.", 
+                "11280.", 
+                "11760.", 
+                "12240.", 
+                "12720.", 
+                "13200.", 
+                "13680.", 
+                "14160.", 
+                "14640.", 
+                "15120.", 
+                "15600.", 
+                "16080.", 
+                "16560.", 
+                "17040.", 
+                "17520.", 
+                "18000.", 
+                "18480.", 
+                "18960."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "0.", 
+                "480.", 
+                "480.", 
+                "960.", 
+                "960.", 
+                "1440.", 
+                "1440.", 
+                "1920.", 
+                "1920.", 
+                "2400.", 
+                "2400.", 
+                "2880.", 
+                "2880.", 
+                "3360.", 
+                "3360.", 
+                "3840.", 
+                "3840.", 
+                "4320.", 
+                "4320.", 
+                "4800.", 
+                "4800.", 
+                "5280.", 
+                "5280.", 
+                "5760.", 
+                "5760.", 
+                "6240.", 
+                "6240.", 
+                "6720.", 
+                "6720.", 
+                "7200.", 
+                "7200.", 
+                "7680.", 
+                "7680.", 
+                "8160.", 
+                "8160.", 
+                "8640.", 
+                "8640.", 
+                "9120.", 
+                "9120.", 
+                "9600.", 
+                "9600.", 
+                "10080.", 
+                "10080.", 
+                "10560.", 
+                "10560.", 
+                "11040.", 
+                "11040.", 
+                "11520.", 
+                "11520.", 
+                "12000.", 
+                "12000.", 
+                "12480.", 
+                "12480.", 
+                "12960.", 
+                "12960.", 
+                "13440.", 
+                "13440.", 
+                "13920.", 
+                "13920.", 
+                "14400.", 
+                "14400.", 
+                "14880.", 
+                "14880.", 
+                "15360.", 
+                "15360.", 
+                "15840.", 
+                "15840.", 
+                "16320.", 
+                "16320.", 
+                "16800.", 
+                "16800.", 
+                "17280.", 
+                "17280.", 
+                "17760.", 
+                "17760.", 
+                "18240.", 
+                "18240.", 
+                "18720.", 
+                "18720.", 
+                "19200."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "altitude", 
+            "standard_name": "altitude", 
+            "value": "", 
+            "out_name": "alt40", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "time": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "time", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "plev7c": {
+            "requested": [
+                "90000.", 
+                "74000.", 
+                "62000.", 
+                "50000.", 
+                "37500.", 
+                "24500.", 
+                "9000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "height10m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "up", 
+            "must_have_bounds": "no", 
+            "valid_min": "1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "height", 
+            "standard_name": "height", 
+            "value": "10.0", 
+            "out_name": "height", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "30.0", 
+            "axis": "Z"
+        }, 
+        "dbze": {
+            "requested": [
+                "-47.5", 
+                "-42.5", 
+                "-37.5", 
+                "-32.5", 
+                "-27.5", 
+                "-22.5", 
+                "-17.5", 
+                "-12.5", 
+                "-7.5", 
+                "-2.5", 
+                "2.5", 
+                "7.5", 
+                "12.5", 
+                "17.5", 
+                "22.5"
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "-50", 
+                "-45", 
+                "-45", 
+                "-40", 
+                "-40", 
+                "-35", 
+                "-35", 
+                "-30", 
+                "-30", 
+                "-25", 
+                "-25", 
+                "-20", 
+                "-20", 
+                "-15", 
+                "-15", 
+                "-10", 
+                "-10", 
+                "-5", 
+                "-5", 
+                "0", 
+                "0", 
+                "5", 
+                "5", 
+                "10", 
+                "10", 
+                "15", 
+                "15", 
+                "20", 
+                "20", 
+                "25."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "CloudSat simulator equivalent radar reflectivity factor", 
+            "standard_name": "equivalent_reflectivity_factor", 
+            "value": "", 
+            "out_name": "dbze", 
+            "type": "double", 
+            "units": "dBZ", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "typesever": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "secondary_evergreen_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "rho": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "density++++?", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "rho", 
+            "type": "double", 
+            "units": "kg m-3", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "depth100m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "80.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "100.0", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "120.0", 
+            "axis": "Z"
+        }, 
+        "effectRadLi": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "Effective Radius of Liquid Aerosols", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "effectRadLi", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "sdepth": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "200.0", 
+            "axis": "Z"
+        }, 
+        "vegtype": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "plant functional type", 
+            "standard_name": "area_type", 
+            "value": "", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "typec3pft": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "c3_plant_functional_types", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "natural_log_pressure": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "p0: p0 lev: lev", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "p0: p0 lev: lev_bnds", 
+            "bounds_values": "", 
+            "long_name": "atmosphere natural log pressure coordinate", 
+            "standard_name": "atmosphere_ln_pressure_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "p = p0 * exp(-lev)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "20.0", 
+            "axis": "Z"
+        }, 
+        "scatratio": {
+            "requested": [
+                "0.005", 
+                "0.605", 
+                "2.1", 
+                "4.", 
+                "6.", 
+                "8.5", 
+                "12.5", 
+                "17.5", 
+                "22.5", 
+                "27.5", 
+                "35.", 
+                "45.", 
+                "55.", 
+                "70.", 
+                "50040."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "0.", 
+                "0.01", 
+                "0.01", 
+                "1.2", 
+                "1.2", 
+                "3.", 
+                "3.", 
+                "5.", 
+                "5.", 
+                "7.", 
+                "7.", 
+                "10.", 
+                "10.", 
+                "15.", 
+                "15.", 
+                "20.", 
+                "20.", 
+                "25.", 
+                "25.", 
+                "30.", 
+                "30.", 
+                "40.", 
+                "40.", 
+                "50.", 
+                "50.", 
+                "60.", 
+                "60.", 
+                "80.", 
+                "80.", 
+                "100000."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "lidar backscattering ratio", 
+            "standard_name": "backscattering_ratio", 
+            "value": "", 
+            "out_name": "scatratio", 
+            "type": "double", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "standard_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "ptop: ptop sigma: lev ps: ps", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "ptop: ptop sigma: lev_bnds ps: ps", 
+            "bounds_values": "", 
+            "long_name": "sigma coordinate", 
+            "standard_name": "atmosphere_sigma_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "p = ptop + sigma*(ps - ptop)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "1.0", 
+            "axis": "Z"
+        }, 
+        "typepdec": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "primary_deciduous_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "hybrid_height": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "a: lev b: b orog: orog", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "a: lev_bnds b: b_bnds orog: orog", 
+            "bounds_values": "", 
+            "long_name": "hybrid height coordinate", 
+            "standard_name": "atmosphere_hybrid_height_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "m", 
+            "formula": "z = a + b*orog", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "longitude": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "longitude", 
+            "standard_name": "longitude", 
+            "value": "", 
+            "out_name": "lon", 
+            "type": "double", 
+            "units": "degrees_east", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "360.0", 
+            "axis": "X"
+        }, 
+        "effectRadIc": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "Effective Radius of Ice Aerosols", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "effectRadIc", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "p1000": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "1000 hPa", 
+            "standard_name": "air_pressure", 
+            "value": "100000.", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "p500": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "500 hPa", 
+            "standard_name": "air_pressure", 
+            "value": "50000.", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "ocean_double_sigma": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "sigma: sigma depth: depth z1: z1 z2: z2 a: a_coeff href: href k_c: k_c", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "sigma: sigma_bnds depth: depth z1: z1 z2: z2 a: a href: href k_c: k_c", 
+            "bounds_values": "", 
+            "long_name": "ocean double sigma coordinate", 
+            "standard_name": "ocean_double_sigma", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "for k <= k_c:n z(k,j,i)= sigma(k)*f(j,i) n for k > k_c:n z(k,j,i)= f(j,i) + (sigma(k)-1)*(depth(j,i)-f(j,i)) n f(j,i)= 0.5*(z1+ z2) + 0.5*(z1-z2)* tanh(2*a/(z1-z2)*(depth(j,i)-href))", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plevs": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "standard_hybrid_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "p0: p0 a: a b: b ps: ps", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "p0: p0 a: a_bnds b: b_bnds ps: ps", 
+            "bounds_values": "", 
+            "long_name": "hybrid sigma pressure coordinate", 
+            "standard_name": "atmosphere_hybrid_sigma_pressure_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "1", 
+            "formula": "p = a*p0 + b*ps", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "1.0", 
+            "axis": "Z"
+        }, 
+        "p560": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "68000. 44000.", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "56000.0", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }
+    }, 
+    "variable_entry": {
+        "depth_c": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: depth_c", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "ap_bnds": {
+            "units": "Pa", 
+            "long_name": "vertical coordinate formula term: ap(k+1/2)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "ap": {
+            "units": "Pa", 
+            "long_name": "vertical coordinate formula term: ap(k)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "href": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: href", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "orog": {
+            "units": "m", 
+            "long_name": "Surface Altitude", 
+            "type": "real", 
+            "dimensions": "longitude latitude"
+        }, 
+        "zlev": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: zlev(k)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "ps": {
+            "units": "Pa", 
+            "long_name": "Surface Air Pressure", 
+            "type": "real", 
+            "dimensions": "longitude latitude time"
+        }, 
+        "sftflf": {
+            "comment": "Fraction of grid cell covered by ice sheet flowing over seawater", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Floating Ice Sheet  Area Fraction", 
+            "standard_name": "floating_ice_sheet_area_fraction", 
+            "modeling_realm": "landIce", 
+            "cell_measures": "", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "%", 
+            "out_name": "sftflf", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "sftgrf": {
+            "comment": "Fraction of grid cell covered by grounded ice sheet", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Grounded Ice Sheet  Area Fraction", 
+            "standard_name": "grounded_ice_sheet_area_fraction", 
+            "modeling_realm": "landIce", 
+            "cell_measures": "", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "%", 
+            "out_name": "sftgrf", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "sigma_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: sigma(k+1/2)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "ptop": {
+            "units": "Pa", 
+            "long_name": "pressure at top of model", 
+            "type": "", 
+            "dimensions": ""
+        }, 
+        "b_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: b(k+1/2)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "rsd": {
+            "comment": "Downwelling shortwave radiation (includes the fluxes at the surface and top-of-atmosphere)", 
+            "dimensions": "alevel spectband time1", 
+            "positive": "down", 
+            "valid_min": "", 
+            "long_name": "Downwelling Shortwave Radiation", 
+            "standard_name": "downwelling_shortwave_flux_in_air", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "rsd", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "rld": {
+            "comment": "Downwelling Longwave Radiation (includes the fluxes at the surface and TOA)", 
+            "dimensions": "alevel spectband time1", 
+            "positive": "down", 
+            "valid_min": "", 
+            "long_name": "Downwelling Longwave Radiation", 
+            "standard_name": "downwelling_longwave_flux_in_air", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "rld", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "nsigma": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: nsigma", 
+            "type": "integer", 
+            "dimensions": ""
+        }, 
+        "ztop": {
+            "units": "m", 
+            "long_name": "height of top of model", 
+            "type": "", 
+            "dimensions": ""
+        }, 
+        "rlu": {
+            "comment": "Upwelling longwave radiation (includes the fluxes at the surface and TOA)", 
+            "dimensions": "alevel spectband time1", 
+            "positive": "up", 
+            "valid_min": "", 
+            "long_name": "Upwelling Longwave Radiation", 
+            "standard_name": "upwelling_longwave_flux_in_air", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "rlu", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "rsu": {
+            "comment": "Upwelling shortwave radiation  (includes also the fluxes at the surface and top of atmosphere)", 
+            "dimensions": "alevel spectband time1", 
+            "positive": "up", 
+            "valid_min": "", 
+            "long_name": "Upwelling Shortwave Radiation", 
+            "standard_name": "upwelling_shortwave_flux_in_air", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "rsu", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "zlev_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: zlev(k+1/2)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "z1": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: z1", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "z2": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: z2", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "a": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: a(k)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "p0": {
+            "units": "Pa", 
+            "long_name": "vertical coordinate formula term: reference pressure", 
+            "type": "", 
+            "dimensions": ""
+        }, 
+        "b": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: b(k)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "depth": {
+            "units": "m", 
+            "long_name": "Sea Floor Depth: formula term: thetao", 
+            "type": "real", 
+            "dimensions": "longitude latitude"
+        }, 
+        "eta": {
+            "units": "m", 
+            "long_name": "Sea Surface Height formula term: thetao", 
+            "type": "real", 
+            "dimensions": "longitude latitude time"
+        }, 
+        "sftgif": {
+            "comment": "Percentage of grid cell occupied by glaciers.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0.0", 
+            "long_name": "Percentage of Grid Cell Covered with Glacier", 
+            "standard_name": "land_ice_area_fraction", 
+            "modeling_realm": "land", 
+            "cell_measures": "", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "%", 
+            "out_name": "sftgif", 
+            "type": "real", 
+            "valid_max": "100.0", 
+            "ok_max_mean_abs": ""
+        }, 
+        "k_c": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: k_c", 
+            "type": "integer", 
+            "dimensions": ""
+        }, 
+        "sigma": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: sigma(k)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "a_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: a(k+1/2)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }
+    }
+}
diff --git a/TestTables/CMIP6_emMon.json b/TestTables/CMIP6_emMon.json
new file mode 100644
index 0000000..06165d9
--- /dev/null
+++ b/TestTables/CMIP6_emMon.json
@@ -0,0 +1,7917 @@
+{
+    "Header": {
+        "product": "output", 
+        "approx_interval": "30.00000", 
+        "realm": "ocnBgchem", 
+        "cmor_version": "3.1", 
+        "Conventions": "CF-1.6 CMIP-6.0", 
+        "frequency": "mon", 
+        "table_id": "Table emMon", 
+        "data_specs_version": "01.beta.29", 
+        "mip_era": "CMIP6", 
+        "generic_levels": "", 
+        "missing_value": "1e20", 
+        "table_date": "14 June 2016"
+    }, 
+    "axis_entry": {
+        "typebare": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "bare_ground", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "tau": {
+            "requested": [
+                "0.15", 
+                "0.8", 
+                "2.45", 
+                "6.5", 
+                "16.2", 
+                "41.5", 
+                "100."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "0.0", 
+                "0.3", 
+                "0.3", 
+                "1.3", 
+                "1.3", 
+                "3.6", 
+                "3.6", 
+                "9.4", 
+                "9.4", 
+                "23.0", 
+                "23.0", 
+                "60.0", 
+                "60.0", 
+                "100000."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "cloud optical thickness", 
+            "standard_name": "atmosphere_optical_thickness_due_to_cloud", 
+            "value": "", 
+            "out_name": "tau", 
+            "type": "double", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "olayer100m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "0. 100.", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "50.0", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "100.0", 
+            "axis": "Z"
+        }, 
+        "spectband": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "Spectral Band", 
+            "standard_name": "wave_frequency", 
+            "value": "", 
+            "out_name": "spectband", 
+            "type": "double", 
+            "units": "s-1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "ocean_sigma_z": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "sigma: sigma eta: eta depth: depth depth_c: depth_c nsigma: nsigma zlev: zlev", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "sigma: sigma_bnds eta: eta depth: depth depth_c: depth_c nsigma: nsigma zlev: zlev_bnds", 
+            "bounds_values": "", 
+            "long_name": "ocean sigma over z coordinate", 
+            "standard_name": "ocean_sigma_z", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "for k <= nsigma: z(n,k,j,i) = eta(n,j,i) + sigma(k)*(min(depth_c,depth(j,i))+eta(n,j,i)) ; for k > nsigma: z(n,k,j,i) = zlev(k)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev19": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000.", 
+                "500.", 
+                "100."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "p220": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "44000. 0.0", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "22000.0", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev17": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev10": {
+            "requested": [
+                "100000.", 
+                "85000.", 
+                "70000.", 
+                "50000.", 
+                "25000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "site": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "site index", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "site", 
+            "type": "integer", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "smooth_level": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "a: a b1: b1 b2: b2 ztop: ztop zsurf1: zsurf1 zsurf2: zsurf2", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-200.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "a: a_bnds b1: b1_bnds b2: b2_bnds ztop: ztop zsurf1: zsurf1 zsurf2: zsurf2", 
+            "bounds_values": "", 
+            "long_name": "atmosphere smooth level vertical (SLEVE) coordinate", 
+            "standard_name": "atmosphere_sleve_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "m", 
+            "formula": "z = a*ztop + b1*zsurf1 + b2*zsurf2", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "800000.0", 
+            "axis": "Z"
+        }, 
+        "p840": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "100000. 68000.", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "84000.0", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "ocean_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "sigma: lev eta: eta depth: depth", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "sigma: lev_bnds eta: eta depth: depth", 
+            "bounds_values": "", 
+            "long_name": "ocean sigma coordinate", 
+            "standard_name": "ocean_sigma_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "z(n,k,j,i) = eta(n,j,i) + sigma(k)*(depth(j,i)+eta(n,j,i))", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "0.0", 
+            "axis": "Z"
+        }, 
+        "depth0m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "0.0", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "100.0", 
+            "axis": "Z"
+        }, 
+        "ocean_s": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "s: lev eta: eta depth: depth a: a_coeff b: b_coeff depth_c: depth_c", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "s: lev_bnds eta: eta depth: depth a: a b: b depth_c: depth_c", 
+            "bounds_values": "", 
+            "long_name": "ocean s-coordinate", 
+            "standard_name": "ocean_s_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "z(n,k,j,i) = eta(n,j,i)*(1+s(k)) + depth_c*s(k) + (depth(j,i)-depth_c)*C(k) n where n C(k)=(1-b)*sinh(a*s(k))/sinh(a) +n           b*(tanh(a*(s(k)+0.5))/(2*tanh(0.5*a)) - 0.5)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "0.0", 
+            "axis": "Z"
+        }, 
+        "plev4s": {
+            "requested": [
+                "85000.", 
+                "50000.", 
+                "20000.", 
+                "5000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "typec4pft": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "c4_plant_functional_types", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "plev3h": {
+            "requested": [
+                "10000.", 
+                "1000.", 
+                "100."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "height2m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "up", 
+            "must_have_bounds": "no", 
+            "valid_min": "1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "height", 
+            "standard_name": "height", 
+            "value": "2.0", 
+            "out_name": "height", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "10.0", 
+            "axis": "Z"
+        }, 
+        "time1": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "time", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "plev7h": {
+            "requested": [
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "25000.", 
+                "5000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "sza5": {
+            "requested": [
+                "0.", 
+                "20.", 
+                "40.", 
+                "60.", 
+                "80."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "solar zenith angle", 
+            "standard_name": "solar_zenith_angle", 
+            "value": "", 
+            "out_name": "sza", 
+            "type": "double", 
+            "units": "degree", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "depth_coord": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "ocean depth coordinate", 
+            "standard_name": "depth", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "12000.0", 
+            "axis": "Z"
+        }, 
+        "sdepth1": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "0.0 0.1", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "0.05", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "0.2", 
+            "axis": "Z"
+        }, 
+        "alternate_hybrid_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "ap: ap b: b ps: ps", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "ap: ap_bnds b: b_bnds ps: ps", 
+            "bounds_values": "", 
+            "long_name": "hybrid sigma pressure coordinate", 
+            "standard_name": "atmosphere_hybrid_sigma_pressure_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "1", 
+            "formula": "p = ap + b*ps", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "1.0", 
+            "axis": "Z"
+        }, 
+        "time2": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "time", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "yes", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "time3": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "Diurnal cycle: monthly mean of the diurnal cycle (1 hour steps).", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "oline": {
+            "requested": [
+                "barents_opening", 
+                "bering_strait", 
+                "canadian_archipelago", 
+                "denmark_strait", 
+                "drake_passage", 
+                "english_channel", 
+                "pacific_equatorial_undercurrent", 
+                "faroe_scotland_channel", 
+                "florida_bahamas_strait", 
+                "fram_strait", 
+                "iceland_faroe_channel", 
+                "indonesian_thoughflow", 
+                "mozambique_channel", 
+                "taiwan_luzon_straits", 
+                "windward_passage"
+            ], 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "ocean passage", 
+            "standard_name": "region", 
+            "value": "", 
+            "out_name": "line", 
+            "type": "character", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "plev14": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "25000.", 
+                "15000.", 
+                "10000.", 
+                "5000.", 
+                "2000.", 
+                "1000.", 
+                "500.", 
+                "100."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev8": {
+            "requested": [
+                "100000.", 
+                "85000.", 
+                "70000.", 
+                "50000.", 
+                "25000.", 
+                "10000.", 
+                "5000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "location": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "location index", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "loc", 
+            "type": "integer", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "latitude": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-90.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "latitude", 
+            "standard_name": "latitude", 
+            "value": "", 
+            "out_name": "lat", 
+            "type": "double", 
+            "units": "degrees_north", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "90.0", 
+            "axis": "Y"
+        }, 
+        "plev3": {
+            "requested": [
+                "85000.", 
+                "50000.", 
+                "25000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "basin": {
+            "requested": [
+                "atlantic_arctic_ocean", 
+                "indian_pacific_ocean", 
+                "global_ocean"
+            ], 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "ocean basin", 
+            "standard_name": "region", 
+            "value": "", 
+            "out_name": "basin", 
+            "type": "character", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "p700": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "700 hPa", 
+            "standard_name": "air_pressure", 
+            "value": "70000.", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev7": {
+            "requested": [
+                "90000.", 
+                "74000.", 
+                "62000.", 
+                "50000.", 
+                "37500.", 
+                "24500.", 
+                "9000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "100000.", 
+                "80000.", 
+                "80000.", 
+                "68000.", 
+                "68000.", 
+                "56000.", 
+                "56000.", 
+                "44000.", 
+                "44000.", 
+                "31000.", 
+                "31000.", 
+                "18000.", 
+                "18000.", 
+                " 0."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev4": {
+            "requested": [
+                "92500.", 
+                "85000.", 
+                "50000.", 
+                "25000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev23": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000.", 
+                "700.", 
+                "500.", 
+                "300.", 
+                "200.", 
+                "100.", 
+                "40."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev39": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "17000.", 
+                "15000.", 
+                "13000.", 
+                "11500.", 
+                "10000.", 
+                "9000.", 
+                "8000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1500.", 
+                "1000.", 
+                "700.", 
+                "500.", 
+                "300.", 
+                "200.", 
+                "150.", 
+                "100.", 
+                "70.", 
+                "50.", 
+                "40.", 
+                "30.", 
+                "20.", 
+                "15.", 
+                "10.", 
+                "7.", 
+                "5.", 
+                "3."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "typepever": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "primary_evergreen_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "typesdec": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "secondary_decidous_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "plev27": {
+            "requested": [
+                "100000.", 
+                "97500.", 
+                "95000.", 
+                "92500.", 
+                "90000.", 
+                "87500.", 
+                "85000.", 
+                "82500.", 
+                "80000.", 
+                "77500.", 
+                "75000.", 
+                "70000.", 
+                "65000.", 
+                "60000.", 
+                "55000.", 
+                "50000.", 
+                "45000.", 
+                "40000.", 
+                "35000.", 
+                "30000.", 
+                "25000.", 
+                "22500.", 
+                "20000.", 
+                "17500.", 
+                "15000.", 
+                "12500.", 
+                "10000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "alt40": {
+            "requested": [
+                "240.", 
+                "720.", 
+                "1200.", 
+                "1680.", 
+                "2160.", 
+                "2640.", 
+                "3120.", 
+                "3600.", 
+                "4080.", 
+                "4560.", 
+                "5040.", 
+                "5520.", 
+                "6000.", 
+                "6480.", 
+                "6960.", 
+                "7440.", 
+                "7920.", 
+                "8400.", 
+                "8880.", 
+                "9360.", 
+                "9840.", 
+                "10320.", 
+                "10800.", 
+                "11280.", 
+                "11760.", 
+                "12240.", 
+                "12720.", 
+                "13200.", 
+                "13680.", 
+                "14160.", 
+                "14640.", 
+                "15120.", 
+                "15600.", 
+                "16080.", 
+                "16560.", 
+                "17040.", 
+                "17520.", 
+                "18000.", 
+                "18480.", 
+                "18960."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "0.", 
+                "480.", 
+                "480.", 
+                "960.", 
+                "960.", 
+                "1440.", 
+                "1440.", 
+                "1920.", 
+                "1920.", 
+                "2400.", 
+                "2400.", 
+                "2880.", 
+                "2880.", 
+                "3360.", 
+                "3360.", 
+                "3840.", 
+                "3840.", 
+                "4320.", 
+                "4320.", 
+                "4800.", 
+                "4800.", 
+                "5280.", 
+                "5280.", 
+                "5760.", 
+                "5760.", 
+                "6240.", 
+                "6240.", 
+                "6720.", 
+                "6720.", 
+                "7200.", 
+                "7200.", 
+                "7680.", 
+                "7680.", 
+                "8160.", 
+                "8160.", 
+                "8640.", 
+                "8640.", 
+                "9120.", 
+                "9120.", 
+                "9600.", 
+                "9600.", 
+                "10080.", 
+                "10080.", 
+                "10560.", 
+                "10560.", 
+                "11040.", 
+                "11040.", 
+                "11520.", 
+                "11520.", 
+                "12000.", 
+                "12000.", 
+                "12480.", 
+                "12480.", 
+                "12960.", 
+                "12960.", 
+                "13440.", 
+                "13440.", 
+                "13920.", 
+                "13920.", 
+                "14400.", 
+                "14400.", 
+                "14880.", 
+                "14880.", 
+                "15360.", 
+                "15360.", 
+                "15840.", 
+                "15840.", 
+                "16320.", 
+                "16320.", 
+                "16800.", 
+                "16800.", 
+                "17280.", 
+                "17280.", 
+                "17760.", 
+                "17760.", 
+                "18240.", 
+                "18240.", 
+                "18720.", 
+                "18720.", 
+                "19200."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "altitude", 
+            "standard_name": "altitude", 
+            "value": "", 
+            "out_name": "alt40", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "time": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "time", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "plev7c": {
+            "requested": [
+                "90000.", 
+                "74000.", 
+                "62000.", 
+                "50000.", 
+                "37500.", 
+                "24500.", 
+                "9000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "height10m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "up", 
+            "must_have_bounds": "no", 
+            "valid_min": "1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "height", 
+            "standard_name": "height", 
+            "value": "10.0", 
+            "out_name": "height", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "30.0", 
+            "axis": "Z"
+        }, 
+        "dbze": {
+            "requested": [
+                "-47.5", 
+                "-42.5", 
+                "-37.5", 
+                "-32.5", 
+                "-27.5", 
+                "-22.5", 
+                "-17.5", 
+                "-12.5", 
+                "-7.5", 
+                "-2.5", 
+                "2.5", 
+                "7.5", 
+                "12.5", 
+                "17.5", 
+                "22.5"
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "-50", 
+                "-45", 
+                "-45", 
+                "-40", 
+                "-40", 
+                "-35", 
+                "-35", 
+                "-30", 
+                "-30", 
+                "-25", 
+                "-25", 
+                "-20", 
+                "-20", 
+                "-15", 
+                "-15", 
+                "-10", 
+                "-10", 
+                "-5", 
+                "-5", 
+                "0", 
+                "0", 
+                "5", 
+                "5", 
+                "10", 
+                "10", 
+                "15", 
+                "15", 
+                "20", 
+                "20", 
+                "25."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "CloudSat simulator equivalent radar reflectivity factor", 
+            "standard_name": "equivalent_reflectivity_factor", 
+            "value": "", 
+            "out_name": "dbze", 
+            "type": "double", 
+            "units": "dBZ", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "typesever": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "secondary_evergreen_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "rho": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "density++++?", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "rho", 
+            "type": "double", 
+            "units": "kg m-3", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "depth100m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "80.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "100.0", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "120.0", 
+            "axis": "Z"
+        }, 
+        "effectRadLi": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "Effective Radius of Liquid Aerosols", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "effectRadLi", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "sdepth": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "200.0", 
+            "axis": "Z"
+        }, 
+        "vegtype": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "plant functional type", 
+            "standard_name": "area_type", 
+            "value": "", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "typec3pft": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "c3_plant_functional_types", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "natural_log_pressure": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "p0: p0 lev: lev", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "p0: p0 lev: lev_bnds", 
+            "bounds_values": "", 
+            "long_name": "atmosphere natural log pressure coordinate", 
+            "standard_name": "atmosphere_ln_pressure_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "p = p0 * exp(-lev)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "20.0", 
+            "axis": "Z"
+        }, 
+        "scatratio": {
+            "requested": [
+                "0.005", 
+                "0.605", 
+                "2.1", 
+                "4.", 
+                "6.", 
+                "8.5", 
+                "12.5", 
+                "17.5", 
+                "22.5", 
+                "27.5", 
+                "35.", 
+                "45.", 
+                "55.", 
+                "70.", 
+                "50040."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "0.", 
+                "0.01", 
+                "0.01", 
+                "1.2", 
+                "1.2", 
+                "3.", 
+                "3.", 
+                "5.", 
+                "5.", 
+                "7.", 
+                "7.", 
+                "10.", 
+                "10.", 
+                "15.", 
+                "15.", 
+                "20.", 
+                "20.", 
+                "25.", 
+                "25.", 
+                "30.", 
+                "30.", 
+                "40.", 
+                "40.", 
+                "50.", 
+                "50.", 
+                "60.", 
+                "60.", 
+                "80.", 
+                "80.", 
+                "100000."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "lidar backscattering ratio", 
+            "standard_name": "backscattering_ratio", 
+            "value": "", 
+            "out_name": "scatratio", 
+            "type": "double", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "standard_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "ptop: ptop sigma: lev ps: ps", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "ptop: ptop sigma: lev_bnds ps: ps", 
+            "bounds_values": "", 
+            "long_name": "sigma coordinate", 
+            "standard_name": "atmosphere_sigma_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "p = ptop + sigma*(ps - ptop)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "1.0", 
+            "axis": "Z"
+        }, 
+        "typepdec": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "primary_deciduous_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "hybrid_height": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "a: lev b: b orog: orog", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "a: lev_bnds b: b_bnds orog: orog", 
+            "bounds_values": "", 
+            "long_name": "hybrid height coordinate", 
+            "standard_name": "atmosphere_hybrid_height_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "m", 
+            "formula": "z = a + b*orog", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "longitude": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "longitude", 
+            "standard_name": "longitude", 
+            "value": "", 
+            "out_name": "lon", 
+            "type": "double", 
+            "units": "degrees_east", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "360.0", 
+            "axis": "X"
+        }, 
+        "effectRadIc": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "Effective Radius of Ice Aerosols", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "effectRadIc", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "p1000": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "1000 hPa", 
+            "standard_name": "air_pressure", 
+            "value": "100000.", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "p500": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "500 hPa", 
+            "standard_name": "air_pressure", 
+            "value": "50000.", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "ocean_double_sigma": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "sigma: sigma depth: depth z1: z1 z2: z2 a: a_coeff href: href k_c: k_c", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "sigma: sigma_bnds depth: depth z1: z1 z2: z2 a: a href: href k_c: k_c", 
+            "bounds_values": "", 
+            "long_name": "ocean double sigma coordinate", 
+            "standard_name": "ocean_double_sigma", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "for k <= k_c:n z(k,j,i)= sigma(k)*f(j,i) n for k > k_c:n z(k,j,i)= f(j,i) + (sigma(k)-1)*(depth(j,i)-f(j,i)) n f(j,i)= 0.5*(z1+ z2) + 0.5*(z1-z2)* tanh(2*a/(z1-z2)*(depth(j,i)-href))", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plevs": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "standard_hybrid_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "p0: p0 a: a b: b ps: ps", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "p0: p0 a: a_bnds b: b_bnds ps: ps", 
+            "bounds_values": "", 
+            "long_name": "hybrid sigma pressure coordinate", 
+            "standard_name": "atmosphere_hybrid_sigma_pressure_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "1", 
+            "formula": "p = a*p0 + b*ps", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "1.0", 
+            "axis": "Z"
+        }, 
+        "p560": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "68000. 44000.", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "56000.0", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }
+    }, 
+    "variable_entry": {
+        "gppLut": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "gross primary productivity on land use tile", 
+            "standard_name": "gross_primary_land_productivity_of_carbon", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg C m-2 s-1", 
+            "out_name": "gppLut", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "intdoc": {
+            "comment": "Vertically integrated DOC (explicit pools only)", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Dissolved Organic Carbon Content", 
+            "standard_name": "ocean_mass_content_of_dissolved_organic_carbon", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg m-2", 
+            "out_name": "intdoc", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "mrsfl": {
+            "comment": "as specified by C4MIP", 
+            "dimensions": "longitude latitude sdepth time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Frozen water content of soil layer", 
+            "standard_name": "frozen_moisture_content_of_soil_layer", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg m-2", 
+            "out_name": "mrsfl", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "mrtws": {
+            "comment": "as specified by C4MIP", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Total water storage in a grid cell", 
+            "standard_name": "total_water_storage", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg m-2", 
+            "out_name": "mrtws", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "fBNF": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "biological nitrogen fixation", 
+            "standard_name": "biological_nitrogen_fixation", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg N m-2 s-1", 
+            "out_name": "fBNF", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "cfc11": {
+            "comment": "", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Moles Per Unit Mass of CFC-11 in Sea Water", 
+            "standard_name": "moles_of_cfc11_per_unit_mass_in_sea_water", 
+            "modeling_realm": "", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "0", 
+            "units": "mol kg-1", 
+            "out_name": "cfc11", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "cfc12": {
+            "comment": "", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Moles Per Unit Mass of CFC-12 in Sea Water", 
+            "standard_name": "moles_of_cfc12_per_unit_mass_in_sea_water", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "0", 
+            "units": "mol kg-1", 
+            "out_name": "cfc12", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "O18wv": {
+            "comment": "Roche - LSCE", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "O18 in water vapor", 
+            "standard_name": "?", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "", 
+            "out_name": "O18wv", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "intpoc": {
+            "comment": "Vertically integrated POC", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Particulate Organic Carbon Content", 
+            "standard_name": "ocean_mass_content_of_particulate_organic_carbon", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg m-2", 
+            "out_name": "intpoc", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "opottemptend": {
+            "comment": "Tendency of heat content for a grid cell from all processes. Reported only for models that use potential temperature as prognostic field.", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "tendency of sea water potential temperature expressed as heat content", 
+            "standard_name": "tendency_of_sea_water_potential_temperature_expressed_as_heat_content", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "0", 
+            "units": "W m-2", 
+            "out_name": "opottemptend", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "fHarvAntLut": {
+            "comment": "If  a model has explicit anthropogenic pools", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "carbon harvested on land use tile that enters anthropogenic pools", 
+            "standard_name": "", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg C m-2 s-1", 
+            "out_name": "fHarvAntLut", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "mrsoLut": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Total soil moisture", 
+            "standard_name": "soil_moisture_content", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg  m-2", 
+            "out_name": "mrsoLut", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "cSoilBelow1m": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Carbon Mass in Soil Pool below 1m Depth", 
+            "standard_name": "soil_carbon_content_below_1m_depth", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg C/m2", 
+            "out_name": "cSoilBelow1m", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "treeFracBdlEvg": {
+            "comment": "as specified by C4MIP", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Broadleaf evergreen tree fraction", 
+            "standard_name": "tree_fraction_broadleaf_evergreen", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "%", 
+            "out_name": "treeFracBdlEvg", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "o2": {
+            "comment": "", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Dissolved Oxygen Concentration", 
+            "standard_name": "mole_concentration_of_molecular_oxygen_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3", 
+            "out_name": "o2", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "fHarvestToAtmos": {
+            "comment": "any harvested carbon that is assumed to decompose immediately into the atmosphere is reported here", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Harvested biomass that goes straight into atmosphere", 
+            "standard_name": "surface_upward_mass_flux_of_carbon_dioxide_expressed_as_carbon_due_to_emission_from_crop_harvesting?", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg C m-2 s-1", 
+            "out_name": "fHarvestToAtmos", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "orog": {
+            "units": "m", 
+            "long_name": "Surface Altitude", 
+            "type": "real", 
+            "dimensions": "longitude latitude"
+        }, 
+        "raStem": {
+            "comment": "added for completeness with Ra_root", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Total respiration from stem", 
+            "standard_name": "autotrophic_respiration_from_stem", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg m-2 s-1", 
+            "out_name": "raStem", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "tntlw": {
+            "comment": "longwave heating rates", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "-100.0", 
+            "long_name": "Longwave heating rate", 
+            "standard_name": "tendency_of_air_temperature_due_to_longwave_heating", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "K s-1", 
+            "out_name": "tntlw", 
+            "type": "real", 
+            "valid_max": "100.0", 
+            "ok_max_mean_abs": ""
+        }, 
+        "sigma_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: sigma(k+1/2)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "grassFracC4": {
+            "comment": "as specified by C4MIP", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "C4 grass fraction", 
+            "standard_name": "grass_fraction_c4", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "%", 
+            "out_name": "grassFracC4", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "nep": {
+            "comment": "Natural flux of CO2 (expressed as a mass flux of carbon) from the atmosphere to the land calculated as the difference between uptake associated will photosynthesis and the release of CO2 from the sum of plant and soil respiration and fire.  Positive flux is into the land.  emissions from natural fires and human ignition fires as calculated by the fire module of the dynamic vegetation model, but excluding any CO2 flux from fire included in fLuc (CO2 Flux to Atmosph [...]
+            "dimensions": "longitude latitude time", 
+            "positive": "down", 
+            "valid_min": "", 
+            "long_name": "Net Carbon Mass Flux out of Atmosphere due to Net Ecosystem Productivity on Land.", 
+            "standard_name": "surface_net_downward_mass_flux_of_carbon_dioxide_expressed_as_carbon_due_to_all_land_processes_excluding_anthropogenic_land_use_change", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "nep", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "grassFracC3": {
+            "comment": "as specified by C4MIP", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "C3 grass fraction", 
+            "standard_name": "grass_fraction_c3", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "%", 
+            "out_name": "grassFracC3", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "tntd": {
+            "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", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Tendency of Air Temperature due to Numerical Diffusion", 
+            "standard_name": "tendency_of_air_temperature_due_to_numerical_diffusion", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "K s-1", 
+            "out_name": "tntd", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "cMisc": {
+            "comment": "e.g., labile, fruits, reserves, etc.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Carbon Mass in Other Living Compartments on Land", 
+            "standard_name": "miscellaneous_living_matter_carbon_content", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2", 
+            "out_name": "cMisc", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "evspsblveg": {
+            "comment": "the canopy evaporation+sublimation (if present in model).", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "valid_min": "", 
+            "long_name": "Evaporation from Canopy", 
+            "standard_name": "water_evaporation_flux_from_canopy", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "evspsblveg", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "fNnetmin": {
+            "comment": "as specified by C4MIP", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Net nitrogen release from soil and litter as the outcome of nitrogen immobilisation and gross mineralisation", 
+            "standard_name": "net_nitrogen_mineralisation", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg m-2 s-1", 
+            "out_name": "fNnetmin", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "z1": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: z1", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "z2": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: z2", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "fCLandToOcean": {
+            "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", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Lateral transfer of carbon out of gridcell that eventually goes into ocean", 
+            "standard_name": "carbon_mass_flux_into_ocean_from_rivers", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg C m-2 s-1", 
+            "out_name": "fCLandToOcean", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "od550so4": {
+            "comment": "proposed name: atmosphere_optical_thickness_due_to_sulfate_ambient_aerosol", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0.0", 
+            "long_name": "sulfate aod at 550nm", 
+            "standard_name": "atmosphere_optical_thickness_due_to_sulfate_ambient_aerosol", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "1.0", 
+            "out_name": "od550so4", 
+            "type": "real", 
+            "valid_max": "1000.0", 
+            "ok_max_mean_abs": ""
+        }, 
+        "c13Litter": {
+            "comment": "as specified by C4MIP", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Mass of 13C in Litter Pool", 
+            "standard_name": "litter_c13_content", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg m-2", 
+            "out_name": "c13Litter", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "fAntAtmLut": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "If a model has separate anthropogenic pools by land use tile", 
+            "standard_name": "", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "flux from anthropogenic pools on land use tile into atmosphere", 
+            "out_name": "fAntAtmLut", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "fNLitterSoil": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Total Nitrogen Mass Flux from Litter to Soil", 
+            "standard_name": "nitrogen_mass_flux_into_soil_from_litter", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg N m-2 s-1", 
+            "out_name": "fNLitterSoil", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "pathetao": {
+            "comment": "", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "", 
+            "standard_name": "sea_water_additional_potential_temperature", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "0", 
+            "units": "degC", 
+            "out_name": "pathetao", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "fVegLitter": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Total Carbon Mass Flux from Vegetation to Litter", 
+            "standard_name": "litter_carbon_flux", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "fVegLitter", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "ztop": {
+            "units": "m", 
+            "long_name": "height of top of model", 
+            "type": "", 
+            "dimensions": ""
+        }, 
+        "href": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: href", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "O18sw": {
+            "comment": "Roche - LSCE", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "O18 in sea water", 
+            "standard_name": "?", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "0", 
+            "units": "", 
+            "out_name": "O18sw", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "lwp": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0.0", 
+            "long_name": "liquid water path", 
+            "standard_name": "atmosphere_cloud_liquid_water_content", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2", 
+            "out_name": "lwp", 
+            "type": "real", 
+            "valid_max": "100000.0", 
+            "ok_max_mean_abs": ""
+        }, 
+        "chl": {
+            "comment": "Sum of chlorophyll from all phytoplankton group concentrations.  In most models this is equal to chldiat+chlmisc, that is the sum of Diatom Chlorophyll Mass Concentration and Other Phytoplankton Chlorophyll Mass Concentration", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Total Chlorophyll Mass Concentration", 
+            "standard_name": "mass_concentration_of_phytoplankton_expressed_as_chlorophyll_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-3", 
+            "out_name": "chl", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "grassFrac": {
+            "comment": "Percentage of entire grid cell that is covered by natural grass.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Natural Grass Percentage", 
+            "standard_name": "area_fraction", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "%", 
+            "out_name": "grassFrac", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "c14Litter": {
+            "comment": "as specified by C4MIP", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Mass of 14C in Litter Pool", 
+            "standard_name": "litter_c14_content", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg m-2", 
+            "out_name": "c14Litter", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "calc": {
+            "comment": "Sum of particulate calcite component concentrations (e.g. Phytoplankton, Detrital, etc.)", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Calcite Concentration", 
+            "standard_name": "mole_concentration_of_calcite_expressed_as_carbon_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3", 
+            "out_name": "calc", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "litempbot": {
+            "comment": "Basal temperature that is used to force the ice sheet models. Report temperature AT interface. Beneath ice shelves it is the temperature AT ice ocean interface. Beneath grounded ice, it is the temperature AT ice bedrock interface", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Temperature at the basal interface of the land ice.", 
+            "standard_name": "land_ice_basal_temperature", 
+            "modeling_realm": "landIce", 
+            "cell_measures": "time: mean area: mean where ice_sheet", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "K", 
+            "out_name": "litempbot", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "fVegFire": {
+            "comment": "Required for unambiguous separation of vegetation and soil + litter turnover times, since total fire flux draws from both sources", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Carbon Mass Flux from Vegetation into Atmosphere due to CO2 Emission from all Fire", 
+            "standard_name": "fire_CO2_emissions_from_vegetation_carbon", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg C m-2 s-1", 
+            "out_name": "fVegFire", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "sweLut": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "snow water equivalent on land use tile", 
+            "standard_name": "", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "m", 
+            "out_name": "sweLut", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "tslsiLut": {
+            "comment": "temperature at which long-wave radiation emitted", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "surface skin temperature on land use tile", 
+            "standard_name": "surface_temperature", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "K", 
+            "out_name": "tslsiLut", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "md": {
+            "comment": "Balkanski - LSCE", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Wet diameter mode coarse insoluble", 
+            "standard_name": "tendency_of_atmosphere_mass_content_of_dust_dry_aerosol_particles_due_to_emission", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg m-2 s-1", 
+            "out_name": "md", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "licalvf": {
+            "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": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Land ice calving flux", 
+            "standard_name": "land_ice_calving_flux", 
+            "modeling_realm": "landIce", 
+            "cell_measures": "time: mean area: mean where ice_sheet", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg m-2 s-1", 
+            "out_name": "licalvf", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "nSoil": {
+            "comment": "as specified by C4MIP", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Nitrogen Mass in Soil Pool", 
+            "standard_name": "soil_nitrogen_content", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg m-2", 
+            "out_name": "nSoil", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "mrro": {
+            "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", 
+            "positive": "", 
+            "valid_min": "-0.0002019", 
+            "long_name": "Total Run-off", 
+            "standard_name": "runoff_flux", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "-6.668e-06", 
+            "units": "kg m-2 s-1", 
+            "out_name": "mrro", 
+            "type": "real", 
+            "valid_max": "0.001065", 
+            "ok_max_mean_abs": "1.874e-05"
+        }, 
+        "epn100": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Downward Flux of Particulate Nitrogen", 
+            "standard_name": "sinking_mole_flux_of_particulate_nitrogen_in_sea_water", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "0", 
+            "units": "mol m-2 s-1", 
+            "out_name": "epn100", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "fg13co2": {
+            "comment": "as specified by C4MIP", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Total air-sea flux of 13CO2", 
+            "standard_name": "air_sea_flux_of_13CO2", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "mol m-2 s-1", 
+            "out_name": "fg13co2", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "fgcfc11": {
+            "comment": "gas exchange flux of CFC11", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Surface Downward CFC11 flux", 
+            "standard_name": "surface_downward_mole_flux_of_cfc11", 
+            "modeling_realm": "", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "0", 
+            "units": "mol sec-1 m-2", 
+            "out_name": "fgcfc11", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "fgcfc12": {
+            "comment": "gas exchange flux of CFC12", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Surface Downward CFC12 flux", 
+            "standard_name": "surface_downward_mole_flux_of_cfc12", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "0", 
+            "units": "mol sec-1 m-2", 
+            "out_name": "fgcfc12", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "nLitter": {
+            "comment": "as specified by C4MIP", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Nitrogen Mass in Litter Pool", 
+            "standard_name": "litter_nitrogen_content", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg m-2", 
+            "out_name": "nLitter", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "vegFrac": {
+            "comment": "as specified by C4MIP", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Total vegetated fraction", 
+            "standard_name": "total_vegetated_fraction", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "%", 
+            "out_name": "vegFrac", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "prsn": {
+            "comment": "at surface; includes precipitation of all forms of water in the solid phase", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Snowfall Flux", 
+            "standard_name": "snowfall_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean area: mean where ice_sheet", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "1.449e-06", 
+            "units": "kg m-2 s-1", 
+            "out_name": "prsn", 
+            "type": "real", 
+            "valid_max": "0.0002987", 
+            "ok_max_mean_abs": "6.11e-06"
+        }, 
+        "albs": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0.0", 
+            "long_name": "planetary albedo", 
+            "standard_name": "planetary_albedo", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "1.0", 
+            "out_name": "albs", 
+            "type": "real", 
+            "valid_max": "1.0", 
+            "ok_max_mean_abs": ""
+        }, 
+        "zlev": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: zlev(k)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "cLeaf": {
+            "comment": "Carbon mass per unit area in leaves.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Carbon Mass in Leaves", 
+            "standard_name": "leaf_carbon_content", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg m-2", 
+            "out_name": "cLeaf", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "c13Veg": {
+            "comment": "as specified by C4MIP", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Mass of 13C in Vegetation", 
+            "standard_name": "vegetation_c13_content", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg m-2", 
+            "out_name": "c13Veg", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "fHarvResLut": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "carbon after land use tile harvesting that left as residue into litter or soil", 
+            "standard_name": "", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg C m-2 s-1", 
+            "out_name": "fHarvResLut", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "prbigthetao": {
+            "comment": "", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Sea Water Redistributed Conservative Temperature", 
+            "standard_name": "sea_water_redistributed_conservative_temperature", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "0", 
+            "units": "degC", 
+            "out_name": "prbigthetao", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "irrCrp": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "cropland irrigation flux", 
+            "standard_name": "", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg H2O m-2 s-1", 
+            "out_name": "irrCrp", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "albsrfc": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0.0", 
+            "long_name": "surface albedo", 
+            "standard_name": "surface_albedo", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "1.0", 
+            "out_name": "albsrfc", 
+            "type": "real", 
+            "valid_max": "1.0", 
+            "ok_max_mean_abs": ""
+        }, 
+        "lai": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "leaf area index", 
+            "standard_name": "leaf_area_index", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "1.0", 
+            "out_name": "lai", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "dissoc": {
+            "comment": "Sum of dissolved carbon component concentrations explicitly represented (i.e. not ~40 uM refractory unless explicit)", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Dissolved Organic Carbon Concentration", 
+            "standard_name": "mole_concentration_of_dissolved_organic_carbon_in_sea_water", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "mol m-3", 
+            "out_name": "dissoc", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "osaltpmdiff": {
+            "comment": "Tendency of salt content for a grid cell from parameterized mesoscale eddy diffusion.", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_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_diffusion", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg/m2/s", 
+            "out_name": "osaltpmdiff", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "npp": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "down", 
+            "valid_min": "", 
+            "long_name": "Carbon Mass Flux out of Atmosphere due to Net Primary Production on Land", 
+            "standard_name": "net_primary_productivity_of_carbon", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "npp", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "a": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: a(k)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "si": {
+            "comment": "", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Dissolved Silicate Concentration", 
+            "standard_name": "mole_concentration_of_silicate_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3", 
+            "out_name": "si", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "evspsblpot": {
+            "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", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Potential Evapotranspiration", 
+            "standard_name": "water_potential_evaporation_flux", 
+            "modeling_realm": "land", 
+            "cell_measures": "", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "evspsblpot", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "opottemppadvect": {
+            "comment": "Tendency of heat content for a grid cell from parameterized eddy advection (any form of eddy advection). Reported only for models that use potential temperature as prognostic field.", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "tendency of sea water potential temperature expressed as heat content due to parameterized eddy advection", 
+            "standard_name": "tendency_of_sea_water_potential_temperature_expressed_as_heat_content_due_to_parameterized_eddy_advection", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "0", 
+            "units": "W m-2", 
+            "out_name": "opottemppadvect", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "talk": {
+            "comment": "total alkalinity equivalent concentration (including carbonate, nitrogen, silicate, and borate components)", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Total Alkalinity", 
+            "standard_name": "sea_water_alkalinity_expressed_as_mole_equivalent", 
+            "modeling_realm": "", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "0", 
+            "units": "mol m-3", 
+            "out_name": "talk", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "no3": {
+            "comment": "", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Dissolved Nitrate Concentration", 
+            "standard_name": "mole_concentration_of_nitrate_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3", 
+            "out_name": "no3", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "intpp": {
+            "comment": "Vertically integrated total primary (organic carbon) production by phytoplankton.  This should equal the sum of intpdiat+intpphymisc, but those individual components may be unavailable in some models.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Primary Organic Carbon Production by All Types of Phytoplankton", 
+            "standard_name": "net_primary_mole_productivity_of_carbon_by_phytoplankton", 
+            "modeling_realm": "", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "0", 
+            "units": "mol m-2 s-1", 
+            "out_name": "intpp", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "pcp": {
+            "comment": "as specified by C4MIP", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Total precipitation", 
+            "standard_name": "total_precipitation_flux", 
+            "modeling_realm": "land", 
+            "cell_measures": "", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg m-2 s-1", 
+            "out_name": "pcp", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "co3satarag": {
+            "comment": "", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Mole Concentration of Carbonate ion for Seawater in equilibrium with pure Aragonite", 
+            "standard_name": "mole_concentration_of_carbonate_ion_for_seawater_in equilibrium_with_pure_aragonite", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3", 
+            "out_name": "co3satarag", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "tnhuspbl": {
+            "comment": "Includes all boundary layer terms including diffusive terms.", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Tendency of Specific Humidity Due to Boundary Layer Mixing", 
+            "standard_name": "tendency_of_specific_humidity_due_to_boundary_layer_mixing", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "s-1", 
+            "out_name": "tnhuspbl", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "wetlandCH4cons": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Grid averaged methane consuption (methanotrophy) from wetlands", 
+            "standard_name": "wetland_methane_consumption", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg CH4 m-2 s-1", 
+            "out_name": "wetlandCH4cons", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "fNdepred": {
+            "comment": "as specified by C4MIP", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "dry and wet deposition of reduced reactive nitrogen onto land", 
+            "standard_name": "deposition_of_reduced_nitrogen_onto_land", 
+            "modeling_realm": "land", 
+            "cell_measures": "", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg m-2 s-1", 
+            "out_name": "fNdepred", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "fgo2": {
+            "comment": "Gas exchange flux of O2 (positive into ocean)", 
+            "dimensions": "longitude latitude time", 
+            "positive": "down", 
+            "valid_min": "", 
+            "long_name": "Surface Downward O2 Flux", 
+            "standard_name": "surface_downward_mole_flux_of_molecular_oxygen", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-2 s-1", 
+            "out_name": "fgo2", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "necbLut": {
+            "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 pools to atmosphere", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": " net rate of C accumulation (or loss) on land use tile", 
+            "standard_name": "", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg C m-2 s-1", 
+            "out_name": "necbLut", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "ocontemppmdiff": {
+            "comment": "Tendency of heat content for a grid cell from parameterized mesoscale eddy diffusion. Reported only for models that use conservative temperature as prognostic field.", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_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_diffusion", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "0", 
+            "units": "W m-2", 
+            "out_name": "ocontemppmdiff", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "swtoaasdust": {
+            "comment": "proposed name: toa_instantaneous_shortwave_forcing_due_to_dust_ambient_aerosol", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "-1000.0", 
+            "long_name": "all sky sw-rf dust at toa", 
+            "standard_name": "toa_instantaneous_shortwave_forcing_due_to_dust_ambient_aerosol", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "swtoaasdust", 
+            "type": "real", 
+            "valid_max": "1000.0", 
+            "ok_max_mean_abs": ""
+        }, 
+        "mmraerno3": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0.0", 
+            "long_name": "NO3 aerosol mass mixing ratio", 
+            "standard_name": "mass_fraction_of_nitrate_dry_aerosol_in_air", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg kg-1", 
+            "out_name": "mmraerno3", 
+            "type": "real", 
+            "valid_max": "1.0", 
+            "ok_max_mean_abs": ""
+        }, 
+        "tran": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "valid_min": "", 
+            "long_name": "Transpiration", 
+            "standard_name": "transpiration_flux", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "tran", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "ocontemppsmadvect": {
+            "comment": "Tendency of heat content for a grid cell from parameterized submesoscale eddy advection. Reported only for models that use conservative temperature as prognostic field.", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_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_advection", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "0", 
+            "units": "W m-2", 
+            "out_name": "ocontemppsmadvect", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "rsdoabsorb": {
+            "comment": "", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Net Rate of Absorption of Shortwave Energy in Ocean Layer", 
+            "standard_name": "net_rate_of_absorption_of_shortwave_energy_in_ocean_layer", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "0", 
+            "units": "W m-2", 
+            "out_name": "rsdoabsorb", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "cSoil1m": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Carbon Mass in Soil Pool from Surface to 1m Depth", 
+            "standard_name": "soil_carbon_content_to_1m_depth", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg C/m2", 
+            "out_name": "cSoil1m", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "fLitterSoil": {
+            "comment": "Carbon mass flux per unit area into soil from litter (dead plant material in or above the soil).", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Total Carbon Mass Flux from Litter to Soil", 
+            "standard_name": "carbon_mass_flux_into_soil_from_litter", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "fLitterSoil", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "co3satcalc": {
+            "comment": "", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Mole Concentration of Carbonate ion for Seawater in equilibrium with pure Calcite", 
+            "standard_name": "mole_concentration_of_carbonate_ion_for_seawater_in equilibrium_with_pure_calcite", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3", 
+            "out_name": "co3satcalc", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "fHarvAtmLut": {
+            "comment": "If  a model puts some or all harvested carbon directly into atmosphere (not via anthropogenic pools); for pastureland, harvesting includes only livestock grazing", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "carbon harvested on land use tile that enters atmosphere", 
+            "standard_name": "", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg C m-2 s-1", 
+            "out_name": "fHarvAtmLut", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "fNOx": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Total land NOx flux ", 
+            "standard_name": "land_net_nox_flux", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg N m-2 s-1", 
+            "out_name": "fNOx", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "fNgasNonFire": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Total N lost to the atmosphere (including NHx, NOx, N2O, N2) from all processes except fire.", 
+            "standard_name": "land_nitrogen_lost_to_atmosphere_not due to fire", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg N m-2 s-1", 
+            "out_name": "fNgasNonFire", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "O17p": {
+            "comment": "Roche - LSCE", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "17O in total precipitation", 
+            "standard_name": "?", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "", 
+            "out_name": "O17p", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "O17s": {
+            "comment": "Roche - LSCE", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "17O in solid precipitation", 
+            "standard_name": "?", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "", 
+            "out_name": "O17s", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "tasLut": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "near-surface air temperature (2m above displacement height, i.e. t_ref) on land use tile", 
+            "standard_name": "air_temperature", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "K", 
+            "out_name": "tasLut", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "ra": {
+            "comment": "Carbon mass flux per unit area into atmosphere due to autotrophic respiration on land (respiration by producers) [see rh for heterotrophic production] ", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "valid_min": "", 
+            "long_name": "Carbon Mass Flux into Atmosphere due to Autotrophic (Plant) Respiration on Land", 
+            "standard_name": "plant_respiration_carbon_flux", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "ra", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "dissi13c": {
+            "comment": "as specified by C4MIP", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Concentration of DI13C", 
+            "standard_name": "mole_concentration_of_dissolved_inorganic_c13_in_sea_water", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "mol m-3", 
+            "out_name": "dissi13c", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "rh": {
+            "comment": "Carbon mass flux per unit area into atmosphere due to heterotrophic respiration on land (respiration by consumers)", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "valid_min": "", 
+            "long_name": "Carbon Mass Flux into Atmosphere due to Heterotrophic Respiration on Land", 
+            "standard_name": "heterotrophic_respiration_carbon_flux", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "rh", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "mmraerso4": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0.0", 
+            "long_name": "Aerosol Sulfate Mass Mixing Ratio", 
+            "standard_name": "mass_fraction_of_sulfate_dry_aerosol_in_air", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg kg-1", 
+            "out_name": "mmraerso4", 
+            "type": "real", 
+            "valid_max": "1.0", 
+            "ok_max_mean_abs": ""
+        }, 
+        "raLeaf": {
+            "comment": "added for completeness with Ra_root", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Total respiration from leaves", 
+            "standard_name": "autotrophic_respiration_from_leaves", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg m-2 s-1", 
+            "out_name": "raLeaf", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "rhSoil": {
+            "comment": "Needed to calculate soil bulk turnover time", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Carbon Mass Flux into Atmosphere due to Heterotrophic Respiration from Soil on Land", 
+            "standard_name": "heterotrophic_respiration_carbon_flux_from_soil", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg m-2 s-1", 
+            "out_name": "rhSoil", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "rsds": {
+            "comment": "surface solar irradiance for UV calculations", 
+            "dimensions": "longitude latitude time", 
+            "positive": "down", 
+            "valid_min": "-0.002946", 
+            "long_name": "Surface Downwelling Shortwave Radiation", 
+            "standard_name": "surface_downwelling_shortwave_flux_in_air", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "143.9", 
+            "units": "W m-2", 
+            "out_name": "rsds", 
+            "type": "real", 
+            "valid_max": "524.4", 
+            "ok_max_mean_abs": "181.6"
+        }, 
+        "cSoil": {
+            "comment": "Carbon mass in the full depth of the soil model.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Carbon Mass in Model Soil Pool", 
+            "standard_name": "soil_carbon_content", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2", 
+            "out_name": "cSoil", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "rls": {
+            "comment": "Net longwave surface radiation", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Net Longwave Surface Radiation", 
+            "standard_name": "surface_net_downward_longwave_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "W m-2", 
+            "out_name": "rls", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "lts": {
+            "comment": "proposed name: potential_temperature_difference_between_700hPa_and_1000hPa (Lower Tropospheric Stability)", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "-1000.0", 
+            "long_name": "lower tropospheric stability", 
+            "standard_name": "potential_temperature_difference_between_700hPa_and_1000hPa", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "K", 
+            "out_name": "lts", 
+            "type": "real", 
+            "valid_max": "1000.0", 
+            "ok_max_mean_abs": ""
+        }, 
+        "swsrfasdust": {
+            "comment": "Balkanski - LSCE", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "All-sky Surface Shortwave radiative flux due to Dust", 
+            "standard_name": "tendency_of_all_sky_surface_shortwave_flux_due_to_dust_ambient_aerosol_particles", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "W m-2", 
+            "out_name": "swsrfasdust", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "c13Land": {
+            "comment": "as specified by C4MIP", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Mass of 13C in all terrestrial carbon pools", 
+            "standard_name": "total_land_c13", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg m-2", 
+            "out_name": "c13Land", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "cLitterSurf": {
+            "comment": "Surface or near-surface litter pool fed by leaf and above-ground litterfall", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Carbon Mass in Above-Ground Litter", 
+            "standard_name": "surface_litter_carbon_content", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg m-2", 
+            "out_name": "cLitterSurf", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "fFireNat": {
+            "comment": "CO2 emissions from natural fires", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Carbon Mass Flux into Atmosphere due to CO2 Emission from natural Fire", 
+            "standard_name": "fire_CO2_emissions_from_wildfire", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg C m-2 s-1", 
+            "out_name": "fFireNat", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "c13Soil": {
+            "comment": "as specified by C4MIP", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Mass of 13C in Soil Pool", 
+            "standard_name": "soil_c13_content", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg m-2", 
+            "out_name": "c13Soil", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "cropFrac": {
+            "comment": "Percentage of entire grid cell  that is covered by crop.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Percentage Crop Cover", 
+            "standard_name": "area_fraction", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "%", 
+            "out_name": "cropFrac", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "shrubFrac": {
+            "comment": "Percentage of entire grid cell  that is covered by shrub.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Percentage Cover by Shrub", 
+            "standard_name": "area_fraction", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "%", 
+            "out_name": "shrubFrac", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "talknat": {
+            "comment": "total alkalinity equivalent concentration (including carbonate, borate, phosphorus, silicon, and nitrogen components) at preindustrial atmospheric xCO2", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Natural Total Alkalinity", 
+            "standard_name": "seawater_alkalinity_expressed_as_mole_equivalent_natural_component", 
+            "modeling_realm": "", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "0", 
+            "units": "mol m-3", 
+            "out_name": "talknat", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "osaltrmadvect": {
+            "comment": "", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Tendency of Sea Water Salinity Expressed as Salt Content due to Residual Mean Advection", 
+            "standard_name": "tendency_of_sea_water_salinity_expressed_as_salt_content_due_to_residual_mean_advection", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg/m2/s", 
+            "out_name": "osaltrmadvect", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "residualFrac": {
+            "comment": "Percentage of entire grid cell  that is land and is covered by  neither vegetation nor bare-soil (e.g., urban, ice, lakes, etc.)", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Percentage of Grid Cell that is Land but Neither Vegetation-Covered nor Bare Soil", 
+            "standard_name": "area_fraction", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "%", 
+            "out_name": "residualFrac", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "fahUrb": {
+            "comment": "Anthropogenic heat flux due to human activities such as space heating and cooling or traffic or other energy consumption", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Anthropogenic heat flux ", 
+            "standard_name": "", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "W m-2", 
+            "out_name": "fahUrb", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "O17wv": {
+            "comment": "Roche - LSCE", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "O17 in water vapor", 
+            "standard_name": "?", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "", 
+            "out_name": "O17wv", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "dfe": {
+            "comment": "Dissolved iron in sea water,  including both Fe2+ and Fe3+ ions (but not particulate detrital iron)", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Dissolved Iron Concentration", 
+            "standard_name": "mole_concentration_of_dissolved_iron_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3", 
+            "out_name": "dfe", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "c14Land": {
+            "comment": "as specified by C4MIP", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Mass of 14C in all terrestrial carbon pools", 
+            "standard_name": "total_land_c14", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg m-2", 
+            "out_name": "c14Land", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "fLuc": {
+            "comment": "Carbon mass flux per unit area into atmosphere due to human changes to land (excluding forest regrowth) accounting possibly for different time-scales related to fate of the wood, for example.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "valid_min": "", 
+            "long_name": "Net Carbon Mass Flux into Atmosphere due to Land Use Change", 
+            "standard_name": "surface_net_upward_mass_flux_of_carbon_dioxide_expressed_as_carbon_due_to_emission_from_anthropogenic_land_use_change", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "fLuc", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "laiLut": {
+            "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 time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "leaf area index on land use tile", 
+            "standard_name": "", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "m2 of leaves/m2 of tile area", 
+            "out_name": "laiLut", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "evspsblsoi": {
+            "comment": "Water evaporation from soil (including sublimation).", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "valid_min": "", 
+            "long_name": "Water Evaporation from Soil", 
+            "standard_name": "water_evaporation_flux_from_soil", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "evspsblsoi", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "fProductDecomp": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "decomposition out of product pools to CO2 in atmos", 
+            "standard_name": "Carbon_flux_out_of_storage_product_pools_into_atmos", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg C m-2 s-1", 
+            "out_name": "fProductDecomp", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "od550dust": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0.0", 
+            "long_name": "dust aod at 550nm", 
+            "standard_name": "atmosphere_optical_thickness_due_to_dust_ambient_aerosol", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "1.0", 
+            "out_name": "od550dust", 
+            "type": "real", 
+            "valid_max": "1000.0", 
+            "ok_max_mean_abs": ""
+        }, 
+        "H2p": {
+            "comment": "Roche - LSCE", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "2H in total precipitation", 
+            "standard_name": "?", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "", 
+            "out_name": "H2p", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "H2s": {
+            "comment": "Roche - LSCE", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "2H in solid precipitation", 
+            "standard_name": "?", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "", 
+            "out_name": "H2s", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "nh4": {
+            "comment": "", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Dissolved Ammonium Concentration", 
+            "standard_name": "mole_concentration_of_ammonium_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3", 
+            "out_name": "nh4", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "pfull": {
+            "comment": "Air pressure on model levels", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Pressure on Model Levels", 
+            "standard_name": "air_pressure", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "Pa", 
+            "out_name": "pfull", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "mrlso": {
+            "comment": "as specified by C4MIP", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Soil Liquid Water Content ", 
+            "standard_name": "soil_liquid_water_content", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg m-2", 
+            "out_name": "mrlso", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "opottempmint": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "", 
+            "standard_name": "integral_wrt_depth_of_product_of_sea_water_density_and_potential_temperature", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "0", 
+            "units": "degC kg/m2", 
+            "out_name": "opottempmint", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "rss": {
+            "comment": "Net downward shortwave radiation at the surface", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Net Shortwave Surface Radiation", 
+            "standard_name": "surface_net_downward_shortwave_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "rss", 
+            "type": "", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "nStem": {
+            "comment": "including sapwood and hardwood.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Nitrogen Mass in Stem", 
+            "standard_name": "stem_nitrogen_content", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg N/m2", 
+            "out_name": "nStem", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "mrfso": {
+            "comment": "The mass per unit area (summed over all model layers) of frozen water.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Soil Frozen Water Content", 
+            "standard_name": "soil_frozen_water_content", 
+            "modeling_realm": "land landIce", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "-419", 
+            "units": "kg m-2", 
+            "out_name": "mrfso", 
+            "type": "real", 
+            "valid_max": "5763", 
+            "ok_max_mean_abs": "940.3"
+        }, 
+        "nMineralNO3": {
+            "comment": "SUM of nitrate over all soil layers", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Mineral nitrate in the soil", 
+            "standard_name": "mineral_no3_soil_nitrogen_content", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg N/m2", 
+            "out_name": "nMineralNO3", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "rsutna": {
+            "comment": "Based on Ghan (2013, ACP)", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "TOA Outgoing Clean-Sky Shortwave Radiation", 
+            "standard_name": "toa_outgoing_shortwave_flux_no_aerosol", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "W m-2", 
+            "out_name": "rsutna", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "gpp": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "down", 
+            "valid_min": "", 
+            "long_name": "Carbon Mass Flux out of Atmosphere due to Gross Primary Production on Land", 
+            "standard_name": "gross_primary_productivity_of_carbon", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "gpp", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "wetlandCH4prod": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Grid averaged methane production (methanogenesis) from wetlands", 
+            "standard_name": "wetland_methane_production", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg CH4 m-2 s-1", 
+            "out_name": "wetlandCH4prod", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "rhLut": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "soil heterotrophic respiration on land use tile", 
+            "standard_name": "heterotrophic_respiration_carbon_flux", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg m-2 s-1", 
+            "out_name": "rhLut", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "expc": {
+            "comment": "Downward flux of particulate organic carbon", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "down", 
+            "valid_min": "", 
+            "long_name": "Downward Flux of Particulate Organic Carbon", 
+            "standard_name": "sinking_mole_flux_of_particulate_organic_matter_expressed_as_carbon_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-2 s-1", 
+            "out_name": "expc", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "cLitterCwd": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Carbon Mass in Coarse Woody Debris", 
+            "standard_name": "litter_wood_debris_carbon_content", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg C/m2", 
+            "out_name": "cLitterCwd", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "sf6": {
+            "comment": "", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Moles Per Unit Mass of SF6 in Sea Water", 
+            "standard_name": "moles_of_sf6_per_unit_mass_in_sea_water", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "0", 
+            "units": "mol kg-1", 
+            "out_name": "sf6", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "ap_bnds": {
+            "units": "Pa", 
+            "long_name": "vertical coordinate formula term: ap(k+1/2)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "fVegSoil": {
+            "comment": "Carbon mass flux per unit area from vegetation directly into soil, without intermediate conversion to litter.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Total Carbon Mass Flux from Vegetation Directly to Soil", 
+            "standard_name": "carbon_mass_flux_into_soil_from_vegetation_excluding_litter", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "fVegSoil", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "rlusLut": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "surface upwelling longwave on land use tile", 
+            "standard_name": "surface_upwelling_longwave_flux_in_air", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "W m-2", 
+            "out_name": "rlusLut", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "fN2O": {
+            "comment": "as specified by C4MIP", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Total land N2O flux ", 
+            "standard_name": "land_net_n2o_flux", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg m-2 s-1", 
+            "out_name": "fN2O", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "osalttend": {
+            "comment": "Tendency of salt content for a grid cell from all processes.", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "tendency of sea water salinity expressed as salt content", 
+            "standard_name": "tendency_of_sea_water_salinity_expressed_as_salt_content", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg/m2/s", 
+            "out_name": "osalttend", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "fNVegSoil": {
+            "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", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Total Nitrogen Mass Flux from Vegetation Directly to Soil", 
+            "standard_name": "nitrogen_mass_flux_into_soil_from_vegetation_excluding_litter", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg N m-2 s-1", 
+            "out_name": "fNVegSoil", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "fBNFsymb": {
+            "comment": "as specified by C4MIP", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "symbiontic biological nitrogen fixation", 
+            "standard_name": "symbiontic_biological_nitrogen_fixation", 
+            "modeling_realm": "land", 
+            "cell_measures": "", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg m-2 s-1", 
+            "out_name": "fBNFsymb", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "gppc14": {
+            "comment": "as specified by C4MIP", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Mass Flux of 14C out of Atmosphere due to Gross Primary Production on Land", 
+            "standard_name": "gross_primary_productivity_of_c14", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg m-2 s-1", 
+            "out_name": "gppc14", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "gppc13": {
+            "comment": "as specified by C4MIP", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Mass Flux of 13C out of Atmosphere due to Gross Primary Production on Land", 
+            "standard_name": "gross_primary_productivity_of_c13", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg m-2 s-1", 
+            "out_name": "gppc13", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "lialb": {
+            "comment": "Mean surface albedo of entire land ice covered part of the grid cell", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Land ice or snow albedo", 
+            "standard_name": "surface_albedo", 
+            "modeling_realm": "landIce", 
+            "cell_measures": "time: mean area: mean where ice_sheet", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "1.0", 
+            "out_name": "lialb", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "od550aer": {
+            "comment": "AOD from the ambient aerosls (i.e., includes aerosol water).  Does not include AOD from stratospheric aerosols if these are prescribed but includes other possible background aerosol types. Needs a comment attribute 'wavelength: 550 nm'", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0.0", 
+            "long_name": "ambient aerosol optical thickness at 550 nm", 
+            "standard_name": "atmosphere_optical_thickness_due_to_ambient_aerosol", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "1.0", 
+            "out_name": "od550aer", 
+            "type": "real", 
+            "valid_max": "500.0", 
+            "ok_max_mean_abs": ""
+        }, 
+        "fClAntLut": {
+            "comment": "If  a model has explicit anthropogenic pools, clearance should not include fire", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "carbon from land clearing for land use tile that enters anthropogenic pools", 
+            "standard_name": "", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg C m-2 s-1", 
+            "out_name": "fClAntLut", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "fNLandToOcean": {
+            "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", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Lateral transfer of nitrogen out of gridcell that eventually goes into ocean", 
+            "standard_name": "nitrogen_mass_flux_into_ocean_from_rivers", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg N m-2 s-1", 
+            "out_name": "fNLandToOcean", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "thetaot": {
+            "comment": "Vertical average of the sea water potential temperature through the whole ocean depth", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "-9.37e+17", 
+            "long_name": "Vertically Averaged Sea Water Potential Temperature", 
+            "standard_name": "sea_water_potential_temperature", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "-9.37e+17", 
+            "units": "K", 
+            "out_name": "thetaot", 
+            "type": "real", 
+            "valid_max": "1.05e+20", 
+            "ok_max_mean_abs": "1.05e+20"
+        }, 
+        "mrsosLut": {
+            "comment": "the mass of water in all phases in a thin surface layer; integrate over uppermost 10cm", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Moisture in Upper Portion of Soil Column of land use tile", 
+            "standard_name": "moisture_content_of_soil_layer", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg m-2", 
+            "out_name": "mrsosLut", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "cLitter": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Carbon Mass in Litter Pool", 
+            "standard_name": "litter_carbon_content", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2", 
+            "out_name": "cLitter", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "bsi": {
+            "comment": "Sum of particulate silica component concentrations", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Particulate Biogenic Silica Concentration", 
+            "standard_name": "mole_concentration_of_particulate_matter_expressed_as_silicon_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3", 
+            "out_name": "bsi", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "fric": {
+            "comment": "Inorganic Carbon loss to sediments", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Downward Inorganic Carbon Flux at Ocean Bottom", 
+            "standard_name": "tendency_of_ocean_mole_content_of_inorganic_carbon_due_to_sedimentation", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "0", 
+            "units": "mol m-2 s-1", 
+            "out_name": "fric", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "prveg": {
+            "comment": "The precipitation flux that is intercepted by the vegetation canopy (if present in model) before reaching the ground.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Precipitation onto Canopy", 
+            "standard_name": "precipitation_flux_onto_canopy", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "prveg", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "chlcalc": {
+            "comment": "chlorophyll concentration from the calcite-producing phytoplankton component alone", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Mass Concentration of Calcareous Phytoplankton expressed as Chlorophyll in Sea Water", 
+            "standard_name": "mass_concentration_of_calcareous_phytoplankton_expressed_as_chlorophyll_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-3", 
+            "out_name": "chlcalc", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "lifmassbf": {
+            "comment": "Total mass balance at the ice front (or vertical margin). It includes both iceberg calving and melt on vertical ice front", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Land ice vertical front mass balance flux", 
+            "standard_name": "land_ice_front_mass_balance_flux", 
+            "modeling_realm": "landIce", 
+            "cell_measures": "time: mean area: mean where ice_sheet", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg m-2 s-1", 
+            "out_name": "lifmassbf", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "osaltdiff": {
+            "comment": "Tendency of salt content for a grid cell from parameterized dianeutral mixing.", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_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_dianeutral_mixing", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg/m2/s", 
+            "out_name": "osaltdiff", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "reffclis": {
+            "comment": "This is defined as the in-cloud ratio of the third moment over the second moment of the particle size distribution (obtained by considering only the cloudy portion of the grid cell).", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Hydrometeor Effective Radius of Stratiform Cloud Ice", 
+            "standard_name": "effective_radius_of_stratiform_cloud_ice_particle", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "m", 
+            "out_name": "reffclis", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "sigma": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: sigma(k)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "reffclic": {
+            "comment": "This is defined as the in-cloud ratio of the third moment over the second moment of the particle size distribution (obtained by considering only the cloudy portion of the grid cell).", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Hydrometeor Effective Radius of Convective Cloud Ice", 
+            "standard_name": "effective_radius_of_convective_cloud_ice_particle", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "m", 
+            "out_name": "reffclic", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "treeFracNdlDcd": {
+            "comment": "as specified by C4MIP", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Needleleaf deciduous tree fraction", 
+            "standard_name": "tree_fraction_needleleaf_deciduous", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "%", 
+            "out_name": "treeFracNdlDcd", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "depdust": {
+            "comment": "Balkanski - LSCE", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Total Deposition Rate of Dust", 
+            "standard_name": "tendency_of_atmosphere_mass_content_of_dust_dry_aerosol_particles_due_to_total_deposition", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg m-2 s-1", 
+            "out_name": "depdust", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "fDeforestToAtmos": {
+            "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", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Deforested biomass that goes into atmosphere as a result of anthropogenic land use change", 
+            "standard_name": "surface_net_upward_mass_flux_of_carbon_dioxide_expressed_as_carbon_due_to_emission_from_anthropogenic_land_use_change?", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg C m-2 s-1", 
+            "out_name": "fDeforestToAtmos", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "reffclwc": {
+            "comment": "Droplets are liquid.  The effective radius is defined as the ratio of the third moment over the second moment of the particle size distribution and the time-mean should be calculated, weighting the individual samples by the cloudy fraction of the grid cell.", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Convective Cloud Droplet Effective Radius", 
+            "standard_name": "effective_radius_of_convective_cloud_liquid_water_particle", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "m", 
+            "out_name": "reffclwc", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "ocontempdiff": {
+            "comment": "Tendency of heat content for a grid cell from parameterized dianeutral mixing. Reported only for models that use conservative temperature as prognostic field.", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_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_dianeutral_mixing", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "0", 
+            "units": "W m-2", 
+            "out_name": "ocontempdiff", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "netAtmosLandC14Flux": {
+            "comment": "as specified by C4MIP", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Net Mass Flux of 14C between atmosphere and land (positive into land) as a result of all processes.", 
+            "standard_name": "net_atmos_to_land_C14_flux", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg m-2 s-1", 
+            "out_name": "netAtmosLandC14Flux", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "bfe": {
+            "comment": "Sum of particulate organic iron component concentrations", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Particulate Biogenic Iron Concentration", 
+            "standard_name": "mole_concentration_of_particulate_organic_matter_expressed_as_iron_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3", 
+            "out_name": "bfe", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "reffclws": {
+            "comment": "Droplets are liquid.  The effective radius is defined as the ratio of the third moment over the second moment of the particle size distribution and the time-mean should be calculated, weighting the individual samples by the cloudy fraction of the grid cell.", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Stratiform Cloud Droplet Effective Radius", 
+            "standard_name": "effective_radius_of_stratiform_cloud_liquid_water_particle", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "m", 
+            "out_name": "reffclws", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "opottempdiff": {
+            "comment": "Tendency of heat content for a grid cell from parameterized dianeutral mixing. Reported only for models that use potential temperature as prognostic field.", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_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_dianeutral_mixing", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "0", 
+            "units": "W m-2", 
+            "out_name": "opottempdiff", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "tntrscs": {
+            "comment": "Tendency of Air Temperature due to Clear Sky Shortwave Radiative Heating", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Tendency of Air Temperature due to Clear Sky Shortwave Radiative Heating", 
+            "standard_name": "tendency_of_air_temperature_due_to_shortwave_heating_assuming_clear_sky", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "K s-1", 
+            "out_name": "tntrscs", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "treeFrac": {
+            "comment": "Percentage of entire grid cell  that is covered by trees.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Percentage Tree Cover", 
+            "standard_name": "area_fraction", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "%", 
+            "out_name": "treeFrac", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "fVegLitterSenescence": {
+            "comment": "needed to separate changing vegetation C turnover times resulting from changing allocation versus changing mortality", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Total Carbon Mass Flux from Vegetation to Litter as a result of leaf, branch, and root senescence", 
+            "standard_name": "senescence_litter_carbon_flux", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg C m-2 s-1", 
+            "out_name": "fVegLitterSenescence", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "mrsos": {
+            "comment": "The mass of water in all phases in the upper 10cm of the  soil layer.", 
+            "dimensions": "longitude latitude sdepth time", 
+            "positive": "", 
+            "valid_min": "-2.008", 
+            "long_name": "Moisture in Upper Portion of Soil Column", 
+            "standard_name": "moisture_content_of_soil_layer", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "-35.89", 
+            "units": "kg m-2", 
+            "out_name": "mrsos", 
+            "type": "real", 
+            "valid_max": "146.5", 
+            "ok_max_mean_abs": "123.3"
+        }, 
+        "lwtoacs": {
+            "comment": "Balkanski - LSCE", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Clear-sky TOA Longwave radiative flux due to Dust", 
+            "standard_name": "tendency_of_clear_sky_top_of_atmosphere_longwave_flux_to_dust_ambient_aerosol_particles   2D field radiative properties", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "W m-2", 
+            "out_name": "lwtoacs", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "b": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: b(k)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "icfriver": {
+            "comment": "Inorganic Carbon supply to ocean through runoff (separate from gas exchange)", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Flux of Inorganic Carbon Into Ocean Surface by Runoff", 
+            "standard_name": "tendency_of_ocean_mole_content_of_inorganic_carbon_due_to_runoff_and_sediment_dissolution", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "0", 
+            "units": "mol m-2 s-1", 
+            "out_name": "icfriver", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "graz": {
+            "comment": "", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Total Grazing of Phytoplankton by Zooplankton", 
+            "standard_name": "tendency_of_mole_concentration_of_organic_matter_expressed_as_carbon_in_sea_water_due_to_grazing_of_phytoplankton", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3 s-1", 
+            "out_name": "graz", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "fBNFasymb": {
+            "comment": "as specified by C4MIP", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "asymbiontic biological nitrogen fixation", 
+            "standard_name": "asymbiontic_biological_nitrogen_fixation", 
+            "modeling_realm": "land", 
+            "cell_measures": "", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg m-2 s-1", 
+            "out_name": "fBNFasymb", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "tnhusscp": {
+            "comment": "", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Tendency of Specific Humidity Due to Stratiform Clouds and Precipitation", 
+            "standard_name": "tendency_of_specific_humidity_due_to_stratiform_clouds_and_precipitation", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "s-1", 
+            "out_name": "tnhusscp", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "vegHeightTree": {
+            "comment": "as specified by C4MIP", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Vegetation height averaged over the tree fraction of a grid cell.", 
+            "standard_name": "canopy_height", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "m", 
+            "out_name": "vegHeightTree", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "rhLitter": {
+            "comment": "Needed to calculate litter bulk turnover time. Includes respiration from CWD as well.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Carbon Mass Flux into Atmosphere due to Heterotrophic Respiration from Litter on Land", 
+            "standard_name": "heterotrophic_respiration_carbon_flux_from_litter", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg m-2 s-1", 
+            "out_name": "rhLitter", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "rsutnacs": {
+            "comment": "Based on Ghan (2013, ACP)", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "TOA Outgoing Clean-Sky Clear-Sky Shortwave Radiation", 
+            "standard_name": "toa_outgoing_shortwave_flux_no_aerosol_assuming_clear_sky", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "W m-2", 
+            "out_name": "rsutnacs", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "burntFractionAll": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Fraction of grid cell burned due to all fires including natural and anthropogenic fires and those associated with anthropogenic land use change", 
+            "standard_name": "burned_area_fraction OR area_fraction", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "fraction", 
+            "out_name": "burntFractionAll", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "nRoot": {
+            "comment": "including fine and coarse roots.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Nitrogen Mass in Roots", 
+            "standard_name": "root_nitrogen_content", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg N/m2", 
+            "out_name": "nRoot", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "od550aerstrat": {
+            "comment": "From tropopause to stratopause as defined by the model", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Stratospheric Aerosol Optical Depth at 550nm", 
+            "standard_name": "strat_aerosol_optical_depth", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "1.0", 
+            "out_name": "od550aerstrat", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "a_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: a(k+1/2)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "vegHeightGrass": {
+            "comment": "as specified by C4MIP", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Vegetation height averaged over the grass fraction of a grid cell.", 
+            "standard_name": "canopy_height", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "m", 
+            "out_name": "vegHeightGrass", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "swtoacsdust": {
+            "comment": "proposed name: toa_instantaneous_shortwave_forcing_due_to_dust_ambient_aerosol_assuming_clear_sky", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "-1000.0", 
+            "long_name": "clear sky sw-rf dust at toa", 
+            "standard_name": "toa_instantaneous_shortwave_forcing_due_to_dust_ambient_aerosol_assuming_clear_sky", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "swtoacsdust", 
+            "type": "real", 
+            "valid_max": "1000.0", 
+            "ok_max_mean_abs": ""
+        }, 
+        "co3": {
+            "comment": "", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Mole Concentration of Carbonate ion in Seawater", 
+            "standard_name": "mole_concentration_of_carbonate_ion_in_seawater", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3", 
+            "out_name": "co3", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "mrsol": {
+            "comment": "as specified by C4MIP", 
+            "dimensions": "longitude latitude sdepth time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Total water content of soil layer", 
+            "standard_name": "total_moisture_content_of_soil_layer", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg m-2", 
+            "out_name": "mrsol", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "baresoilFrac": {
+            "comment": "Percentage of entire grid cell  that is covered by bare soil.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Bare Soil Percentage", 
+            "standard_name": "area_fraction", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "%", 
+            "out_name": "baresoilFrac", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "hcont300": {
+            "comment": "Used in PMIP2", 
+            "dimensions": "longitude latitude time p300", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Heat content of upper 300 meters", 
+            "standard_name": "heat_content_of_ocean_layer", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "0", 
+            "units": "m K", 
+            "out_name": "hcont300", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "nLeaf": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Nitrogen Mass in Leaves", 
+            "standard_name": "leaf_nitrogen_content", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg N/m2", 
+            "out_name": "nLeaf", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "wo": {
+            "comment": "", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "-9.37e+17", 
+            "long_name": "W", 
+            "standard_name": "upward_sea_water_velocity", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "-9.37e+17", 
+            "units": "m s-1", 
+            "out_name": "wo", 
+            "type": "real", 
+            "valid_max": "1.05e+20", 
+            "ok_max_mean_abs": "1.05e+20"
+        }, 
+        "fVegLitterMortality": {
+            "comment": "needed to separate changing vegetation C turnover times resulting from changing allocation versus changing mortality", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Total Carbon Mass Flux from Vegetation to Litter as a result of mortality", 
+            "standard_name": "mortality_litter_carbon_flux", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg C m-2 s-1", 
+            "out_name": "fVegLitterMortality", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "dissi14cabio": {
+            "comment": "Abiotic Dissolved inorganic 14carbon (CO3+HCO3+H2CO3) concentration", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Abiotic Dissolved Inorganic 14Carbon Concentration", 
+            "standard_name": "mole_concentration_of_dissolved_inorganic_14carbon_in_sea_water_abiotic_component", 
+            "modeling_realm": "", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "0", 
+            "units": "mol m-3", 
+            "out_name": "dissi14cabio", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "cLitterSubSurf": {
+            "comment": "sub-surface litter pool fed by root inputs.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Carbon Mass in Below-Ground Litter", 
+            "standard_name": "subsurface_litter_carbon_content", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg m-2", 
+            "out_name": "cLitterSubSurf", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "waterDpth": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Water table depth from surface.", 
+            "standard_name": "water_table_depth", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "m", 
+            "out_name": "waterDpth", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "fNVegLitter": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Total Nitrogen Mass Flux from Vegetation to Litter", 
+            "standard_name": "litter_nitrogen_flux", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg N m-2 s-1", 
+            "out_name": "fNVegLitter", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "mrroLut": {
+            "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 time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Total runoff from land use tile ", 
+            "standard_name": "runoff_flux", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg m-2 s-1", 
+            "out_name": "mrroLut", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "fNdep": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "dry and wet deposition of  reactive nitrogen onto land", 
+            "standard_name": "deposition_of_nitrogen_onto_land", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg N m-2 s-1", 
+            "out_name": "fNdep", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "ocfriver": {
+            "comment": "Organic Carbon supply to ocean through runoff (separate from gas exchange)", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Flux of Organic Carbon Into Ocean Surface by Runoff", 
+            "standard_name": "tendency_of_ocean_mole_content_of_organic_carbon_due_to_runoff_and_sediment_dissolution", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "0", 
+            "units": "mol m-2 s-1", 
+            "out_name": "ocfriver", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "c14Soil": {
+            "comment": "as specified by C4MIP", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Mass of 14C in Soil Pool", 
+            "standard_name": "soil_c14_content", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg m-2", 
+            "out_name": "c14Soil", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "tntscp": {
+            "comment": "", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Tendency of Air Temperature Due to Stratiform Clouds and Precipitation", 
+            "standard_name": "tendency_of_air_temperature_due_to_stratiform_clouds_and_precipitation", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "K s-1", 
+            "out_name": "tntscp", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "fDeforestToProduct": {
+            "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", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Deforested biomass that goes into product pool as a result of anthropogenic land use change", 
+            "standard_name": "deforested_biomass_into_product_pool_due_to_anthorpogenic_land_use_change", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg C m-2 s-1", 
+            "out_name": "fDeforestToProduct", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "fNgasFire": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Total N lost to the atmosphere (including NHx, NOx, N2O, N2) from fire.", 
+            "standard_name": "land_nitrogen_lost_to_atmosphere_due to fire", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg N m-2 s-1", 
+            "out_name": "fNgasFire", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "fNProduct": {
+            "comment": "When land use change results in deforestation of natural vegetation (trees or grasslands) then natural biomass is removed. The treatment of deforested biomass differs significantly across models, but it shoule be straight-forward to compare deforested biomass across models.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Deforested or harvested biomass as a result of anthropogenic land use or change", 
+            "standard_name": "nitrogen_mass_flux_to_product_pool_due_to_anthorpogenic_activity", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg N m-2 s-1", 
+            "out_name": "fNProduct", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "eta": {
+            "units": "m", 
+            "long_name": "Sea Surface Height formula term: thetao", 
+            "type": "real", 
+            "dimensions": "longitude latitude time"
+        }, 
+        "rsus": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "valid_min": "-0.006589", 
+            "long_name": "surface upwelling shortwave radiation", 
+            "standard_name": "surface_upwelling_shortwave_flux_in_air", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean area: mean where ice_sheet", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "26.22", 
+            "units": "W m-2", 
+            "out_name": "rsus", 
+            "type": "real", 
+            "valid_max": "422.2", 
+            "ok_max_mean_abs": "43.77"
+        }, 
+        "nMineral": {
+            "comment": "SUM of ammonium, nitrite, nitrate, etc over all soil layers", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Mineral nitrogen in the soil", 
+            "standard_name": "mineral_soil_nitrogen_content", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg N/m2", 
+            "out_name": "nMineral", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "pop": {
+            "comment": "sum of particulate organic phosphorus component concentrations", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Particulate Organic Phosphorus Concentration", 
+            "standard_name": "mole_concentration_of_particulate_organic_matter_expressed_as_phosphorus_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3", 
+            "out_name": "pop", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "pon": {
+            "comment": "sum of particulate organic nitrogen component concentrations", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Particulate Organic Nitrogen Concentration", 
+            "standard_name": "mole_concentration_of_particulate_organic_matter_expressed_as_nitrogen_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3", 
+            "out_name": "pon", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "t20d": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "20C isotherm depth", 
+            "standard_name": "depth_of_isosurface_of_sea_water_potential_temperature", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "m", 
+            "out_name": "t20d", 
+            "type": "", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "raLut": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "plant respiration on land use tile", 
+            "standard_name": "plant_respiration_carbon_flux", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg m-2 s-1", 
+            "out_name": "raLut", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "chlmisc": {
+            "comment": "Chlorophyll from additional phytoplankton component concentrations alone", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Other Phytoplankton Chlorophyll Mass Concentration", 
+            "standard_name": "mass_concentration_of_miscellaneous_phytoplankton_expressed_as_chlorophyll_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-3", 
+            "out_name": "chlmisc", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "pr": {
+            "comment": "includes both liquid and solid phases", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Precipitation", 
+            "standard_name": "precipitation_flux", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean area: mean where ice_sheet", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "2.156e-05", 
+            "units": "kg m-2 s-1", 
+            "out_name": "pr", 
+            "type": "real", 
+            "valid_max": "0.001254", 
+            "ok_max_mean_abs": "3.215e-05"
+        }, 
+        "ps": {
+            "units": "Pa", 
+            "long_name": "Surface Air Pressure", 
+            "type": "real", 
+            "dimensions": "longitude latitude time"
+        }, 
+        "pp": {
+            "comment": "total primary (organic carbon) production by phytoplankton", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Primary Carbon Production by Phytoplankton", 
+            "standard_name": "tendency_of_mole_concentration_of_particulate_organic_matter_expressed_as_carbon_in_sea_water_due_to_net_primary_production", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3 s-1", 
+            "out_name": "pp", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "opottemppmdiff": {
+            "comment": "Tendency of heat content for a grid cell from parameterized mesoscale eddy diffusion. Reported only for models that use potential temperature as prognostic field.", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_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_diffusion", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "0", 
+            "units": "W m-2", 
+            "out_name": "opottemppmdiff", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "od550aerso": {
+            "comment": "Balkanski - LSCE", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Stratospheric Optical depth at 550 nm (all aerosols) 2D-field (here we limit the computation of OD to the stratosphere only)", 
+            "standard_name": "?", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "1.0", 
+            "out_name": "od550aerso", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "cVeg": {
+            "comment": "Carbon mass per unit area in vegetation.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Carbon Mass in Vegetation", 
+            "standard_name": "vegetation_carbon_content", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2", 
+            "out_name": "cVeg", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "fFireAll": {
+            "comment": "Only total fire emissions can be compared to observations.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Carbon Mass Flux into Atmosphere due to CO2 emissions from Fire resulting from all sources including natural, anthropogenic and land use change.", 
+            "standard_name": "fire_CO2_emissions_from_all_sources", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg C m-2 s-1", 
+            "out_name": "fFireAll", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "fNdepox": {
+            "comment": "as specified by C4MIP", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "dry and wet deposition of oxidised reactive nitrogen onto land", 
+            "standard_name": "deposition_of_oxidised_nitrogen_onto_land", 
+            "modeling_realm": "land", 
+            "cell_measures": "", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg m-2 s-1", 
+            "out_name": "fNdepox", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "ph": {
+            "comment": "negative log of hydrogen ion concentration with the concentration expressed as mol H kg-1.", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "pH", 
+            "standard_name": "sea_water_ph_reported_on_total_scale", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "1.0", 
+            "out_name": "ph", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "nLand": {
+            "comment": "as specified by C4MIP", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Total nitrogen in all terrestrial nitrogen pools", 
+            "standard_name": "total_land_nitrogen", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg m-2", 
+            "out_name": "nLand", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "sedustCI": {
+            "comment": "Balkanski - LSCE", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Sedimentation Flux of dust mode coarse insoluble", 
+            "standard_name": "tendency_of_atmosphere_mass_content_of_dust_dry_aerosol_particles_due_to_sedimentation", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg m-2 s-1", 
+            "out_name": "sedustCI", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "po4": {
+            "comment": "", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Dissolved Phosphate Concentration", 
+            "standard_name": "mole_concentration_of_phosphate_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3", 
+            "out_name": "po4", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "osaltpadvect": {
+            "comment": "Tendency of salt content for a grid cell from parameterized eddy advection (any form of eddy advection).", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "tendency of sea water salinity expressed as salt content due to parameterized eddy advection", 
+            "standard_name": "tendency_of_sea_water_salinity_expressed_as_salt_content_due_to_parameterized_eddy_advection", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg/m2/s", 
+            "out_name": "osaltpadvect", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "nLitterFine": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Nitrogen Mass in fine litter (non CWD)", 
+            "standard_name": "fine_litter_nitrogen_content", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg N/m2", 
+            "out_name": "nLitterFine", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "dissi14c": {
+            "comment": "as specified by C4MIP", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Concentration of DI14C", 
+            "standard_name": "mole_concentration_of_dissolved_inorganic_c14_in_sea_water", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "mol m-3", 
+            "out_name": "dissi14c", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "intvaw": {
+            "comment": "Used in PMIP2", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Vertically integrated Northward moisture transport (Mass_weighted_vertical integral of the product of northward wind by total water mass per unit mass)", 
+            "standard_name": "vertical_integral_northward_wind_by_total_water", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg m-1 s-1", 
+            "out_name": "intvaw", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "p0": {
+            "units": "Pa", 
+            "long_name": "vertical coordinate formula term: reference pressure", 
+            "type": "", 
+            "dimensions": ""
+        }, 
+        "ap": {
+            "units": "Pa", 
+            "long_name": "vertical coordinate formula term: ap(k)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "treeFracNdlEvg": {
+            "comment": "as specified by C4MIP", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Needleleaf evergreen tree fraction", 
+            "standard_name": "tree_fraction_needleleaf_evergreen", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "%", 
+            "out_name": "treeFracNdlEvg", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "mmrss": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0.0", 
+            "long_name": "Sea Salt mass mixing ratio", 
+            "standard_name": "mass_fraction_of_seasalt_dry_aerosol_in_air", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg kg-1", 
+            "out_name": "mmrss", 
+            "type": "real", 
+            "valid_max": "1.0", 
+            "ok_max_mean_abs": ""
+        }, 
+        "epp100": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Downward Flux of Particulate Phosphorus", 
+            "standard_name": "sinking_mole_flux_of_particulate_phosphorus_in_sea_water", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "0", 
+            "units": "mol m-2 s-1", 
+            "out_name": "epp100", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "fClAtmLut": {
+            "comment": "If  a model allows cleared carbon to enter directly into atmosphere (not via anthropogenic pools), should not include fire", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "carbon from land clearance for land use tile that enters atmosphere", 
+            "standard_name": "", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg C m-2 s-1", 
+            "out_name": "fClAtmLut", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "mrsll": {
+            "comment": "as specified by C4MIP", 
+            "dimensions": "longitude latitude sdepth time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Liquid water content of soil layer", 
+            "standard_name": "liquid_moisture_content_of_soil_layer", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg m-2", 
+            "out_name": "mrsll", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "dissicnat": {
+            "comment": "Dissolved inorganic carbon (CO3+HCO3+H2CO3) concentration at preindustrial atmospheric xCO2", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Natural Dissolved Inorganic Carbon Concentration", 
+            "standard_name": "mole_concentration_of_dissolved_inorganic_carbon_in_sea_water_natural_component", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "0", 
+            "units": "mol m-3", 
+            "out_name": "dissicnat", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "acabf": {
+            "comment": "Specific mass balance of land ice (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", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Land Ice Surface Mass Balance flux", 
+            "standard_name": "land_ice_surface_specific_mass_balance_flux", 
+            "modeling_realm": "landIce", 
+            "cell_measures": "time: mean area: mean where ice_sheet", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg m-2 s-1", 
+            "out_name": "acabf", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "fNloss": {
+            "comment": "Not all models split losses into gasesous and leaching", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Total N lost (including NHx, NOx, N2O, N2 and leaching)", 
+            "standard_name": "land_nitrogen_lost", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg N m-2 s-1", 
+            "out_name": "fNloss", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "lwtoaasdust": {
+            "comment": "proposed name: toa_instantaneous_longwave_forcing_due_to_dust_ambient_aerosol", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "-1000.0", 
+            "long_name": "all sky lw-rf dust at toa", 
+            "standard_name": "toa_instantaneous_longwave_forcing_due_to_dust_ambient_aerosol", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "lwtoaasdust", 
+            "type": "real", 
+            "valid_max": "1000.0", 
+            "ok_max_mean_abs": ""
+        }, 
+        "intvadse": {
+            "comment": "Used in PMIP2", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Vertically integrated Northward dry transport (cp.T +zg).v (Mass_weighted_vertical integral of the product of northward wind by dry static_energy per mass unit)", 
+            "standard_name": "vertical_integral_northward_wind_by_dry_static_energy", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "1.e6 m-1 s-1 J", 
+            "out_name": "intvadse", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "pabigthetao": {
+            "comment": "", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Sea Water Added Conservative Temperature", 
+            "standard_name": "sea_water_added_conservative_temperature", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "0", 
+            "units": "degC", 
+            "out_name": "pabigthetao", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "intuaw": {
+            "comment": "Used in PMIP2", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Vertically integrated Eastward moisture transport (Mass_weighted_vertical integral of the product of eastward wind by total water mass per unit mass)", 
+            "standard_name": "vertical_integral_eastward_wind_by_total_water", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg m-1 s-1", 
+            "out_name": "intuaw", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "eparag100": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Downward Flux of Aragonite", 
+            "standard_name": "sinking_mole_flux_of_aragonite_expressed_as_carbon_in_sea_water", 
+            "modeling_realm": "", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "0", 
+            "units": "mol m-2 s-1", 
+            "out_name": "eparag100", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "phalf": {
+            "comment": "Air pressure on model half-levels", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Pressure on Model Half-Levels", 
+            "standard_name": "air_pressure", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "Pa", 
+            "out_name": "phalf", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "wetlandFrac": {
+            "comment": "as specified by C4MIP", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Fraction of a grid cell covered by wetland.", 
+            "standard_name": "wetland_fraction", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "%", 
+            "out_name": "wetlandFrac", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "o2sat": {
+            "comment": "", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Dissolved Oxygen Concentration at Saturation", 
+            "standard_name": "mole_concentration_of_molecular_oxygen_in_sea_water_at_saturation", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "0", 
+            "units": "mol m-3", 
+            "out_name": "o2sat", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "nppLut": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "net primary productivity on land use tile", 
+            "standard_name": "net_primary_land_productivity_of_carbon", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg C m-2 s-1", 
+            "out_name": "nppLut", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "zlev_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: zlev(k+1/2)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "raRoot": {
+            "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", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Total respiration from roots", 
+            "standard_name": "autotrophic_respiration_from_roots", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg m-2 s-1", 
+            "out_name": "raRoot", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "c14Veg": {
+            "comment": "as specified by C4MIP", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Mass of 14C in Vegetation", 
+            "standard_name": "vegetation_c14_content", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg m-2", 
+            "out_name": "c14Veg", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "lwsrfcsdust": {
+            "comment": "Balkanski - LSCE", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Clear-sky Surface Longwave radiative flux due to Dust", 
+            "standard_name": "tendency_of_clear_sky_surface_longwave_flux_to_dust_ambient_aerosol_particles", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "W m-2", 
+            "out_name": "lwsrfcsdust", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "fAnthDisturb": {
+            "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", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "carbon mass flux into atmosphere due to any human activity", 
+            "standard_name": "surface_upward_mass_flux_of_carbon_dioxide_expressed_as_carbon_due_to_anthrogpogenic_emission?", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg C m-2 s-1", 
+            "out_name": "fAnthDisturb", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "od443dust": {
+            "comment": "Balkanski - LSCE", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Optical thickness at 443 nm Dust", 
+            "standard_name": "atmosphere_optical_thickness_due_to_dust_ambient_aerosol_particles", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "1.0", 
+            "out_name": "od443dust", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "prthetao": {
+            "comment": "", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "", 
+            "standard_name": "sea_water_redistributed_potential_temperature", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "0", 
+            "units": "degC", 
+            "out_name": "prthetao", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "depth_c": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: depth_c", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "mrs1mLut": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Moisture in top 1 meter of land use tile soil column", 
+            "standard_name": "", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg m-2", 
+            "out_name": "mrs1mLut", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "cOther": {
+            "comment": "E.g. fruits, seeds, etc.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Carbon Mass in Vegetation Momponents other than Leaves, Stems and Roots", 
+            "standard_name": "other_vegegtation_components_carbon_content", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg C/m2", 
+            "out_name": "cOther", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "od865dust": {
+            "comment": "Balkanski - LSCE", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Optical thickness at 865 nm Dust", 
+            "standard_name": "atmosphere_optical_thickness_due_to_dust_ambient_aerosol_particles", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "1.0", 
+            "out_name": "od865dust", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "cRoot": {
+            "comment": "Carbon mass per unit area in roots, including fine and coarse roots.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Carbon Mass in Roots", 
+            "standard_name": "root_carbon_content", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg m-2", 
+            "out_name": "cRoot", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "treeFracBdlDcd": {
+            "comment": "as specified by C4MIP", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Broadleaf deciduous tree fraction", 
+            "standard_name": "tree_fraction_broadleaf_deciduous", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "%", 
+            "out_name": "treeFracBdlDcd", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "od550so4so": {
+            "comment": "Balkanski - LSCE", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Stratospheric Optical depth at 550 nm (sulphate only) 2D-field (here we limit the computation of OD to the stratosphere only)", 
+            "standard_name": "?", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "1.0", 
+            "out_name": "od550so4so", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "fNgas": {
+            "comment": "as specified by C4MIP", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Total N lost to the atmosphere (sum of NHx, NOx, N2O, N2)", 
+            "standard_name": "land_nitrogen_lost_to_atmosphere", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg m-2 s-1", 
+            "out_name": "fNgas", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "nVeg": {
+            "comment": "as specified by C4MIP", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Nitrogen Mass in Vegetation", 
+            "standard_name": "vegetation_nitrogen_content", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg m-2", 
+            "out_name": "nVeg", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "nLitterCwd": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Nitrogen Mass in Coarse Woody Debris", 
+            "standard_name": "litter_wood_debris_nitrogen_content", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg N/m2", 
+            "out_name": "nLitterCwd", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "nsigma": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: nsigma", 
+            "type": "integer", 
+            "dimensions": ""
+        }, 
+        "mrros": {
+            "comment": "The total surface run off leaving the land portion of the grid cell (excluding drainage through the base of the soil model).", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "-6.802e-06", 
+            "long_name": "Surface Run off", 
+            "standard_name": "surface_runoff_flux", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "-5.867e-06", 
+            "units": "kg m-2 s-1", 
+            "out_name": "mrros", 
+            "type": "real", 
+            "valid_max": "0.0009825", 
+            "ok_max_mean_abs": "1.302e-05"
+        }, 
+        "dissic": {
+            "comment": "Dissolved inorganic carbon (CO3+HCO3+H2CO3) concentration", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Dissolved Inorganic Carbon Concentration", 
+            "standard_name": "mole_concentration_of_dissolved_inorganic_carbon_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3", 
+            "out_name": "dissic", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "opottemppsmadvect": {
+            "comment": "Tendency of heat content for a grid cell from parameterized submesoscale eddy advection. Reported only for models that use potential temperature as prognostic field.", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_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_advection", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "0", 
+            "units": "W m-2", 
+            "out_name": "opottemppsmadvect", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "arag": {
+            "comment": "Sum of particulate aragonite components (e.g. Phytoplankton, Detrital, etc.)", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Aragonite Concentration", 
+            "standard_name": "mole_concentration_of_aragonite_expressed_as_carbon_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3", 
+            "out_name": "arag", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "rhc13": {
+            "comment": "as specified by C4MIP", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Mass Flux of 13C into Atmosphere due to Heterotrophic Respiration on Land", 
+            "standard_name": "heterotrophic_respiration_c13_flux", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg m-2 s-1", 
+            "out_name": "rhc13", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "lwsrfasdust": {
+            "comment": "Balkanski - LSCE", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "All-sky Surface Longwave radiative flux due to Dust", 
+            "standard_name": "tendency_of_all_sky_surface_longwave_flux_to_dust_ambient_aerosol_particles", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "W m-2", 
+            "out_name": "lwsrfasdust", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "rhc14": {
+            "comment": "as specified by C4MIP", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Mass Flux of 14C into Atmosphere due to Heterotrophic Respiration on Land", 
+            "standard_name": "heterotrophic_respiration_c14_flux", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg m-2 s-1", 
+            "out_name": "rhc14", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "cProduct": {
+            "comment": "Carbon mass per unit area in that has been removed from the environment through  landuse change.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Carbon Mass in Products of Landuse Change", 
+            "standard_name": "carbon_content_of_products_of_anthropogenic_land_use_change", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2", 
+            "out_name": "cProduct", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "fLitterFire": {
+            "comment": "Required for unambiguous separation of vegetation and soil + litter turnover times, since total fire flux draws from both sources", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Carbon Mass Flux from Litter, CWD or any non-living pool into Atmosphere due to CO2 Emission from all Fire", 
+            "standard_name": "fire_CO2_emissions_from_litter_carbon", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg C m-2 s-1", 
+            "out_name": "fLitterFire", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "osaltpsmadvect": {
+            "comment": "Tendency of salt content for a grid cell from parameterized submesoscale eddy advection.", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_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_advection", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg/m2/s", 
+            "out_name": "osaltpsmadvect", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "dpco2": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Delta PCO2", 
+            "standard_name": "surface_carbon_dioxide_partial_pressure_difference_between_sea_water_and_air", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "Pa", 
+            "out_name": "dpco2", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "rsusLut": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "surface upwelling shortwave  on land use tile", 
+            "standard_name": "surface_upwelling_shortwave_flux_in_air", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "W m-2", 
+            "out_name": "rsusLut", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "flandice": {
+            "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", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Water flux into Sea Water from Land Ice", 
+            "standard_name": "water_flux_into_sea_water_from_land_ice", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg m-2 s-1", 
+            "out_name": "flandice", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "bacc": {
+            "comment": "Sum of bacterial carbon component concentrations", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Bacterial Carbon Concentration", 
+            "standard_name": "mole_concentration_of_bacteria_expressed_as_carbon_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3", 
+            "out_name": "bacc", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "fgco2": {
+            "comment": "Gas exchange flux of CO2 (positive into ocean)", 
+            "dimensions": "longitude latitude time", 
+            "positive": "down", 
+            "valid_min": "", 
+            "long_name": "Surface Downward CO2 Flux", 
+            "standard_name": "surface_downward_mass_flux_of_carbon_dioxide_expressed_as_carbon", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2 s-1", 
+            "out_name": "fgco2", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "nMineralNH4": {
+            "comment": "SUM of ammonium over all soil layers", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Mineral ammonium in the soil", 
+            "standard_name": "mineral_nh4_soil_nitrogen_content", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg N/m2", 
+            "out_name": "nMineralNH4", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "b_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: b(k+1/2)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "fNleach": {
+            "comment": "as specified by C4MIP", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Total N loss to leaching or runoff (sum of ammonium, nitrite and nitrate)", 
+            "standard_name": "land_nitrogen_lost_to_leaching", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg m-2 s-1", 
+            "out_name": "fNleach", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "mrso": {
+            "comment": "the mass per unit area  (summed over all soil layers) of water in all phases.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "-64.17", 
+            "long_name": "Total Soil Moisture Content", 
+            "standard_name": "soil_moisture_content", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "-1424", 
+            "units": "kg m-2", 
+            "out_name": "mrso", 
+            "type": "real", 
+            "valid_max": "5717", 
+            "ok_max_mean_abs": "3038"
+        }, 
+        "netAtmosLandCO2Flux": {
+            "comment": "as specified by C4MIP", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Net flux of CO2 between atmosphere and land (positive into land) as a result of all processes.", 
+            "standard_name": "surface_net_downward_mass_flux_of_carbon_dioxide_expressed_as_carbon_due_to_all_land_processes?", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg m-2 s-1", 
+            "out_name": "netAtmosLandCO2Flux", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "lateralCtransfer": {
+            "comment": "as specified by C4MIP", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Lateral transfer of carbon into (positive) or out of (negative) a grid cell.", 
+            "standard_name": "lateral_carbon_transfer_over_land", 
+            "modeling_realm": "land", 
+            "cell_measures": "", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg m-2 s-1", 
+            "out_name": "lateralCtransfer", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "mmrdust": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0.0", 
+            "long_name": "Dust aerosol mass mixing ratio", 
+            "standard_name": "mass_fraction_of_dust_dry_aerosol_in_air", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg kg-1", 
+            "out_name": "mmrdust", 
+            "type": "real", 
+            "valid_max": "1.0", 
+            "ok_max_mean_abs": ""
+        }, 
+        "ptop": {
+            "units": "Pa", 
+            "long_name": "pressure at top of model", 
+            "type": "", 
+            "dimensions": ""
+        }, 
+        "cropFracC3": {
+            "comment": "as specified by C4MIP", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "C3 crop fraction", 
+            "standard_name": "crop_fraction_c3", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "%", 
+            "out_name": "cropFracC3", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "nwdFracLut": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "fraction of land use tile tile that is non-woody vegetation ( e.g. herbaceous crops)", 
+            "standard_name": "", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "fraction", 
+            "out_name": "nwdFracLut", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "cropFracC4": {
+            "comment": "as specified by C4MIP", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "C4 crop fraction", 
+            "standard_name": "crop_fraction_c4", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "%", 
+            "out_name": "cropFracC4", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "flashrate": {
+            "comment": "proposed name: lightning_flash_rate (units to be interpreted as 'counts km-2 s-1)", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0.0", 
+            "long_name": "lightning flash rate", 
+            "standard_name": "lightning_flash_rate", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "km-2 s-1", 
+            "out_name": "flashrate", 
+            "type": "real", 
+            "valid_max": "1000000.0", 
+            "ok_max_mean_abs": ""
+        }, 
+        "opottemprmadvect": {
+            "comment": "", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Tendency of Sea Eater Potential Temperature Expressed as Heat Content due to Residual Mean Advection", 
+            "standard_name": "tendency_of_sea_water_potential_temperature_expressed_as_heat_content_due_to_residual_mean_advection", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "0", 
+            "units": "W m-2", 
+            "out_name": "opottemprmadvect", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "tntrlcs": {
+            "comment": "Tendency of Air Temperature due to Clear Sky Longwave Radiative Heating", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Tendency of Air Temperature due to Clear Sky Longwave Radiative Heating", 
+            "standard_name": "tendency_of_air_temperature_due_to_longwave_heating_assuming_clear_sky", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "K s-1", 
+            "out_name": "tntrlcs", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "vegHeight": {
+            "comment": "as specified by C4MIP", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Vegetation height averaged over all vegetation types and over the vegetated fraction of a grid cell.", 
+            "standard_name": "canopy_height", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "m", 
+            "out_name": "vegHeight", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "lwtoacsaer": {
+            "comment": "proposed name: toa_instantaneous_longwave_forcing_due_to_ambient_aerosol_assuming_clear_sky", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "-1000.0", 
+            "long_name": "clear sky lw-rf aerosols at toa", 
+            "standard_name": "toa_instantaneous_longwave_forcing_due_to_ambient_aerosol_assuming_clear_sky", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "lwtoacsaer", 
+            "type": "real", 
+            "valid_max": "1000.0", 
+            "ok_max_mean_abs": ""
+        }, 
+        "ocontempmint": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "", 
+            "standard_name": "integral_wrt_depth_of_product_of_sea_water_density_and_conservative_temperature", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "0", 
+            "units": "degC kg/m2", 
+            "out_name": "ocontempmint", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "cStem": {
+            "comment": "including sapwood and hardwood.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Carbon Mass in Stem", 
+            "standard_name": "stem_carbon_content", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg C/m2", 
+            "out_name": "cStem", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "dissicabio": {
+            "comment": "Abiotic Dissolved inorganic carbon (CO3+HCO3+H2CO3) concentration", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Abiotic Dissolved Inorganic Carbon Concentration", 
+            "standard_name": "mole_concentration_of_dissolved_inorganic_carbon_in_sea_water_abiotic_component", 
+            "modeling_realm": "", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "0", 
+            "units": "mol m-3", 
+            "out_name": "dissicabio", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "mmrbc": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0.0", 
+            "long_name": "BC mass mixing ratio", 
+            "standard_name": "mass_fraction_of_black_carbon_dry_aerosol_in_air", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg kg-1", 
+            "out_name": "mmrbc", 
+            "type": "real", 
+            "valid_max": "1.0", 
+            "ok_max_mean_abs": ""
+        }, 
+        "chldiat": {
+            "comment": "Chlorophyll from diatom phytoplankton component concentration alone", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Diatom Chlorophyll Mass Concentration", 
+            "standard_name": "mass_concentration_of_diatoms_expressed_as_chlorophyll_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-3", 
+            "out_name": "chldiat", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "chldiaz": {
+            "comment": "Chlorophyll concentration from the diazotrophic phytoplankton component alone", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Mass Concentration of Diazotrophs expressed as Chlorophyll in Sea Water", 
+            "standard_name": "mass_concentration_of_diazotrophs_expressed_as_chlorophyll_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-3", 
+            "out_name": "chldiaz", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "froc": {
+            "comment": "Organic Carbon loss to sediments", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Downward Organic Carbon Flux at Ocean Bottom", 
+            "standard_name": "tendency_of_ocean_mole_content_of_organic_carbon_due_to_sedimentation", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "0", 
+            "units": "mol m-2 s-1", 
+            "out_name": "froc", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "intpbp": {
+            "comment": "Vertically integrated biogenic phosphorus production", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Phosphorus Production", 
+            "standard_name": "tendency_of_ocean_mole_content_of_phosphorus_due_to_biological_production", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "0", 
+            "units": "mol m-2 s-1", 
+            "out_name": "intpbp", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "tntrs": {
+            "comment": "Tendency of air temperature due to shortwave radiative heating", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "tendency_of_air_temperature_due_to_shortwave_heating", 
+            "standard_name": "tendency_of_air_temperature_due_to_shortwave_heating", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "K s-1", 
+            "out_name": "tntrs", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "pastureFrac": {
+            "comment": "Percentage of entire grid cell  that is covered by anthropogenic pasture.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Percentage of Land which is Anthropogenic Pasture", 
+            "standard_name": "area_fraction", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "%", 
+            "out_name": "pastureFrac", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "tntrl": {
+            "comment": "Tendency of air temperature due to longwave radiative heating", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "tendency_of_air_temperature_due_to_longwave_heating", 
+            "standard_name": "tendency_of_air_temperature_due_to_longwave_heating", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "K s-1", 
+            "out_name": "tntrl", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "vegHeightShrub": {
+            "comment": "as specified by C4MIP", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Vegetation height averaged over the shrub fraction of a grid cell.", 
+            "standard_name": "canopy_height", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "m", 
+            "out_name": "vegHeightShrub", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "rac14": {
+            "comment": "as specified by C4MIP", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Mass Flux of 14C into Atmosphere due to Autotrophic (Plant) Respiration on Land", 
+            "standard_name": "plant_respiration_c14_flux", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg m-2 s-1", 
+            "out_name": "rac14", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "intpbn": {
+            "comment": "Vertically integrated biogenic nitrogen production", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Nitrogen Production", 
+            "standard_name": "tendency_of_ocean_mole_content_of_nitrogen_due_to_biological_production", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "0", 
+            "units": "mol m-2 s-1", 
+            "out_name": "intpbn", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "rac13": {
+            "comment": "as specified by C4MIP", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Mass Flux of 13C into Atmosphere due to Autotrophic (Plant) Respiration on Land", 
+            "standard_name": "plant_respiration_c13_flux", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg m-2 s-1", 
+            "out_name": "rac13", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "ocontemptend": {
+            "comment": "Tendency of heat content for a grid cell from all processes. Reported only for models that use conservative temperature as prognostic field.", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "tendency of sea water conservative temperature expressed as heat content", 
+            "standard_name": "tendency_of_sea_water_conservative_temperature_expressed_as_heat_content", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "0", 
+            "units": "W m-2", 
+            "out_name": "ocontemptend", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "hfssLut": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "sensible heat flux on land use tile", 
+            "standard_name": "surface_upward_sensible_heat_flux", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "W m-2", 
+            "out_name": "hfssLut", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "O18p": {
+            "comment": "Roche - LSCE", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "18O in total precipitation", 
+            "standard_name": "?", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "", 
+            "out_name": "O18p", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "O18s": {
+            "comment": "Roche - LSCE", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "18O in solid precipitation", 
+            "standard_name": "?", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "", 
+            "out_name": "O18s", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "ocontemprmadvect": {
+            "comment": "", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Tendency of Sea Water Conservative Temperature Expressed as Heat Content due to Residual Mean Advection", 
+            "standard_name": "tendency_of_sea_water_conservative_temperature_expressed_as_heat_content_due_to_residual_mean_advection", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "0", 
+            "units": "W m-2", 
+            "out_name": "ocontemprmadvect", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "epcalc100": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Downward Flux of Calcite", 
+            "standard_name": "sinking_mole_flux_of_calcite_expressed_as_carbon_in_sea_water", 
+            "modeling_realm": "", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "0", 
+            "units": "mol m-2 s-1", 
+            "out_name": "epcalc100", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "netAtmosLandC13Flux": {
+            "comment": "as specified by C4MIP", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Net Mass Flux of 13C between atmosphere and land (positive into land) as a result of all processes.", 
+            "standard_name": "net_atmos_to_land_C13_flux", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg m-2 s-1", 
+            "out_name": "netAtmosLandC13Flux", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "fg14co2": {
+            "comment": "as specified by C4MIP", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Total air-sea flux of 14CO2", 
+            "standard_name": "air_sea_flux_of_14CO2", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "mol m-2 s-1", 
+            "out_name": "fg14co2", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "fDeforest": {
+            "comment": "as specified by C4MIP", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Deforested biomass as a result of anthropogenic land use change", 
+            "standard_name": "deforested_biomass_due_to_anthorpogenic_land_use_change", 
+            "modeling_realm": "land", 
+            "cell_measures": "", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg m-2 s-1", 
+            "out_name": "fDeforest", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "hflsLut": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "latent heat flux on land use tile", 
+            "standard_name": "surface_upward_latent_heat_flux", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "W m-2", 
+            "out_name": "hflsLut", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "hussLut": {
+            "comment": "Normally, the specific humidity should be reported at the 2 meter height", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "near-surface specific humidity on land use tile", 
+            "standard_name": "specific_humidity", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "1.0", 
+            "out_name": "hussLut", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "dms": {
+            "comment": "", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "DMS volume mixing ratio", 
+            "standard_name": "mole_fraction_of_dimethyl_sulfide_in_air", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "mole mole-1", 
+            "out_name": "dms", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "k_c": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: k_c", 
+            "type": "integer", 
+            "dimensions": ""
+        }, 
+        "spco2": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Surface Aqueous Partial Pressure of CO2", 
+            "standard_name": "surface_partial_pressure_of_carbon_dioxide_in_sea_water", 
+            "modeling_realm": "", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "0", 
+            "units": "Pa", 
+            "out_name": "spco2", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "chlpico": {
+            "comment": "chlorophyll concentration from the picophytoplankton (<2 um) component alone", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Mass Concentration of Picophytoplankton expressed as Chlorophyll in Sea Water", 
+            "standard_name": "mass_concentration_of_picophytoplankton_expressed_as_chlorophyll_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-3", 
+            "out_name": "chlpico", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "wetlandCH4": {
+            "comment": "as specified by C4MIP", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Grid averaged methane emissions from wetlands", 
+            "standard_name": "wetland_methane_emissions", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg m-2 s-1", 
+            "out_name": "wetlandCH4", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "al": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Albedo", 
+            "standard_name": "surface_albedo", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "%", 
+            "out_name": "al", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "fHarvestToProduct": {
+            "comment": "be it food or wood harvest, any carbon that is subsequently stored is reported here", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Harvested biomass that goes into product pool", 
+            "standard_name": "harvested_biomass_into_product_pool", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg C m-2 s-1", 
+            "out_name": "fHarvestToProduct", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "cWood": {
+            "comment": "Carbon mass per unit area in wood, including sapwood and hardwood.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Carbon Mass in Wood", 
+            "standard_name": "wood_carbon_content", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2", 
+            "out_name": "cWood", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "intuadse": {
+            "comment": "Used in PMIP2", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Vertically integrated Eastward dry transport (cp.T +zg).u (Mass_weighted_vertical integral of the product of northward wind by dry static_energy per mass unit)", 
+            "standard_name": "vertical_integral_eastward_wind_by_dry_static_energy", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "1.e6 m-1 s-1 J", 
+            "out_name": "intuadse", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "ocontemppadvect": {
+            "comment": "Tendency of heat content for a grid cell from parameterized eddy advection (any form of eddy advection). Reported only for models that use conservative temperature as prognostic field.", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "tendency of sea water conservative temperature expressed as heat content due to parameterized eddy advection", 
+            "standard_name": "tendency_of_sea_water_conservative_temperature_expressed_as_heat_content_due_to_parameterized_eddy_advection", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "0", 
+            "units": "W m-2", 
+            "out_name": "ocontemppadvect", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "cTotFireLut": {
+            "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 time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "total carbon loss from natural and managed fire on land use tile, including deforestation fires", 
+            "standard_name": "", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg C m-2 s-1", 
+            "out_name": "cTotFireLut", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "fClResLut": {
+            "comment": "should not include fire emissions into atmosphere", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "carbon left as residue into litter or soil after clearance for land use tile", 
+            "standard_name": "", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg C m-2 s-1", 
+            "out_name": "fClResLut", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "fgsf6": {
+            "comment": "gas exchange flux of SF6", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Surface Downward SF6 flux", 
+            "standard_name": "surface_downward_mole_flux_of_sf6", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "0", 
+            "units": "mol sec-1 m-2", 
+            "out_name": "fgsf6", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "fNup": {
+            "comment": "as specified by C4MIP", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "total plant nitrogen uptake (sum of ammonium and nitrate), irrespective of the source of nitrogen", 
+            "standard_name": "plant_nitrogen_uptake", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg m-2 s-1", 
+            "out_name": "fNup", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "tntpbl": {
+            "comment": "Includes all boundary layer terms including diffusive terms.", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Tendency of Air Temperature Due to Boundary Layer Mixing", 
+            "standard_name": "tendency_of_air_temperature_due_to_boundary_layer_mixing", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "K s-1", 
+            "out_name": "tntpbl", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "nOther": {
+            "comment": "E.g. fruits, seeds, etc.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Nitrogen mass in vegetation components other than leaves, stem and root", 
+            "standard_name": "other_vegegtation_components_nitrogen_content", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg N/m2", 
+            "out_name": "nOther", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "detoc": {
+            "comment": "Sum of detrital organic carbon component concentrations", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Detrital Organic Carbon Concentration", 
+            "standard_name": "mole_concentration_of_organic_detritus_expressed_as_carbon_in_sea_water", 
+            "modeling_realm": "ocnBgchem", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "mol m-3", 
+            "out_name": "detoc", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "swsrfcsdust": {
+            "comment": "Balkanski - LSCE", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Clear-sky Surface Shortwave radiative flux due to Dust", 
+            "standard_name": "tendency_of_clear_sky_surface_shortwave_flux_due_to_dust_ambient_aerosol_particles", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "W m-2", 
+            "out_name": "swsrfcsdust", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "epc100": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Downward Flux of Particle Organic Carbon", 
+            "standard_name": "sinking_mole_flux_of_particulate_organic_matter_expressed_as_carbon_in_sea_water", 
+            "modeling_realm": "", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "0", 
+            "units": "mol m-2 s-1", 
+            "out_name": "epc100", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "H2wv": {
+            "comment": "Roche - LSCE", 
+            "dimensions": "longitude latitude alevel time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "H2 in water vapor", 
+            "standard_name": "?", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "", 
+            "out_name": "H2wv", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "evap": {
+            "comment": "the average rate that water mass evaporates (or sublimates) from the sea ice surface (i.e., kg/s) divided by the area of the ocean (i.e., open ocean + sea ice) portion of the grid cell. This quantity, multiplied both by the oean area of the grid cell and by the length of the month, should yield the total mass of water evaporated (or sublimated) from the sea ice.  Reported as 0.0 in regions free of sea ice.  [This was computed differently in CMIP3.]", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Water Evaporation Flux from Sea Ice", 
+            "standard_name": "water_evaporation_flux", 
+            "modeling_realm": "land", 
+            "cell_measures": "", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg m-2 s-1", 
+            "out_name": "evap", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "agessc": {
+            "comment": "Time elapsed since water was last in surface layer of the ocean.", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Sea Water Age Since Surface Contact", 
+            "standard_name": "sea_water_age_since_surface_contact", 
+            "modeling_realm": "", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "0", 
+            "units": "yr", 
+            "out_name": "agessc", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "nProduct": {
+            "comment": "as specified by C4MIP", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Nitrogen Mass in Products of Land Use Change", 
+            "standard_name": "nitrogen_content_of_products_of_anthropogenic_land_use_change", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg m-2", 
+            "out_name": "nProduct", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "libmassbf": {
+            "comment": "Specific mass balance means the net rate at which ice is added per unit area at the land ice base. Computed as the total basal 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", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Land ice basal mass balance flux", 
+            "standard_name": "land_ice_basal_specific_mass_balance_flux", 
+            "modeling_realm": "landIce", 
+            "cell_measures": "time: mean area: mean where ice_sheet", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg m-2 s-1", 
+            "out_name": "libmassbf", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "cLand": {
+            "comment": "as specified by C4MIP", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Total Carbon in All Terrestrial Carbon Pools", 
+            "standard_name": "total_land_carbon", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg m-2", 
+            "out_name": "cLand", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "depth": {
+            "units": "m", 
+            "long_name": "Sea Floor Depth: formula term: thetao", 
+            "type": "real", 
+            "dimensions": "longitude latitude"
+        }, 
+        "vegHeightCrop": {
+            "comment": "as specified by C4MIP", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Vegetation height averaged over the crop fraction of a grid cell.", 
+            "standard_name": "canopy_height", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where land", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "m", 
+            "out_name": "vegHeightCrop", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }
+    }
+}
diff --git a/TestTables/CMIP6_emMonZ.json b/TestTables/CMIP6_emMonZ.json
new file mode 100644
index 0000000..8292cdc
--- /dev/null
+++ b/TestTables/CMIP6_emMonZ.json
@@ -0,0 +1,2256 @@
+{
+    "Header": {
+        "product": "output", 
+        "approx_interval": "30.00000", 
+        "realm": "", 
+        "cmor_version": "3.1", 
+        "Conventions": "CF-1.6 CMIP-6.0", 
+        "frequency": "mon", 
+        "table_id": "Table emMonZ", 
+        "data_specs_version": "01.beta.29", 
+        "mip_era": "CMIP6", 
+        "generic_levels": "", 
+        "missing_value": "1e20", 
+        "table_date": "14 June 2016"
+    }, 
+    "axis_entry": {
+        "typebare": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "bare_ground", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "tau": {
+            "requested": [
+                "0.15", 
+                "0.8", 
+                "2.45", 
+                "6.5", 
+                "16.2", 
+                "41.5", 
+                "100."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "0.0", 
+                "0.3", 
+                "0.3", 
+                "1.3", 
+                "1.3", 
+                "3.6", 
+                "3.6", 
+                "9.4", 
+                "9.4", 
+                "23.0", 
+                "23.0", 
+                "60.0", 
+                "60.0", 
+                "100000."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "cloud optical thickness", 
+            "standard_name": "atmosphere_optical_thickness_due_to_cloud", 
+            "value": "", 
+            "out_name": "tau", 
+            "type": "double", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "olayer100m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "0. 100.", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "50.0", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "100.0", 
+            "axis": "Z"
+        }, 
+        "spectband": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "Spectral Band", 
+            "standard_name": "wave_frequency", 
+            "value": "", 
+            "out_name": "spectband", 
+            "type": "double", 
+            "units": "s-1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "ocean_sigma_z": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "sigma: sigma eta: eta depth: depth depth_c: depth_c nsigma: nsigma zlev: zlev", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "sigma: sigma_bnds eta: eta depth: depth depth_c: depth_c nsigma: nsigma zlev: zlev_bnds", 
+            "bounds_values": "", 
+            "long_name": "ocean sigma over z coordinate", 
+            "standard_name": "ocean_sigma_z", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "for k <= nsigma: z(n,k,j,i) = eta(n,j,i) + sigma(k)*(min(depth_c,depth(j,i))+eta(n,j,i)) ; for k > nsigma: z(n,k,j,i) = zlev(k)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev19": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000.", 
+                "500.", 
+                "100."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "p220": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "44000. 0.0", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "22000.0", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev17": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev10": {
+            "requested": [
+                "100000.", 
+                "85000.", 
+                "70000.", 
+                "50000.", 
+                "25000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "site": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "site index", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "site", 
+            "type": "integer", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "smooth_level": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "a: a b1: b1 b2: b2 ztop: ztop zsurf1: zsurf1 zsurf2: zsurf2", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-200.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "a: a_bnds b1: b1_bnds b2: b2_bnds ztop: ztop zsurf1: zsurf1 zsurf2: zsurf2", 
+            "bounds_values": "", 
+            "long_name": "atmosphere smooth level vertical (SLEVE) coordinate", 
+            "standard_name": "atmosphere_sleve_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "m", 
+            "formula": "z = a*ztop + b1*zsurf1 + b2*zsurf2", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "800000.0", 
+            "axis": "Z"
+        }, 
+        "p840": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "100000. 68000.", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "84000.0", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "ocean_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "sigma: lev eta: eta depth: depth", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "sigma: lev_bnds eta: eta depth: depth", 
+            "bounds_values": "", 
+            "long_name": "ocean sigma coordinate", 
+            "standard_name": "ocean_sigma_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "z(n,k,j,i) = eta(n,j,i) + sigma(k)*(depth(j,i)+eta(n,j,i))", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "0.0", 
+            "axis": "Z"
+        }, 
+        "depth0m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "0.0", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "100.0", 
+            "axis": "Z"
+        }, 
+        "ocean_s": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "s: lev eta: eta depth: depth a: a_coeff b: b_coeff depth_c: depth_c", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "s: lev_bnds eta: eta depth: depth a: a b: b depth_c: depth_c", 
+            "bounds_values": "", 
+            "long_name": "ocean s-coordinate", 
+            "standard_name": "ocean_s_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "z(n,k,j,i) = eta(n,j,i)*(1+s(k)) + depth_c*s(k) + (depth(j,i)-depth_c)*C(k) n where n C(k)=(1-b)*sinh(a*s(k))/sinh(a) +n           b*(tanh(a*(s(k)+0.5))/(2*tanh(0.5*a)) - 0.5)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "0.0", 
+            "axis": "Z"
+        }, 
+        "plev4s": {
+            "requested": [
+                "85000.", 
+                "50000.", 
+                "20000.", 
+                "5000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "typec4pft": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "c4_plant_functional_types", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "plev3h": {
+            "requested": [
+                "10000.", 
+                "1000.", 
+                "100."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "height2m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "up", 
+            "must_have_bounds": "no", 
+            "valid_min": "1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "height", 
+            "standard_name": "height", 
+            "value": "2.0", 
+            "out_name": "height", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "10.0", 
+            "axis": "Z"
+        }, 
+        "time1": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "time", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "plev7h": {
+            "requested": [
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "25000.", 
+                "5000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "sza5": {
+            "requested": [
+                "0.", 
+                "20.", 
+                "40.", 
+                "60.", 
+                "80."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "solar zenith angle", 
+            "standard_name": "solar_zenith_angle", 
+            "value": "", 
+            "out_name": "sza", 
+            "type": "double", 
+            "units": "degree", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "depth_coord": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "ocean depth coordinate", 
+            "standard_name": "depth", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "12000.0", 
+            "axis": "Z"
+        }, 
+        "sdepth1": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "0.0 0.1", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "0.05", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "0.2", 
+            "axis": "Z"
+        }, 
+        "alternate_hybrid_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "ap: ap b: b ps: ps", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "ap: ap_bnds b: b_bnds ps: ps", 
+            "bounds_values": "", 
+            "long_name": "hybrid sigma pressure coordinate", 
+            "standard_name": "atmosphere_hybrid_sigma_pressure_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "1", 
+            "formula": "p = ap + b*ps", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "1.0", 
+            "axis": "Z"
+        }, 
+        "time2": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "time", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "yes", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "time3": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "Diurnal cycle: monthly mean of the diurnal cycle (1 hour steps).", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "oline": {
+            "requested": [
+                "barents_opening", 
+                "bering_strait", 
+                "canadian_archipelago", 
+                "denmark_strait", 
+                "drake_passage", 
+                "english_channel", 
+                "pacific_equatorial_undercurrent", 
+                "faroe_scotland_channel", 
+                "florida_bahamas_strait", 
+                "fram_strait", 
+                "iceland_faroe_channel", 
+                "indonesian_thoughflow", 
+                "mozambique_channel", 
+                "taiwan_luzon_straits", 
+                "windward_passage"
+            ], 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "ocean passage", 
+            "standard_name": "region", 
+            "value": "", 
+            "out_name": "line", 
+            "type": "character", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "plev14": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "25000.", 
+                "15000.", 
+                "10000.", 
+                "5000.", 
+                "2000.", 
+                "1000.", 
+                "500.", 
+                "100."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev8": {
+            "requested": [
+                "100000.", 
+                "85000.", 
+                "70000.", 
+                "50000.", 
+                "25000.", 
+                "10000.", 
+                "5000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "location": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "location index", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "loc", 
+            "type": "integer", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "latitude": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-90.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "latitude", 
+            "standard_name": "latitude", 
+            "value": "", 
+            "out_name": "lat", 
+            "type": "double", 
+            "units": "degrees_north", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "90.0", 
+            "axis": "Y"
+        }, 
+        "plev3": {
+            "requested": [
+                "85000.", 
+                "50000.", 
+                "25000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "basin": {
+            "requested": [
+                "atlantic_arctic_ocean", 
+                "indian_pacific_ocean", 
+                "global_ocean"
+            ], 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "ocean basin", 
+            "standard_name": "region", 
+            "value": "", 
+            "out_name": "basin", 
+            "type": "character", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "p700": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "700 hPa", 
+            "standard_name": "air_pressure", 
+            "value": "70000.", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev7": {
+            "requested": [
+                "90000.", 
+                "74000.", 
+                "62000.", 
+                "50000.", 
+                "37500.", 
+                "24500.", 
+                "9000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "100000.", 
+                "80000.", 
+                "80000.", 
+                "68000.", 
+                "68000.", 
+                "56000.", 
+                "56000.", 
+                "44000.", 
+                "44000.", 
+                "31000.", 
+                "31000.", 
+                "18000.", 
+                "18000.", 
+                " 0."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev4": {
+            "requested": [
+                "92500.", 
+                "85000.", 
+                "50000.", 
+                "25000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev23": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000.", 
+                "700.", 
+                "500.", 
+                "300.", 
+                "200.", 
+                "100.", 
+                "40."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev39": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "17000.", 
+                "15000.", 
+                "13000.", 
+                "11500.", 
+                "10000.", 
+                "9000.", 
+                "8000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1500.", 
+                "1000.", 
+                "700.", 
+                "500.", 
+                "300.", 
+                "200.", 
+                "150.", 
+                "100.", 
+                "70.", 
+                "50.", 
+                "40.", 
+                "30.", 
+                "20.", 
+                "15.", 
+                "10.", 
+                "7.", 
+                "5.", 
+                "3."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "typepever": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "primary_evergreen_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "typesdec": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "secondary_decidous_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "plev27": {
+            "requested": [
+                "100000.", 
+                "97500.", 
+                "95000.", 
+                "92500.", 
+                "90000.", 
+                "87500.", 
+                "85000.", 
+                "82500.", 
+                "80000.", 
+                "77500.", 
+                "75000.", 
+                "70000.", 
+                "65000.", 
+                "60000.", 
+                "55000.", 
+                "50000.", 
+                "45000.", 
+                "40000.", 
+                "35000.", 
+                "30000.", 
+                "25000.", 
+                "22500.", 
+                "20000.", 
+                "17500.", 
+                "15000.", 
+                "12500.", 
+                "10000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "alt40": {
+            "requested": [
+                "240.", 
+                "720.", 
+                "1200.", 
+                "1680.", 
+                "2160.", 
+                "2640.", 
+                "3120.", 
+                "3600.", 
+                "4080.", 
+                "4560.", 
+                "5040.", 
+                "5520.", 
+                "6000.", 
+                "6480.", 
+                "6960.", 
+                "7440.", 
+                "7920.", 
+                "8400.", 
+                "8880.", 
+                "9360.", 
+                "9840.", 
+                "10320.", 
+                "10800.", 
+                "11280.", 
+                "11760.", 
+                "12240.", 
+                "12720.", 
+                "13200.", 
+                "13680.", 
+                "14160.", 
+                "14640.", 
+                "15120.", 
+                "15600.", 
+                "16080.", 
+                "16560.", 
+                "17040.", 
+                "17520.", 
+                "18000.", 
+                "18480.", 
+                "18960."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "0.", 
+                "480.", 
+                "480.", 
+                "960.", 
+                "960.", 
+                "1440.", 
+                "1440.", 
+                "1920.", 
+                "1920.", 
+                "2400.", 
+                "2400.", 
+                "2880.", 
+                "2880.", 
+                "3360.", 
+                "3360.", 
+                "3840.", 
+                "3840.", 
+                "4320.", 
+                "4320.", 
+                "4800.", 
+                "4800.", 
+                "5280.", 
+                "5280.", 
+                "5760.", 
+                "5760.", 
+                "6240.", 
+                "6240.", 
+                "6720.", 
+                "6720.", 
+                "7200.", 
+                "7200.", 
+                "7680.", 
+                "7680.", 
+                "8160.", 
+                "8160.", 
+                "8640.", 
+                "8640.", 
+                "9120.", 
+                "9120.", 
+                "9600.", 
+                "9600.", 
+                "10080.", 
+                "10080.", 
+                "10560.", 
+                "10560.", 
+                "11040.", 
+                "11040.", 
+                "11520.", 
+                "11520.", 
+                "12000.", 
+                "12000.", 
+                "12480.", 
+                "12480.", 
+                "12960.", 
+                "12960.", 
+                "13440.", 
+                "13440.", 
+                "13920.", 
+                "13920.", 
+                "14400.", 
+                "14400.", 
+                "14880.", 
+                "14880.", 
+                "15360.", 
+                "15360.", 
+                "15840.", 
+                "15840.", 
+                "16320.", 
+                "16320.", 
+                "16800.", 
+                "16800.", 
+                "17280.", 
+                "17280.", 
+                "17760.", 
+                "17760.", 
+                "18240.", 
+                "18240.", 
+                "18720.", 
+                "18720.", 
+                "19200."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "altitude", 
+            "standard_name": "altitude", 
+            "value": "", 
+            "out_name": "alt40", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "time": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "time", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "plev7c": {
+            "requested": [
+                "90000.", 
+                "74000.", 
+                "62000.", 
+                "50000.", 
+                "37500.", 
+                "24500.", 
+                "9000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "height10m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "up", 
+            "must_have_bounds": "no", 
+            "valid_min": "1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "height", 
+            "standard_name": "height", 
+            "value": "10.0", 
+            "out_name": "height", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "30.0", 
+            "axis": "Z"
+        }, 
+        "dbze": {
+            "requested": [
+                "-47.5", 
+                "-42.5", 
+                "-37.5", 
+                "-32.5", 
+                "-27.5", 
+                "-22.5", 
+                "-17.5", 
+                "-12.5", 
+                "-7.5", 
+                "-2.5", 
+                "2.5", 
+                "7.5", 
+                "12.5", 
+                "17.5", 
+                "22.5"
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "-50", 
+                "-45", 
+                "-45", 
+                "-40", 
+                "-40", 
+                "-35", 
+                "-35", 
+                "-30", 
+                "-30", 
+                "-25", 
+                "-25", 
+                "-20", 
+                "-20", 
+                "-15", 
+                "-15", 
+                "-10", 
+                "-10", 
+                "-5", 
+                "-5", 
+                "0", 
+                "0", 
+                "5", 
+                "5", 
+                "10", 
+                "10", 
+                "15", 
+                "15", 
+                "20", 
+                "20", 
+                "25."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "CloudSat simulator equivalent radar reflectivity factor", 
+            "standard_name": "equivalent_reflectivity_factor", 
+            "value": "", 
+            "out_name": "dbze", 
+            "type": "double", 
+            "units": "dBZ", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "typesever": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "secondary_evergreen_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "rho": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "density++++?", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "rho", 
+            "type": "double", 
+            "units": "kg m-3", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "depth100m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "80.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "100.0", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "120.0", 
+            "axis": "Z"
+        }, 
+        "effectRadLi": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "Effective Radius of Liquid Aerosols", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "effectRadLi", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "sdepth": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "200.0", 
+            "axis": "Z"
+        }, 
+        "vegtype": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "plant functional type", 
+            "standard_name": "area_type", 
+            "value": "", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "typec3pft": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "c3_plant_functional_types", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "natural_log_pressure": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "p0: p0 lev: lev", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "p0: p0 lev: lev_bnds", 
+            "bounds_values": "", 
+            "long_name": "atmosphere natural log pressure coordinate", 
+            "standard_name": "atmosphere_ln_pressure_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "p = p0 * exp(-lev)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "20.0", 
+            "axis": "Z"
+        }, 
+        "scatratio": {
+            "requested": [
+                "0.005", 
+                "0.605", 
+                "2.1", 
+                "4.", 
+                "6.", 
+                "8.5", 
+                "12.5", 
+                "17.5", 
+                "22.5", 
+                "27.5", 
+                "35.", 
+                "45.", 
+                "55.", 
+                "70.", 
+                "50040."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "0.", 
+                "0.01", 
+                "0.01", 
+                "1.2", 
+                "1.2", 
+                "3.", 
+                "3.", 
+                "5.", 
+                "5.", 
+                "7.", 
+                "7.", 
+                "10.", 
+                "10.", 
+                "15.", 
+                "15.", 
+                "20.", 
+                "20.", 
+                "25.", 
+                "25.", 
+                "30.", 
+                "30.", 
+                "40.", 
+                "40.", 
+                "50.", 
+                "50.", 
+                "60.", 
+                "60.", 
+                "80.", 
+                "80.", 
+                "100000."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "lidar backscattering ratio", 
+            "standard_name": "backscattering_ratio", 
+            "value": "", 
+            "out_name": "scatratio", 
+            "type": "double", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "standard_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "ptop: ptop sigma: lev ps: ps", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "ptop: ptop sigma: lev_bnds ps: ps", 
+            "bounds_values": "", 
+            "long_name": "sigma coordinate", 
+            "standard_name": "atmosphere_sigma_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "p = ptop + sigma*(ps - ptop)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "1.0", 
+            "axis": "Z"
+        }, 
+        "typepdec": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "primary_deciduous_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "hybrid_height": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "a: lev b: b orog: orog", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "a: lev_bnds b: b_bnds orog: orog", 
+            "bounds_values": "", 
+            "long_name": "hybrid height coordinate", 
+            "standard_name": "atmosphere_hybrid_height_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "m", 
+            "formula": "z = a + b*orog", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "longitude": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "longitude", 
+            "standard_name": "longitude", 
+            "value": "", 
+            "out_name": "lon", 
+            "type": "double", 
+            "units": "degrees_east", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "360.0", 
+            "axis": "X"
+        }, 
+        "effectRadIc": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "Effective Radius of Ice Aerosols", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "effectRadIc", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "p1000": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "1000 hPa", 
+            "standard_name": "air_pressure", 
+            "value": "100000.", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "p500": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "500 hPa", 
+            "standard_name": "air_pressure", 
+            "value": "50000.", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "ocean_double_sigma": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "sigma: sigma depth: depth z1: z1 z2: z2 a: a_coeff href: href k_c: k_c", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "sigma: sigma_bnds depth: depth z1: z1 z2: z2 a: a href: href k_c: k_c", 
+            "bounds_values": "", 
+            "long_name": "ocean double sigma coordinate", 
+            "standard_name": "ocean_double_sigma", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "for k <= k_c:n z(k,j,i)= sigma(k)*f(j,i) n for k > k_c:n z(k,j,i)= f(j,i) + (sigma(k)-1)*(depth(j,i)-f(j,i)) n f(j,i)= 0.5*(z1+ z2) + 0.5*(z1-z2)* tanh(2*a/(z1-z2)*(depth(j,i)-href))", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plevs": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "standard_hybrid_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "p0: p0 a: a b: b ps: ps", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "p0: p0 a: a_bnds b: b_bnds ps: ps", 
+            "bounds_values": "", 
+            "long_name": "hybrid sigma pressure coordinate", 
+            "standard_name": "atmosphere_hybrid_sigma_pressure_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "1", 
+            "formula": "p = a*p0 + b*ps", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "1.0", 
+            "axis": "Z"
+        }, 
+        "p560": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "68000. 44000.", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "56000.0", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }
+    }, 
+    "variable_entry": {
+        "jo2": {
+            "comment": "rate of o2 -> o1d+o", 
+            "dimensions": "latitude plev39 time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "photoloysis rate of O2", 
+            "standard_name": "photolysis_rate_of_molecular_oxygen", 
+            "modeling_realm": "", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "s-1", 
+            "out_name": "jo2", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "jo3": {
+            "comment": "sum of rates o3 -> o1d+o2 and o3 -> o+o2", 
+            "dimensions": "latitude plev39 time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "photoloysis rate of O3", 
+            "standard_name": "photolysis_rate_of_ozone", 
+            "modeling_realm": "", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "s-1", 
+            "out_name": "jo3", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "oxloss": {
+            "comment": "total chemical loss rate for o+o1d+o3 ", 
+            "dimensions": "latitude plev39 time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "total Ox loss rate", 
+            "standard_name": "tendency_of_mole_concentration_of_ozone_and_atomic_oxygen_and_1D_oxygen_atom_due_to_chemical_destruction", 
+            "modeling_realm": "", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "mole m-3 s-1", 
+            "out_name": "oxloss", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "depth_c": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: depth_c", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "ap_bnds": {
+            "units": "Pa", 
+            "long_name": "vertical coordinate formula term: ap(k+1/2)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "ap": {
+            "units": "Pa", 
+            "long_name": "vertical coordinate formula term: ap(k)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "href": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: href", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "oxprod": {
+            "comment": "total production rate of o+o1d+o3 including o2 photolysis and all o3 producing reactions", 
+            "dimensions": "latitude plev39 time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "total Ox production rate", 
+            "standard_name": "tendency_of_mole_concentration_of_ozone_and_atomic_oxygen_and_1D_oxygen_atom_due_to_chemical_production_and_photolysis", 
+            "modeling_realm": "", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "mole m-3 s-1", 
+            "out_name": "oxprod", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "orog": {
+            "units": "m", 
+            "long_name": "Surface Altitude", 
+            "type": "real", 
+            "dimensions": "longitude latitude"
+        }, 
+        "zlev": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: zlev(k)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "ps": {
+            "units": "Pa", 
+            "long_name": "Surface Air Pressure", 
+            "type": "real", 
+            "dimensions": "longitude latitude time"
+        }, 
+        "vmrox": {
+            "comment": "Mole Fraction of Ox", 
+            "dimensions": "latitude plev39 time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "mole fraction of o and o3 and o1d", 
+            "standard_name": "mole_fraction_of_ozone_and_atomic_oxygen_and_1D_oxygen_atom", 
+            "modeling_realm": "", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "mole_fraction_of_ozone_and_atomic_oxygen_and_1D_oxygen_atom", 
+            "out_name": "vmrox", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "sigma_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: sigma(k+1/2)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "sltnortha": {
+            "comment": "", 
+            "dimensions": "latitude basin time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Atlantic Northward Ocean Salt Transport", 
+            "standard_name": "northward_ocean_salt_transport", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "kg s-1", 
+            "out_name": "sltnortha", 
+            "type": "", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "ptop": {
+            "units": "Pa", 
+            "long_name": "pressure at top of model", 
+            "type": "", 
+            "dimensions": ""
+        }, 
+        "b_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: b(k+1/2)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "nsigma": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: nsigma", 
+            "type": "integer", 
+            "dimensions": ""
+        }, 
+        "ztop": {
+            "units": "m", 
+            "long_name": "height of top of model", 
+            "type": "", 
+            "dimensions": ""
+        }, 
+        "zlev_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: zlev(k+1/2)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "z1": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: z1", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "z2": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: z2", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "a": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: a(k)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "p0": {
+            "units": "Pa", 
+            "long_name": "vertical coordinate formula term: reference pressure", 
+            "type": "", 
+            "dimensions": ""
+        }, 
+        "b": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: b(k)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "depth": {
+            "units": "m", 
+            "long_name": "Sea Floor Depth: formula term: thetao", 
+            "type": "real", 
+            "dimensions": "longitude latitude"
+        }, 
+        "eta": {
+            "units": "m", 
+            "long_name": "Sea Surface Height formula term: thetao", 
+            "type": "real", 
+            "dimensions": "longitude latitude time"
+        }, 
+        "sltnorth": {
+            "comment": "", 
+            "dimensions": "latitude basin time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Northward Ocean Salt Transport", 
+            "standard_name": "northward_ocean_salt_transport", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "kg s-1", 
+            "out_name": "sltnorth", 
+            "type": "", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "k_c": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: k_c", 
+            "type": "integer", 
+            "dimensions": ""
+        }, 
+        "sigma": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: sigma(k)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "a_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: a(k+1/2)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }
+    }
+}
diff --git a/TestTables/CMIP6_emMonclim.json b/TestTables/CMIP6_emMonclim.json
new file mode 100644
index 0000000..9e76256
--- /dev/null
+++ b/TestTables/CMIP6_emMonclim.json
@@ -0,0 +1 @@
+no Variable found for emMonclim
diff --git a/TestTables/CMIP6_emMonpt.json b/TestTables/CMIP6_emMonpt.json
new file mode 100644
index 0000000..58d0192
--- /dev/null
+++ b/TestTables/CMIP6_emMonpt.json
@@ -0,0 +1 @@
+no Variable found for emMonpt
diff --git a/TestTables/CMIP6_emSubhr.json b/TestTables/CMIP6_emSubhr.json
new file mode 100644
index 0000000..7577e74
--- /dev/null
+++ b/TestTables/CMIP6_emSubhr.json
@@ -0,0 +1,2358 @@
+{
+    "Header": {
+        "product": "output", 
+        "approx_interval": "", 
+        "realm": "atmos", 
+        "cmor_version": "3.1", 
+        "Conventions": "CF-1.6 CMIP-6.0", 
+        "frequency": "subhr", 
+        "table_id": "Table emSubhr", 
+        "data_specs_version": "01.beta.29", 
+        "mip_era": "CMIP6", 
+        "generic_levels": "", 
+        "missing_value": "1e20", 
+        "table_date": "14 June 2016"
+    }, 
+    "axis_entry": {
+        "typebare": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "bare_ground", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "tau": {
+            "requested": [
+                "0.15", 
+                "0.8", 
+                "2.45", 
+                "6.5", 
+                "16.2", 
+                "41.5", 
+                "100."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "0.0", 
+                "0.3", 
+                "0.3", 
+                "1.3", 
+                "1.3", 
+                "3.6", 
+                "3.6", 
+                "9.4", 
+                "9.4", 
+                "23.0", 
+                "23.0", 
+                "60.0", 
+                "60.0", 
+                "100000."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "cloud optical thickness", 
+            "standard_name": "atmosphere_optical_thickness_due_to_cloud", 
+            "value": "", 
+            "out_name": "tau", 
+            "type": "double", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "olayer100m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "0. 100.", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "50.0", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "100.0", 
+            "axis": "Z"
+        }, 
+        "spectband": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "Spectral Band", 
+            "standard_name": "wave_frequency", 
+            "value": "", 
+            "out_name": "spectband", 
+            "type": "double", 
+            "units": "s-1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "ocean_sigma_z": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "sigma: sigma eta: eta depth: depth depth_c: depth_c nsigma: nsigma zlev: zlev", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "sigma: sigma_bnds eta: eta depth: depth depth_c: depth_c nsigma: nsigma zlev: zlev_bnds", 
+            "bounds_values": "", 
+            "long_name": "ocean sigma over z coordinate", 
+            "standard_name": "ocean_sigma_z", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "for k <= nsigma: z(n,k,j,i) = eta(n,j,i) + sigma(k)*(min(depth_c,depth(j,i))+eta(n,j,i)) ; for k > nsigma: z(n,k,j,i) = zlev(k)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev19": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000.", 
+                "500.", 
+                "100."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "p220": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "44000. 0.0", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "22000.0", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev17": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev10": {
+            "requested": [
+                "100000.", 
+                "85000.", 
+                "70000.", 
+                "50000.", 
+                "25000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "site": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "site index", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "site", 
+            "type": "integer", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "smooth_level": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "a: a b1: b1 b2: b2 ztop: ztop zsurf1: zsurf1 zsurf2: zsurf2", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-200.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "a: a_bnds b1: b1_bnds b2: b2_bnds ztop: ztop zsurf1: zsurf1 zsurf2: zsurf2", 
+            "bounds_values": "", 
+            "long_name": "atmosphere smooth level vertical (SLEVE) coordinate", 
+            "standard_name": "atmosphere_sleve_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "m", 
+            "formula": "z = a*ztop + b1*zsurf1 + b2*zsurf2", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "800000.0", 
+            "axis": "Z"
+        }, 
+        "p840": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "100000. 68000.", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "84000.0", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "ocean_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "sigma: lev eta: eta depth: depth", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "sigma: lev_bnds eta: eta depth: depth", 
+            "bounds_values": "", 
+            "long_name": "ocean sigma coordinate", 
+            "standard_name": "ocean_sigma_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "z(n,k,j,i) = eta(n,j,i) + sigma(k)*(depth(j,i)+eta(n,j,i))", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "0.0", 
+            "axis": "Z"
+        }, 
+        "depth0m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "0.0", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "100.0", 
+            "axis": "Z"
+        }, 
+        "ocean_s": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "s: lev eta: eta depth: depth a: a_coeff b: b_coeff depth_c: depth_c", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "s: lev_bnds eta: eta depth: depth a: a b: b depth_c: depth_c", 
+            "bounds_values": "", 
+            "long_name": "ocean s-coordinate", 
+            "standard_name": "ocean_s_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "z(n,k,j,i) = eta(n,j,i)*(1+s(k)) + depth_c*s(k) + (depth(j,i)-depth_c)*C(k) n where n C(k)=(1-b)*sinh(a*s(k))/sinh(a) +n           b*(tanh(a*(s(k)+0.5))/(2*tanh(0.5*a)) - 0.5)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "0.0", 
+            "axis": "Z"
+        }, 
+        "plev4s": {
+            "requested": [
+                "85000.", 
+                "50000.", 
+                "20000.", 
+                "5000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "typec4pft": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "c4_plant_functional_types", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "plev3h": {
+            "requested": [
+                "10000.", 
+                "1000.", 
+                "100."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "height2m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "up", 
+            "must_have_bounds": "no", 
+            "valid_min": "1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "height", 
+            "standard_name": "height", 
+            "value": "2.0", 
+            "out_name": "height", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "10.0", 
+            "axis": "Z"
+        }, 
+        "time1": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "time", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "plev7h": {
+            "requested": [
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "25000.", 
+                "5000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "sza5": {
+            "requested": [
+                "0.", 
+                "20.", 
+                "40.", 
+                "60.", 
+                "80."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "solar zenith angle", 
+            "standard_name": "solar_zenith_angle", 
+            "value": "", 
+            "out_name": "sza", 
+            "type": "double", 
+            "units": "degree", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "depth_coord": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "ocean depth coordinate", 
+            "standard_name": "depth", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "12000.0", 
+            "axis": "Z"
+        }, 
+        "sdepth1": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "0.0 0.1", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "0.05", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "0.2", 
+            "axis": "Z"
+        }, 
+        "alternate_hybrid_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "ap: ap b: b ps: ps", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "ap: ap_bnds b: b_bnds ps: ps", 
+            "bounds_values": "", 
+            "long_name": "hybrid sigma pressure coordinate", 
+            "standard_name": "atmosphere_hybrid_sigma_pressure_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "1", 
+            "formula": "p = ap + b*ps", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "1.0", 
+            "axis": "Z"
+        }, 
+        "time2": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "time", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "yes", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "time3": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "Diurnal cycle: monthly mean of the diurnal cycle (1 hour steps).", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "oline": {
+            "requested": [
+                "barents_opening", 
+                "bering_strait", 
+                "canadian_archipelago", 
+                "denmark_strait", 
+                "drake_passage", 
+                "english_channel", 
+                "pacific_equatorial_undercurrent", 
+                "faroe_scotland_channel", 
+                "florida_bahamas_strait", 
+                "fram_strait", 
+                "iceland_faroe_channel", 
+                "indonesian_thoughflow", 
+                "mozambique_channel", 
+                "taiwan_luzon_straits", 
+                "windward_passage"
+            ], 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "ocean passage", 
+            "standard_name": "region", 
+            "value": "", 
+            "out_name": "line", 
+            "type": "character", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "plev14": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "25000.", 
+                "15000.", 
+                "10000.", 
+                "5000.", 
+                "2000.", 
+                "1000.", 
+                "500.", 
+                "100."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev8": {
+            "requested": [
+                "100000.", 
+                "85000.", 
+                "70000.", 
+                "50000.", 
+                "25000.", 
+                "10000.", 
+                "5000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "location": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "location index", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "loc", 
+            "type": "integer", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "latitude": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-90.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "latitude", 
+            "standard_name": "latitude", 
+            "value": "", 
+            "out_name": "lat", 
+            "type": "double", 
+            "units": "degrees_north", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "90.0", 
+            "axis": "Y"
+        }, 
+        "plev3": {
+            "requested": [
+                "85000.", 
+                "50000.", 
+                "25000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "basin": {
+            "requested": [
+                "atlantic_arctic_ocean", 
+                "indian_pacific_ocean", 
+                "global_ocean"
+            ], 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "ocean basin", 
+            "standard_name": "region", 
+            "value": "", 
+            "out_name": "basin", 
+            "type": "character", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "p700": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "700 hPa", 
+            "standard_name": "air_pressure", 
+            "value": "70000.", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev7": {
+            "requested": [
+                "90000.", 
+                "74000.", 
+                "62000.", 
+                "50000.", 
+                "37500.", 
+                "24500.", 
+                "9000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "100000.", 
+                "80000.", 
+                "80000.", 
+                "68000.", 
+                "68000.", 
+                "56000.", 
+                "56000.", 
+                "44000.", 
+                "44000.", 
+                "31000.", 
+                "31000.", 
+                "18000.", 
+                "18000.", 
+                " 0."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev4": {
+            "requested": [
+                "92500.", 
+                "85000.", 
+                "50000.", 
+                "25000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev23": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000.", 
+                "700.", 
+                "500.", 
+                "300.", 
+                "200.", 
+                "100.", 
+                "40."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev39": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "17000.", 
+                "15000.", 
+                "13000.", 
+                "11500.", 
+                "10000.", 
+                "9000.", 
+                "8000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1500.", 
+                "1000.", 
+                "700.", 
+                "500.", 
+                "300.", 
+                "200.", 
+                "150.", 
+                "100.", 
+                "70.", 
+                "50.", 
+                "40.", 
+                "30.", 
+                "20.", 
+                "15.", 
+                "10.", 
+                "7.", 
+                "5.", 
+                "3."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "typepever": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "primary_evergreen_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "typesdec": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "secondary_decidous_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "plev27": {
+            "requested": [
+                "100000.", 
+                "97500.", 
+                "95000.", 
+                "92500.", 
+                "90000.", 
+                "87500.", 
+                "85000.", 
+                "82500.", 
+                "80000.", 
+                "77500.", 
+                "75000.", 
+                "70000.", 
+                "65000.", 
+                "60000.", 
+                "55000.", 
+                "50000.", 
+                "45000.", 
+                "40000.", 
+                "35000.", 
+                "30000.", 
+                "25000.", 
+                "22500.", 
+                "20000.", 
+                "17500.", 
+                "15000.", 
+                "12500.", 
+                "10000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "alt40": {
+            "requested": [
+                "240.", 
+                "720.", 
+                "1200.", 
+                "1680.", 
+                "2160.", 
+                "2640.", 
+                "3120.", 
+                "3600.", 
+                "4080.", 
+                "4560.", 
+                "5040.", 
+                "5520.", 
+                "6000.", 
+                "6480.", 
+                "6960.", 
+                "7440.", 
+                "7920.", 
+                "8400.", 
+                "8880.", 
+                "9360.", 
+                "9840.", 
+                "10320.", 
+                "10800.", 
+                "11280.", 
+                "11760.", 
+                "12240.", 
+                "12720.", 
+                "13200.", 
+                "13680.", 
+                "14160.", 
+                "14640.", 
+                "15120.", 
+                "15600.", 
+                "16080.", 
+                "16560.", 
+                "17040.", 
+                "17520.", 
+                "18000.", 
+                "18480.", 
+                "18960."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "0.", 
+                "480.", 
+                "480.", 
+                "960.", 
+                "960.", 
+                "1440.", 
+                "1440.", 
+                "1920.", 
+                "1920.", 
+                "2400.", 
+                "2400.", 
+                "2880.", 
+                "2880.", 
+                "3360.", 
+                "3360.", 
+                "3840.", 
+                "3840.", 
+                "4320.", 
+                "4320.", 
+                "4800.", 
+                "4800.", 
+                "5280.", 
+                "5280.", 
+                "5760.", 
+                "5760.", 
+                "6240.", 
+                "6240.", 
+                "6720.", 
+                "6720.", 
+                "7200.", 
+                "7200.", 
+                "7680.", 
+                "7680.", 
+                "8160.", 
+                "8160.", 
+                "8640.", 
+                "8640.", 
+                "9120.", 
+                "9120.", 
+                "9600.", 
+                "9600.", 
+                "10080.", 
+                "10080.", 
+                "10560.", 
+                "10560.", 
+                "11040.", 
+                "11040.", 
+                "11520.", 
+                "11520.", 
+                "12000.", 
+                "12000.", 
+                "12480.", 
+                "12480.", 
+                "12960.", 
+                "12960.", 
+                "13440.", 
+                "13440.", 
+                "13920.", 
+                "13920.", 
+                "14400.", 
+                "14400.", 
+                "14880.", 
+                "14880.", 
+                "15360.", 
+                "15360.", 
+                "15840.", 
+                "15840.", 
+                "16320.", 
+                "16320.", 
+                "16800.", 
+                "16800.", 
+                "17280.", 
+                "17280.", 
+                "17760.", 
+                "17760.", 
+                "18240.", 
+                "18240.", 
+                "18720.", 
+                "18720.", 
+                "19200."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "altitude", 
+            "standard_name": "altitude", 
+            "value": "", 
+            "out_name": "alt40", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "time": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "time", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "plev7c": {
+            "requested": [
+                "90000.", 
+                "74000.", 
+                "62000.", 
+                "50000.", 
+                "37500.", 
+                "24500.", 
+                "9000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "height10m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "up", 
+            "must_have_bounds": "no", 
+            "valid_min": "1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "height", 
+            "standard_name": "height", 
+            "value": "10.0", 
+            "out_name": "height", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "30.0", 
+            "axis": "Z"
+        }, 
+        "dbze": {
+            "requested": [
+                "-47.5", 
+                "-42.5", 
+                "-37.5", 
+                "-32.5", 
+                "-27.5", 
+                "-22.5", 
+                "-17.5", 
+                "-12.5", 
+                "-7.5", 
+                "-2.5", 
+                "2.5", 
+                "7.5", 
+                "12.5", 
+                "17.5", 
+                "22.5"
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "-50", 
+                "-45", 
+                "-45", 
+                "-40", 
+                "-40", 
+                "-35", 
+                "-35", 
+                "-30", 
+                "-30", 
+                "-25", 
+                "-25", 
+                "-20", 
+                "-20", 
+                "-15", 
+                "-15", 
+                "-10", 
+                "-10", 
+                "-5", 
+                "-5", 
+                "0", 
+                "0", 
+                "5", 
+                "5", 
+                "10", 
+                "10", 
+                "15", 
+                "15", 
+                "20", 
+                "20", 
+                "25."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "CloudSat simulator equivalent radar reflectivity factor", 
+            "standard_name": "equivalent_reflectivity_factor", 
+            "value": "", 
+            "out_name": "dbze", 
+            "type": "double", 
+            "units": "dBZ", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "typesever": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "secondary_evergreen_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "rho": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "density++++?", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "rho", 
+            "type": "double", 
+            "units": "kg m-3", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "depth100m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "80.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "100.0", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "120.0", 
+            "axis": "Z"
+        }, 
+        "effectRadLi": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "Effective Radius of Liquid Aerosols", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "effectRadLi", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "sdepth": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "200.0", 
+            "axis": "Z"
+        }, 
+        "vegtype": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "plant functional type", 
+            "standard_name": "area_type", 
+            "value": "", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "typec3pft": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "c3_plant_functional_types", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "natural_log_pressure": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "p0: p0 lev: lev", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "p0: p0 lev: lev_bnds", 
+            "bounds_values": "", 
+            "long_name": "atmosphere natural log pressure coordinate", 
+            "standard_name": "atmosphere_ln_pressure_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "p = p0 * exp(-lev)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "20.0", 
+            "axis": "Z"
+        }, 
+        "scatratio": {
+            "requested": [
+                "0.005", 
+                "0.605", 
+                "2.1", 
+                "4.", 
+                "6.", 
+                "8.5", 
+                "12.5", 
+                "17.5", 
+                "22.5", 
+                "27.5", 
+                "35.", 
+                "45.", 
+                "55.", 
+                "70.", 
+                "50040."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "0.", 
+                "0.01", 
+                "0.01", 
+                "1.2", 
+                "1.2", 
+                "3.", 
+                "3.", 
+                "5.", 
+                "5.", 
+                "7.", 
+                "7.", 
+                "10.", 
+                "10.", 
+                "15.", 
+                "15.", 
+                "20.", 
+                "20.", 
+                "25.", 
+                "25.", 
+                "30.", 
+                "30.", 
+                "40.", 
+                "40.", 
+                "50.", 
+                "50.", 
+                "60.", 
+                "60.", 
+                "80.", 
+                "80.", 
+                "100000."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "lidar backscattering ratio", 
+            "standard_name": "backscattering_ratio", 
+            "value": "", 
+            "out_name": "scatratio", 
+            "type": "double", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "standard_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "ptop: ptop sigma: lev ps: ps", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "ptop: ptop sigma: lev_bnds ps: ps", 
+            "bounds_values": "", 
+            "long_name": "sigma coordinate", 
+            "standard_name": "atmosphere_sigma_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "p = ptop + sigma*(ps - ptop)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "1.0", 
+            "axis": "Z"
+        }, 
+        "typepdec": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "primary_deciduous_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "hybrid_height": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "a: lev b: b orog: orog", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "a: lev_bnds b: b_bnds orog: orog", 
+            "bounds_values": "", 
+            "long_name": "hybrid height coordinate", 
+            "standard_name": "atmosphere_hybrid_height_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "m", 
+            "formula": "z = a + b*orog", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "longitude": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "longitude", 
+            "standard_name": "longitude", 
+            "value": "", 
+            "out_name": "lon", 
+            "type": "double", 
+            "units": "degrees_east", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "360.0", 
+            "axis": "X"
+        }, 
+        "effectRadIc": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "Effective Radius of Ice Aerosols", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "effectRadIc", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "p1000": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "1000 hPa", 
+            "standard_name": "air_pressure", 
+            "value": "100000.", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "p500": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "500 hPa", 
+            "standard_name": "air_pressure", 
+            "value": "50000.", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "ocean_double_sigma": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "sigma: sigma depth: depth z1: z1 z2: z2 a: a_coeff href: href k_c: k_c", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "sigma: sigma_bnds depth: depth z1: z1 z2: z2 a: a href: href k_c: k_c", 
+            "bounds_values": "", 
+            "long_name": "ocean double sigma coordinate", 
+            "standard_name": "ocean_double_sigma", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "for k <= k_c:n z(k,j,i)= sigma(k)*f(j,i) n for k > k_c:n z(k,j,i)= f(j,i) + (sigma(k)-1)*(depth(j,i)-f(j,i)) n f(j,i)= 0.5*(z1+ z2) + 0.5*(z1-z2)* tanh(2*a/(z1-z2)*(depth(j,i)-href))", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plevs": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "standard_hybrid_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "p0: p0 a: a b: b ps: ps", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "p0: p0 a: a_bnds b: b_bnds ps: ps", 
+            "bounds_values": "", 
+            "long_name": "hybrid sigma pressure coordinate", 
+            "standard_name": "atmosphere_hybrid_sigma_pressure_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "1", 
+            "formula": "p = a*p0 + b*ps", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "1.0", 
+            "axis": "Z"
+        }, 
+        "p560": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "68000. 44000.", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "56000.0", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }
+    }, 
+    "variable_entry": {
+        "depth_c": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: depth_c", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "ap_bnds": {
+            "units": "Pa", 
+            "long_name": "vertical coordinate formula term: ap(k+1/2)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "ap": {
+            "units": "Pa", 
+            "long_name": "vertical coordinate formula term: ap(k)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "href": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: href", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "orog": {
+            "units": "m", 
+            "long_name": "Surface Altitude", 
+            "type": "real", 
+            "dimensions": "longitude latitude"
+        }, 
+        "zlev": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: zlev(k)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "reffclwc": {
+            "comment": "Droplets are liquid.  The effective radius is defined as the ratio of the third moment over the second moment of the particle size distribution and the time-mean should be calculated, weighting the individual samples by the cloudy fraction of the grid cell.", 
+            "dimensions": "alevel site time1", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Convective Cloud Droplet Effective Radius", 
+            "standard_name": "effective_radius_of_convective_cloud_liquid_water_particle", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "m", 
+            "out_name": "reffclwc", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "ps": {
+            "units": "Pa", 
+            "long_name": "Surface Air Pressure", 
+            "type": "real", 
+            "dimensions": "longitude latitude time"
+        }, 
+        "tntscp": {
+            "comment": "", 
+            "dimensions": "alevel site time1", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Tendency of Air Temperature Due to Stratiform Clouds and Precipitation", 
+            "standard_name": "tendency_of_air_temperature_due_to_stratiform_clouds_and_precipitation", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "K s-1", 
+            "out_name": "tntscp", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "tntrs": {
+            "comment": "Tendency of air temperature due to shortwave radiative heating", 
+            "dimensions": "alevel site time1", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "tendency_of_air_temperature_due_to_shortwave_heating", 
+            "standard_name": "tendency_of_air_temperature_due_to_shortwave_heating", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "K s-1", 
+            "out_name": "tntrs", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "reffclws": {
+            "comment": "Droplets are liquid.  The effective radius is defined as the ratio of the third moment over the second moment of the particle size distribution and the time-mean should be calculated, weighting the individual samples by the cloudy fraction of the grid cell.", 
+            "dimensions": "alevel site time1", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Stratiform Cloud Droplet Effective Radius", 
+            "standard_name": "effective_radius_of_stratiform_cloud_liquid_water_particle", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "m", 
+            "out_name": "reffclws", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "sigma_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: sigma(k+1/2)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "tntrscs": {
+            "comment": "Tendency of Air Temperature due to Clear Sky Shortwave Radiative Heating", 
+            "dimensions": "alevel site time1", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Tendency of Air Temperature due to Clear Sky Shortwave Radiative Heating", 
+            "standard_name": "tendency_of_air_temperature_due_to_shortwave_heating_assuming_clear_sky", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "K s-1", 
+            "out_name": "tntrscs", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "ptop": {
+            "units": "Pa", 
+            "long_name": "pressure at top of model", 
+            "type": "", 
+            "dimensions": ""
+        }, 
+        "b_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: b(k+1/2)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "tntd": {
+            "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", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Tendency of Air Temperature due to Numerical Diffusion", 
+            "standard_name": "tendency_of_air_temperature_due_to_numerical_diffusion", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "K s-1", 
+            "out_name": "tntd", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "tntpbl": {
+            "comment": "Includes all boundary layer terms including diffusive terms.", 
+            "dimensions": "alevel site time1", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Tendency of Air Temperature Due to Boundary Layer Mixing", 
+            "standard_name": "tendency_of_air_temperature_due_to_boundary_layer_mixing", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "K s-1", 
+            "out_name": "tntpbl", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "nsigma": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: nsigma", 
+            "type": "integer", 
+            "dimensions": ""
+        }, 
+        "tntrlcs": {
+            "comment": "Tendency of Air Temperature due to Clear Sky Longwave Radiative Heating", 
+            "dimensions": "alevel site time1", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Tendency of Air Temperature due to Clear Sky Longwave Radiative Heating", 
+            "standard_name": "tendency_of_air_temperature_due_to_longwave_heating_assuming_clear_sky", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "K s-1", 
+            "out_name": "tntrlcs", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "ztop": {
+            "units": "m", 
+            "long_name": "height of top of model", 
+            "type": "", 
+            "dimensions": ""
+        }, 
+        "zlev_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: zlev(k+1/2)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "z1": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: z1", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "z2": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: z2", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "a": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: a(k)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "p0": {
+            "units": "Pa", 
+            "long_name": "vertical coordinate formula term: reference pressure", 
+            "type": "", 
+            "dimensions": ""
+        }, 
+        "b": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: b(k)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "reffclis": {
+            "comment": "This is defined as the in-cloud ratio of the third moment over the second moment of the particle size distribution (obtained by considering only the cloudy portion of the grid cell).", 
+            "dimensions": "alevel site time1", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Hydrometeor Effective Radius of Stratiform Cloud Ice", 
+            "standard_name": "effective_radius_of_stratiform_cloud_ice_particle", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "m", 
+            "out_name": "reffclis", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "tnhusscp": {
+            "comment": "", 
+            "dimensions": "alevel site time1", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Tendency of Specific Humidity Due to Stratiform Clouds and Precipitation", 
+            "standard_name": "tendency_of_specific_humidity_due_to_stratiform_clouds_and_precipitation", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "s-1", 
+            "out_name": "tnhusscp", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "depth": {
+            "units": "m", 
+            "long_name": "Sea Floor Depth: formula term: thetao", 
+            "type": "real", 
+            "dimensions": "longitude latitude"
+        }, 
+        "eta": {
+            "units": "m", 
+            "long_name": "Sea Surface Height formula term: thetao", 
+            "type": "real", 
+            "dimensions": "longitude latitude time"
+        }, 
+        "tntrl": {
+            "comment": "Tendency of air temperature due to longwave radiative heating", 
+            "dimensions": "alevel site time1", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "tendency_of_air_temperature_due_to_longwave_heating", 
+            "standard_name": "tendency_of_air_temperature_due_to_longwave_heating", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "K s-1", 
+            "out_name": "tntrl", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "tnhuspbl": {
+            "comment": "Includes all boundary layer terms including diffusive terms.", 
+            "dimensions": "alevel site time1", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Tendency of Specific Humidity Due to Boundary Layer Mixing", 
+            "standard_name": "tendency_of_specific_humidity_due_to_boundary_layer_mixing", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "s-1", 
+            "out_name": "tnhuspbl", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "k_c": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: k_c", 
+            "type": "integer", 
+            "dimensions": ""
+        }, 
+        "sigma": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: sigma(k)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "reffclic": {
+            "comment": "This is defined as the in-cloud ratio of the third moment over the second moment of the particle size distribution (obtained by considering only the cloudy portion of the grid cell).", 
+            "dimensions": "alevel site time1", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Hydrometeor Effective Radius of Convective Cloud Ice", 
+            "standard_name": "effective_radius_of_convective_cloud_ice_particle", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: point", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "m", 
+            "out_name": "reffclic", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "a_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: a(k+1/2)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }
+    }
+}
diff --git a/TestTables/CMIP6_emYr.json b/TestTables/CMIP6_emYr.json
new file mode 100644
index 0000000..ea7a2b3
--- /dev/null
+++ b/TestTables/CMIP6_emYr.json
@@ -0,0 +1,2947 @@
+{
+    "Header": {
+        "product": "output", 
+        "approx_interval": "", 
+        "realm": "land", 
+        "cmor_version": "3.1", 
+        "Conventions": "CF-1.6 CMIP-6.0", 
+        "frequency": "yr", 
+        "table_id": "Table emYr", 
+        "data_specs_version": "01.beta.29", 
+        "mip_era": "CMIP6", 
+        "generic_levels": "", 
+        "missing_value": "1e20", 
+        "table_date": "14 June 2016"
+    }, 
+    "axis_entry": {
+        "typebare": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "bare_ground", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "tau": {
+            "requested": [
+                "0.15", 
+                "0.8", 
+                "2.45", 
+                "6.5", 
+                "16.2", 
+                "41.5", 
+                "100."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "0.0", 
+                "0.3", 
+                "0.3", 
+                "1.3", 
+                "1.3", 
+                "3.6", 
+                "3.6", 
+                "9.4", 
+                "9.4", 
+                "23.0", 
+                "23.0", 
+                "60.0", 
+                "60.0", 
+                "100000."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "cloud optical thickness", 
+            "standard_name": "atmosphere_optical_thickness_due_to_cloud", 
+            "value": "", 
+            "out_name": "tau", 
+            "type": "double", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "olayer100m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "0. 100.", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "50.0", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "100.0", 
+            "axis": "Z"
+        }, 
+        "spectband": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "Spectral Band", 
+            "standard_name": "wave_frequency", 
+            "value": "", 
+            "out_name": "spectband", 
+            "type": "double", 
+            "units": "s-1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "ocean_sigma_z": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "sigma: sigma eta: eta depth: depth depth_c: depth_c nsigma: nsigma zlev: zlev", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "sigma: sigma_bnds eta: eta depth: depth depth_c: depth_c nsigma: nsigma zlev: zlev_bnds", 
+            "bounds_values": "", 
+            "long_name": "ocean sigma over z coordinate", 
+            "standard_name": "ocean_sigma_z", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "for k <= nsigma: z(n,k,j,i) = eta(n,j,i) + sigma(k)*(min(depth_c,depth(j,i))+eta(n,j,i)) ; for k > nsigma: z(n,k,j,i) = zlev(k)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev19": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000.", 
+                "500.", 
+                "100."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "p220": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "44000. 0.0", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "22000.0", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev17": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev10": {
+            "requested": [
+                "100000.", 
+                "85000.", 
+                "70000.", 
+                "50000.", 
+                "25000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "site": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "site index", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "site", 
+            "type": "integer", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "smooth_level": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "a: a b1: b1 b2: b2 ztop: ztop zsurf1: zsurf1 zsurf2: zsurf2", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-200.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "a: a_bnds b1: b1_bnds b2: b2_bnds ztop: ztop zsurf1: zsurf1 zsurf2: zsurf2", 
+            "bounds_values": "", 
+            "long_name": "atmosphere smooth level vertical (SLEVE) coordinate", 
+            "standard_name": "atmosphere_sleve_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "m", 
+            "formula": "z = a*ztop + b1*zsurf1 + b2*zsurf2", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "800000.0", 
+            "axis": "Z"
+        }, 
+        "p840": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "100000. 68000.", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "84000.0", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "ocean_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "sigma: lev eta: eta depth: depth", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "sigma: lev_bnds eta: eta depth: depth", 
+            "bounds_values": "", 
+            "long_name": "ocean sigma coordinate", 
+            "standard_name": "ocean_sigma_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "z(n,k,j,i) = eta(n,j,i) + sigma(k)*(depth(j,i)+eta(n,j,i))", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "0.0", 
+            "axis": "Z"
+        }, 
+        "depth0m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "0.0", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "100.0", 
+            "axis": "Z"
+        }, 
+        "ocean_s": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "s: lev eta: eta depth: depth a: a_coeff b: b_coeff depth_c: depth_c", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "s: lev_bnds eta: eta depth: depth a: a b: b depth_c: depth_c", 
+            "bounds_values": "", 
+            "long_name": "ocean s-coordinate", 
+            "standard_name": "ocean_s_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "z(n,k,j,i) = eta(n,j,i)*(1+s(k)) + depth_c*s(k) + (depth(j,i)-depth_c)*C(k) n where n C(k)=(1-b)*sinh(a*s(k))/sinh(a) +n           b*(tanh(a*(s(k)+0.5))/(2*tanh(0.5*a)) - 0.5)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "0.0", 
+            "axis": "Z"
+        }, 
+        "plev4s": {
+            "requested": [
+                "85000.", 
+                "50000.", 
+                "20000.", 
+                "5000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "typec4pft": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "c4_plant_functional_types", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "plev3h": {
+            "requested": [
+                "10000.", 
+                "1000.", 
+                "100."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "height2m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "up", 
+            "must_have_bounds": "no", 
+            "valid_min": "1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "height", 
+            "standard_name": "height", 
+            "value": "2.0", 
+            "out_name": "height", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "10.0", 
+            "axis": "Z"
+        }, 
+        "time1": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "time", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "plev7h": {
+            "requested": [
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "25000.", 
+                "5000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "sza5": {
+            "requested": [
+                "0.", 
+                "20.", 
+                "40.", 
+                "60.", 
+                "80."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "solar zenith angle", 
+            "standard_name": "solar_zenith_angle", 
+            "value": "", 
+            "out_name": "sza", 
+            "type": "double", 
+            "units": "degree", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "depth_coord": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "ocean depth coordinate", 
+            "standard_name": "depth", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "12000.0", 
+            "axis": "Z"
+        }, 
+        "sdepth1": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "0.0 0.1", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "0.05", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "0.2", 
+            "axis": "Z"
+        }, 
+        "alternate_hybrid_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "ap: ap b: b ps: ps", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "ap: ap_bnds b: b_bnds ps: ps", 
+            "bounds_values": "", 
+            "long_name": "hybrid sigma pressure coordinate", 
+            "standard_name": "atmosphere_hybrid_sigma_pressure_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "1", 
+            "formula": "p = ap + b*ps", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "1.0", 
+            "axis": "Z"
+        }, 
+        "time2": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "time", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "yes", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "time3": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "Diurnal cycle: monthly mean of the diurnal cycle (1 hour steps).", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "oline": {
+            "requested": [
+                "barents_opening", 
+                "bering_strait", 
+                "canadian_archipelago", 
+                "denmark_strait", 
+                "drake_passage", 
+                "english_channel", 
+                "pacific_equatorial_undercurrent", 
+                "faroe_scotland_channel", 
+                "florida_bahamas_strait", 
+                "fram_strait", 
+                "iceland_faroe_channel", 
+                "indonesian_thoughflow", 
+                "mozambique_channel", 
+                "taiwan_luzon_straits", 
+                "windward_passage"
+            ], 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "ocean passage", 
+            "standard_name": "region", 
+            "value": "", 
+            "out_name": "line", 
+            "type": "character", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "plev14": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "25000.", 
+                "15000.", 
+                "10000.", 
+                "5000.", 
+                "2000.", 
+                "1000.", 
+                "500.", 
+                "100."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev8": {
+            "requested": [
+                "100000.", 
+                "85000.", 
+                "70000.", 
+                "50000.", 
+                "25000.", 
+                "10000.", 
+                "5000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "location": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "location index", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "loc", 
+            "type": "integer", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "latitude": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-90.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "latitude", 
+            "standard_name": "latitude", 
+            "value": "", 
+            "out_name": "lat", 
+            "type": "double", 
+            "units": "degrees_north", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "90.0", 
+            "axis": "Y"
+        }, 
+        "plev3": {
+            "requested": [
+                "85000.", 
+                "50000.", 
+                "25000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "basin": {
+            "requested": [
+                "atlantic_arctic_ocean", 
+                "indian_pacific_ocean", 
+                "global_ocean"
+            ], 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "ocean basin", 
+            "standard_name": "region", 
+            "value": "", 
+            "out_name": "basin", 
+            "type": "character", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "p700": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "700 hPa", 
+            "standard_name": "air_pressure", 
+            "value": "70000.", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev7": {
+            "requested": [
+                "90000.", 
+                "74000.", 
+                "62000.", 
+                "50000.", 
+                "37500.", 
+                "24500.", 
+                "9000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "100000.", 
+                "80000.", 
+                "80000.", 
+                "68000.", 
+                "68000.", 
+                "56000.", 
+                "56000.", 
+                "44000.", 
+                "44000.", 
+                "31000.", 
+                "31000.", 
+                "18000.", 
+                "18000.", 
+                " 0."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev4": {
+            "requested": [
+                "92500.", 
+                "85000.", 
+                "50000.", 
+                "25000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev23": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000.", 
+                "700.", 
+                "500.", 
+                "300.", 
+                "200.", 
+                "100.", 
+                "40."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev39": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "17000.", 
+                "15000.", 
+                "13000.", 
+                "11500.", 
+                "10000.", 
+                "9000.", 
+                "8000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1500.", 
+                "1000.", 
+                "700.", 
+                "500.", 
+                "300.", 
+                "200.", 
+                "150.", 
+                "100.", 
+                "70.", 
+                "50.", 
+                "40.", 
+                "30.", 
+                "20.", 
+                "15.", 
+                "10.", 
+                "7.", 
+                "5.", 
+                "3."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "typepever": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "primary_evergreen_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "typesdec": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "secondary_decidous_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "plev27": {
+            "requested": [
+                "100000.", 
+                "97500.", 
+                "95000.", 
+                "92500.", 
+                "90000.", 
+                "87500.", 
+                "85000.", 
+                "82500.", 
+                "80000.", 
+                "77500.", 
+                "75000.", 
+                "70000.", 
+                "65000.", 
+                "60000.", 
+                "55000.", 
+                "50000.", 
+                "45000.", 
+                "40000.", 
+                "35000.", 
+                "30000.", 
+                "25000.", 
+                "22500.", 
+                "20000.", 
+                "17500.", 
+                "15000.", 
+                "12500.", 
+                "10000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "alt40": {
+            "requested": [
+                "240.", 
+                "720.", 
+                "1200.", 
+                "1680.", 
+                "2160.", 
+                "2640.", 
+                "3120.", 
+                "3600.", 
+                "4080.", 
+                "4560.", 
+                "5040.", 
+                "5520.", 
+                "6000.", 
+                "6480.", 
+                "6960.", 
+                "7440.", 
+                "7920.", 
+                "8400.", 
+                "8880.", 
+                "9360.", 
+                "9840.", 
+                "10320.", 
+                "10800.", 
+                "11280.", 
+                "11760.", 
+                "12240.", 
+                "12720.", 
+                "13200.", 
+                "13680.", 
+                "14160.", 
+                "14640.", 
+                "15120.", 
+                "15600.", 
+                "16080.", 
+                "16560.", 
+                "17040.", 
+                "17520.", 
+                "18000.", 
+                "18480.", 
+                "18960."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "0.", 
+                "480.", 
+                "480.", 
+                "960.", 
+                "960.", 
+                "1440.", 
+                "1440.", 
+                "1920.", 
+                "1920.", 
+                "2400.", 
+                "2400.", 
+                "2880.", 
+                "2880.", 
+                "3360.", 
+                "3360.", 
+                "3840.", 
+                "3840.", 
+                "4320.", 
+                "4320.", 
+                "4800.", 
+                "4800.", 
+                "5280.", 
+                "5280.", 
+                "5760.", 
+                "5760.", 
+                "6240.", 
+                "6240.", 
+                "6720.", 
+                "6720.", 
+                "7200.", 
+                "7200.", 
+                "7680.", 
+                "7680.", 
+                "8160.", 
+                "8160.", 
+                "8640.", 
+                "8640.", 
+                "9120.", 
+                "9120.", 
+                "9600.", 
+                "9600.", 
+                "10080.", 
+                "10080.", 
+                "10560.", 
+                "10560.", 
+                "11040.", 
+                "11040.", 
+                "11520.", 
+                "11520.", 
+                "12000.", 
+                "12000.", 
+                "12480.", 
+                "12480.", 
+                "12960.", 
+                "12960.", 
+                "13440.", 
+                "13440.", 
+                "13920.", 
+                "13920.", 
+                "14400.", 
+                "14400.", 
+                "14880.", 
+                "14880.", 
+                "15360.", 
+                "15360.", 
+                "15840.", 
+                "15840.", 
+                "16320.", 
+                "16320.", 
+                "16800.", 
+                "16800.", 
+                "17280.", 
+                "17280.", 
+                "17760.", 
+                "17760.", 
+                "18240.", 
+                "18240.", 
+                "18720.", 
+                "18720.", 
+                "19200."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "altitude", 
+            "standard_name": "altitude", 
+            "value": "", 
+            "out_name": "alt40", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "time": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "time", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "plev7c": {
+            "requested": [
+                "90000.", 
+                "74000.", 
+                "62000.", 
+                "50000.", 
+                "37500.", 
+                "24500.", 
+                "9000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "height10m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "up", 
+            "must_have_bounds": "no", 
+            "valid_min": "1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "height", 
+            "standard_name": "height", 
+            "value": "10.0", 
+            "out_name": "height", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "30.0", 
+            "axis": "Z"
+        }, 
+        "dbze": {
+            "requested": [
+                "-47.5", 
+                "-42.5", 
+                "-37.5", 
+                "-32.5", 
+                "-27.5", 
+                "-22.5", 
+                "-17.5", 
+                "-12.5", 
+                "-7.5", 
+                "-2.5", 
+                "2.5", 
+                "7.5", 
+                "12.5", 
+                "17.5", 
+                "22.5"
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "-50", 
+                "-45", 
+                "-45", 
+                "-40", 
+                "-40", 
+                "-35", 
+                "-35", 
+                "-30", 
+                "-30", 
+                "-25", 
+                "-25", 
+                "-20", 
+                "-20", 
+                "-15", 
+                "-15", 
+                "-10", 
+                "-10", 
+                "-5", 
+                "-5", 
+                "0", 
+                "0", 
+                "5", 
+                "5", 
+                "10", 
+                "10", 
+                "15", 
+                "15", 
+                "20", 
+                "20", 
+                "25."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "CloudSat simulator equivalent radar reflectivity factor", 
+            "standard_name": "equivalent_reflectivity_factor", 
+            "value": "", 
+            "out_name": "dbze", 
+            "type": "double", 
+            "units": "dBZ", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "typesever": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "secondary_evergreen_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "rho": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "density++++?", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "rho", 
+            "type": "double", 
+            "units": "kg m-3", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "depth100m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "80.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "100.0", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "120.0", 
+            "axis": "Z"
+        }, 
+        "effectRadLi": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "Effective Radius of Liquid Aerosols", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "effectRadLi", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "sdepth": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "200.0", 
+            "axis": "Z"
+        }, 
+        "vegtype": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "plant functional type", 
+            "standard_name": "area_type", 
+            "value": "", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "typec3pft": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "c3_plant_functional_types", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "natural_log_pressure": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "p0: p0 lev: lev", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "p0: p0 lev: lev_bnds", 
+            "bounds_values": "", 
+            "long_name": "atmosphere natural log pressure coordinate", 
+            "standard_name": "atmosphere_ln_pressure_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "p = p0 * exp(-lev)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "20.0", 
+            "axis": "Z"
+        }, 
+        "scatratio": {
+            "requested": [
+                "0.005", 
+                "0.605", 
+                "2.1", 
+                "4.", 
+                "6.", 
+                "8.5", 
+                "12.5", 
+                "17.5", 
+                "22.5", 
+                "27.5", 
+                "35.", 
+                "45.", 
+                "55.", 
+                "70.", 
+                "50040."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "0.", 
+                "0.01", 
+                "0.01", 
+                "1.2", 
+                "1.2", 
+                "3.", 
+                "3.", 
+                "5.", 
+                "5.", 
+                "7.", 
+                "7.", 
+                "10.", 
+                "10.", 
+                "15.", 
+                "15.", 
+                "20.", 
+                "20.", 
+                "25.", 
+                "25.", 
+                "30.", 
+                "30.", 
+                "40.", 
+                "40.", 
+                "50.", 
+                "50.", 
+                "60.", 
+                "60.", 
+                "80.", 
+                "80.", 
+                "100000."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "lidar backscattering ratio", 
+            "standard_name": "backscattering_ratio", 
+            "value": "", 
+            "out_name": "scatratio", 
+            "type": "double", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "standard_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "ptop: ptop sigma: lev ps: ps", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "ptop: ptop sigma: lev_bnds ps: ps", 
+            "bounds_values": "", 
+            "long_name": "sigma coordinate", 
+            "standard_name": "atmosphere_sigma_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "p = ptop + sigma*(ps - ptop)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "1.0", 
+            "axis": "Z"
+        }, 
+        "typepdec": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "primary_deciduous_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "hybrid_height": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "a: lev b: b orog: orog", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "a: lev_bnds b: b_bnds orog: orog", 
+            "bounds_values": "", 
+            "long_name": "hybrid height coordinate", 
+            "standard_name": "atmosphere_hybrid_height_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "m", 
+            "formula": "z = a + b*orog", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "longitude": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "longitude", 
+            "standard_name": "longitude", 
+            "value": "", 
+            "out_name": "lon", 
+            "type": "double", 
+            "units": "degrees_east", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "360.0", 
+            "axis": "X"
+        }, 
+        "effectRadIc": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "Effective Radius of Ice Aerosols", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "effectRadIc", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "p1000": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "1000 hPa", 
+            "standard_name": "air_pressure", 
+            "value": "100000.", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "p500": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "500 hPa", 
+            "standard_name": "air_pressure", 
+            "value": "50000.", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "ocean_double_sigma": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "sigma: sigma depth: depth z1: z1 z2: z2 a: a_coeff href: href k_c: k_c", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "sigma: sigma_bnds depth: depth z1: z1 z2: z2 a: a href: href k_c: k_c", 
+            "bounds_values": "", 
+            "long_name": "ocean double sigma coordinate", 
+            "standard_name": "ocean_double_sigma", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "for k <= k_c:n z(k,j,i)= sigma(k)*f(j,i) n for k > k_c:n z(k,j,i)= f(j,i) + (sigma(k)-1)*(depth(j,i)-f(j,i)) n f(j,i)= 0.5*(z1+ z2) + 0.5*(z1-z2)* tanh(2*a/(z1-z2)*(depth(j,i)-href))", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plevs": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "standard_hybrid_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "p0: p0 a: a b: b ps: ps", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "p0: p0 a: a_bnds b: b_bnds ps: ps", 
+            "bounds_values": "", 
+            "long_name": "hybrid sigma pressure coordinate", 
+            "standard_name": "atmosphere_hybrid_sigma_pressure_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "1", 
+            "formula": "p = a*p0 + b*ps", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "1.0", 
+            "axis": "Z"
+        }, 
+        "p560": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "68000. 44000.", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "56000.0", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }
+    }, 
+    "variable_entry": {
+        "wvelbase": {
+            "comment": "w-velocity at land ice base", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Z-component of land ice basal velocity", 
+            "standard_name": "land_ice_basal_upward_velocity", 
+            "modeling_realm": "landIce", 
+            "cell_measures": "time: mean area: mean where ice_sheet", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "m/yr", 
+            "out_name": "wvelbase", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "litausb": {
+            "comment": "The magnitude of the shear stress at land ice base", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Magnitude of land ice basal shear stress", 
+            "standard_name": "magnitude_of_land_ice_basal_shear_stress", 
+            "modeling_realm": "landIce", 
+            "cell_measures": "time: mean area: mean where ice_sheet", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "Pa", 
+            "out_name": "litausb", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "depth_c": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: depth_c", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "cSoil": {
+            "comment": "Carbon mass in the full depth of the soil model.", 
+            "dimensions": "longitude latitude time1", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Carbon Mass in Model Soil Pool", 
+            "standard_name": "soil_carbon_content", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: point", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg m-2", 
+            "out_name": "cSoil", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "sftgrf": {
+            "comment": "Fraction of grid cell covered by grounded ice sheet", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Grounded Ice Sheet  Area Fraction", 
+            "standard_name": "grounded_ice_sheet_area_fraction", 
+            "modeling_realm": "landIce", 
+            "cell_measures": "time: mean area: mean where grounded_ice_sheet", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "%", 
+            "out_name": "sftgrf", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "uvelmean": {
+            "comment": "The vertical mean land ice velocity is the average from the bedrock to the surface of the ice", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "X-component of land ice vertical mean velocity", 
+            "standard_name": "land_ice_vertical_mean_x_velocity", 
+            "modeling_realm": "landIce", 
+            "cell_measures": "time: mean area: mean where ice_sheet", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "m/yr", 
+            "out_name": "uvelmean", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "ap_bnds": {
+            "units": "Pa", 
+            "long_name": "vertical coordinate formula term: ap(k+1/2)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "ap": {
+            "units": "Pa", 
+            "long_name": "vertical coordinate formula term: ap(k)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "href": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: href", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "litaulb": {
+            "comment": "The magnitude of the longitudinal stress at land ice base", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Magnitude of land ice basal longitudinal stress", 
+            "standard_name": "magnitude_of_land_ice_basal_longitudinal_stress", 
+            "modeling_realm": "landIce", 
+            "cell_measures": "time: mean area: mean where ice_sheet", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "Pa", 
+            "out_name": "litaulb", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "orog": {
+            "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", 
+            "positive": "", 
+            "valid_min": "-700.0", 
+            "long_name": "surface altitude", 
+            "standard_name": "surface_altitude", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean area: mean where ice_sheet", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "m", 
+            "out_name": "orog", 
+            "type": "real", 
+            "valid_max": "10000.0", 
+            "ok_max_mean_abs": ""
+        }, 
+        "iareagl": {
+            "comment": "Total area of the grounded ice in Greenland", 
+            "dimensions": "icesheet time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Area covered by grounded ice sheet", 
+            "standard_name": "grounded_land_ice_area", 
+            "modeling_realm": "landIce", 
+            "cell_measures": "time: mean area: mean where grounded_ice_sheet", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "m2", 
+            "out_name": "iareagl", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "zlev": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: zlev(k)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "uvelbase": {
+            "comment": "u-velocity at land ice base", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "X-component of land ice basal velocity", 
+            "standard_name": "land_ice_basal_x_velocity", 
+            "modeling_realm": "landIce", 
+            "cell_measures": "time: mean area: mean where ice_sheet", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "m/yr", 
+            "out_name": "uvelbase", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "osaltrmadvect": {
+            "comment": "", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Tendency of Sea Water Salinity Expressed as Salt Content due to Residual Mean Advection", 
+            "standard_name": "tendency_of_sea_water_salinity_expressed_as_salt_content_due_to_residual_mean_advection", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg/m2/s", 
+            "out_name": "osaltrmadvect", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "ps": {
+            "units": "Pa", 
+            "long_name": "Surface Air Pressure", 
+            "type": "real", 
+            "dimensions": "longitude latitude time"
+        }, 
+        "ocontemppadvect": {
+            "comment": "Tendency of heat content for a grid cell from parameterized eddy advection (any form of eddy advection). Reported only for models that use conservative temperature as prognostic field.", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "tendency of sea water conservative temperature expressed as heat content due to parameterized eddy advection", 
+            "standard_name": "tendency_of_sea_water_conservative_temperature_expressed_as_heat_content_due_to_parameterized_eddy_advection", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "0", 
+            "units": "W m-2", 
+            "out_name": "ocontemppadvect", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "wvelsurf": {
+            "comment": "w-velocity at land ice surface", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Z-component of land ice surface velocity", 
+            "standard_name": "land_ice_surface_z_velocity", 
+            "modeling_realm": "landIce", 
+            "cell_measures": "time: mean area: mean where ice_sheet", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "m/yr", 
+            "out_name": "wvelsurf", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "sftflf": {
+            "comment": "Fraction of grid cell covered by ice sheet flowing over seawater", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Floating Ice Sheet  Area Fraction", 
+            "standard_name": "floating_ice_sheet_area_fraction", 
+            "modeling_realm": "landIce", 
+            "cell_measures": "time: mean area: mean where floating_ice_sheet", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "%", 
+            "out_name": "sftflf", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "hfgeoubed": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Geothermal Heat flux beneath land ice", 
+            "standard_name": "upward_geothermal_heat_flux_at_bedrock", 
+            "modeling_realm": "landIce", 
+            "cell_measures": "time: mean area: mean where ice_sheet", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "W m-2", 
+            "out_name": "hfgeoubed", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "cVeg": {
+            "comment": "Carbon mass per unit area in vegetation.", 
+            "dimensions": "longitude latitude time1", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Carbon Mass in Vegetation", 
+            "standard_name": "vegetation_carbon_content", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: point", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg m-2", 
+            "out_name": "cVeg", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "cSoilLut": {
+            "comment": "end of year values (not annual mean)", 
+            "dimensions": "longitude latitude time1", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Carbon in Soil Pool on Landuse Tiles", 
+            "standard_name": "", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: point", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg m-2", 
+            "out_name": "cSoilLut", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "uvelsurf": {
+            "comment": "u-velocity at land ice surface", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "X-component of land ice surface velocity", 
+            "standard_name": "land_ice_surface_x_velocity", 
+            "modeling_realm": "landIce", 
+            "cell_measures": "time: mean area: mean where ice_sheet", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "m/yr", 
+            "out_name": "uvelsurf", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "tnkebto": {
+            "comment": "Depth integrated impacts on kinetic energy arising from parameterized eddy-induced advection. For CMIP5, this diagnostic was 3d, whereas the CMIP6 depth integrated diagnostic is sufficient for many purposes and reduces archive requirements.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "tendency of ocean eddy kinetic energy content due to parameterized eddy advection", 
+            "standard_name": "tendency_of_ocean_eddy_kinetic_energy_content_due_to_parameterized_eddy_advection", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "W/m2", 
+            "out_name": "tnkebto", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "sigma_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: sigma(k+1/2)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "cAnt": {
+            "comment": "grid cell mean carbon in anthropogenic pools 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 time1", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Carbon in Anthropogenic Pools", 
+            "standard_name": "", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: point", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg m-2", 
+            "out_name": "cAnt", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "vvelsurf": {
+            "comment": "v-velocity at land ice surface", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Y-component of land ice surface velocity", 
+            "standard_name": "land_ice_surface_y_velocity", 
+            "modeling_realm": "landIce", 
+            "cell_measures": "time: mean area: mean where ice_sheet", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "m/yr", 
+            "out_name": "vvelsurf", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "ocontemprmadvect": {
+            "comment": "", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Tendency of Sea Water Conservative Temperature Expressed as Heat Content due to Residual Mean Advection", 
+            "standard_name": "tendency_of_sea_water_conservative_temperature_expressed_as_heat_content_due_to_residual_mean_advection", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "0", 
+            "units": "W m-2", 
+            "out_name": "ocontemprmadvect", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "ptop": {
+            "units": "Pa", 
+            "long_name": "pressure at top of model", 
+            "type": "", 
+            "dimensions": ""
+        }, 
+        "limass": {
+            "comment": "Computed as the volume times density", 
+            "dimensions": "icesheet time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Ice sheet mass", 
+            "standard_name": "land_ice_mass", 
+            "modeling_realm": "landIce", 
+            "cell_measures": "time: mean area: mean where ice_sheet", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "", 
+            "out_name": "limass", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "fracLut": {
+            "comment": "end of year values (not annual mean); note that fraction should be reported as fraction of atmospheric grid cell (example: frac_lnd = 0.5, frac_ocn = 0.5, frac_crop_lnd = 0.2 (of land portion of grid cell), then frac_lut(crp) = 0.5*0.2 = 0.1)", 
+            "dimensions": "longitude latitude time1", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "fraction of grid cell for each land use tile", 
+            "standard_name": "", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: point", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "fraction", 
+            "out_name": "fracLut", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "acabf": {
+            "comment": "Specific mass balance of land ice (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", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Land Ice Surface Mass Balance flux", 
+            "standard_name": "land_ice_surface_specific_mass_balance_flux", 
+            "modeling_realm": "landIce", 
+            "cell_measures": "time: mean area: mean where ice_sheet", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg m-2 s-1", 
+            "out_name": "acabf", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "b_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: b(k+1/2)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "snc": {
+            "comment": "Fraction of each grid cell that is occupied by snow that rests on land portion of cell.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Snow Area Fraction", 
+            "standard_name": "surface_snow_area_fraction", 
+            "modeling_realm": "landIce land", 
+            "cell_measures": "time: mean area: mean where ice_sheet", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "-29.01", 
+            "units": "%", 
+            "out_name": "snc", 
+            "type": "real", 
+            "valid_max": "105", 
+            "ok_max_mean_abs": "78.46"
+        }, 
+        "opottemprmadvect": {
+            "comment": "", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Tendency of Sea Eater Potential Temperature Expressed as Heat Content due to Residual Mean Advection", 
+            "standard_name": "tendency_of_sea_water_potential_temperature_expressed_as_heat_content_due_to_residual_mean_advection", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "0", 
+            "units": "W m-2", 
+            "out_name": "opottemprmadvect", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "nsigma": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: nsigma", 
+            "type": "integer", 
+            "dimensions": ""
+        }, 
+        "cLitter": {
+            "comment": "", 
+            "dimensions": "longitude latitude time1", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Carbon Mass in Litter Pool", 
+            "standard_name": "litter_carbon_content", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: point", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg m-2", 
+            "out_name": "cLitter", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "cVegLut": {
+            "comment": "end of year values (not annual mean)", 
+            "dimensions": "longitude latitude time1", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "carbon in vegetation on land use tiles", 
+            "standard_name": "", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: point", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg m-2", 
+            "out_name": "cVegLut", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "vvelmean": {
+            "comment": "The vertical mean land ice velocity is the average from the bedrock to the surface of the ice", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Y-component of land ice vertical mean velocity", 
+            "standard_name": "land_ice_vertical_mean_y_velocity", 
+            "modeling_realm": "landIce", 
+            "cell_measures": "time: mean area: mean where ice_sheet", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "m/yr", 
+            "out_name": "vvelmean", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "cAntLut": {
+            "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 time1", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Carbon in Anthropogenic Pools Associated with Landuse Tiles", 
+            "standard_name": "", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: point", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg m-2", 
+            "out_name": "cAntLut", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "litaunb": {
+            "comment": "The magnitude of the normal stress at land ice base", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Magnitude of land ice basal normal stress", 
+            "standard_name": "magnitude_of_land_ice_basal_normal_stress", 
+            "modeling_realm": "landIce", 
+            "cell_measures": "time: mean area: mean where ice_sheet", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "Pa", 
+            "out_name": "litaunb", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "ztop": {
+            "units": "m", 
+            "long_name": "height of top of model", 
+            "type": "", 
+            "dimensions": ""
+        }, 
+        "topg": {
+            "comment": "The bedrock topography beneath the land ice", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Bedrock Altitude", 
+            "standard_name": "bedrock_altitude", 
+            "modeling_realm": "landIce", 
+            "cell_measures": "time: mean area: mean where ice_sheet", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "m", 
+            "out_name": "topg", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "fracInLut": {
+            "comment": "cumulative fractional transitions over the year; note that fraction should be reported as fraction of atmospheric grid cell", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "annual gross fraction that was transferred into this tile from other land use tiles", 
+            "standard_name": "", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "fraction", 
+            "out_name": "fracInLut", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "litempsnic": {
+            "comment": "Surface Temperature that is used to force ice sheet models. It does not vary with seasons. In some models it is the temperature at the base of the snow, and in other at the base of firn. Report surface temperature of ice sheet where snow or firn thickness is zero", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Temperature at the interface between land ice and snow or firn", 
+            "standard_name": "land_ice_temperature_at_snow_or_firn_base", 
+            "modeling_realm": "landIce", 
+            "cell_measures": "time: mean area: mean where ice_sheet", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "K", 
+            "out_name": "litempsnic", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "iareafl": {
+            "comment": "Total area of the floating ice shelves of Greenland", 
+            "dimensions": "icesheet time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Area covered by floating ice shelves", 
+            "standard_name": "floating_land_ice_area", 
+            "modeling_realm": "landIce", 
+            "cell_measures": "time: mean area: mean where floating_ice_sheet", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "m2", 
+            "out_name": "iareafl", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "zlev_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: zlev(k+1/2)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "z1": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: z1", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "z2": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: z2", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "a": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: a(k)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "p0": {
+            "units": "Pa", 
+            "long_name": "vertical coordinate formula term: reference pressure", 
+            "type": "", 
+            "dimensions": ""
+        }, 
+        "b": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: b(k)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "licalvf": {
+            "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": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Land ice calving flux", 
+            "standard_name": "land_ice_calving_flux", 
+            "modeling_realm": "landIce", 
+            "cell_measures": "time: mean area: mean where ice_sheet", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg m-2 s-1", 
+            "out_name": "licalvf", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "zfull": {
+            "comment": "", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Depth Below Geoid of Ocean Layer", 
+            "standard_name": "depth_below_geoid", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "m", 
+            "out_name": "zfull", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "fracOutLut": {
+            "comment": "cumulative fractional transitions over the year; note that fraction should be reported as fraction of atmospheric grid cell", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "annual gross fraction of land use tile  that was transferred into other land use tiles", 
+            "standard_name": "", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "fraction", 
+            "out_name": "fracOutLut", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "libmassbf": {
+            "comment": "Specific mass balance means the net rate at which ice is added per unit area at the land ice base. Computed as the total basal 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", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Land ice basal mass balance flux", 
+            "standard_name": "land_ice_basal_specific_mass_balance_flux", 
+            "modeling_realm": "landIce", 
+            "cell_measures": "time: mean area: mean where ice_sheet", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg m-2 s-1", 
+            "out_name": "libmassbf", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "lithk": {
+            "comment": "The thickness of the ice sheet", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Ice Sheet Thickness", 
+            "standard_name": "land_ice_thickness", 
+            "modeling_realm": "landIce", 
+            "cell_measures": "time: mean area: mean where ice_sheet", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "m", 
+            "out_name": "lithk", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "vvelbase": {
+            "comment": "v-velocity at land ice base", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Y-component of land ice basal velocity", 
+            "standard_name": "land_ice_basal_y_velocity", 
+            "modeling_realm": "landIce", 
+            "cell_measures": "time: mean area: mean where ice_sheet", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "m/yr", 
+            "out_name": "vvelbase", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "lifmassbf": {
+            "comment": "Total mass balance at the ice front (or vertical margin). It includes both iceberg calving and melt on vertical ice front", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Land ice vertical front mass balance flux", 
+            "standard_name": "land_ice_front_mass_balance_flux", 
+            "modeling_realm": "landIce", 
+            "cell_measures": "time: mean area: mean where ice_sheet", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg m-2 s-1", 
+            "out_name": "lifmassbf", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "depth": {
+            "units": "m", 
+            "long_name": "Sea Floor Depth: formula term: thetao", 
+            "type": "real", 
+            "dimensions": "longitude latitude"
+        }, 
+        "eta": {
+            "units": "m", 
+            "long_name": "Sea Surface Height formula term: thetao", 
+            "type": "real", 
+            "dimensions": "longitude latitude time"
+        }, 
+        "cLitterLut": {
+            "comment": "end of year values (not annual mean)", 
+            "dimensions": "longitude latitude time1", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Carbon  in Above and Below Ground Litter Pools on Landuse Tiles", 
+            "standard_name": "", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: point", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "kg m-2", 
+            "out_name": "cLitterLut", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "sftgif": {
+            "comment": "Percentage of grid cell occupied by glaciers.", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0.0", 
+            "long_name": "Percentage of Grid Cell Covered with Glacier", 
+            "standard_name": "land_ice_area_fraction", 
+            "modeling_realm": "land", 
+            "cell_measures": "time: mean area: mean where ice_sheet", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "%", 
+            "out_name": "sftgif", 
+            "type": "real", 
+            "valid_max": "100.0", 
+            "ok_max_mean_abs": ""
+        }, 
+        "limnsw": {
+            "comment": "Computed as the volume times density", 
+            "dimensions": "icesheet time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Ice sheet mass that does not displace sea water", 
+            "standard_name": "land_ice_mass_not_displacing_sea_water", 
+            "modeling_realm": "landIce", 
+            "cell_measures": "time: mean area: mean where grounded_ice_sheet", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "", 
+            "out_name": "limnsw", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "k_c": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: k_c", 
+            "type": "integer", 
+            "dimensions": ""
+        }, 
+        "rsdoabsorb": {
+            "comment": "", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Net Rate of Absorption of Shortwave Energy in Ocean Layer", 
+            "standard_name": "net_rate_of_absorption_of_shortwave_energy_in_ocean_layer", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "0", 
+            "units": "W m-2", 
+            "out_name": "rsdoabsorb", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "sigma": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: sigma(k)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "opottemppadvect": {
+            "comment": "Tendency of heat content for a grid cell from parameterized eddy advection (any form of eddy advection). Reported only for models that use potential temperature as prognostic field.", 
+            "dimensions": "longitude latitude olevel time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "tendency of sea water potential temperature expressed as heat content due to parameterized eddy advection", 
+            "standard_name": "tendency_of_sea_water_potential_temperature_expressed_as_heat_content_due_to_parameterized_eddy_advection", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "0", 
+            "units": "W m-2", 
+            "out_name": "opottemppadvect", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "litempbot": {
+            "comment": "Basal temperature that is used to force the ice sheet models. Report temperature AT interface. Beneath ice shelves it is the temperature AT ice ocean interface. Beneath grounded ice, it is the temperature AT ice bedrock interface", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "0", 
+            "long_name": "Temperature at the basal interface of the land ice.", 
+            "standard_name": "land_ice_basal_temperature", 
+            "modeling_realm": "landIce", 
+            "cell_measures": "time: mean area: mean where ice_sheet", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "0", 
+            "units": "K", 
+            "out_name": "litempbot", 
+            "type": "", 
+            "valid_max": "0", 
+            "ok_max_mean_abs": "0"
+        }, 
+        "a_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: a(k+1/2)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }
+    }
+}
diff --git a/TestTables/CMIP6_excerpts.json b/TestTables/CMIP6_excerpts.json
new file mode 100644
index 0000000..23fe99c
--- /dev/null
+++ b/TestTables/CMIP6_excerpts.json
@@ -0,0 +1,295 @@
+{
+    "Header": {
+        "mip_era":     "CMIP6", 
+        "approx_interval": "30.00000", 
+        "realm": "atmos", 
+        "product": "output", 
+        "cmor_version": "3.0", 
+        "Conventions": "CF-1.6 CMIP-6.0", 
+        "frequency": "mon", 
+        "table_id": "Table Amon", 
+        "data_specs_version": "3.0", 
+        "generic_levels": "alevel alevhalf", 
+        "missing_value": "1e20", 
+        "table_date": "01 April 2016"
+    }, 
+    "axis_entry": {
+        "forecast": {
+            "stored_direction": "increasing",
+            "must_have_bounds": "no",
+            "long_name": "ensemble time axis",
+            "standard_name": "time",
+            "out_name": "forecast",
+            "type": "double",
+            "units": "days since 1900-01-01",
+            "value": "0.0", 
+            "axis": "T"
+        },
+        "plev17": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "height2m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "up", 
+            "must_have_bounds": "no", 
+            "valid_min": "1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "height", 
+            "standard_name": "height", 
+            "value": "2.0", 
+            "out_name": "height", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "10.0", 
+            "axis": "Z"
+        }, 
+        "latitude": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-90.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "latitude", 
+            "standard_name": "latitude", 
+            "value": "", 
+            "out_name": "lat", 
+            "type": "double", 
+            "units": "degrees_north", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "90.0", 
+            "axis": "Y"
+        }, 
+        "longitude": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "longitude", 
+            "standard_name": "longitude", 
+            "value": "", 
+            "out_name": "lon", 
+            "type": "double", 
+            "units": "degrees_east", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "360.0", 
+            "axis": "X"
+        }, 
+        "time": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "time", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        } 
+    }, 
+    "variable_entry": {
+        "rsutcs": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "up", 
+            "valid_min": "0", 
+            "long_name": "TOA Outgoing Clear-Sky Shortwave Radiation", 
+            "standard_name": "toa_outgoing_shortwave_flux_assuming_clear_sky", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "54.7", 
+            "units": "W m-2", 
+            "out_name": "rsutcs", 
+            "type": "real", 
+            "valid_max": "444", 
+            "ok_max_mean_abs": "73.36"
+        }, 
+        "tas": {
+            "comment": "near-surface (usually, 2 meter) air temperature", 
+            "dimensions": "longitude latitude time height2m", 
+            "positive": "", 
+            "valid_min": "180.6", 
+            "long_name": "Near-Surface Air Temperature", 
+            "standard_name": "air_temperature", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "262.4", 
+            "units": "K", 
+            "out_name": "tas", 
+            "type": "real", 
+            "valid_max": "335.1", 
+            "ok_max_mean_abs": "293"
+        }, 
+        "tasforecast": {
+            "comment": "near-surface (usually, 2 meter) air temperature", 
+            "dimensions": "longitude latitude time height2m forecast", 
+            "positive": "", 
+            "valid_min": "180.6", 
+            "long_name": "Near-Surface Air Temperature", 
+            "standard_name": "air_temperature", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "262.4", 
+            "units": "K", 
+            "out_name": "tas", 
+            "type": "real", 
+            "valid_max": "335.1", 
+            "ok_max_mean_abs": "293"
+        }, 
+        "rldscs": {
+            "comment": "", 
+            "dimensions": "longitude latitude time", 
+            "positive": "down", 
+            "valid_min": "33.55", 
+            "long_name": "Surface Downwelling Clear-Sky Longwave Radiation", 
+            "standard_name": "surface_downwelling_longwave_flux_in_air_assuming_clear_sky", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "238.6", 
+            "units": "W m-2", 
+            "out_name": "rldscs", 
+            "type": "real", 
+            "valid_max": "543.6", 
+            "ok_max_mean_abs": "293.8"
+        }, 
+        "n2oglobal": {
+            "comment": "", 
+            "dimensions": "time", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Global Mean Mole Fraction of N2O", 
+            "standard_name": "mole_fraction_of_nitrous_oxide_in_air", 
+            "modeling_realm": "atmos atmosChem", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "", 
+            "units": "1e-09", 
+            "out_name": "n2oglobal", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "ts": {
+            "comment": "'skin' temperature (i.e., SST for open ocean)", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "176.8", 
+            "long_name": "Surface Temperature", 
+            "standard_name": "surface_temperature", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "262.8", 
+            "units": "K", 
+            "out_name": "ts", 
+            "type": "real", 
+            "valid_max": "339.6", 
+            "ok_max_mean_abs": "293.3"
+        }, 
+        "clt": {
+            "comment": "cloud area fraction", 
+            "dimensions": "longitude latitude time", 
+            "positive": "", 
+            "valid_min": "-0.0001822", 
+            "long_name": "Total Cloud Fraction", 
+            "standard_name": "cloud_area_fraction_in_atmosphere_layer", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "39.37", 
+            "units": "1.0", 
+            "out_name": "clt", 
+            "type": "real", 
+            "valid_max": "105", 
+            "ok_max_mean_abs": "84.98"
+        }, 
+        "tasmax": {
+            "comment": "maximum near-surface (usually, 2 meter) air temperature (add cell_method attribute 'time: max')", 
+            "dimensions": "longitude latitude time height2m", 
+            "positive": "", 
+            "valid_min": "181.9", 
+            "long_name": "Daily Maximum Near-Surface Air Temperature", 
+            "standard_name": "air_temperature", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "time: maximum within days time: mean over days", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "264.9", 
+            "units": "K", 
+            "out_name": "tasmax", 
+            "type": "real", 
+            "valid_max": "341.9", 
+            "ok_max_mean_abs": "294"
+        }
+    }
+}
diff --git a/TestTables/CMIP6_expt_list_042716-1.csv b/TestTables/CMIP6_expt_list_042716-1.csv
new file mode 100644
index 0000000..e88fb39
--- /dev/null
+++ b/TestTables/CMIP6_expt_list_042716-1.csv
@@ -0,0 +1 @@
+,Description of key columns:,,,,,,,,,,,,,,,,,,,,,,,,,,,
,,,,,"""minimal model configuration"" lists minimal (combination) of components needed to carry out the experiment.  It is understood that it is o.k. to run these experiments with additional components (like interactive chemistry, carbon cycle, or ice-sheet model).  So enter, for example, ""AOGCM CHEM"" *only* if an interactive chemistry model is required in a coupled model experiment.  Similarly enter ""AOGCM BGM"" only if a biogechemical model is required in a coupled run.  Reserve the  [...]
� AGCM (atmospheric general circulation model, with land model), 
� OGCM (ocean general circulation model with sea-ice model), 
� AOGCM (atmosphere-ocean global climate model), 
� LAND (the land model component of a model but run �offline�), 
� ISM (ice-sheet model), 
",,,,,,,,,,,,,,,,,,,,,,,
,column G:    ,,,,"� BGM (biogeochemical  model that at the very least accounts for carbon reservoirs and fluxes in the atmosphere, terrestrial biosphere, and ocean; when run with atmospheric concentration calculated, specify ESM rather than ""AOGCM BCM""), 
� RAD (radiation code component of atmospheric model but run �offline�),
� CHEM (for models that calculate ozone, rather than rely on prescribed concentrations,
� AER (for models that calculate tropospheric aerosols driven by emissions fluxes, rather than relying on prescribed concentrations),
� SLAB (a slab-ocean model).      
� ESM (AOGCM couple with a BCM and run with atmospheric concentration calculated, based on emissions, etc.;  for concentration-driven runs with a BCM, specify ""AOGCM BCM"")                                                    ",,,,,,,,,,,,,,,,,,,,,,,
,column O:,,,,"The experiment_id is used in constructing file names, and providing unique identifiers of experiments within CMIP6.",,,,,,,,,,,,,,,,,,,,,,,
,column V:,,,,Transcribe the experiment labels you plan to use in the final version of your GMD article into this column.  For those of you who  are using the experiment_id exclusively as your official labels in your GMD article column O and V will be the same. ,,,,,,,,,,,,,,,,,,,,,,,
,column W:,,,,Enter a short title that reminds users already familiar with your MIP experiments what experiment conditions are imposed.  Provide titles in red-shaded cells and check all other titles.,,,,,,,,,,,,,,,,,,,,,,,
,column X:,,,,"parent_experiment_id is defined as the experiment_id of the simulation that  provides the initial condiions for an experiment, but only if those initial conditions matter.  Especially check red-shaded cells.",,,,,,,,,,,,,,,,,,,,,,,
,column AA:,,,,"In this column, enter answers to questions, ask questions and provide comments/notes.  Please respond to issues raised in boxes shaded red.",,,,,,,,,,,,,,,,,,,,,,,
,hidden columns:,,,,"You may ignore all the ""hidden"" columns on this spread sheet at this time, even if the information is incorrect.  Also there is no need to correct columns B and F; they are included just to help you identify the experiment (but some of them may be somewhat wrong).  ",,,,,,,,,,,,,,,""","" means ""and""",""","" means ""and/or""",,,,,,,
,"IF YOU MAKE ANY CHANGES TO A CELL, PLEASE  FILL THE CELL WITH YELLOW AS DONE HERE.",,,,,,,,,,,,,,,,,,,CHEM and AER should not appear ,,,,,,,,
,,,,,,,activity_id,,,,,,,,segments of experiment_id,,,,,,,,experiment,,,,,
comment,description,egid,endy,ensz,original label,minimal model configuration,mip,nstart,ntot,starty,tier,uid,yps,experiment_id,seg-1,seg-2,seg-3,sub_experiment_id,sub_experiment,required source_type elements,additional allowed source_type elements,experiment label used in final version of GMD article,experiment title,parent_ experiment_id,parent_sub_ experiment_id,parent_activity_id,Questions/Comments/Notes,
,"Historical WMGHG and halocarbons concentrations,  1850 NTCF emissions",f19ad380-c478-11e5-868e-ac72891c3257,2014,3,HISTghg,AOGCM CHEM,AerChemMIP,1,495,1850,1,f19ad10a-c478-11e5-868e-ac72891c3257,165,hist-piNTCF,hist,piNTCF,,none,none,AOGCM AER CHEM,,hist-piNTCF,"historical forcing, but with pre-industrial NTCF emissions",piControl,none,CMIP,,
,"Historical WMGHG, halocarbon concentrations and O3 precursor emissions, 1850 aerosol precursor emissions",f19ad380-c478-11e5-868e-ac72891c3257,2014,3,HISTghgntcf,AOGCM AER,AerChemMIP,1,495,1850,2,f19add76-c478-11e5-868e-ac72891c3257,165,hist-piAer,hist,piAer,,none,none,AOGCM AER,CHEM,hist-piAer,"historical forcing, but with pre-industrial aerosol emissions",piControl,none,CMIP,,
,"Historical WMGHG concentrations and NTCF emissions, 1950 halocarbon concentrations, start 1950",f19ad380-c478-11e5-868e-ac72891c3257,2014,3,HISTghgntcfhc1950,AOGCM CHEM,AerChemMIP,1,195,1950,1,f19ad862-c478-11e5-868e-ac72891c3257,65,hist-1950HC,hist,1950HC,,none,none,AOGCM AER CHEM,,hist-1950HC,"historical forcing, but with1950s halocarbon concentrations; initialized in 1950",historical,none,CMIP,,
,Historical transient with SSTs prescribed from historical,,2014,1,,AGCM AER,AerChemMIP,1,165,1850,1,,,histSST,histSST,,,none,none,AGCM AER,CHEM,histSST,historical prescribed SSTs and historical forcing,,,,,
,"Historical WMGHG concentrations and halocarbons emissions, 1850 NTCF emissions, prescribed SSTs",f19ae4b0-c478-11e5-868e-ac72891c3257,2014,1,HISTsstghgntcf1850,AGCM CHEM,AerChemMIP,1,165,1850,1,f19ae99c-c478-11e5-868e-ac72891c3257,165,histSST-piNTCF,histSST,piNTCF,,none,none,AGCM AER CHEM,,histSST-piNTCF,"historical SSTs and historical forcing, but with pre-industrial NTCF emissions",,,,,
,"Historical WMGHG, halocarbon concentrations and tropospheric ozone precursors emissions, 1850 aerosol precursor emissions, prescribed SSTs",f19ae4b0-c478-11e5-868e-ac72891c3257,2014,3,HISTsstghgntcf,AGCM AER,AerChemMIP,1,495,1850,2,f19af37e-c478-11e5-868e-ac72891c3257,165,histSST-piAer,histSST,piAer,,none,none,AGCM AER,CHEM,histSST-piAer,"historical SSTs and historical forcing, but with pre-industrial aerosol emissions",,,,,
,"Historical WMGHG, halocarbon concentrations and aerosol precursor emissions, 1850 tropospheric ozone precursors  emissions, prescribed SSTs",f19ae4b0-c478-11e5-868e-ac72891c3257,2014,1,HISTsstghg,AGCM CHEM,AerChemMIP,1,165,1850,2,f19ae258-c478-11e5-868e-ac72891c3257,165,histSST-piO3,histSST,piO3,,none,none,AGCM AER CHEM,,histSST-piO3,"historical SSTs and historical forcing, but with pre-industrial ozone precursor emissions",,,,,
,"Historical WMGHG concentrations and NTCF emissions, 1950 halocarbon concentrations",f19ae4b0-c478-11e5-868e-ac72891c3257,2014,1,HISTsstghgntcfhc1950,AGCM CHEM,AerChemMIP,1,65,1950,1,f19aee88-c478-11e5-868e-ac72891c3257,65,histSST-1950HC,histSST,1950HC,,none,none,AGCM AER CHEM,,histSST-1950HC,"historical SSTs and historical forcing, but with1950 halocarbon concentrations",,,,,
,"Historical (non-CH4) WMGHG concentrations and NTCF emissions, 1850 CH4 concentrations",f19b17d2-c478-11e5-868e-ac72891c3257,2014,1,WMFORCch4,AGCM CHEM,AerChemMIP,1,165,1850,1,f19b166a-c478-11e5-868e-ac72891c3257,165,histSST-piCH4,histSST,piCH4,,none,none,AGCM AER CHEM,,histSST-piCH4,"historical SSTs and historical forcing, but with pre-industrial methane concentrations",,,,,
,"Historical (non-N2O) WMGHG concentrations and NTCF emissions, 1850 N2O concentrations",f19b17d2-c478-11e5-868e-ac72891c3257,2014,1,WMFORCn20,AGCM CHEM,AerChemMIP,1,165,1850,2,f19b1aca-c478-11e5-868e-ac72891c3257,165,histSST-piN2O,histSST,piN2O,,none,none,AGCM AER CHEM,,histSST-piN2O,"historical SSTs and historical forcings, but with pre-industrial N2O concentrations",,,,,
,Future scenario with high radiative forcing by the end of century. Reaches about 7.0 W/m2 by 2100; fills gap in RCP forcing pathways between 6.0 and 8.5 W/m2. Concentration-driven.,f19af98c-c478-11e5-868e-ac72891c3257,2055,3,NtcfrespSsp37,AOGCM AER,"ScenarioMIP, AerChemMIP",1,123,2015,1,f19af806-c478-11e5-868e-ac72891c3257,41,ssp370,ssp370,,,none,none,AOGCM AER,CHEM,ssp370,Gap-filling scenario reaching 7.0 based on SSP3,historical,none,CMIP,ScenarioMIP also wants this done.,
,Future SSP3-7.0 with reduced NTCF emissions,f19af98c-c478-11e5-868e-ac72891c3257,2055,3,NtcfrespSsp37ntcf,AOGCM AER,AerChemMIP,1,41,2015,1,f19afd6a-c478-11e5-868e-ac72891c3257,41,ssp370-lowNTCF,ssp370,lowNTCF,,none,none,AOGCM AER,CHEM,ssp370-lowNTCF,"SSP3-7.0, with low NTCF emissions",historical,none,CMIP,,
,"Future SSP3-7.0, with SSTs prescribed  from ssp370",f19b0256-c478-11e5-868e-ac72891c3257,2055,1,NTCFRESPcntrl,AGCM AER,AerChemMIP,1,41,2015,1,f19b00e4-c478-11e5-868e-ac72891c3257,41,ssp370SST,ssp370SST,,,none,none,AGCM AER,CHEM,ssp370SST,"SSP3-7.0, with  SSTs prescribed from ssp370",,,,,
,"Future SSP3-7.0 with reduced NTCF emissions, prescribed SSTs",f19b0256-c478-11e5-868e-ac72891c3257,2055,1,NTCFRESPntcf,AGCM CHEM,AerChemMIP,1,41,2015,1,f19b0846-c478-11e5-868e-ac72891c3257,41,ssp370SST-lowNTCF,ssp370SST,lowNTCF,,none,none,AGCM AER CHEM,,ssp370SST-lowNTCF,"SSP3-7.0, prescribed SSTs, with low NTCF emissions",,,,,
,"Future SSP3-7.0 with reduced aerosol emissions (from ssp370-lowNTCF), prescribed SSTs",f19b0256-c478-11e5-868e-ac72891c3257,2055,1,NTCFRESPnox,AGCM AER,AerChemMIP,1,41,2015,1,f19b0846-c478-11e5-868e-ac72891c3257,41,ssp370SST-lowAer,ssp370SST,lowAer,,none,none,AGCM AER,CHEM,ssp370SST-lowAer,"SSP3-7.0, prescribed SSTs, with low aerosol emissions",,,,,
,"Future SSP3-7.0 with reduced black carbon emissions, prescribed SSTs",f19b0256-c478-11e5-868e-ac72891c3257,2055,1,NTCFRESPbc,AGCM AER,AerChemMIP,1,41,2015,1,f19b054e-c478-11e5-868e-ac72891c3257,41,ssp370SST-lowBC,ssp370SST,lowBC,,none,none,AGCM AER,CHEM,ssp370SST-lowBC,"SSP3-7.0, prescribed SSTs, with low black carbon emissions",,,,,
,"Future SSP3-7.0 with reduced ozone precursor emisions (from ssp370-lowNTCF), prescribed SSTs",f19b0256-c478-11e5-868e-ac72891c3257,2055,1,NTCFRESPo3,AGCM CHEM,AerChemMIP,1,41,2015,1,f19b0b34-c478-11e5-868e-ac72891c3257,41,ssp370SST-lowO3,ssp370SST,lowO3,,none,none,AGCM AER CHEM,,ssp370SST-lowO3,"SSP3-7.0, prescribed SSTs, with low ozone precursor emissions",,,,,
,"Future SSP3-7.0 with reduced CH4 concentrations, prescribed SSTs",f19b0256-c478-11e5-868e-ac72891c3257,2055,1,NTCFRESPo3ch4,AGCM CHEM,AerChemMIP,1,41,2015,1,f19b0ff8-c478-11e5-868e-ac72891c3257,41,ssp370SST-lowCH4,ssp370SST,lowCH4,,none,none,AGCM AER CHEM,,ssp370SST-lowCH4,"SSP3-7.0, prescribed SSTs, with low methane concentrations",,,,,
," Future SSP3-7.0 with low land use change (from ssp126), prescribed SSTs",,2055,1,,AGCM AER,AerChemMIP,1,41,2015,1,,41,ssp370SST-lowLu,ssp370SST,lowLu,,none,none,AGCM AER,CHEM,ssp370SST-lowLu,"SSP3-7.0, prescribed SSTs, with low land-use change",,,,,
,1850 control ,f19a9f3c-c478-11e5-868e-ac72891c3257,1850,1,RFDOCcntrl,AGCM AER,"RFMIP, AerChemMIP",1,30,1850,1,f19a9bf4-c478-11e5-868e-ac72891c3257,30,piClim-control,piClim,control,,none,none,AGCM AER,CHEM,piClim-control,pre-industrial with prescribed climatological SSTs,,,,RFMIP also wants this done.,
,Perturbation from 1850 control using 2014 aerosol and ozone precursor emissions,f19a9f3c-c478-11e5-868e-ac72891c3257,1850,1,RFDOCntcf,AGCM CHEM,AerChemMIP,1,30,1850,1,f19aa64e-c478-11e5-868e-ac72891c3257,30,piClim-NTCF,piClim,NTCF,,none,none,AGCM AER CHEM,,piClim-NTCF,"pre-industrial climatolgical SSTs and forcing, but with 2014 NTCF emissions",,,,,
,Perturbation from 1850 control using 2014 aerosol emissions,f19a9f3c-c478-11e5-868e-ac72891c3257,1850,1,RFDOCbc,AGCM AER,AerChemMIP,1,30,1850,2,f19aac20-c478-11e5-868e-ac72891c3257,30,piClim-aer,piClim,aer,,none,none,AGCM AER,CHEM,piClim-aer,"pre-industrial climatological SSTs and forcing, but 2014 aerosol emissions",,,,,
,Perturbation from 1850 control using 2014 BC emissions,f19a9f3c-c478-11e5-868e-ac72891c3257,1850,1,RFDOCbc,AGCM AER,AerChemMIP,1,30,1850,2,f19aac20-c478-11e5-868e-ac72891c3257,30,piClim-BC,piClim,BC,,none,none,AGCM AER,CHEM,piClim-BC,"pre-industrial climatological SSTs and forcing, but with 2014 black carbon emissions",,,,,
,Perturbation from 1850 control using 2014 ozone precursor emissions,f19a9f3c-c478-11e5-868e-ac72891c3257,1850,1,RFDOCo3,AGCM CHEM,AerChemMIP,1,30,1850,2,f19ab2e2-c478-11e5-868e-ac72891c3257,30,piClim-O3,piClim,O3,,none,none,AGCM AER CHEM,,piClim-O3,"pre-industrial climatological SSTs and forcing, but with 2014 ozone precursor emissions",,,,,
,Perturbation from 1850 control using 2014 CH4 concentrations,f19a9f3c-c478-11e5-868e-ac72891c3257,1850,1,RFDOCch4,AGCM CHEM,AerChemMIP,1,30,1850,2,f19ab85a-c478-11e5-868e-ac72891c3257,30,piClim-CH4,piClim,CH4,,none,none,AGCM AER CHEM,,piClim-CH4,"pre-industrial climatological SSTs and forcing, but with 2014 methane concentrations (including chemistry)",,,,,
,Perturbation from 1850 control using 2014 N2O concentrations,f19a9f3c-c478-11e5-868e-ac72891c3257,1850,1,RFDOCn2o,AGCM CHEM,AerChemMIP,1,30,1850,2,f19abd64-c478-11e5-868e-ac72891c3257,30,piClim-N2O,piClim,N2O,,none,none,AGCM AER CHEM,,piClim-N2O,"pre-industrial climatological SSTs and forcing, but with 2014 N2O concentrations (including chemistry)",,,,,
,Perturbation from 1850 control using 2014 halocarbon concentrations,f19a9f3c-c478-11e5-868e-ac72891c3257,1850,1,RFDOCods,AGCM CHEM,AerChemMIP,1,30,1850,2,f19ac246-c478-11e5-868e-ac72891c3257,30,piClim-HC,piClim,HC,,none,none,AGCM AER CHEM,,piClim-HC,"pre-industrial climatological SSTs and forcing, but with 2014 halocarbon concentrations (including chemistry)",,,,,
,Perturbation from 1850 control using 2014 NOx emissions,f19a9f3c-c478-11e5-868e-ac72891c3257,1850,1,RFDOCnox,AGCM CHEM,AerChemMIP,1,30,1850,3,f19ac728-c478-11e5-868e-ac72891c3257,30,piClim-NOX,piClim,NOX,,none,none,AGCM AER CHEM,,piClim-NOX,"pre-industrial climatological SSTs and forcing, but with 2014 NOx emissions",,,,,
,Perturbation from 1850 control using 2014 CO/VOC emissions,f19a9f3c-c478-11e5-868e-ac72891c3257,1850,1,RFDOCcovoc,AGCM CHEM,AerChemMIP,1,30,1850,3,f19acc0a-c478-11e5-868e-ac72891c3257,30,piClim-VOC,piClim,VOC,,none,none,AGCM AER CHEM,,piClim-VOC,"pre-industrial climatological SSTs and forcing, but with 2014 VOC emissions",,,,,
,1850 control with doubled dust emissions,f19b1f20-c478-11e5-868e-ac72891c3257,2014,1,FDBCKdust,AGCM AER,AerChemMIP,1,30,1850,2,f19b1db8-c478-11e5-868e-ac72891c3257,30,piClim-2xdust,piClim,2xdust,,none,none,AGCM AER,CHEM,piClim-2xdust,"pre-industrial climatological SSTs and forcing, but with doubled emissions of dust",,,,,
,1850 control with doubled sea salt emissions,f19b1f20-c478-11e5-868e-ac72891c3257,2014,1,FDBCKss,AGCM AER,AerChemMIP,1,30,1850,2,f19b2204-c478-11e5-868e-ac72891c3257,30,piClim-2xss,piClim,2xss,,none,none,AGCM AER,CHEM,piClim-2xss,"pre-industrial climatological SSTs and forcing, but with doubled emissions of sea salt",,,,,
,1850 control with doubled emissions of DMS,f19b1f20-c478-11e5-868e-ac72891c3257,1850,1,FDBCKdms,AGCM AER,AerChemMIP,1,30,1850,3,f19b24e8-c478-11e5-868e-ac72891c3257,30,piClim-2xDMS,piClim,2xDMS,,none,none,AGCM AER,CHEM,piClim-2xDMS,"pre-industrial climatological SSTs and forcing, but with doubled emissions of DMS",,,,,
,1850 control with doubled emissions of fires,f19b1f20-c478-11e5-868e-ac72891c3257,1850,1,FDBCKfire,AGCM AER,AerChemMIP,1,30,1850,3,f19b27cc-c478-11e5-868e-ac72891c3257,30,piClim-2xfire,piClim,2xfire,,none,none,AGCM AER,CHEM,piClim-2xfire,"pre-industrial climatological SSTs and forcing, but with doubled emissions from fires",,,,,
,1850 control with doubled emissions of lightning Nox,f19b1f20-c478-11e5-868e-ac72891c3257,1850,1,FDBCKnox,AGCM CHEM,AerChemMIP,1,30,1850,3,f19b2d94-c478-11e5-868e-ac72891c3257,30,piClim-2xNOX,piClim,2xNOX,,none,none,AGCM AER CHEM,,piClim-2xNOX,"pre-industrial climatological SSTs and forcing, but with doubled production of NOX due to lightning",,,,,
,1850 control with doubled emissions of biogenic VOCs,f19b1f20-c478-11e5-868e-ac72891c3257,1850,1,FDBCKvoc,AGCM CHEM,AerChemMIP,1,30,1850,3,f19b2ab0-c478-11e5-868e-ac72891c3257,30,piClim-2xVOC,piClim,2xVOC,,none,none,AGCM AER CHEM,,piClim-2xVOC,"pre-industrial climatological SSTs and forcing, but with doubled emissions of biogenic VOCs",,,,,
,Biogeochemically-coupled specified concentration simulation in which CO2 increases at a rate of 1% per year until quadrupling,f19b34b0-c478-11e5-868e-ac72891c3257,1989,1,esm1pcbgc,AOGCM BGM,C4MIP,1,140,1850,1,f19b3352-c478-11e5-868e-ac72891c3257,140,1pctCO2-bgc,1pctCO2,bgc,,none,none,AOGCM BGM,CHEM AER,,biogeochemically-coupled version of 1 percent per year increasing CO2 experiment,piControl,none,CMIP,,
,"Fully-coupled specified concentration simulation in which CO2 increases at a rate of 1% per year until quadrupling, plus an additional scenario of anthropogenic nitrogen deposition",f19b3dac-c478-11e5-868e-ac72891c3257,1989,1,esm1pccouNdep,AOGCM BGM,C4MIP,1,140,1850,2,f19b43a6-c478-11e5-868e-ac72891c3257,140,1pctCO2Ndep,1pctCO2Ndep,,,none,none,AOGCM BGM,CHEM AER,,1 percent per year increasing CO2 experient with increasing N-deposition,piControl,none,CMIP,,
,"Biogeochemically-coupled specified concentration simulation in which CO2 increases at a rate of 1% per year until quadrupling, plus an additional scenario of anthropogenic nitrogen deposition",f19b3dac-c478-11e5-868e-ac72891c3257,1989,1,esm1pcbgcNdep,AOGCM BGM,C4MIP,1,140,1850,2,f19b409a-c478-11e5-868e-ac72891c3257,140,1pctCO2Ndep-bgc,1pctCO2Ndep,bgc,,none,none,AOGCM BGM,CHEM AER,,biogeochemically-coupled version of 1 percent per year increasing CO2 experiment with increasing N-depositi [...]
,Radiatively-coupled specified concentration simulation in which CO2 increases at a rate of 1% per year until quadrupling,f19b3dac-c478-11e5-868e-ac72891c3257,1989,1,esm1pcrad,AOGCM BGM,C4MIP,1,140,1850,2,f19b3c3a-c478-11e5-868e-ac72891c3257,140,1pctCO2-rad,1pctCO2,rad,,none,none,AOGCM BGM,CHEM AER,,radiatively-coupled version of 1 percent per year increasing CO2 experiment,piControl,none,CMIP,,
,"historical simulation,  biogeochemically-coupled",f19b4806-c478-11e5-868e-ac72891c3257,2014,1,esmhistbgc,AOGCM BGM,C4MIP,1,165,1850,2,f19b469e-c478-11e5-868e-ac72891c3257,165,hist-bgc,hist,bgc,,none,none,AOGCM BGM,CHEM AER,,biogeochemically-coupled version of the simulation of the recent past with CO2 concentration prescribed ,piControl,none,CMIP,,
,Emissions-driven future scenario simulation,f19b3906-c478-11e5-868e-ac72891c3257,2100,1,Esmssp585,ESM,C4MIP,1,85,2015,1,f19b379e-c478-11e5-868e-ac72891c3257,85,esm-ssp585,esm,ssp585,,none,none,ESM,CHEM AER,,update of emission-driven RCP8.5 based on SSP5,esm-historical,none,CMIP,,
,"future scenario simulation,  biogeochemically-coupled",f19b4806-c478-11e5-868e-ac72891c3257,2100,1,Esmssp585bgc,ESM,C4MIP,1,85,2015,2,f19b4ad6-c478-11e5-868e-ac72891c3257,85,ssp585-bgc,ssp585,bgc,,none,none,ESM,CHEM AER,,biogeochemically-coupled version of the updated emission-driven RCP8.5 based on SSP5,esm-historical,none,CMIP,,
,future scenario simulation extension to 2300 biogeochemically-coupled,f19b4806-c478-11e5-868e-ac72891c3257,2300,1,Esmssp585extbgc,ESM,C4MIP,1,200,2101,2,f19b4e96-c478-11e5-868e-ac72891c3257,200,,,,,,none,,CHEM AER,,,,,,extension of ssp585-bgc to year 2300.,
,"Identical to the DECK abrupt-4xCO2, but at 0.5xCO2",f19b6ef8-c478-11e5-868e-ac72891c3257,,1,Abrupt05xco2,AOGCM,CFMIP,1,150,,2,f19b8424-c478-11e5-868e-ac72891c3257,150,abrupt-0p5xCO2,abrupt,0p5xCO2,,none,none,AOGCM,CHEM AER BGM,,,piControl,none,CMIP,,
,"Identical to the DECK abrupt-4xCO2, but at 2xCO2",f19b6ef8-c478-11e5-868e-ac72891c3257,,1,abrupt2xCO2,AOGCM,CFMIP,1,150,,2,f19b8140-c478-11e5-868e-ac72891c3257,150,abrupt-2xCO2,abrupt,2xCO2,,none,none,AOGCM,CHEM AER,,,piControl,none,CMIP,,
,"Conceptually similar to abrupt 4xCO2 DECK experiment, except that the solar constant (not CO2) is abruptly reduced by 4%.",f19b6ef8-c478-11e5-868e-ac72891c3257,,1,abruptSm4,AOGCM,CFMIP,1,150,,2,f19b7e66-c478-11e5-868e-ac72891c3257,150,abrupt-solm4p,abrupt,solm4p,,none,none,AOGCM,CHEM AER,,,piControl,none,CMIP,,
,"Conceptually similar to abrupt 4xCO2 DECK experiment, except that the solar constant (not CO2) is abruptly increased by 4%.",f19b6ef8-c478-11e5-868e-ac72891c3257,,1,abruptSp4,AOGCM,CFMIP,1,150,,2,f19b7b82-c478-11e5-868e-ac72891c3257,150,abrupt-solp4p,abrupt,solp4p,,none,none,AOGCM,CHEM AER,,,piControl,none,CMIP,,
,"This CFMIP amip experiment is the same as the DECK amip experiment, but will contain any additional outputs which are required as control variables for the amip4K, amip4xCO2, amipFuture and amipMinus4K experiments which are not included in the AMIP DECK experiment.  This experiment will not be required if all of the proposed CFMIP variables are included in the AMIP DECK Experiment.",f19b535a-c478-11e5-868e-ac72891c3257,2014,1,amip,AGCM,CFMIP,11,36,1979,1,f19b51f2-c478-11e5-868e-ac72891c [...]
,As CMIP5/CFMIP-2.  AMIP experiment where SSTs are subject to a uniform warming of 4K.,f19b535a-c478-11e5-868e-ac72891c3257,2014,1,amip4K,AGCM,CFMIP,1,36,1979,1,f19b565c-c478-11e5-868e-ac72891c3257,36,amip-p4K,amip,p4K,,none,none,AGCM,CHEM AER,,AMIP plus 4K SSTs,,,,changed name from amip4K in CMIP5  to parallel other expts. in CMIP6.,
,As CMIP5/CFMIP-2.  AMIP experiment where SSTs are held at control values and the CO2 seen by the radiation scheme is quadrupled.,f19b535a-c478-11e5-868e-ac72891c3257,2014,1,amip4xCO2,AGCM,CFMIP,1,36,1979,1,f19b5954-c478-11e5-868e-ac72891c3257,36,amip-4xCO2,amip,4xCO2,,none,none,AGCM,CHEM AER,,control SSTs with 4xCO2,,,,"Is it o.k. to change title to:  ""AMIP SSTs with 4xCO2""",
,"As CMIP5/CFMIP-2.  AMIP experiment where SSTs are subject to a composite SST warming pattern derived from coupled models, scaled to a global mean of 4K.",f19b5db4-c478-11e5-868e-ac72891c3257,2014,1,amipFuture,AGCM,CFMIP,1,36,1979,1,f19b5c4c-c478-11e5-868e-ac72891c3257,36,amip-pat4K,amip,pat4K,,none,none,AGCM,CHEM AER,,AMIP plus warming pattern SSTs,,,,,
,AMIP experiment where SSTs are subject to a uniform cooling of 4K.,f19b5db4-c478-11e5-868e-ac72891c3257,2014,1,amipMinus4K,AGCM,CFMIP,1,36,1979,2,f19b6a98-c478-11e5-868e-ac72891c3257,36,amip-m4K,amip,m4K,,none,none,AGCM,CHEM AER,,AMIP minus 4K SSTs,,,,,
,Identical to standard AMIP experiment but from 1870-present with constant pre-industrial forcing levels (anthro & natural),f19b6ef8-c478-11e5-868e-ac72891c3257,2014,1,amipPiForcing,AGCM,CFMIP,1,145,1870,2,f19b874e-c478-11e5-868e-ac72891c3257,145,amip-piForcing,amip,piForcing,,none,none,AGCM,CHEM AER,,AMIP SSTs with control forcing,,,,,
,"Same as amip, but a patterned SST anomaly is applied on top of the monthly-varying amip SSTs. This anomaly is a monthly climatology, taken from each model's own abrupt4xCO2 run minus piControl (using the mean of years 111-140 of abrupt4xCO2, and the parallel 30-year section of piControl). CO2 is quadrupled, and the increase in CO2 is seen by both the radiation scheme and vegetation.",f19b8bae-c478-11e5-868e-ac72891c3257,2014,1,amipTot,AGCM,CFMIP,1,36,1979,2,f19b9d92-c478-11e5-868e-ac728 [...]
,As CMIP5/CFMIP-2.  Aquaplanet experiment where SSTs are subject to a uniform warming of 4K.,f19b5db4-c478-11e5-868e-ac72891c3257,1988,1,aqua4K,AGCM,CFMIP,1,10,1979,1,f19b639a-c478-11e5-868e-ac72891c3257,10,aqua-p4K,aqua,p4K,,none,none,AGCM,CHEM AER,,aquaplanet plus 4K SSTs,,,,"changed name from ""aqua4K"" in CMIP5 to ""aqua-p4K"" in CMIP6. to parallel names of other experiments.",
,As CMIP5/CFMIP-2.  Aquaplanet experiment where SSTs are held at control values and the CO2 seen by the radiation scheme is quadrupled.,f19b5db4-c478-11e5-868e-ac72891c3257,1988,1,aqua4xCO2,AGCM,CFMIP,1,10,1979,1,f19b6692-c478-11e5-868e-ac72891c3257,10,aqua-4xCO2,aqua,4xCO2,,none,none,AGCM,CHEM AER,,aquaplanet with 4xCO2,,,,,
,As CMIP5/CFMIP-2.  Aquaplanet (no land) experiment with no seasonal cycle forced with specified zonally symmetric SSTs.,f19b5db4-c478-11e5-868e-ac72891c3257,1988,1,aquaControl,AGCM,CFMIP,1,10,1979,1,f19b60a2-c478-11e5-868e-ac72891c3257,10,aqua-control,aqua,control,,none,none,AGCM,CHEM AER,,Aquaplanet control,,,,,
,"As amipCF experiment, but with cloud-radiative effects switched off in the LW radiation code.",f19b6ef8-c478-11e5-868e-ac72891c3257,2014,1,offlwamip,AGCM,CFMIP,1,36,1979,2,f19b6d90-c478-11e5-868e-ac72891c3257,36,amip-lwoff,amip,lwoff,,none,none,AGCM,CHEM AER,,AMIP SSTs with longwave cloud-radiative effects off,,,,,
,"As amip-p4K experiment, but with cloud-radiative effects switched off in the LW radiation code.",f19b6ef8-c478-11e5-868e-ac72891c3257,2014,1,offlwamip4K,AGCM,CFMIP,1,36,1979,2,f19b71e6-c478-11e5-868e-ac72891c3257,36,amip-p4K-lwoff,amip,p4K,lwoff,none,none,AGCM,CHEM AER,,AMIP plus 4K SSTs with longwave cloud radiative effects off,,,,,
,"As aqua-p4K experiment, but with cloud-radiative effects switched off in the LW radiation code.",f19b6ef8-c478-11e5-868e-ac72891c3257,1988,1,offlwaqua4K,AGCM,CFMIP,1,10,1979,2,f19b7894-c478-11e5-868e-ac72891c3257,10,aqua-p4K-lwoff,aqua,p4K,lwoff,none,none,AGCM,CHEM AER,,aquaplanet plus 4K SSTs with longwave cloud radiative effects off,,,,,
,"As aqua-control experiment, but with cloud-radiative effects switched off in the LW radiation code.",f19b6ef8-c478-11e5-868e-ac72891c3257,1988,1,offlwaquaControl,AGCM,CFMIP,1,10,1979,2,f19b7592-c478-11e5-868e-ac72891c3257,10,aqua-control-lwoff,aqua,control,lwoff,none,none,AGCM,CHEM AER,,aquaplanet with longwave cloud radiative effects off,,,,,
,"An AGCM experiment with monthly-varying SSTs, sea-ice, atmospheric constituents and any other necessary boundary conditions (e.g. vegetation if required) taken from each model's own piControl run (using the 30 years of piControl that are parallel to years 111-140 of its abrupt4xCO2 run).",f19b8bae-c478-11e5-868e-ac72891c3257,Year 120 of piControl,1,sstPi,AGCM,CFMIP,1,20,Year 101 of piControl,2,f19b8a50-c478-11e5-868e-ac72891c3257,20,piSST-control,piSST,control,,none,none,AGCM,CHEM AER,, [...]
,"Same as piSST, but with a spatially and temporally uniform SST anomaly applied on top of the monthly-varying piSST SSTs. The magnitude of the uniform increase is taken from each model's global, climatological annual mean SST change between abrupt4xCO2 minus piControl (using the mean of years 111-140 of abrupt4xCO2, and the parallel 30-year section of piControl).",,,,sstPiUniform,AGCM,CFMIP,,,,2,,,piSST-pxK,piSST,pxK,,none,none,AGCM,CHEM AER,,control plus scaled warming pattern,,,,,
,Same as sstPi but CO2 as seen by the radiation scheme is quadrupled.,f19b8bae-c478-11e5-868e-ac72891c3257,As above,1,sstPi4xCO2,AGCM,CFMIP,1,20,As above,2,f19b9180-c478-11e5-868e-ac72891c3257,20,piSST-4xCO2-rad,piSST,4xCO2,rad,none,none,AGCM,CHEM AER,,control SSTs with radiation-only seeing 4xCO2,,,,,
,Same as sstPi but CO2 is quadrupled. The increase in CO2 is seen by both the radiation scheme and vegetation.,f19b8bae-c478-11e5-868e-ac72891c3257,As above,1,sstPi4xCO2Veg,AGCM,CFMIP,1,20,As above,2,f19b9464-c478-11e5-868e-ac72891c3257,20,piSST-4xCO2-all,piSST,4xCO2,all,none,none,AGCM,CHEM AER,,control SSTs with 4xCO2,,,,"Is it o.k. to drop ""all"" in experiment_id?",
,"As piSST, but with monthly-varying SSTs and sea-ice taken from years 111-140 of each model's own abrupt4xCO2 experiment instead of from piControl.",f19b8bae-c478-11e5-868e-ac72891c3257,As above,1,sstPiFuture,AGCM,CFMIP,1,20,As above,2,f19b9752-c478-11e5-868e-ac72891c3257,20,futureSST,futureSST,,,none,none,AGCM,CHEM AER,,control plus warming pattern SSTs ,,,,,
,"As futureSST, but CO2 is quadrupled, and the increase in CO2 is seen by both the radiation scheme and vegetation.",f19b8bae-c478-11e5-868e-ac72891c3257,As above,1,sstPiTot,AGCM,CFMIP,1,20,As above,2,f19b9a40-c478-11e5-868e-ac72891c3257,20,futureSST-4xCO2-all,futureSST,4xCO2,all,none,none,AGCM,CHEM AER BGM,,control plus warming pattern SSTs with 4xCO2,,,,"Is it o.k. to drop ""all"" in experiment_id?",
,DECK: 1pctCO2,f19e1342-c478-11e5-868e-ac72891c3257, ,1,1pctCO2,AOGCM,CMIP,1,150, ,1,f19e1928-c478-11e5-868e-ac72891c3257,150,1pctCO2,1pctCO2,,,none,none,AOGCM,CHEM AER,,1 percent per year increase in CO2,piControl,none,CMIP,,
,DECK: abrupt4xCO2,f19e1342-c478-11e5-868e-ac72891c3257, ,1,abrupt4xCO2,AOGCM,CMIP,1,150, ,1,f19e15e0-c478-11e5-868e-ac72891c3257,150,abrupt-4xCO2,abrupt,4xCO2,,none,none,AOGCM,CHEM AER,,abrupt quadrupling of CO2,piControl,none,CMIP,,
,DECK: AMIP,f19e1342-c478-11e5-868e-ac72891c3257, ,1,AMIP,AGCM,CMIP,1,40, ,1,f19e1bd0-c478-11e5-868e-ac72891c3257,40,amip,amip,,,none,none,AGCM,CHEM AER,,AMIP,,,,,
,DECK: control,f19e1342-c478-11e5-868e-ac72891c3257, ,1,control,AOGCM,CMIP,1,500, ,1,f19e11ee-c478-11e5-868e-ac72891c3257,500,piControl,piControl,,,none,none,AOGCM,CHEM AER,,pre-Industrial control,,,,,
,DECK: control (emission-driven),f19e1342-c478-11e5-868e-ac72891c3257, ,1,esmControl,ESM,CMIP,1,500, ,1,f19e11ee-c478-11e5-868e-ac72891c3257,500,esm-piControl,esm,piControl,,none,none,ESM,CHEM AER,,pre-industrial control simulation with CO2 concentration calculated,,,,,
,DECK: spin-up portion of the control,,,,,AOGCM,CMIP,,,,2,,,,,,,,none,,CHEM AER,,pre-industrial control (spin-up),,,,probably shouldn't be labeled differently from piControl,
,DECK: spin-up portion of the control (emission-driven),,,,,ESM,CMIP,,,,2,,,,,,,,none,,CHEM AER,,pre-industrial control simulation with CO2 concentration calculated (spiin-up),,,,probably shouldn't be labeled differently from esm-piControl,
,CMIP6 historical ,f19e1fae-c478-11e5-868e-ac72891c3257, ,1,historical,AOGCM,CMIP,1,150, ,1,f19e1e64-c478-11e5-868e-ac72891c3257,150,historical,historical,,,none,none,AOGCM,CHEM AER,,all-forcing simulation of the recent past,piControl,none,CMIP,,
,CMIP6  historical (CO2 emission-driven),f19e1fae-c478-11e5-868e-ac72891c3257, ,1,esmHistorical,ESM,CMIP,1,150, ,1,f19e1e64-c478-11e5-868e-ac72891c3257,150,esm-hist,esm,hist,,none,none,ESM,CHEM AER,,all-forcing simulation of the recent past with atmospheric CO2 concentration calculated ,esm-piControl,none,CMIP,,
,Extension beyond 2014 of the CMIP6 historical ,,,,,AOGCM,CMIP,,,,2,,,historical-ext,historical,ext,,none,none,AOGCM,CHEM AER,,post-2014 all-forcing simulation,historical,none,CMIP,,
,Extension beyond 2014 of the CMIP6 historical  (CO2 emission-driven),,,,,ESM,CMIP,,,,2,,,esm-hist-ext,esm,hist,ext,none,none,ESM,CHEM AER,,post-2014 all-forcing simulation with atmospheric CO2 concentration calculated,esm-hist,none,CMIP,,
,,,,,,,DAMIP,,,,,,,,,,,,none,,,,,,,,I hope you don't plan also to have emissions-driven ESMs do these run.  WMGHG concentrations are prescribed � yes?  If not we need additional experiments for emission-driven.,
,Historical anthropogenic-Aerosols-only run. ,f19baf1c-c478-11e5-868e-ac72891c3257,2020,3,histAER,AOGCM,DAMIP,1,513,1850,1,f19badb4-c478-11e5-868e-ac72891c3257,171,hist-aer,hist,aer,,none,none,AOGCM,CHEM AER BGM,,historical anthropogenic aerosols-only run,piControl,none,,This and the following item appeared on a single line in the orginal spread sheet.,
,Historical CO2-only run. ,f19baf1c-c478-11e5-868e-ac72891c3257,2020,3,histCO2,AOGCM,DAMIP,1,513,1850,1,f19badb4-c478-11e5-868e-ac72891c3257,171,hist-CO2,hist,CO2,,none,none,AOGCM,CHEM AER BGM,,historical CO2-only run,piControl,none,,,
,"* Enlarging ensemble size of the CMIP6 hisorical simulations (2015-2020 under SSP2-4.5 of ScenarioMIP) to at least three members. * DCPP: DCPP proposes a 10 member ensemble of histALL up to 2030 also extended with SSP2-4.5. * Please provide output data up to 2014 as ""CMIP6 historical"" and 2015-2020 (or 2030 for DCPP) as SSP2-4.5 of ScenarioMIP.",f19ba1f2-c478-11e5-868e-ac72891c3257,2020,2,histALL,AOGCM,DAMIP,1,342,1850,1,f19ba08a-c478-11e5-868e-ac72891c3257,171,,,,,,,,,,,,,,"Not diffe [...]
=> just larger ensembles of historical for 1850-2014 and SSP2-4.5 of ScenarioMIP for 2015-2020.",
,Historical ALL forcing run with alternate estimates of aerosol concentrations/emissions,f19bcd1c-c478-11e5-868e-ac72891c3257,2020,3,HistallEstaer2,AOGCM,DAMIP,1,513,1850,3,f19bcbbe-c478-11e5-868e-ac72891c3257,171,hist-all-aer2,hist,all,aer2,none,none,AOGCM,CHEM AER BGM,,historical ALL-forcing run with alternate estimates of aerosol forcing,piControl,none,CMIP,,
,Historical ALL forcing run with alternates estimate of solar and volcanic forcing,f19bcd1c-c478-11e5-868e-ac72891c3257,2020,3,HistallEstnat2,AOGCM,DAMIP,1,513,1850,3,f19bd050-c478-11e5-868e-ac72891c3257,171,hist-all-nat2,hist,all,nat2,none,none,AOGCM,CHEM AER BGM,,historical ALL-forcing run with alternate estimates of natural forcing,piControl,none,CMIP,,
,"* Historical well-mixed GHG-only run. * Models with interactive chemistry schemes should either turn off the chemistry or use a preindustrial climatology of stratospheric and tropospheric ozone in their radiation schemes.  This will ensure that ozone is fixed in all these simulations, and simulated responses in models with and without coupled chemistry are comparable.",f19ba71a-c478-11e5-868e-ac72891c3257,2020,3,histGHG,AOGCM,DAMIP,1,513,1850,1,f19ba9f4-c478-11e5-868e-ac72891c3257,171,h [...]
,Historical natural-only run,f19ba71a-c478-11e5-868e-ac72891c3257,2020,3,histNAT,AOGCM,DAMIP,1,513,1850,1,f19ba5a8-c478-11e5-868e-ac72891c3257,171,hist-nat,hist,nat,,none,none,AOGCM,CHEM AER BGM,,historical natural-only run,piControl,none,CMIP,,
,Historical solar-only transient simulation using  settings from CMIP6 historical simulation but fixed GHG&ODS (1850 level),f19bc056-c478-11e5-868e-ac72891c3257,2020,3,histSOL,AOGCM,DAMIP,1,513,1850,3,f19bc3f8-c478-11e5-868e-ac72891c3257,171,hist-sol,hist,sol,,none,none,AOGCM,CHEM AER BGM,,historical solar-only run,piControl,none,CMIP,,
,"* Historical stratospheric-ozone-only. *  In models with coupled chemistry, the chemistry scheme should be turned off, and the simulated ensemble mean monthly mean 3D stratospheric ozone concentrations from the histALL simulations should be prescribed. Tropospheric ozone should be fixed at 3D long-term monthly mean piControl values, with a value of 100 ppbv ozone concentration in this piControl climatology used to separate the troposphere from the stratosphere. * In models without coupl [...]
,Historical volcanic-only run,f19bc056-c478-11e5-868e-ac72891c3257,2020,3,histVLC,AOGCM,DAMIP,1,513,1850,3,f19bbeee-c478-11e5-868e-ac72891c3257,171,hist-volc,hist,volc,,none,none,AOGCM,CHEM AER BGM,,historical volcanic-only run,piControl,none,CMIP,,
,Extension of aerosol-only run under SSP2-4.5,f19bc8b2-c478-11e5-868e-ac72891c3257,2100,1,ssp245AER,AOGCM,DAMIP,1,80,2021,3,f19bc754-c478-11e5-868e-ac72891c3257,80,ssp245-aer,ssp245,aer,,none,none,AOGCM,CHEM AER BGM,,aerosol-only SSP2-4.5 run,hist-aer,none,DAMIP,,
,*  Extension of well-mixed GHG-only run under SSP2-4.5. *  Models with interactive chemistry schemes should either turn off the chemistry or use a preindustrial climatology of stratospheric and tropospheric ozone in their radiation schemes.,f19bb3d6-c478-11e5-868e-ac72891c3257,2100,1,ssp245GHG,AOGCM,DAMIP,1,80,2021,2,f19bb278-c478-11e5-868e-ac72891c3257,80,ssp245-GHG,ssp245,GHG,,none,none,AOGCM,CHEM AER BGM,,well-mixed GHG-only SSP2-4.5 run,hist-GHG,none,DAMIP,,
,Extension of natural-only run under SSP2-4.5. ,f19bb3d6-c478-11e5-868e-ac72891c3257,2100,1,ssp245NAT,AOGCM,DAMIP,1,80,2021,3,f19bb278-c478-11e5-868e-ac72891c3257,80,ssp245-nat,ssp245,nat,,none,none,AOGCM,CHEM AER BGM,,natural-only SSP2-4.5 run,hist-nat,none,DAMIP,,
,"* Extension of stratospheric-ozone-only run under SSP2-4.5 *   In models with coupled chemistry, the chemistry scheme should be turned off, and the simulated ensemble mean monthly mean 3D stratospheric ozone concentrations from the SSP2-4.5 simulations should be prescribed. Tropospheric ozone should be fixed at 3D long-term monthly mean piControl values, with a value of 100 ppbv ozone concentration in this piControl climatology used to separate the troposphere from the stratosphere. * I [...]
: nstart abbreviated: 30-60: years per sim abbreviated: 300-600: total number of years abbreviated: 1500-6000,"Decadal hindcasts begun each year from 1960 to present, or every other year at minimum",f19bd50a-c478-11e5-868e-ac72891c3257,present (to 2019),10,A1,AOGCM,DCPP,30,1500,1960,1,f19bd398-c478-11e5-868e-ac72891c3257,300,hindcast,hindcast,,,"of form: ""sYYYY""",none,AOGCM,CHEM AER,,hindcast initialized from observations with historical forcing,,,,"Note: for all DCPP experiments a sub_ [...]
,,,,,A2.1,AOGCM,DCPP,1,1700,1850,2,f19bd8f2-c478-11e5-868e-ac72891c3257,170,,,,,"of form: ""sYYYY""",none,AOGCM,CHEM AER,,,,,,"not needed; experiment_id=""hindcast""",
,Historical uninitialized simulations to assess the impact of initialization,f19bd50a-c478-11e5-868e-ac72891c3257,2030,10,A2.2,AOGCM,DCPP,1,1700,1850,2,f19bd8f2-c478-11e5-868e-ac72891c3257,170,hindcast-control,hindcast,control,,"of form: ""sYYYY""",none,AOGCM,CHEM AER,,simulation initialized from control with forcing prescribed from a portion of the historical period,,,,,
,,,,,A3.1,AOGCM,DCPP,,,,,,,,,,,,none,,,,,,,,"not needed; experiment_id=""hindcast""",
: nstart abbreviated: 30-60: years per sim abbreviated: 300 to 600: total number of years abbreviated: 3600-7200,"m additional ensemble members for decadal hindcasts begun each year from 1960 to present, or every other year at minimum",f19bd50a-c478-11e5-868e-ac72891c3257,present (to 2019),12,A3.2,AOGCM,DCPP,30,3600,1960,3,f19bdc44-c478-11e5-868e-ac72891c3257,300,,,,,,none,,,,,,,,"not needed; experiment_id=""hindcast""",
: nstart abbreviated: 30-60: years per sim abbreviated: 300 to 600: total number of years abbreviated: 1500-6000,"Decadal hindcasts begun each year from 1960 to present, or every other year at minimum, but with no information from the future",f19bd50a-c478-11e5-868e-ac72891c3257,present (to 2019),10,A4.1,AOGCM,DCPP,30,1500,1960,4,f19bdf96-c478-11e5-868e-ac72891c3257,300,hindcast-honest,hindcast,honest,,"of form: ""sYYYY""",initiate with year YYYY,AOGCM,CHEM AER,,hindcast initialized from  [...]
: nstart abbreviated: 30-60: years per sim abbreviated: 300 to 600: total number of years abbreviated: 1500-6000,"Historical climate simulations as in DCPP-A2, but with no information from the future",f19bd50a-c478-11e5-868e-ac72891c3257,present (to 2019),10,A4.2,AOGCM,DCPP,30,1500,1960,4,f19be2e8-c478-11e5-868e-ac72891c3257,300,hindcast-hist,hindcast,hist,,"of form: ""sYYYY""",initiate with year YYYY,AOGCM,CHEM AER,,initialized from historical simulation without observed forcing after in [...]
,Ongoing decadal forecasts,f19be7a2-c478-11e5-868e-ac72891c3257,ongoing each year,10,B1,AOGCM,DCPP,1,50,present,1,f19be63a-c478-11e5-868e-ac72891c3257,5,forecast,forecast,,,"of form: ""sYYYY""",initiate with year YYYY,AOGCM,CHEM AER,,forecast initialized from observations,,,,,
,Ongoing decadal forecasts with m additional ensemble members,f19be7a2-c478-11e5-868e-ac72891c3257,ongoing each year,12,B2.1,AOGCM,DCPP,1,60,present,2,f19bebb2-c478-11e5-868e-ac72891c3257,5,,,,,,,,,,,,,,"not needed; experiment_id = ""forecast""",
,Ongoing decadal forecasts extended to 10 years,f19be7a2-c478-11e5-868e-ac72891c3257,ongoing each year,10,B2.2,AOGCM,DCPP,1,50,present,2,f19bef04-c478-11e5-868e-ac72891c3257,5,,,,,,,,,,,,,,"not needed; experiment_id = ""forecast""",
,Mechanisms and predictability of the hiatus and of similar long timescale variations of both signs,f19bf3aa-c478-11e5-868e-ac72891c3257,2015,10,C1.1,AOGCM,DCPP,1,660,1950 (from 1920 if possible),1,f19bf242-c478-11e5-868e-ac72891c3257,66,amv-control,amv,control,,"of form: ""sYYYY""",initiate with year YYYY,AOGCM,CHEM AER,,idealized Atlantic control,,,,,
,Mechanisms and predictability of the hiatus and of similar long timescale variations of both signs,f19bf3aa-c478-11e5-868e-ac72891c3257,2015,10,C1.2,AOGCM,DCPP,1,660,1950 (from 1920 if possible),1,f19bf6f2-c478-11e5-868e-ac72891c3257,66,amv-plus,amv,plus,,"of form: ""sYYYY""",initiate with year YYYY,AOGCM,CHEM AER,,idealized positive AMV anomaly pattern,,,,,
,Mechanisms and predictability of the hiatus and of similar long timescale variations of both signs,f19bf3aa-c478-11e5-868e-ac72891c3257,1949,10,C1.3,AOGCM,DCPP,1,300,1950,2,f19bfa3a-c478-11e5-868e-ac72891c3257,30,amv-minus,amv,minus,,"of form: ""sYYYY""",initiate with year YYYY,AOGCM,CHEM AER,,idealized negative AMV anomaly pattern,,,,,
,Mechanisms and predictability of the hiatus and of similar long timescale variations of both signs,f19bf3aa-c478-11e5-868e-ac72891c3257,1949,10,C1.4,AOGCM,DCPP,1,300,1950,2,f19bfd78-c478-11e5-868e-ac72891c3257,30,pdv-control,pdv,control,,"of form: ""sYYYY""",initiate with year YYYY,AOGCM,CHEM AER,,idealized Pacific control,,,,,
,Mechanisms and predictability of the hiatus and of similar long timescale variations of both signs,f19bf3aa-c478-11e5-868e-ac72891c3257,,10,C1.5,AOGCM,DCPP,1,250,control ,2,f19c0110-c478-11e5-868e-ac72891c3257,25,pdv-plus,pdv,plus,,"of form: ""sYYYY""",initiate with year YYYY,AOGCM,CHEM AER,,idealized positive PDV anomaly pattern,,,,,
,Mechanisms and predictability of the hiatus and of similar long timescale variations of both signs,f19bf3aa-c478-11e5-868e-ac72891c3257,,10,C1.6,AOGCM,DCPP,1,250,control ,2,f19c04ee-c478-11e5-868e-ac72891c3257,25,pdv-minus,pdv,minus,,"of form: ""sYYYY""",initiate with year YYYY,AOGCM,CHEM AER,,idealized negative PDV anomaly pattern,,,,,
,Mechanisms and predictability of the hiatus and of similar long timescale variations of both signs,f19bf3aa-c478-11e5-868e-ac72891c3257,,10,C1.7,AOGCM,DCPP,1,250,control ,2,f19c0836-c478-11e5-868e-ac72891c3257,25,pdv-plus-extraTrop,pdv,plus,extraTrop,"of form: ""sYYYY""",initiate with year YYYY,AOGCM,CHEM AER,,idealized positive extratropical AMV anomaly pattern,,,,,
: years per sim abbreviated: 5 to 10: total number of years abbreviated: 200-400,Mechanisms and predictability of the hiatus and of similar long timescale variations of both signs,f19c0ee4-c478-11e5-868e-ac72891c3257,1996,10,C1.7a,AOGCM,DCPP,4,200,1993,3,f19c0c8c-c478-11e5-868e-ac72891c3257,5,pdv-minus-extraTrop,pdv,minus,extraTrop,"of form: ""sYYYY""",initiate with year YYYY,AOGCM,CHEM AER,,idealized� impact of a negative extratropical AMV anomaly pattern,,,,,
: years per sim abbreviated: 5 to 10: total number of years abbreviated: 200-400,Mechanisms and predictability of the hiatus and of similar long timescale variations of both signs,f19c0ee4-c478-11e5-868e-ac72891c3257,1999,10,C1.8,AOGCM,DCPP,4,200,1992,3,f19c12fe-c478-11e5-868e-ac72891c3257,5,amv-plus-trop,amv,plus,trop,"of form: ""sYYYY""",initiate with year YYYY,AOGCM,CHEM AER,,idealized positive tropical AMV anomaly pattern,,,,,
: years per sim abbreviated: 5 to 10: total number of years abbreviated: 200-400,Mechanisms and predictability of the hiatus and of similar long timescale variations of both signs,f19c0ee4-c478-11e5-868e-ac72891c3257,1999,10,C1.8a,AOGCM,DCPP,4,200,1992,3,f19c12fe-c478-11e5-868e-ac72891c3257,5,amv-minus-trop,amv,minus,trop,"of form: ""sYYYY""",initiate with year YYYY,AOGCM,CHEM AER,,idealized impact of a positive tropical AMV anomaly pattern,,,,,
,,,,,C2.1,AOGCM,DCPP,,,,,,,predictability-atlGyre,predictability,atlGyre,,"of form: ""sYYYY""",initiate with year YYYY,AOGCM,CHEM AER,,predictability of 1990s warming of Atlantic gyre,,,,,
,,,,,C2.2,AOGCM,DCPP,,,,,,,,,,,"of form: ""sYYYY""",initiate with year YYYY,AOGCM,CHEM AER,,,,,,"experiment_id = ""predictability-atlGyre""",
: years per sim abbreviated: 5 to 10: total number of years abbreviated: 50-100,Effects of volcanoes on decadal prediction and predictability of forced and internal variability components,f19c1a6a-c478-11e5-868e-ac72891c3257,1991,10,C3.1,AOGCM,DCPP,1,50,1991,1,f19c1858-c478-11e5-868e-ac72891c3257,5,hindcast-novolc,hindcast,novolc,,"of form: ""sYYYY""",initiate with year YYYY,AOGCM,CHEM AER,,hindcast but with only background volcanic forcing,,,,experiment includes 3 different start dates w [...]
: years per sim abbreviated: 5 to 10: total number of years abbreviated: 50-100,Effects of volcanoes on decadal prediction and predictability of forced and internal variability components,f19c1a6a-c478-11e5-868e-ac72891c3257,1982,10,C3.2,AOGCM,DCPP,1,50,1982,2,f19c1f4c-c478-11e5-868e-ac72891c3257,5,,,,,,,,,,,,,,merged with C3.1,
: years per sim abbreviated: 5 to 10: total number of years abbreviated: 50-100,Effects of volcanoes on decadal prediction and predictability of forced and internal variability components,f19c1a6a-c478-11e5-868e-ac72891c3257,1963,10,C3.3,AOGCM,DCPP,1,50,1963,2,f19c5a8e-c478-11e5-868e-ac72891c3257,5,,,,,,,,,,,,,,merged with C3.1,
: years per sim abbreviated: 5 to 10: total number of years abbreviated: 50-100,Effects of volcanoes on decadal prediction and predictability of forced and internal variability components,f19c1a6a-c478-11e5-868e-ac72891c3257,2015,10,C3.4,AOGCM,DCPP,1,50,2015,1,f19c6088-c478-11e5-868e-ac72891c3257,5,forecast-Pinatubo,forecast,Pinatubo,,"of form: ""sYYYY""",initiate with year YYYY,AOGCM,CHEM AER,,2015 forecast with added Pinatubo forcing,,,,,
: years per sim abbreviated: 5 to 10: total number of years abbreviated: 50-100,Effects of volcanoes on decadal prediction and predictability of forced and internal variability components,f19c1a6a-c478-11e5-868e-ac72891c3257,2015,10,C3.5,AOGCM,DCPP,1,50,2015,2,f19c6466-c478-11e5-868e-ac72891c3257,5,forecast-ElChichon,forecast,ElChichon,,"of form: ""sYYYY""",initiate with year YYYY,AOGCM,CHEM AER,,2015 forecast with added El Chichon forcing,,,,,
: years per sim abbreviated: 5 to 10: total number of years abbreviated: 50-100,Effects of volcanoes on decadal prediction and predictability of forced and internal variability components,f19c1a6a-c478-11e5-868e-ac72891c3257,2015,10,C3.6,AOGCM,DCPP,1,50,2015,2,f19c68da-c478-11e5-868e-ac72891c3257,5,forecast-Agung,forecast,Agung,,"of form: ""sYYYY""",initiate with year YYYY,AOGCM,CHEM AER,,2015 forecast with added Agung forcing,,,,,
,"1xCO2 experiment, parallel to piControl, forced over the ocean simultaneously by surface windstress (as in the wind experiment), net heat flux (as in the heat experiment) and net freshwater flux (as in the water experiment) anomalies obtained from the CMIP5 ensemble mean of 1pctCO2 experiments at the time of 2xCO2, using a passive tracer to prevent negative climate feedback on the heat flux applied",f19c7e24-c478-11e5-868e-ac72891c3257,70,1,allFAF,AOGCM,FAFMIP,1,70,1,2,f19c81e4-c478-11e [...]
,"1xCO2 experiment, parallel to piControl, forced over the ocean by surface net heat flux anomalies obtained from the CMIP5 ensemble mean of 1pctCO2 experiments at the time of 2xCO2, using a passive tracer to prevent negative climate feedback on the heat flux applied",f19c7168-c478-11e5-868e-ac72891c3257,70,1,heatFAF,AOGCM,FAFMIP,1,70,1,1,f19c74d8-c478-11e5-868e-ac72891c3257,70,faf-heat,faf,heat,,none,none,AOGCM,CHEM AER,faf-heat,control plus perturbative surface flux of heat into ocean,p [...]
,"1xCO2 experiment, parallel to piControl, with a flux of passive tracer added at the ocean surface at the same rate as the surface net heat flux anomaly applied in the FAFMIP heat experiment.",f19c7e24-c478-11e5-868e-ac72891c3257,70,1,passiveheat,AOGCM,FAFMIP,1,70,1,2,f19c7c80-c478-11e5-868e-ac72891c3257,70,faf-passiveheat,faf,passiveheat,,none,none,AOGCM,CHEM AER,faf-passiveheat,control plus surface flux of passive heat tracer into ocean,piControl,none,CMIP,,
,"1xCO2 experiment, parallel to piControl, forced over the ocean by surface windstress anomalies obtained from the CMIP5 ensemble mean of 1pctCO2 experiments at the time of 2xCO2",f19c7168-c478-11e5-868e-ac72891c3257,70,1,stressFAF,AOGCM,FAFMIP,1,70,1,1,f19c6fba-c478-11e5-868e-ac72891c3257,70,faf-stress,faf,stress,,none,none,AOGCM,CHEM AER,faf-stress,control plus perturbative surface flux of momentum into ocean,piControl,none,CMIP,,
,"1xCO2 experiment, parallel to piControl, forced over the ocean by surface net freshwater flux anomalies obtained from the CMIP5 ensemble mean of 1pctCO2 experiments at the time of 2xCO2",f19c7168-c478-11e5-868e-ac72891c3257,70,1,waterFAF,AOGCM,FAFMIP,1,70,1,1,f19c780c-c478-11e5-868e-ac72891c3257,70,faf-water,faf,water,,none,none,AOGCM,CHEM AER,faf-water,control plus perturbative surface flux of water into ocean,piControl,none,CMIP,,
,"Beginning from a preindustrial control run, simultaneously quadruple the CO2 concentration and reduce the solar constant such that the TOA radiative flux remains within +/m0.1 W/m2.",f19ca4da-c478-11e5-868e-ac72891c3257,1949,3,G1ext,AOGCM,GeoMIP,1,300,1850,1,f19ca372-c478-11e5-868e-ac72891c3257,100,G1,G1,,,none,none,AOGCM,CHEM AER,G1,abrupt quadrupling of CO2 plus reduction in total solar irradiance,piControl,none,CMIP,,
,Time slice at 1850 (picontrol) for G1ext to examine radiative forcing of abrupt4xCO2,f19cb704-c478-11e5-868e-ac72891c3257,1850,1,G1extSlice1,AGCM,GeoMIP,1,10,1850,2,f19cb5b0-c478-11e5-868e-ac72891c3257,10,piSST-4xCO2-solar,piSST,4xCO2,solar,none,none,AGCM,CHEM AER,piSST-4xCO2-solar,preindustrial conrol SSTs with quadrupled CO2 + solar reduction. ,,,,comparison of TOA fluxes from this simulation with those from the  piControl yields an estimate of forcing due to 4xCO2 plus compensating so [...]
,Time slice at 1949 (picontrol) for G1ext to examine radiative forcing of abrupt4xCO2 + G1,f19cb704-c478-11e5-868e-ac72891c3257,1949,1,G1extSlice2,AGCM,GeoMIP,1,10,1949,2,f19cba7e-c478-11e5-868e-ac72891c3257,10,futureSST-4xCO2-solar,futureSST,4xCO2,solar,none,none,AGCM,CHEM AER,futureSST-4xCO2-solar,year 100 SSTs from abrupt4xCO2 with quadrupled CO2 + solar reduction,,,,comparison of TOA fluxes from this simulation with 10-year mean of fluxes centered around year 100 of 4xCO2 simulation y [...]
,Time slice at 2020 (ScenarioMIP Tier 1 high forcing scenario),f19cb704-c478-11e5-868e-ac72891c3257,2020,1,G6Slice1,AGCM,GeoMIP,1,10,2020,2,f19cbdee-c478-11e5-868e-ac72891c3257,10,G6SST1,G6SST1,,,none,none,AGCM,CHEM AER,G6SST1,"SSTs, forcings, and other prescribed conditions from year 2020 of SSP5-8.5",,,,This provides a baseline for estimating time-evolving forcing in G6SST2-solar and GSST2-sulfur.,
,"Using solar irradiance reduction, return the radiative forcing from a background of the ScenarioMIP high forcing to the ScenarioMIP middle forcing.",f19caa84-c478-11e5-868e-ac72891c3257,2100,3,G6solar,AOGCM,GeoMIP,1,243,2020,1,f19cae26-c478-11e5-868e-ac72891c3257,81,G6solar,G6solar,,,none,none,AOGCM,CHEM AER,G6solar,total solar irradiance reduction to reduce net forcing from SSP585 to SSP245,historical,none,CMIP,,
,Time slice at 2100 (G6solar),f19cb704-c478-11e5-868e-ac72891c3257,2100,1,G6solarSlice2,AGCM,GeoMIP,1,10,2100,2,f19cc442-c478-11e5-868e-ac72891c3257,10,G6SST2-solar,G6SST2,solar,,none,none,AGCM,CHEM AER,G6SST2-solar,SSTs from year 2020 of SSP5-8.5; forcings and other prescribed conditions from year 2100 of G6solar,,,,comparison of TOA fluxes from this simulation with G6SST1 yields an estimate of forcing due to solar reduction. ,
,"Using equatorial SO2 injection, return the radiative forcing from a background of the ScenarioMIP high forcing to the ScenarioMIP middle forcing.",f19caa84-c478-11e5-868e-ac72891c3257,2100,3,G6sulfur,AOGCM,GeoMIP,1,243,2020,1,f19ca926-c478-11e5-868e-ac72891c3257,81,G6sulfur,G6sulfur,,,none,none,AOGCM,CHEM AER,G6sulfur,stratospheric sulfate aerosol injection to reduce net forcing from SSP585 to SSP245,historical,none,CMIP,,
,Time slice at 2100 (G6sulfur),f19cb704-c478-11e5-868e-ac72891c3257,2100,1,G6sulfurSlice2,AGCM,GeoMIP,1,10,2100,2,f19cc172-c478-11e5-868e-ac72891c3257,10,G6SST2-sulfur,G6SST2,sulfur,,none,none,AGCM,CHEM AER,G6SST2-sulfur,SSTs from year 2020 of SSP5-8.5; forcings and other prescribed conditions from year 2100 of G6sulfur,,,,comparison of TOA fluxes from this simulation with G6SST1 yields an estimate of forcing due to aerosol shading. ,
,"Against a background of the ScenarioMIP high forcing, reduce cirrus cloud optical depth by a constant amount",f19cb24a-c478-11e5-868e-ac72891c3257,2100,3,G7cirrus,AOGCM,GeoMIP,1,243,2020,1,f19cb0f6-c478-11e5-868e-ac72891c3257,81,G7cirrus,G7cirrus,,,none,none,AOGCM,CHEM AER,G7cirrus,G7cirrus _ increase cirrus ice crystal fall speed to reduce net forcing in SSP585 by 1 W m-2,historical,none,CMIP,,
,Time slice at 2020 (ScenarioMIP Tier 1 high forcing scenario + cirrus thinning according to G7cirrus),f19cb704-c478-11e5-868e-ac72891c3257,2020,1,G7cirrusSlice1,AGCM,GeoMIP,1,10,2020,2,f19cc7b2-c478-11e5-868e-ac72891c3257,10,G7SST1-cirrus,G7SST1,cirrus,,none,none,AGCM,CHEM AER,G7SST1-cirrus,SSTs from year 2020 of SSP5-8.5; forcings and other prescribed conditions from year 2020 of SSP5-8.5 + cirrus thinning,,,,comparison of TOA fluxes from this simulation with 10-year mean of fluxes cent [...]
,Time slice at 2100 (ScenarioMIP Tier 1 high forcing scenario + cirrus thinning according to G7cirrus),f19cb704-c478-11e5-868e-ac72891c3257,2100,1,G7cirrusSlice2,AGCM,GeoMIP,1,10,2100,2,f19ccb18-c478-11e5-868e-ac72891c3257,10,G7SST2-cirrus,G7SST2,cirrus,,none,none,AGCM,CHEM AER,G7SST2-cirrus,SSTs from year 2100 of SSP5-8.5; forcings and other prescribed conditions from year 2100 of G7cirrus,,,,"similar to above run but for the warmer climate near 2100.  If forcing is independent of climat [...]
,Extended AMIP run that covers 1870-2014. All natural and anthropogenic historical forcings as used in CMIP6 Historical Simulation will be included. AGCM resolution as CMIP6 Historical Simulation. The HadISST data will be used.,f19c8838-c478-11e5-868e-ac72891c3257,2013,1,AMIP20C,AGCM,GMMIP,1,144,1870,1,f19c84e6-c478-11e5-868e-ac72891c3257,144,amip-hist,amip,hist,,none,none,AGCM,CHEM AER,,,,,,"Can this be simply named AMIP?  Same but for longer period.  In column B, start date should be ch [...]
,"The topography of the highlands in Africa, N. America and S. America TP is modified by setting surface elevations to a certain height (500m).Same model as DECK.",f19c9774-c478-11e5-868e-ac72891c3257,2013,1,DHLD,AGCM,GMMIP,1,35,1979,3,f19c9f30-c478-11e5-868e-ac72891c3257,35,amip-hld,amip,hld,,none,none,AGCM,CHEM AER,,,,,,,
,The topography of the TIP is modified by setting surface elevations to 500m; to understand the combined thermal and mechanical forcing of the TIP. Same model as DECK.,f19c9774-c478-11e5-868e-ac72891c3257,2013,1,DTIP,AGCM,GMMIP,1,35,1979,3,f19c960c-c478-11e5-868e-ac72891c3257,35,amip-TIP,amip,TIP,,none,none,AGCM,CHEM AER,,,,,,,
,Surface sensible heat released at the elevation above 500m over the TIP is not allowed to heat the atmosphere.Same model as DECK.,f19c9774-c478-11e5-868e-ac72891c3257,2013,1,DtipDsh,AGCM,GMMIP,1,35,1979,3,f19c9b5c-c478-11e5-868e-ac72891c3257,35,amip-TIP-nosh,amip,TIP,nosh,none,none,AGCM,CHEM AER,,,,,,,
,"Pacemaker 20th century historical run that includes all forcing as used in CMIP6 Historical Simulation, and the observational historical SST is restored in the AMO domain (0o-70oN, 70oW-0o)",f19c8d2e-c478-11e5-868e-ac72891c3257,2013,3,HistAmo,AOGCM,GMMIP,1,432,1870,2,f19c9076-c478-11e5-868e-ac72891c3257,144,hist-resAMO,hist,resAMO,,none,none,AOGCM,CHEM AER,,,piControl,none,CMIP,"are these partially-prescribed SSTs, but partially coupled models?",
,"Pacemaker 20th century historical run that includes all forcing as used in CMIP6 Historical Simulation, and the observational historical SST is restored in the tropical lobe of the IPO domain (20oS-20oN, 175oE-75oW). The HadISST data will be used.",f19c8d2e-c478-11e5-868e-ac72891c3257,2013,3,HistIpo,AOGCM,GMMIP,1,432,1870,2,f19c8bda-c478-11e5-868e-ac72891c3257,144,hist-resIPO,hist,resIPO,,none,none,AOGCM,CHEM AER,,,piControl,none,CMIP,"are these partially-prescribed SSTs, but partially  [...]
,"Coupled integrations, at least one with constant 1950""s forcing (CTL) and one or more with historic and then RCP4.5 (as in Forced_Atmos_Land, EXP).",f19cdf18-c478-11e5-868e-ac72891c3257,2050,2,Coupled,AOGCM,HighResMIP,1,200,,2,f19cddc4-c478-11e5-868e-ac72891c3257,100,control-1950,control,1950,,none,none,AOGCM,CHEM AER,,coupled control with fixed 1950's forcing (HighResMIP equivalent of pre-industrial control),,,,,
,"Coupled integrations, at least one with constant 1950""s forcing (CTL) and one or more with historic and then RCP4.5 (as in Forced_Atmos_Land, EXP).",f19cdf18-c478-11e5-868e-ac72891c3257,2050,2,Coupled,AOGCM,HighResMIP,1,200,1951,2,f19cddc4-c478-11e5-868e-ac72891c3257,100,highres-future,highres,future,,none,none,AOGCM,CHEM AER,,coupled future 2015-2050 using a scenario as close to CMIP5 RCP8.5 as possible within CMIP6,hist-1950,none,CMIP,"The forcing for this run in unclear.  There is m [...]
,"Coupled integrations, at least one with constant 1950""s forcing (CTL) and one or more with historic and then RCP4.5 (as in Forced_Atmos_Land, EXP).",f19cdf18-c478-11e5-868e-ac72891c3257,2050,2,Coupled,AOGCM,HighResMIP,1,200,1951,2,f19cddc4-c478-11e5-868e-ac72891c3257,100,hist-1950,hist,1950,,none,none,AOGCM,CHEM AER,,coupled historical 1950-2014,control-1950,none,HighResMIP,,
,"Forced global atmosphere-land simulations using daily 1/4 degree SST and sea-ice forcings, and aerosol concentrations (not emissions) to constrain model spread",f19cdaa4-c478-11e5-868e-ac72891c3257,2014,1,ForcedAtmosLand,AGCM,HighResMIP,1,64,1951,1,f19cd95a-c478-11e5-868e-ac72891c3257,64,highresSST-present,highresSST,present,,none,none,AGCM,CHEM AER,,forced atmosphere experiment for 1950-2014,,,,,
,Extend Forced_Atmos_land to 2050 with agreed forcings (with option to extend further to 2100),f19ce328-c478-11e5-868e-ac72891c3257,2050,1,ForcedAtmosLand2050,AGCM,HighResMIP,1,36,2015,3,f19ce1de-c478-11e5-868e-ac72891c3257,36,highresSST-future,highresSST,future,,none,none,AGCM,CHEM AER,,forced atmosphere experiment for 2015-2050 using SST/sea-ice derived from CMIP5 RCP8.5 simulations and a scenario as close to RCP8.5 as possible within CMIP6,,,,"The forcing for this run in unclear.  Ther [...]
,"Forced global atmosphere-land simulations as highresSST-present, but using an common LAI dataset across models. ",f19cdaa4-c478-11e5-868e-ac72891c3257,2014,1,ForcedAtmosLand,AGCM,HighResMIP,1,64,1951,1,f19cd95a-c478-11e5-868e-ac72891c3257,64,highresSST-LAI,highresSST,LAI,,none,none,AGCM,CHEM AER,,common LAI dataset within the highresSST-present experiment,,,,,
,"Forced global atmosphere-land simulations as highresSST-present, but using smoothed SST to investigate impact of SST variability. ",f19cdaa4-c478-11e5-868e-ac72891c3257,2014,1,ForcedAtmosLand,AGCM,HighResMIP,1,64,1951,1,f19cd95a-c478-11e5-868e-ac72891c3257,64,highresSST-smoothed,highresSST,smoothed,,none,none,AGCM,CHEM AER,,smoothed SST version of highresSST-present,,,,,
,"Similar to CFMIP amip-p4K, add a uniform warming of 4K to highresSST-present SSTs and run the experiment parallel to years 2005-2014 of highresSST-present.",f19cdaa4-c478-11e5-868e-ac72891c3257,2014,1,ForcedAtmosLand,AGCM,HighResMIP,1,64,1951,1,f19cd95a-c478-11e5-868e-ac72891c3257,64,highresSST-p4K,highresSST,p4K,,none,none,AGCM,CHEM AER,,uniform 4K warming of highresSST-present SST,,,,,
,"Similar to CFMIP amip-4xCO2, SSTs are held at highresSST-present  values and the CO2 seen by the radiation scheme is quadrupled. Run over years 2005-2014 of highresSST-present.",f19cdaa4-c478-11e5-868e-ac72891c3257,2014,1,ForcedAtmosLand,AGCM,HighResMIP,1,64,1951,1,f19cd95a-c478-11e5-868e-ac72891c3257,64,highresSST-4co2,highresSST,4co2,,none,none,AGCM,CHEM AER,,highresSST-present SST with 4xCO2 concentrations,,,,,
,"Idealized 1%/yr CO2 increase to 4xC02 over 140yrs and kept constant at 4xCO2 for an additional 200 to 400 yrs simulation with ice sheets forced ""offline"" with DECK 1pctCO2.",f19cee68-c478-11e5-868e-ac72891c3257,As long as possible (350 or 500),1,1pctCo2forcedism,ISM,ISMIP6,1,350,From piControlforcedism,1,f19cf124-c478-11e5-868e-ac72891c3257,350,ism-1pctCO2,ism,1pctCO2,,none,none,ISM,CHEM AER,,,,,,amip run and last glacial max. run are mentioned in the proposal but  both are missing here.,
,Idealized 1%/yr CO2 increase to 4xC02 over 140yrs and kept constant at 4xCO2 for an additional 200 to 400 yrs simulation that includes interactive ice sheets.,f19cee68-c478-11e5-868e-ac72891c3257,As long as possible (350 or 500),1,1pctCo2withism,AOGCM ISM,ISMIP6,1,350,From piControlwithism,1,f19ced14-c478-11e5-868e-ac72891c3257,350,1pctCO2-withism,1pctCO2,withism,,none,none,AOGCM ISM,CHEM AER,,,piControl-withism,none,ISMIP6,"Will the same models be run with and without ISM?  If only with [...]
,"Pre-industrial control simulation for ""offline"" ice sheets.",f19ce792-c478-11e5-868e-ac72891c3257,2300,1,piControlforcedism,ISM,ISMIP6,1,500,1850,1,f19cea58-c478-11e5-868e-ac72891c3257,451,ism-piControl,ism,piControl,,none,none,ISM,CHEM AER,,,,,,,
,Pre-industrial control simulation that includes interactive ice sheets.,f19ce792-c478-11e5-868e-ac72891c3257,2300,1,piControlwithism,AOGCM ISM,ISMIP6,1,500,1850,1,f19ce63e-c478-11e5-868e-ac72891c3257,451,piControl-withism,piControl,withism,,none,none,AOGCM ISM,CHEM AER,,,,,,"Will the same models be run with and without ISM?  If only with, then this could be called ""piControl""",
,"Future climate from standard ScenarioMIP SSP5-8.5 simulation is used to force the ice sheet ""offline"". Set up would follow the standard SSP5-8.5 experiment, and therefore may first require that an ""offline"" ice sheet Historical Simulation is performed first.",f19cf6ce-c478-11e5-868e-ac72891c3257,2300,1,Ssp585forcedism,ISM,ISMIP6,1,286,2015,2,f19cfad4-c478-11e5-868e-ac72891c3257,286,ism-ssp585,ism,ssp585,,none,none,ISM,CHEM AER,,,,,,,
,"Future climate from ScenarioMIP SSP5-8.5 simulation that includes interactive ice sheets. Set up would follow the standard SSP5-8.5 experiment, and therefore may first require that the Historical Simulation is performed first with a coupled AOGCM-ISM setting",f19cf6ce-c478-11e5-868e-ac72891c3257,2300,1,Ssp585withism,AOGCM ISM,ISMIP6,1,286,2015,2,f19cf566-c478-11e5-868e-ac72891c3257,286,ssp585-withism,ssp585,withism,,none,none,AOGCM ISM,CHEM AER,,,???,none,,"Don't you need a historical r [...]
,Land-hist land conditions; AMIP SSTs,f19d08ee-c478-11e5-868e-ac72891c3257,2100,5,,AGCM,LS3MIP,1,605,1980,2,f19d0ee8-c478-11e5-868e-ac72891c3257,121,amip-lfmip-pObs,amip,lfmip,pObs,none,none,AGCM,CHEM AER,amip-lfmip-pObs,prescribed land (from pseudo-observations) and AMIP SSTs,,,,,
,Prescribed land conditions 1980-2014 climate; AMIP SSTs,f19d08ee-c478-11e5-868e-ac72891c3257,2100,5,LfmipCa5,AGCM,LS3MIP,1,605,1980,2,f19d0ee8-c478-11e5-868e-ac72891c3257,121,amip-lfmip-pdLC,amip,lfmip,pdLC,none,none,AGCM,CHEM AER,amip-lfmip-pdLC,prescribed land (from current climatology) and AMIP SSTs,,,,,
,Prescribed land conditions 1980-2014 climate,f19d08ee-c478-11e5-868e-ac72891c3257,2100,1,LfmipCao1,AOGCM,LS3MIP,1,121,1980,1,f19d07a4-c478-11e5-868e-ac72891c3257,121,lfmip-pdLC,lfmip,pdLC,,none,none,AOGCM,CHEM AER,lfmip-pdLC,"prescribed land conditions (from current climate climatology) and initialized from ""historical"" run year 1980",historical,none,CMIP,,
,Prescribed land conditions 1980-2014 climate,f19d08ee-c478-11e5-868e-ac72891c3257,2100,4,LfmipCao4,AOGCM,LS3MIP,1,484,1980,2,f19d0be6-c478-11e5-868e-ac72891c3257,121,,,,,,none,AOGCM,CHEM AER,,,,,,"This is just an increase in size of ensemble, so doesn't need a different experiment name.",
,Initialized pseudo-observations land,f19d1c44-c478-11e5-868e-ac72891c3257,2014,10,LfmipHp10,AOGCM,LS3MIP,1,350,1980,2,f19d1af0-c478-11e5-868e-ac72891c3257,35,lfmip-initLC,lfmip,initLC,,none,none,AOGCM,CHEM AER,,"initialized from ""historical"" run year 1980, but with land conditions initialized from pseudo-observations",historical,none,CMIP,"Initialized in 1980?  What is parent?  How does it differ from ""historical""?",
,Prescribed land conditions 30yr running mean; AMIP SSTs,f19d08ee-c478-11e5-868e-ac72891c3257,2100,5,LfmipRa5,AGCM,LS3MIP,1,605,1980,2,f19d17ee-c478-11e5-868e-ac72891c3257,121,amip-lfmip-rmLC,amip,lfmip,rmLC,none,none,AGCM,CHEM AER,amip-lfmip-rmLC,prescribed land conditions (from running mean climatology) and AMIP SSTs,,,,which simulation are the land conditions taken from?,
,Prescribed land conditions 30yr running mean,f19d08ee-c478-11e5-868e-ac72891c3257,2100,1,LfmipRao1,AOGCM,LS3MIP,1,121,1980,1,f19d11f4-c478-11e5-868e-ac72891c3257,121,lfmip-rmLC,lfmip,rmLC,,none,none,AOGCM,CHEM AER,lfmip-rmLC,"prescribed land conditions (from running mean climatology) and initialized from ""historical"" run year 1980",historical,none,CMIP,which simulation are the land conditions taken from?,
,Prescribed land conditions 30yr running mean,f19d08ee-c478-11e5-868e-ac72891c3257,2100,4,LfmipRao4,AOGCM,LS3MIP,1,484,1980,2,f19d14ec-c478-11e5-868e-ac72891c3257,121,,,,,,none,AOGCM,CHEM AER,,,,,,"This is just an increase in size of ensemble, so doesn't need a different experiment name.",
,Land only simulations,f19d04ac-c478-11e5-868e-ac72891c3257,2100,3,LmipF,LND,LS3MIP,1,258,2015,2,f19d0358-c478-11e5-868e-ac72891c3257,86,land-future,land,future,,none,none,LND,,land-future,offline land simulations for future climate,,,,,
,Land only simulations,f19d0042-c478-11e5-868e-ac72891c3257,2014,1,LmipH,LND,"LS3MIP, LUMIP",1,165,1850,1,f19cfee4-c478-11e5-868e-ac72891c3257,165,land-hist,land,hist,,none,none,LND,,land-hist,offline land simulations for present climate,,,,This is also defined under LUMIP and has the same name.,
,Land only simulations,f19d0042-c478-11e5-868e-ac72891c3257,2014,1,LmipH (1c),LND,LS3MIP,1,165,1850,2,f19cfee4-c478-11e5-868e-ac72891c3257,165,land-hist-princeton,land,hist,princeton,none,none,LND,,land-hist-princeton,as land-hist with Princeton forcings,land-hist,none,,"isn't parent ""historical""?",
,Land only simulations,f19d0042-c478-11e5-868e-ac72891c3257,2014,1,LmipH (1c),LND,LS3MIP,1,165,1850,2,f19cfee4-c478-11e5-868e-ac72891c3257,165,land-hist-cruNcep,land,hist,cruNcep,none,none,LND,,land-hist-cruNcep,as land-hist with CRU-NCEP forcings,land-hist,none,,"isn't parent ""historical""?",
,Land only simulations,f19d0042-c478-11e5-868e-ac72891c3257,2014,1,LmipH (1c),LND,LS3MIP,1,165,1850,2,f19cfee4-c478-11e5-868e-ac72891c3257,165,land-hist-wfdei,land,hist,wfdei,none,none,LND,,land-hist-wfdei,as land-hist with WFDEI forcings,land-hist,none,,"isn't parent ""historical""?",
,"Additional land use policy sensitivity simulation for high radiative forcing scenario, keep all forcings the same as in C4MIP esmssp5-8.5 scenario except use SSP1-2.6 land use; emission driven",f19d4908-c478-11e5-868e-ac72891c3257,2100,1,Esmssp585wssp126landuse,ESM,LUMIP,1,95,2015,1,f19d47be-c478-11e5-868e-ac72891c3257,95,esm-ssp585-ssp126Lu,esm,ssp585,ssp126Lu,none,none,ESM,CHEM AER,esm-ssp585-ssp126Lu,emissions-driven SSP5-8.5 with SSP1-2.6 land use,esm-hist,none,CMIP,,
,"Same as CMIP6 historical but with land cover held at 1850, no human activity; concentration driven",f19d329c-c478-11e5-868e-ac72891c3257,2014,1,HistNolulcc01,AOGCM,LUMIP,1,165,1850,1,f19d3148-c478-11e5-868e-ac72891c3257,165,hist-noLu,hist,noLu,,none,none,AOGCM,CHEM AER,hist-noLu,historical with no land-use change,piControl,none,CMIP,,
,"Idealized deforestation experiment, 20 million km2 forest removed linearly over a period of 50 years, with an additional 30 years with no specified change in forest cover; all other forcings held constant",f19d2180-c478-11e5-868e-ac72891c3257,1920,1,IdealizedGlobalDeforest,AOGCM,LUMIP,1,70,1850,1,f19d1fbe-c478-11e5-868e-ac72891c3257,70,deforest-globe,deforest,globe,,none,none,AOGCM,CHEM AER,deforest-globe,idealized transient global deforestation,piControl,none,CMIP,,
,Same as land-hist except starting from either 1700 (for models that typically start in 1850) or 1850 (for models that typically start in 1700). ,,,,,LND,LUMIP,,,,1,,,land-hist-altStartYear,land,hist,altStartYear,none,none,LND,,land-hist-altStartYear,historical land-only alternate start year,,,,,
,"Same land model configuration as used in CMIP6 coupled experiments with all applicable land-use features active. Start year either 1850 or 1700 depending on standard practice for particular model. All forcings transient including CO2, N-dep, aerosol dep, etc.  ",,,,,LND,"LS3MIP, LUMIP",,,,1,,,land-hist,land,hist,,none,none,LND,,land-hist,historical land-only,,,,,
,Same as land-hist except with CO2 held constant ,,,,,LND,LUMIP,,,,2,,,land-cCO2,land,cCO2,,none,none,LND,,land-cCO2,historical land-only constant CO2,,,,,
,Same as land-hist except with CO2 held constant ,,,,,LND,LUMIP,,,,2,,,land-cClim,land,cClim,,none,none,LND,,land-cClim,historical land-only constant climate,,,,,
,Same as land-hist except no land-use change,,,,,LND,LUMIP,,,,1,,,land-noLu,land,noLu,,none,none,LND,,land-noLu,historical land-only with no land-use change,,,,,
,Same as land-hist except with crop area utilizing prognostic crop model,,,,,LND,LUMIP,,,,2,,,land-crop-noManage,land,crop,noManage,none,none,LND,,land-crop-noManage,historical land-only with crops but no crop management,,,,,
,"Same as land-hist except with net LUC transitions instead of gross LUC transitions. If gross transitions exceeding net transitions have been applied in 1850, they should be maintained.",,,,,LND,LUMIP,,,,2,,,land-netTrans,land,netTrans,,none,none,LND,,land-netTrans,historical land-only with net land-use transitions,,,,,
,Same as land-hist but with anthropogenic ignition and suppression held to 1850 levels,,,,,LND,LUMIP,,,,2,,,land-noFire,land,noFire,,none,none,LND,,land-noFire,historical land-only with no human fire management,,,,,
,Same as land-hist but with wood harvest maintained at 1850 amounts/areas,,,,,LND,LUMIP,,,,2,,,land-noWoodHarv,land,noWoodHarv,,none,none,LND,,land-noWoodHarv,historical land-only with no wood harvest,,,,,
,"Same as land-hist but with grazing and other management on pastureland held at 1850 levels/distribution, i.e. all new pastureland is treated as unmanaged grassland (as in land-crop-grass).",,,,,LND,LUMIP,,,,2,,,land-noPasture,land,noPasture,,none,none,LND,,land-noPasture,historical land-only with constant pastureland,,,,,
,Same as land-hist but with all new crop and pastureland treated as unmanaged grassland ,,,,,LND,LUMIP,,,,2,,,land-crop-grass,land,crop,grass,none,none,LND,,land-crop-grass,historical land-only with cropland as natural grassland,,,,,
,Same as land-hist but with irrigated area held at 1850 levels,,,,,LND,LUMIP,,,,2,,,land-crop-noIrrig,land,crop,noIrrig,none,none,LND,,land-crop-noIrrig,historical land-only with no irrigation ,,,,,
,Same as land-hist but with fertilization rates and area held at 1850 levels/distribution,,,,,LND,LUMIP,,,,2,,,land-crop-noFert,land,crop,noFert,none,none,LND,,land-crop-noFert,historical land-only with no fertilizer,,,,,
,"Additional land use policy sensitivity simulation for low radiative forcing scenario, keep all forcings the same as ScenarioMIP SSP1-2.6 (afforestation scenario), but replace land use from SSP3-7 (afforestation) scenario; concentration-driven",f19d3e68-c478-11e5-868e-ac72891c3257,2100,1,Ssp126wssp37landuse,AOGCM,LUMIP,1,95,2015,1,f19d44a8-c478-11e5-868e-ac72891c3257,95,ssp126-ssp370Lu,ssp126,ssp370Lu,,none,none,AOGCM,CHEM AER,ssp126-ssp370Lu,SSP1-2.6 with SSP3-7.0 land use,historical,no [...]
,"Additional land use policy sensitivity simulation for high radiative forcing scenario, keep all forcings the same as ScenarioMIP SSP3-7 (deforestation scenario), but replace land use from SSP1-2.6 (afforestation) scenario; concentration-driven",f19d3e68-c478-11e5-868e-ac72891c3257,2100,1,Ssp37wssp126landuse,AOGCM,LUMIP,1,95,2015,1,f19d3d1e-c478-11e5-868e-ac72891c3257,95,ssp370-ssp126Lu,ssp370,ssp126Lu,,none,none,AOGCM,CHEM AER,ssp370-ssp126Lu,SSP3-7.0 with SSP1-2.6 land use,historical,n [...]
,Global ocean - sea-ice coupled experiment forced with the Coordinated Ocean - ice Reference Experiments inter-annually varying atmopsheric data sets for the 1948-2009 period. The 62-year forcing period is repeated for no less than 5 cycles.,f19d4d68-c478-11e5-868e-ac72891c3257,310,1,OmipA,OGCM,OMIP,1,310,1,1,f19d4c1e-c478-11e5-868e-ac72891c3257,310,omip-core2,omip,core2,,none,none,OGCM,,,OMIP experiment forced by CORE-2 atmospheric data set and initialized with observed physical and biog [...]
,Same as the OMIP experiment except that it is not initialized with observed climatologies; rather it is initialized with results from at least a 1000-year spin up of the coupled physical-biogeochemical models. Also it includes radiocarbon to evaluate deep-ocean circulation.,f19d52c2-c478-11e5-868e-ac72891c3257,310,1,OmpiB,OGCM,OMIP,1,311,1,2,f19d516e-c478-11e5-868e-ac72891c3257,311,omip-core2-spunup,omip,core2,spunup,none,none,OGCM,,,OMIP experiment forced by CORE-2 atmospheric data set  [...]
,Global ocean - sea-ice coupled experiment forced with the Coordinated Ocean - ice Reference Experiments inter-annually varying atmopsheric data sets for the 1948-2009 period. The 62-year forcing period is repeated for no less than 5 cycles.,f19d4d68-c478-11e5-868e-ac72891c3257,310,1,OmipA,OGCM,OMIP,1,310,1,3,f19d4c1e-c478-11e5-868e-ac72891c3257,310,omip-jra55,omip,jra55,,none,none,OGCM,,,OMIP experiment forced by JRA-55 atmospheric data set and initialized with observed physical and biog [...]
,Same as the OMIP experiment except that it is not initialized with observed climatologies; rather it is initialized with results from at least a 1000-year spin up of the coupled physical-biogeochemical models. Also it includes radiocarbon to evaluate deep-ocean circulation.,f19d52c2-c478-11e5-868e-ac72891c3257,310,1,OmpiB,OGCM,OMIP,1,311,1,3,f19d516e-c478-11e5-868e-ac72891c3257,311,omip-jra55-spunup,omip,jra55,spunup,none,none,OGCM,,,OMIP experiment forced by JRA-55 atmospheric data set  [...]
,"main forcings : ice-sheet; trace gases, orbital parameters dust (forcing, or feedback if dust cycle represented in model)",f19d641a-c478-11e5-868e-ac72891c3257,as long as possible to have >= 100 stabilised years (I.e 500 to 1000 years for the simulation),1,lgm,AOGCM,PMIP,1,100,from PI or pre-existing LGM,1,f19d62bc-c478-11e5-868e-ac72891c3257,100,lgm,lgm,,,none,none,AOGCM,CHEM AER,,,???,,,,
,"main forcings : orbital parameters, ice-sheet, trace gases",f19d7414-c478-11e5-868e-ac72891c3257,as long as possible to have >= 100 stabilised years (I.e 500 ),1,LIG,AOGCM,PMIP,1,100,from PI or pre-existing LIG,1,f19d72ca-c478-11e5-868e-ac72891c3257,100,lig127k,lig127k,,,none,none,AOGCM,CHEM AER,,,???,,,,
,"main forcings : trace gases, orbital parameters, dust",f19d682a-c478-11e5-868e-ac72891c3257,about 300 to 1000 for interannual variability,1,midHolocene,AOGCM,PMIP,1,200,from PI or pre-existing midHolocene,1,f19d66d6-c478-11e5-868e-ac72891c3257,200,midHolocene,midHolocene,,,none,none,AOGCM,CHEM AER,,,???,,,,
,"main forcings : trace gases, volcanoes, solar variability, land use",f19d6c26-c478-11e5-868e-ac72891c3257,1850,1,past1000,AOGCM,PMIP,1,1000,850,1,f19d6adc-c478-11e5-868e-ac72891c3257,1000,past1000,past1000,,,none,none,AOGCM,CHEM AER,,,???,,,,
,"main forcings : trace gases, orography, ice-sheet",f19d7022-c478-11e5-868e-ac72891c3257,as long as possible to have >= 100 stabilised years (I.e 500 ),1,PlioExp,AOGCM,PMIP,1,100,from PI or pre-existing PlioExp,1,f19d6ece-c478-11e5-868e-ac72891c3257,100,midPliocene-eoi400,midPliocene,eoi400,,none,none,AOGCM,CHEM AER,,,???,,,,
,30-year atmosphere only integration using preindustrial conditions. Interactive vegetation,f19d874c-c478-11e5-868e-ac72891c3257,30,1,RFMIP-ERF-PI-Cntrl,AGCM,"RFMIP, AerChemMIP",1,30,1,1,f19d85f8-c478-11e5-868e-ac72891c3257,30,piClim-control,piClim,control,,none,none,AGCM,CHEM AER,RFMIP-ERF-PI-Cntrl,,,,,AerChemMIP also wants this done.,
,As in RFMIP-ERF-PI-Cntrl but with 4xCO2,f19d874c-c478-11e5-868e-ac72891c3257,30,1,RFMIP-ERF-4xCO2,AGCM,RFMIP,1,30,1,1,f19d8a4e-c478-11e5-868e-ac72891c3257,30,piClim-4xCO2,piClim,4xCO2,,none,none,AGCM,CHEM AER,RFMIP-ERF-4xCO2,,,,,,
,As in RFMIP-ERF-PI-Cntrl but with with present-day aerosols and ozone,f19d874c-c478-11e5-868e-ac72891c3257,30,1,RFMIP-ERF-AerO3,AGCM,RFMIP,1,30,1,1,f19d9430-c478-11e5-868e-ac72891c3257,30,piClim-aerO3,piClim,aerO3,,none,none,AGCM,CHEM AER,RFMIP-ERF-AerO3,,,,,,
,As in RFMIP-ERF-AER but with present-day changes scaled by 0.1,f19d874c-c478-11e5-868e-ac72891c3257,30,1,RFMIP-ERF-AerO3x01,AGCM,RFMIP,1,30,1,2,f19d9a48-c478-11e5-868e-ac72891c3257,30,piClim-aerO3x0p1,piClim,aerO3x0p1,,none,none,AGCM,CHEM AER,RFMIP-ERF-AerO3x01,,,,,,
,As in RFMIP-ERF-AER but with present-day changes scaled by 2,f19d874c-c478-11e5-868e-ac72891c3257,30,1,RFMIP-ERF-AerO3x2,AGCM,RFMIP,1,30,1,2,f19d9d4a-c478-11e5-868e-ac72891c3257,30,piClim-aerO3x2,piClim,aerO3x2,,none,none,AGCM,CHEM AER,RFMIP-ERF-AerO3x2,,,,,,
,"As in RFMIP-ERF-PI-Cntrl but with present-day anthropogenic forcing (greenhouse gases, aerosols and land-use)",f19d874c-c478-11e5-868e-ac72891c3257,30,1,RFMIP-ERF-Anthro,AGCM,RFMIP,1,30,1,1,f19d8d5a-c478-11e5-868e-ac72891c3257,30,piClim-anthro,piClim,anthro,,none,none,AGCM,CHEM AER,RFMIP-ERF-Anthro,,,,,,
,As in RFMIP-ERF-PI-Cntrl but with present-day greenhouse gases,f19d874c-c478-11e5-868e-ac72891c3257,30,1,RFMIP-ERF-GHG,AGCM,RFMIP,1,30,1,1,f19d907a-c478-11e5-868e-ac72891c3257,30,piClim-GHG,piClim,GHG,,none,none,AGCM,CHEM AER,RFMIP-ERF-GHG,,,,,,
,Time-varying forcing by aerosols. SST and sea ice fixed at preindustrial control. Interactive vegetation,f19da1a0-c478-11e5-868e-ac72891c3257,2100,3,RFMIP-ERF-HistAer,AGCM,RFMIP,1,753,1850,2,f19da876-c478-11e5-868e-ac72891c3257,251,piClim-histaer03,piClim,histaer03,,none,none,AGCM,CHEM AER,RFMIP-ERF-HistAer,,,,,,
,Time-varying forcing. SST and sea ice fixed at preindustrial control. Interactive vegetation,f19da1a0-c478-11e5-868e-ac72891c3257,2100,3,RFMIP-ERF-HistAll,AGCM,RFMIP,1,753,1850,2,f19da04c-c478-11e5-868e-ac72891c3257,251,piClim-histAll,piClim,histAll,,none,none,AGCM,CHEM AER,RFMIP-ERF-HistAll,,,,,,
,Time-varying forcing by GHGs. SST and sea ice fixed at preindustrial control. Interactive vegetation,f19da1a0-c478-11e5-868e-ac72891c3257,2100,3,RFMIP-ERF-HistGHG,AGCM,RFMIP,1,753,1850,2,f19daba0-c478-11e5-868e-ac72891c3257,251,piClim-histGHG,piClim,histGHG,,none,none,AGCM,CHEM AER,RFMIP-ERF-HistGHG,,,,,,
,"Time-varying forcing from volcanos, solar variability, etc. SST and sea ice fixed at preindustrial control. Interactive vegetation",f19da1a0-c478-11e5-868e-ac72891c3257,2100,3,RFMIP-ERF-HistNat,AGCM,RFMIP,1,753,1850,2,f19da4a2-c478-11e5-868e-ac72891c3257,251,piClim-histNat,piClim,histNat,,none,none,AGCM,CHEM AER,RFMIP-ERF-HistNat,,,,,,
,As in RFMIP-ERF-PI-Cntrl but with present-day land use,f19d874c-c478-11e5-868e-ac72891c3257,30,1,RFMIP-ERF-LU,AGCM,RFMIP,1,30,1,1,f19d9746-c478-11e5-868e-ac72891c3257,30,piClim-lu,piClim,lu,,none,none,AGCM,CHEM AER,RFMIP-ERF-LU,,,,,,
,Prescribed anthropogenic aerosol optical properties. Aerosol and ozone forcings.,,,,RFMIP-spAer-piSST-histall,AGCM,RFMIP,,,,2,,,piClim-spAer-histall,piClim,spAer,histall,none,none,AGCM,,RFMIP-spAer-piSST-histall,,,,,spAer or spAerO3?,
,Prescribed anthropogenic aerosol optical properties. Aerosol and ozone forcings.,,,,RFMIP-spAer-piSST-histaer,AGCM,RFMIP,,,,2,,,piClim-spAer-histaer,piClim,spAer,histaer,none,none,AGCM,,RFMIP-spAer-piSST-histaer,,,,,spAer or spAerO3?,
,Prescribed anthropogenic aerosol optical properties. Aerosol and ozone forcings.,,,,RFMIP-spAer-piSST-aer,AGCM,RFMIP,,,,2,,,piClim-spAer-aer,piClim,spAer,aer,none,none,AGCM,,RFMIP-spAer-piSST-aer,,,,,spAer or spAerO3?,
,Prescribed anthropogenic aerosol optical properties. Anthropogenic forcings.,,,,RFMIP-spAer-piSST-anthro,AGCM,RFMIP,,,,2,,,piClim-spAer-anthro,piClim,spAer,anthro,none,none,AGCM,,RFMIP-spAer-piSST-anthro,,,,,spAer or spAerO3?,
,Prescribed anthropogenic aerosol optical properties. Changes in aerosols only.,f19db050-c478-11e5-868e-ac72891c3257,2020,3,RFMIP-SpAer-aer,AOGCM,RFMIP,1,513,1850,2,f19db654-c478-11e5-868e-ac72891c3257,171,hist-spAer,hist,spAer,,none,none,AOGCM,,RFMIP-SpAer-aer,,piControl,none,CMIP,In GMD it mentions Parent?,
,Prescribed anthropogenic aerosol optical properties. All forcings.,f19db050-c478-11e5-868e-ac72891c3257,2020,3,RFMIP-SpAer-all,AOGCM,RFMIP,1,513,1850,1,f19daefc-c478-11e5-868e-ac72891c3257,171,hist-all-spAer,hist,all,spAer,none,none,AOGCM,,RFMIP-SpAer-all,,piControl,none,CMIP,"spAer or spAerO3?   Is parent piControl?  Is this like ""histtorical"" but with special treatment of aerosols?",
,"Request for specialized diagnostics: Full snapshots of spectrally-resolved aerosol optical properties for single days at PI and PD, along with model-specific direct aerosol IRF.",f19d7cca-c478-11e5-868e-ac72891c3257,0,0,RfmipIrfAer,Diagnostic,RFMIP,1,0,0,1,f19d7b76-c478-11e5-868e-ac72891c3257,0,,,,,,none,,,,,,,,"This is not an experiment, but is a request for special model output from the piControl and historical runs.",
,Offline radiation calculations,,,,RFMIP-IRF,RAD,RFMIP,,,,1,,,rad-irf,rad,irf,,none,none,RAD,,RFMIP-IRF,,,,,,
,Future scenario with low radiative forcing by the end of century. Following approximately RCP2.6 global forcing pathway but with new forcing based on SSP1. Concentration-driven.,,,,SSP126,AOGCM,ScenarioMIP,,,,1,,,ssp126,,,,none,none,AOGCM,CHEM AER,ssp126,update of RCP2.6 based on SSP1,historical,none,CMIP,,
,"Extension of SSP1_26 to 2300, in style of CMIP5 extension. Extends negative emissions level reached in 2100 to produce slowly declining forcing.",f19dd486-c478-11e5-868e-ac72891c3257,2300,1,SSP126ext,AOGCM,ScenarioMIP,1,199,2101,2,f19ddfda-c478-11e5-868e-ac72891c3257,199,,,,,,none,,,,long-term extension of ssp126 to 2300,,,,"an extension of ssp126, so doesn't need a separate experiment_id",
,Extension of SSP5_34over to 2300,,,,SSP534overext,AOGCM,ScenarioMIP,,,,2,,,,,,,,none,,,,long-term extension of ssp534over to 2300,,,,"an extension of ssp534-over, so doesn't need a separate experiment_id",
,21st century overshoot scenario relative to SSP5_34. Branches from SS5_85 at 2040 with emissions reduced to zero by 2070 and negative thereafter.,f19dd486-c478-11e5-868e-ac72891c3257,2100,1,SSP534over,AOGCM,ScenarioMIP,1,86,2015,2,f19de296-c478-11e5-868e-ac72891c3257,86,ssp534-over,ssp534,over,,none,none,AOGCM,CHEM AER,ssp534-over,overshoot of 3.4 W/m**2 branching from ssp585 in 2040,ssp585,none,ScenarioMIP,,
,Future scenario with medium radiative forcing by the end of century. Following approximately RCP6.0 global forcing pathway but with new forcing based on SSP4. Concentration-driven.,f19dd486-c478-11e5-868e-ac72891c3257,2100,1,SSP460,AOGCM,ScenarioMIP,1,86,2015,2,f19dd33c-c478-11e5-868e-ac72891c3257,86,ssp460,ssp460,,,none,none,AOGCM,CHEM AER,ssp460,update of RCP6.0 based on SSP4,historical,none,CMIP,,
,Future scenario with medium radiative forcing by the end of century. Following approximately RCP4.5 global forcing pathway but with new forcing based on SSP2. Concentration-driven.,f19dc61c-c478-11e5-868e-ac72891c3257,2100,1,SSP245,AOGCM,ScenarioMIP,1,86,2015,1,f19dcdba-c478-11e5-868e-ac72891c3257,86,ssp245,ssp245,,,none,none,AOGCM,CHEM AER,ssp245,update of RCP4.5 based on SSP2,historical,none,CMIP,,
,"Future scenario with high radiative forcing by the end of century. Reaches about 7.0 W/m2 by 2100; fills gap in RCP forcing pathways between 6.0 and 8.5 W/m2. Concentration-driven. At least 9 further perturbed IC ensemble members (if not 9, as many as possible).",,,,SSP370ens,AOGCM,ScenarioMIP,,,,2,,,,,,,,none,,,,IC ensemble of ssp370,,,,"an esemble of ssp370, so doesn't need a separate experiment_id",
,Future scenario with high radiative forcing by the end of century. Reaches about 7.0 W/m2 by 2100; fills gap in RCP forcing pathways between 6.0 and 8.5 W/m2. Concentration-driven.,f19dc61c-c478-11e5-868e-ac72891c3257,2100,1 10,SSP370,AOGCM,"ScenarioMIP, AerChemMIP, LUMIP",1,860,2015,1,f19dca36-c478-11e5-868e-ac72891c3257,86,ssp370,ssp370,,,none,none,AOGCM,CHEM AER,ssp370,gap-filling scenario reaching 7.0 based on SSP3,historical,none,CMIP,AerChemMIP also wants this done.,
,Future scenario with low radiative forcing by the end of century. Reaches about 3.4 W/m2 by 2100; fills gap in RCP forcing pathways between 4.5 and 2.6 W/m2. Concentration-driven.,f19dd486-c478-11e5-868e-ac72891c3257,2100,1,SSP434,AOGCM,ScenarioMIP,1,86,2015,2,f19dd738-c478-11e5-868e-ac72891c3257,86,ssp434,ssp434,,,none,none,AOGCM,CHEM AER,ssp434,gap-filling scenario reaching 3.4 based on SSP4,historical,none,CMIP,,
,Future scenario with high radiative forcing by the end of century. Following approximately RCP8.5 global forcing pathway but with new forcing based on SSP5. Concentration-driven.,f19dc61c-c478-11e5-868e-ac72891c3257,2100,1,SSP585,AOGCM,ScenarioMIP,1,86,2015,1,f19dc4c8-c478-11e5-868e-ac72891c3257,86,ssp585,ssp585,,,none,none,AOGCM,CHEM AER,ssp585,update of RCP8.5 based on SSP5,historical,none,CMIP,,
,"Extension of SSP5_85 to 2300, in style of CMIP5 extension. Assumes emissions eventually decline from 2100 levels to produce stabilized forcing by 2300.",f19dd486-c478-11e5-868e-ac72891c3257,2300,1,SSP585ext,AOGCM,ScenarioMIP,1,199,2101,2,f19dda4e-c478-11e5-868e-ac72891c3257,199,,,,,,none,,,,long-term extension of ssp585 to 2300,,,,"an extension of ssp534, so doesn't need a separate experiment_id",
,Future scenario with low radiative forcing by the end of century. Following a forcing pathway below RCP2.6. Specific SSP and 2100 forcing level to be finalized with IAM groups within next few months. Concentration-driven.,f19de6a6-c478-11e5-868e-ac72891c3257,2100,1,SSPXY,AOGCM,ScenarioMIP,1,86,2015,2,f19de552-c478-11e5-868e-ac72891c3257,86,sspxy,sspxy,,,none,none,AOGCM,CHEM AER,sspxy,low-end scenario informing 1.5C goal,historical,none,CMIP,"""x"" AND ""y"" have yet to be determined PRECISELY",
,"Early 19th century cluster of strong tropical volcanic eruptions, including the 1809 event of unknown location, and the 1815 Tambora and 1835 Cosigueina eruptions.",f19e01b8-c478-11e5-868e-ac72891c3257,TBD,3,VolLongC19thC,AOGCM,VolMIP,3,150,Preindustrial conditions,2,f19e0028-c478-11e5-868e-ac72891c3257,50,volcCluster,volcCluster,,,none,none,AOGCM,CHEM AER,,long volcanic-forcing-only experiment with cluster of eruption,piControl,none,CMIP,,
,"Idealized equatorial eruption corresponding to an initial emission of 60 Tg of SO2.  This eruption has a magnitude roughly corresponding to the 1815 Tambora eruption, the largest historical tropical eruption, which was linked to the so-called ""year without a summer"" in 1816.",,,,VolLongS60EQ,AOGCM,VolMIP,,,Preindustrial conditions,?,,,volcEq-S60,volcEq,S60,,none,none,AOGCM,CHEM AER,,long volcanic-forcing-only experiment with single equatorial eruption,piControl,none,CMIP,,
,"Idealized high-latitude (60oN) eruption emitting 100 Tg of SO2 over five months. The eruption""s strength and length roughly correspond to that of the 1783-84 Laki eruption.",f19df6b4-c478-11e5-868e-ac72891c3257,TBD,9,VolLongS100HL,AOGCM,VolMIP,9,180,Preindustrial conditions,2,f19dfd6c-c478-11e5-868e-ac72891c3257,20,volcHL-S100,volcHL,S100,,none,none,AOGCM,CHEM AER,,long volcanic-forcing-only experiment with single high-latitude eruption,piControl,none,CMIP,,
,"1991 Pinatubo forcing as used in the CMIP6 historical simulations.  Requires special diagnostics of parameterized and resolved wave forcings, radiative and latent heating rates. A large number of ensemble members is required to address internal atmospheric variability.",f19dfab0-c478-11e5-868e-ac72891c3257,TBD,25,VolShort20EQfull,AOGCM,VolMIP,25,75,Preindustrial conditions,1,f19df966-c478-11e5-868e-ac72891c3257,3,volcEq-full,volcEq,full,,none,none,AOGCM,CHEM AER,,Pinatubo experiment wit [...]
,"As VolShort20EQfull, but as decadal prediction runs. Joint experiment with DCPP, forcing input and implementation of the forcing fully comply with the VolMIP protocol",f19dfab0-c478-11e5-868e-ac72891c3257,TBD,10,Volshort20eqiniDcppC21,AOGCM,VolMIP,10,50,Preindustrial conditions,3,f19e0ec4-c478-11e5-868e-ac72891c3257,5,volcEq-ini,volcEq,ini,,none,none,AOGCM,CHEM AER,,Pinatubo experiment in decadal climate prediction setup,piControl,none,CMIP,,
,"As VolShort20EQfull, but with a slab ocean",f19dfab0-c478-11e5-868e-ac72891c3257,TBD,25,VolShort20EQslab,AGCM SLAB,VolMIP,25,75,Preindustrial conditions,3,f19e0c12-c478-11e5-868e-ac72891c3257,3,volcEq-slab,volcEq,slab,,none,none,AGCM SLAB,CHEM AER,,Pinatubo experiment with full volcanic forcing and slab ocean,piControl,none,CMIP,,
,"As VolShort20EQfull, but with prescribed aerosol heating rates in the stratosphere. Complimentary experiment to VolShort20EQstrat.",f19e0686-c478-11e5-868e-ac72891c3257,TBD,25,VolShort20EQstrat,AOGCM,VolMIP,25,75,Preindustrial conditions,2,f19e0942-c478-11e5-868e-ac72891c3257,3,volcEq-strat,volcEq,strat,,none,none,AOGCM,CHEM AER,,Pinatubo experiment with only long-wave forcing,piControl,none,CMIP,,
,"As VolShort20EQfull, but with prescribed surface cooling patterns or net  surface flux changes. Complimentary experiment to VolShort20EQstrat.",f19e0686-c478-11e5-868e-ac72891c3257,TBD,25,VolShort20EQsurf,AOGCM,VolMIP,25,75,Preindustrial conditions,2,f19e0532-c478-11e5-868e-ac72891c3257,3,volcEq-surf,volcEq,surf,,none,none,AOGCM,CHEM AER,,Pinatubo experiment with only short-wave forcing,piControl,none,CMIP,,
\ No newline at end of file
diff --git a/TestTables/CMIP6_fx.json b/TestTables/CMIP6_fx.json
new file mode 100644
index 0000000..b9189e6
--- /dev/null
+++ b/TestTables/CMIP6_fx.json
@@ -0,0 +1,2352 @@
+{
+    "Header": {
+        "product": "output", 
+        "approx_interval": "0.00000", 
+        "realm": "ocean", 
+        "cmor_version": "3.1", 
+        "Conventions": "CF-1.6 CMIP-6.0", 
+        "frequency": "fx", 
+        "table_id": "Table fx", 
+        "data_specs_version": "01.beta.29", 
+        "mip_era": "CMIP6", 
+        "generic_levels": "olevel", 
+        "missing_value": "1e20", 
+        "table_date": "14 June 2016"
+    }, 
+    "axis_entry": {
+        "typebare": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "bare_ground", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "tau": {
+            "requested": [
+                "0.15", 
+                "0.8", 
+                "2.45", 
+                "6.5", 
+                "16.2", 
+                "41.5", 
+                "100."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "0.0", 
+                "0.3", 
+                "0.3", 
+                "1.3", 
+                "1.3", 
+                "3.6", 
+                "3.6", 
+                "9.4", 
+                "9.4", 
+                "23.0", 
+                "23.0", 
+                "60.0", 
+                "60.0", 
+                "100000."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "cloud optical thickness", 
+            "standard_name": "atmosphere_optical_thickness_due_to_cloud", 
+            "value": "", 
+            "out_name": "tau", 
+            "type": "double", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "olayer100m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "0. 100.", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "50.0", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "100.0", 
+            "axis": "Z"
+        }, 
+        "spectband": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "Spectral Band", 
+            "standard_name": "wave_frequency", 
+            "value": "", 
+            "out_name": "spectband", 
+            "type": "double", 
+            "units": "s-1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "ocean_sigma_z": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "sigma: sigma eta: eta depth: depth depth_c: depth_c nsigma: nsigma zlev: zlev", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "sigma: sigma_bnds eta: eta depth: depth depth_c: depth_c nsigma: nsigma zlev: zlev_bnds", 
+            "bounds_values": "", 
+            "long_name": "ocean sigma over z coordinate", 
+            "standard_name": "ocean_sigma_z", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "for k <= nsigma: z(n,k,j,i) = eta(n,j,i) + sigma(k)*(min(depth_c,depth(j,i))+eta(n,j,i)) ; for k > nsigma: z(n,k,j,i) = zlev(k)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev19": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000.", 
+                "500.", 
+                "100."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "p220": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "44000. 0.0", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "22000.0", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev17": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev10": {
+            "requested": [
+                "100000.", 
+                "85000.", 
+                "70000.", 
+                "50000.", 
+                "25000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "site": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "site index", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "site", 
+            "type": "integer", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "smooth_level": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "a: a b1: b1 b2: b2 ztop: ztop zsurf1: zsurf1 zsurf2: zsurf2", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-200.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "a: a_bnds b1: b1_bnds b2: b2_bnds ztop: ztop zsurf1: zsurf1 zsurf2: zsurf2", 
+            "bounds_values": "", 
+            "long_name": "atmosphere smooth level vertical (SLEVE) coordinate", 
+            "standard_name": "atmosphere_sleve_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "m", 
+            "formula": "z = a*ztop + b1*zsurf1 + b2*zsurf2", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "800000.0", 
+            "axis": "Z"
+        }, 
+        "p840": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "100000. 68000.", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "84000.0", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "ocean_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "sigma: lev eta: eta depth: depth", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "sigma: lev_bnds eta: eta depth: depth", 
+            "bounds_values": "", 
+            "long_name": "ocean sigma coordinate", 
+            "standard_name": "ocean_sigma_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "z(n,k,j,i) = eta(n,j,i) + sigma(k)*(depth(j,i)+eta(n,j,i))", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "0.0", 
+            "axis": "Z"
+        }, 
+        "depth0m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "0.0", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "100.0", 
+            "axis": "Z"
+        }, 
+        "ocean_s": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "s: lev eta: eta depth: depth a: a_coeff b: b_coeff depth_c: depth_c", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "s: lev_bnds eta: eta depth: depth a: a b: b depth_c: depth_c", 
+            "bounds_values": "", 
+            "long_name": "ocean s-coordinate", 
+            "standard_name": "ocean_s_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "z(n,k,j,i) = eta(n,j,i)*(1+s(k)) + depth_c*s(k) + (depth(j,i)-depth_c)*C(k) n where n C(k)=(1-b)*sinh(a*s(k))/sinh(a) +n           b*(tanh(a*(s(k)+0.5))/(2*tanh(0.5*a)) - 0.5)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "0.0", 
+            "axis": "Z"
+        }, 
+        "plev4s": {
+            "requested": [
+                "85000.", 
+                "50000.", 
+                "20000.", 
+                "5000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "typec4pft": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "c4_plant_functional_types", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "plev3h": {
+            "requested": [
+                "10000.", 
+                "1000.", 
+                "100."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "height2m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "up", 
+            "must_have_bounds": "no", 
+            "valid_min": "1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "height", 
+            "standard_name": "height", 
+            "value": "2.0", 
+            "out_name": "height", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "10.0", 
+            "axis": "Z"
+        }, 
+        "time1": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "time", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "plev7h": {
+            "requested": [
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "25000.", 
+                "5000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "sza5": {
+            "requested": [
+                "0.", 
+                "20.", 
+                "40.", 
+                "60.", 
+                "80."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "solar zenith angle", 
+            "standard_name": "solar_zenith_angle", 
+            "value": "", 
+            "out_name": "sza", 
+            "type": "double", 
+            "units": "degree", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "depth_coord": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "ocean depth coordinate", 
+            "standard_name": "depth", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "12000.0", 
+            "axis": "Z"
+        }, 
+        "sdepth1": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "0.0 0.1", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "0.05", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "0.2", 
+            "axis": "Z"
+        }, 
+        "alternate_hybrid_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "ap: ap b: b ps: ps", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "ap: ap_bnds b: b_bnds ps: ps", 
+            "bounds_values": "", 
+            "long_name": "hybrid sigma pressure coordinate", 
+            "standard_name": "atmosphere_hybrid_sigma_pressure_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "1", 
+            "formula": "p = ap + b*ps", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "1.0", 
+            "axis": "Z"
+        }, 
+        "time2": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "time", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "yes", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "time3": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "Diurnal cycle: monthly mean of the diurnal cycle (1 hour steps).", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "oline": {
+            "requested": [
+                "barents_opening", 
+                "bering_strait", 
+                "canadian_archipelago", 
+                "denmark_strait", 
+                "drake_passage", 
+                "english_channel", 
+                "pacific_equatorial_undercurrent", 
+                "faroe_scotland_channel", 
+                "florida_bahamas_strait", 
+                "fram_strait", 
+                "iceland_faroe_channel", 
+                "indonesian_thoughflow", 
+                "mozambique_channel", 
+                "taiwan_luzon_straits", 
+                "windward_passage"
+            ], 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "ocean passage", 
+            "standard_name": "region", 
+            "value": "", 
+            "out_name": "line", 
+            "type": "character", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "plev14": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "25000.", 
+                "15000.", 
+                "10000.", 
+                "5000.", 
+                "2000.", 
+                "1000.", 
+                "500.", 
+                "100."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev8": {
+            "requested": [
+                "100000.", 
+                "85000.", 
+                "70000.", 
+                "50000.", 
+                "25000.", 
+                "10000.", 
+                "5000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "location": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "location index", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "loc", 
+            "type": "integer", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "latitude": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-90.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "latitude", 
+            "standard_name": "latitude", 
+            "value": "", 
+            "out_name": "lat", 
+            "type": "double", 
+            "units": "degrees_north", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "90.0", 
+            "axis": "Y"
+        }, 
+        "plev3": {
+            "requested": [
+                "85000.", 
+                "50000.", 
+                "25000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "basin": {
+            "requested": [
+                "atlantic_arctic_ocean", 
+                "indian_pacific_ocean", 
+                "global_ocean"
+            ], 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "ocean basin", 
+            "standard_name": "region", 
+            "value": "", 
+            "out_name": "basin", 
+            "type": "character", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "p700": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "700 hPa", 
+            "standard_name": "air_pressure", 
+            "value": "70000.", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev7": {
+            "requested": [
+                "90000.", 
+                "74000.", 
+                "62000.", 
+                "50000.", 
+                "37500.", 
+                "24500.", 
+                "9000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "100000.", 
+                "80000.", 
+                "80000.", 
+                "68000.", 
+                "68000.", 
+                "56000.", 
+                "56000.", 
+                "44000.", 
+                "44000.", 
+                "31000.", 
+                "31000.", 
+                "18000.", 
+                "18000.", 
+                " 0."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev4": {
+            "requested": [
+                "92500.", 
+                "85000.", 
+                "50000.", 
+                "25000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev23": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000.", 
+                "700.", 
+                "500.", 
+                "300.", 
+                "200.", 
+                "100.", 
+                "40."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plev39": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "17000.", 
+                "15000.", 
+                "13000.", 
+                "11500.", 
+                "10000.", 
+                "9000.", 
+                "8000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1500.", 
+                "1000.", 
+                "700.", 
+                "500.", 
+                "300.", 
+                "200.", 
+                "150.", 
+                "100.", 
+                "70.", 
+                "50.", 
+                "40.", 
+                "30.", 
+                "20.", 
+                "15.", 
+                "10.", 
+                "7.", 
+                "5.", 
+                "3."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "typepever": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "primary_evergreen_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "typesdec": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "secondary_decidous_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "plev27": {
+            "requested": [
+                "100000.", 
+                "97500.", 
+                "95000.", 
+                "92500.", 
+                "90000.", 
+                "87500.", 
+                "85000.", 
+                "82500.", 
+                "80000.", 
+                "77500.", 
+                "75000.", 
+                "70000.", 
+                "65000.", 
+                "60000.", 
+                "55000.", 
+                "50000.", 
+                "45000.", 
+                "40000.", 
+                "35000.", 
+                "30000.", 
+                "25000.", 
+                "22500.", 
+                "20000.", 
+                "17500.", 
+                "15000.", 
+                "12500.", 
+                "10000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "alt40": {
+            "requested": [
+                "240.", 
+                "720.", 
+                "1200.", 
+                "1680.", 
+                "2160.", 
+                "2640.", 
+                "3120.", 
+                "3600.", 
+                "4080.", 
+                "4560.", 
+                "5040.", 
+                "5520.", 
+                "6000.", 
+                "6480.", 
+                "6960.", 
+                "7440.", 
+                "7920.", 
+                "8400.", 
+                "8880.", 
+                "9360.", 
+                "9840.", 
+                "10320.", 
+                "10800.", 
+                "11280.", 
+                "11760.", 
+                "12240.", 
+                "12720.", 
+                "13200.", 
+                "13680.", 
+                "14160.", 
+                "14640.", 
+                "15120.", 
+                "15600.", 
+                "16080.", 
+                "16560.", 
+                "17040.", 
+                "17520.", 
+                "18000.", 
+                "18480.", 
+                "18960."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "0.", 
+                "480.", 
+                "480.", 
+                "960.", 
+                "960.", 
+                "1440.", 
+                "1440.", 
+                "1920.", 
+                "1920.", 
+                "2400.", 
+                "2400.", 
+                "2880.", 
+                "2880.", 
+                "3360.", 
+                "3360.", 
+                "3840.", 
+                "3840.", 
+                "4320.", 
+                "4320.", 
+                "4800.", 
+                "4800.", 
+                "5280.", 
+                "5280.", 
+                "5760.", 
+                "5760.", 
+                "6240.", 
+                "6240.", 
+                "6720.", 
+                "6720.", 
+                "7200.", 
+                "7200.", 
+                "7680.", 
+                "7680.", 
+                "8160.", 
+                "8160.", 
+                "8640.", 
+                "8640.", 
+                "9120.", 
+                "9120.", 
+                "9600.", 
+                "9600.", 
+                "10080.", 
+                "10080.", 
+                "10560.", 
+                "10560.", 
+                "11040.", 
+                "11040.", 
+                "11520.", 
+                "11520.", 
+                "12000.", 
+                "12000.", 
+                "12480.", 
+                "12480.", 
+                "12960.", 
+                "12960.", 
+                "13440.", 
+                "13440.", 
+                "13920.", 
+                "13920.", 
+                "14400.", 
+                "14400.", 
+                "14880.", 
+                "14880.", 
+                "15360.", 
+                "15360.", 
+                "15840.", 
+                "15840.", 
+                "16320.", 
+                "16320.", 
+                "16800.", 
+                "16800.", 
+                "17280.", 
+                "17280.", 
+                "17760.", 
+                "17760.", 
+                "18240.", 
+                "18240.", 
+                "18720.", 
+                "18720.", 
+                "19200."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "altitude", 
+            "standard_name": "altitude", 
+            "value": "", 
+            "out_name": "alt40", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "time": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "time", 
+            "standard_name": "time", 
+            "value": "", 
+            "out_name": "time", 
+            "type": "double", 
+            "units": "days since ?", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "T"
+        }, 
+        "plev7c": {
+            "requested": [
+                "90000.", 
+                "74000.", 
+                "62000.", 
+                "50000.", 
+                "37500.", 
+                "24500.", 
+                "9000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "height10m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "up", 
+            "must_have_bounds": "no", 
+            "valid_min": "1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "height", 
+            "standard_name": "height", 
+            "value": "10.0", 
+            "out_name": "height", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "30.0", 
+            "axis": "Z"
+        }, 
+        "dbze": {
+            "requested": [
+                "-47.5", 
+                "-42.5", 
+                "-37.5", 
+                "-32.5", 
+                "-27.5", 
+                "-22.5", 
+                "-17.5", 
+                "-12.5", 
+                "-7.5", 
+                "-2.5", 
+                "2.5", 
+                "7.5", 
+                "12.5", 
+                "17.5", 
+                "22.5"
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "-50", 
+                "-45", 
+                "-45", 
+                "-40", 
+                "-40", 
+                "-35", 
+                "-35", 
+                "-30", 
+                "-30", 
+                "-25", 
+                "-25", 
+                "-20", 
+                "-20", 
+                "-15", 
+                "-15", 
+                "-10", 
+                "-10", 
+                "-5", 
+                "-5", 
+                "0", 
+                "0", 
+                "5", 
+                "5", 
+                "10", 
+                "10", 
+                "15", 
+                "15", 
+                "20", 
+                "20", 
+                "25."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "CloudSat simulator equivalent radar reflectivity factor", 
+            "standard_name": "equivalent_reflectivity_factor", 
+            "value": "", 
+            "out_name": "dbze", 
+            "type": "double", 
+            "units": "dBZ", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "typesever": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "secondary_evergreen_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "rho": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "density++++?", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "rho", 
+            "type": "double", 
+            "units": "kg m-3", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "depth100m": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "80.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "100.0", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "120.0", 
+            "axis": "Z"
+        }, 
+        "effectRadLi": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "Effective Radius of Liquid Aerosols", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "effectRadLi", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "sdepth": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "depth", 
+            "standard_name": "depth", 
+            "value": "", 
+            "out_name": "depth", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "200.0", 
+            "axis": "Z"
+        }, 
+        "vegtype": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "plant functional type", 
+            "standard_name": "area_type", 
+            "value": "", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "typec3pft": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "c3_plant_functional_types", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "natural_log_pressure": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "p0: p0 lev: lev", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "-1.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "p0: p0 lev: lev_bnds", 
+            "bounds_values": "", 
+            "long_name": "atmosphere natural log pressure coordinate", 
+            "standard_name": "atmosphere_ln_pressure_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "p = p0 * exp(-lev)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "20.0", 
+            "axis": "Z"
+        }, 
+        "scatratio": {
+            "requested": [
+                "0.005", 
+                "0.605", 
+                "2.1", 
+                "4.", 
+                "6.", 
+                "8.5", 
+                "12.5", 
+                "17.5", 
+                "22.5", 
+                "27.5", 
+                "35.", 
+                "45.", 
+                "55.", 
+                "70.", 
+                "50040."
+            ], 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": [
+                "0.", 
+                "0.01", 
+                "0.01", 
+                "1.2", 
+                "1.2", 
+                "3.", 
+                "3.", 
+                "5.", 
+                "5.", 
+                "7.", 
+                "7.", 
+                "10.", 
+                "10.", 
+                "15.", 
+                "15.", 
+                "20.", 
+                "20.", 
+                "25.", 
+                "25.", 
+                "30.", 
+                "30.", 
+                "40.", 
+                "40.", 
+                "50.", 
+                "50.", 
+                "60.", 
+                "60.", 
+                "80.", 
+                "80.", 
+                "100000."
+            ], 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "lidar backscattering ratio", 
+            "standard_name": "backscattering_ratio", 
+            "value": "", 
+            "out_name": "scatratio", 
+            "type": "double", 
+            "units": "1", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "standard_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "ptop: ptop sigma: lev ps: ps", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "ptop: ptop sigma: lev_bnds ps: ps", 
+            "bounds_values": "", 
+            "long_name": "sigma coordinate", 
+            "standard_name": "atmosphere_sigma_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "p = ptop + sigma*(ps - ptop)", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "1.0", 
+            "axis": "Z"
+        }, 
+        "typepdec": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "surface type", 
+            "standard_name": "area_type", 
+            "value": "primary_deciduous_trees", 
+            "out_name": "type", 
+            "type": "character", 
+            "units": "", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "hybrid_height": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "a: lev b: b orog: orog", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "a: lev_bnds b: b_bnds orog: orog", 
+            "bounds_values": "", 
+            "long_name": "hybrid height coordinate", 
+            "standard_name": "atmosphere_hybrid_height_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "m", 
+            "formula": "z = a + b*orog", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "longitude": {
+            "requested": "", 
+            "stored_direction": "increasing", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "longitude", 
+            "standard_name": "longitude", 
+            "value": "", 
+            "out_name": "lon", 
+            "type": "double", 
+            "units": "degrees_east", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "360.0", 
+            "axis": "X"
+        }, 
+        "effectRadIc": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "", 
+            "must_have_bounds": "", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "Effective Radius of Ice Aerosols", 
+            "standard_name": "", 
+            "value": "", 
+            "out_name": "effectRadIc", 
+            "type": "double", 
+            "units": "m", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": ""
+        }, 
+        "p1000": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "1000 hPa", 
+            "standard_name": "air_pressure", 
+            "value": "100000.", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "p500": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "500 hPa", 
+            "standard_name": "air_pressure", 
+            "value": "50000.", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "ocean_double_sigma": {
+            "requested": "", 
+            "stored_direction": "", 
+            "z_factors": "sigma: sigma depth: depth z1: z1 z2: z2 a: a_coeff href: href k_c: k_c", 
+            "positive": "up", 
+            "must_have_bounds": "yes", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "sigma: sigma_bnds depth: depth z1: z1 z2: z2 a: a href: href k_c: k_c", 
+            "bounds_values": "", 
+            "long_name": "ocean double sigma coordinate", 
+            "standard_name": "ocean_double_sigma", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "", 
+            "formula": "for k <= k_c:n z(k,j,i)= sigma(k)*f(j,i) n for k > k_c:n z(k,j,i)= f(j,i) + (sigma(k)-1)*(depth(j,i)-f(j,i)) n f(j,i)= 0.5*(z1+ z2) + 0.5*(z1-z2)* tanh(2*a/(z1-z2)*(depth(j,i)-href))", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "plevs": {
+            "requested": [
+                "100000.", 
+                "92500.", 
+                "85000.", 
+                "70000.", 
+                "60000.", 
+                "50000.", 
+                "40000.", 
+                "30000.", 
+                "25000.", 
+                "20000.", 
+                "15000.", 
+                "10000.", 
+                "7000.", 
+                "5000.", 
+                "3000.", 
+                "2000.", 
+                "1000."
+            ], 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "0.001", 
+            "valid_max": "", 
+            "axis": "Z"
+        }, 
+        "standard_hybrid_sigma": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "p0: p0 a: a b: b ps: ps", 
+            "positive": "down", 
+            "must_have_bounds": "yes", 
+            "valid_min": "0.0", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "p0: p0 a: a_bnds b: b_bnds ps: ps", 
+            "bounds_values": "", 
+            "long_name": "hybrid sigma pressure coordinate", 
+            "standard_name": "atmosphere_hybrid_sigma_pressure_coordinate", 
+            "value": "", 
+            "out_name": "lev", 
+            "type": "", 
+            "units": "1", 
+            "formula": "p = a*p0 + b*ps", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "1.0", 
+            "axis": "Z"
+        }, 
+        "p560": {
+            "requested": "", 
+            "stored_direction": "decreasing", 
+            "z_factors": "", 
+            "positive": "down", 
+            "must_have_bounds": "no", 
+            "valid_min": "", 
+            "requested_bounds": "", 
+            "z_bounds_factors": "", 
+            "bounds_values": "68000. 44000.", 
+            "long_name": "pressure", 
+            "standard_name": "air_pressure", 
+            "value": "56000.0", 
+            "out_name": "plev", 
+            "type": "double", 
+            "units": "Pa", 
+            "formula": "", 
+            "climatology": "", 
+            "tolerance": "", 
+            "valid_max": "", 
+            "axis": "Z"
+        }
+    }, 
+    "variable_entry": {
+        "thkcello": {
+            "comment": "", 
+            "dimensions": "longitude latitude olevel", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Ocean Model Cell Thickness", 
+            "standard_name": "cell_thickness", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "time: mean", 
+            "cell_methods": "area: areacello volume: volcello", 
+            "ok_min_mean_abs": "", 
+            "units": "m", 
+            "out_name": "thkcello", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "rootd": {
+            "comment": "report the maximum soil depth reachable by plant roots (if defined in model), i.e., the maximum soil depth from which they can extract moisture; report as ''missing'' where the land fraction is 0.", 
+            "dimensions": "longitude latitude", 
+            "positive": "", 
+            "valid_min": "0.0", 
+            "long_name": "Maximum Root Depth", 
+            "standard_name": "root_depth", 
+            "modeling_realm": "land", 
+            "cell_measures": "", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "m", 
+            "out_name": "rootd", 
+            "type": "real", 
+            "valid_max": "30.0", 
+            "ok_max_mean_abs": ""
+        }, 
+        "depth_c": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: depth_c", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "areacello": {
+            "comment": "Horizontal area of ocean grid cells", 
+            "dimensions": "longitude latitude", 
+            "positive": "", 
+            "valid_min": "0.0", 
+            "long_name": "Ocean Grid-Cell Area", 
+            "standard_name": "cell_area", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "0.0", 
+            "units": "m2", 
+            "out_name": "areacello", 
+            "type": "real", 
+            "valid_max": "1e+12", 
+            "ok_max_mean_abs": "1e+12"
+        }, 
+        "ap_bnds": {
+            "units": "Pa", 
+            "long_name": "vertical coordinate formula term: ap(k+1/2)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "ap": {
+            "units": "Pa", 
+            "long_name": "vertical coordinate formula term: ap(k)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "href": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: href", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "orog": {
+            "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", 
+            "positive": "", 
+            "valid_min": "-700.0", 
+            "long_name": "Surface Altitude", 
+            "standard_name": "surface_altitude", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "m", 
+            "out_name": "orog", 
+            "type": "real", 
+            "valid_max": "10000.0", 
+            "ok_max_mean_abs": ""
+        }, 
+        "zlev": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: zlev(k)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "ps": {
+            "units": "Pa", 
+            "long_name": "Surface Air Pressure", 
+            "type": "real", 
+            "dimensions": "longitude latitude time"
+        }, 
+        "sigma_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: sigma(k+1/2)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "basin": {
+            "comment": "", 
+            "dimensions": "longitude latitude", 
+            "positive": "", 
+            "valid_min": "0.0", 
+            "long_name": "Region Selection Index", 
+            "standard_name": "region", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "1.0", 
+            "out_name": "basin", 
+            "type": "integer", 
+            "valid_max": "10.0", 
+            "ok_max_mean_abs": ""
+        }, 
+        "ptop": {
+            "units": "Pa", 
+            "long_name": "pressure at top of model", 
+            "type": "", 
+            "dimensions": ""
+        }, 
+        "sftof": {
+            "comment": "This is the area fraction at the ocean surface.", 
+            "dimensions": "longitude latitude", 
+            "positive": "", 
+            "valid_min": "0.0", 
+            "long_name": "Sea Area Fraction", 
+            "standard_name": "sea_area_fraction", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "%", 
+            "out_name": "sftof", 
+            "type": "real", 
+            "valid_max": "100.0", 
+            "ok_max_mean_abs": ""
+        }, 
+        "b_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: b(k+1/2)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "sftlf": {
+            "comment": "Please express 'X_area_fraction' as the fraction of horizontal area occupied by X.", 
+            "dimensions": "longitude latitude", 
+            "positive": "", 
+            "valid_min": "0.0", 
+            "long_name": "Land Area Fraction", 
+            "standard_name": "land_area_fraction", 
+            "modeling_realm": "atmos", 
+            "cell_measures": "", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "1.0", 
+            "out_name": "sftlf", 
+            "type": "real", 
+            "valid_max": "100.0", 
+            "ok_max_mean_abs": ""
+        }, 
+        "deptho": {
+            "comment": "Ocean bathymetry.   Reported here is the sea floor depth for present day relative to z=0 geoid. Reported as missing for land grid cells.", 
+            "dimensions": "longitude latitude", 
+            "positive": "", 
+            "valid_min": "0.0", 
+            "long_name": "Sea Floor Depth", 
+            "standard_name": "sea_floor_depth_below_geoid", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "2000.0", 
+            "units": "m", 
+            "out_name": "deptho", 
+            "type": "real", 
+            "valid_max": "10000.0", 
+            "ok_max_mean_abs": "5000.0"
+        }, 
+        "nsigma": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: nsigma", 
+            "type": "integer", 
+            "dimensions": ""
+        }, 
+        "volcello": {
+            "comment": "grid-cell volume ca. 2000.", 
+            "dimensions": "longitude latitude olevel", 
+            "positive": "", 
+            "valid_min": "0.0", 
+            "long_name": "Ocean Grid-Cell Volume", 
+            "standard_name": "ocean_volume", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "0.0", 
+            "units": "m3", 
+            "out_name": "volcello", 
+            "type": "real", 
+            "valid_max": "1e+15", 
+            "ok_max_mean_abs": "1e+15"
+        }, 
+        "mrsofc": {
+            "comment": "'reported ''where land'': divide the total water holding capacity of all the soil in the grid cell by the land area in the grid cell;  reported as ''missing'' where the land fraction is 0.'", 
+            "dimensions": "longitude latitude", 
+            "positive": "", 
+            "valid_min": "", 
+            "long_name": "Capacity of Soil to Store Water", 
+            "standard_name": "soil_moisture_content_at_field_capacity", 
+            "modeling_realm": "land", 
+            "cell_measures": "", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "kg m-2", 
+            "out_name": "mrsofc", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "ztop": {
+            "units": "m", 
+            "long_name": "height of top of model", 
+            "type": "", 
+            "dimensions": ""
+        }, 
+        "areacella": {
+            "comment": "For atmospheres with more than 1 mesh (e.g., staggered grids), report areas that apply to surface vertical fluxes of energy.", 
+            "dimensions": "longitude latitude", 
+            "positive": "", 
+            "valid_min": "100000.0", 
+            "long_name": "Atmosphere Grid-Cell Area", 
+            "standard_name": "cell_area", 
+            "modeling_realm": "atmos land", 
+            "cell_measures": "", 
+            "cell_methods": "", 
+            "ok_min_mean_abs": "100000.0", 
+            "units": "m2", 
+            "out_name": "areacella", 
+            "type": "real", 
+            "valid_max": "1e+12", 
+            "ok_max_mean_abs": "1e+12"
+        }, 
+        "zlev_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: zlev(k+1/2)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "z1": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: z1", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "z2": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: z2", 
+            "type": "double", 
+            "dimensions": ""
+        }, 
+        "a": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: a(k)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "p0": {
+            "units": "Pa", 
+            "long_name": "vertical coordinate formula term: reference pressure", 
+            "type": "", 
+            "dimensions": ""
+        }, 
+        "b": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: b(k)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }, 
+        "depth": {
+            "units": "m", 
+            "long_name": "Sea Floor Depth: formula term: thetao", 
+            "type": "real", 
+            "dimensions": "longitude latitude"
+        }, 
+        "eta": {
+            "units": "m", 
+            "long_name": "Sea Surface Height formula term: thetao", 
+            "type": "real", 
+            "dimensions": "longitude latitude time"
+        }, 
+        "sftgif": {
+            "comment": "Percentage of grid cell occupied by glaciers.", 
+            "dimensions": "longitude latitude", 
+            "positive": "", 
+            "valid_min": "0.0", 
+            "long_name": "Fraction of Grid Cell Covered with Glacier", 
+            "standard_name": "land_ice_area_fraction", 
+            "modeling_realm": "land", 
+            "cell_measures": "", 
+            "cell_methods": "area: areacella", 
+            "ok_min_mean_abs": "", 
+            "units": "%", 
+            "out_name": "sftgif", 
+            "type": "real", 
+            "valid_max": "100.0", 
+            "ok_max_mean_abs": ""
+        }, 
+        "hfgeou": {
+            "comment": "", 
+            "dimensions": "longitude latitude", 
+            "positive": "up", 
+            "valid_min": "", 
+            "long_name": "Upward Geothermal Heat Flux at Sea Floor", 
+            "standard_name": "upward_geothermal_heat_flux_at_sea_floor", 
+            "modeling_realm": "ocean", 
+            "cell_measures": "area: mean where sea", 
+            "cell_methods": "area: areacello", 
+            "ok_min_mean_abs": "", 
+            "units": "W m-2", 
+            "out_name": "hfgeou", 
+            "type": "real", 
+            "valid_max": "", 
+            "ok_max_mean_abs": ""
+        }, 
+        "k_c": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: k_c", 
+            "type": "integer", 
+            "dimensions": ""
+        }, 
+        "sigma": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: sigma(k)", 
+            "type": "double", 
+            "dimensions": "olevel"
+        }, 
+        "a_bnds": {
+            "units": "", 
+            "long_name": "vertical coordinate formula term: a(k+1/2)", 
+            "type": "double", 
+            "dimensions": "alevel"
+        }
+    }
+}
diff --git a/TestTables/CMIP6_grids.json b/TestTables/CMIP6_grids.json
new file mode 100644
index 0000000..852ec6b
--- /dev/null
+++ b/TestTables/CMIP6_grids.json
@@ -0,0 +1,156 @@
+{
+    "Header": {
+        "product": "output", 
+        "cf_version": "1.6", 
+        "baseURL": "http://cmip-pcmdi.llnl.gov/CMIP6/dataLocation", 
+        "cmor_version": "3.1", 
+        "Conventions": "CF-1.6 CMIP-6.0", 
+        "table_id": "Table grids", 
+        "data_specs_version": "<data_specs_version>", 
+        "missing_value": "1e20", 
+        "table_date": "14 June 2016"
+    }, 
+    "mapping_entry": {
+        "sample_user_mapping": {
+            "parameter1": "false_easting", 
+            "coordinates": "rlon rlat", 
+            "parameter2": "false_northing"
+        }
+    }, 
+    "axis_entry": {
+        "grid_latitude": {
+            "long_name": "latitude in rotated pole grid", 
+            "standard_name": "grid_latitude", 
+            "out_name": "rlat", 
+            "units": "degrees", 
+            "type": "", 
+            "axis": "Y"
+        }, 
+        "y_deg": {
+            "long_name": "y coordinate of projection", 
+            "standard_name": "projection_y_coordinate", 
+            "out_name": "y", 
+            "units": "degrees", 
+            "type": "", 
+            "axis": "Y"
+        }, 
+        "l_index": {
+            "long_name": "cell index along fourth dimension", 
+            "standard_name": "", 
+            "out_name": "l", 
+            "units": "1", 
+            "type": "integer", 
+            "axis": ""
+        }, 
+        "grid_longitude": {
+            "long_name": "longitude in rotated pole grid", 
+            "standard_name": "grid_longitude", 
+            "out_name": "rlon", 
+            "units": "degrees", 
+            "type": "", 
+            "axis": "X"
+        }, 
+        "k_index": {
+            "long_name": "cell index along third dimension", 
+            "standard_name": "", 
+            "out_name": "k", 
+            "units": "1", 
+            "type": "integer", 
+            "axis": ""
+        }, 
+        "vertices": {
+            "long_name": "", 
+            "standard_name": "", 
+            "out_name": "", 
+            "units": "", 
+            "type": "", 
+            "axis": ""
+        }, 
+        "x_deg": {
+            "long_name": "x coordinate of projection", 
+            "standard_name": "projection_x_coordinate", 
+            "out_name": "x", 
+            "units": "degrees", 
+            "type": "", 
+            "axis": "X"
+        }, 
+        "i_index": {
+            "long_name": "cell index along first dimension", 
+            "standard_name": "", 
+            "out_name": "i", 
+            "units": "1", 
+            "type": "integer", 
+            "axis": ""
+        }, 
+        "j_index": {
+            "long_name": "cell index along second dimension", 
+            "standard_name": "", 
+            "out_name": "j", 
+            "units": "1", 
+            "type": "integer", 
+            "axis": ""
+        }, 
+        "y": {
+            "long_name": "y coordinate of projection", 
+            "standard_name": "projection_y_coordinate", 
+            "out_name": "", 
+            "units": "m", 
+            "type": "", 
+            "axis": "Y"
+        }, 
+        "x": {
+            "long_name": "x coordinate of projection", 
+            "standard_name": "projection_x_coordinate", 
+            "out_name": "", 
+            "units": "m", 
+            "type": "", 
+            "axis": "X"
+        }, 
+        "m_index": {
+            "long_name": "cell index along fifth dimension", 
+            "standard_name": "", 
+            "out_name": "m", 
+            "units": "1", 
+            "type": "integer", 
+            "axis": ""
+        }
+    }, 
+    "variable_entry": {
+        "latitude": {
+            "dimensions": "longitude latitude", 
+            "valid_min": "-90.0", 
+            "long_name": "", 
+            "standard_name": "latitude", 
+            "out_name": "latitude", 
+            "units": "degrees_north", 
+            "valid_max": "90.0"
+        }, 
+        "vertices_latitude": {
+            "dimensions": "vertices longitude latitude", 
+            "valid_min": "-90.0", 
+            "long_name": "", 
+            "standard_name": "", 
+            "out_name": "vertices_latitude", 
+            "units": "degrees_north", 
+            "valid_max": "90.0"
+        }, 
+        "vertices_longitude": {
+            "dimensions": "vertices longitude latitude", 
+            "valid_min": "0.0", 
+            "long_name": "", 
+            "standard_name": "", 
+            "out_name": "vertices_longitude", 
+            "units": "degrees_east", 
+            "valid_max": "360.0"
+        }, 
+        "longitude": {
+            "dimensions": "longitude latitude", 
+            "valid_min": "0.0", 
+            "long_name": "", 
+            "standard_name": "longitude", 
+            "out_name": "longitude", 
+            "units": "degrees_east", 
+            "valid_max": "360.0"
+        }
+    }
+}
diff --git a/build.sh b/build.sh
new file mode 100755
index 0000000..a6b646e
--- /dev/null
+++ b/build.sh
@@ -0,0 +1,85 @@
+#!/bin/bash
+#
+#
+#
+# NOTE:  you might need root access to install cmor python egg /usr/local/lib (See last line)
+#
+# -------------------
+# Obtain all packages 
+# -------------------
+export GIT_SSL_NO_VERIFY=true 
+export PREFIX=$HOME/build
+# -------------------
+# -------------------
+mkdir build
+cd build
+wget http://www.hdfgroup.org/ftp/HDF5/current/src/hdf5-1.8.17.tar
+wget ftp://ftp.unidata.ucar.edu/pub/netcdf/netcdf-4.4.0.tar.gz
+wget ftp://ftp.unidata.ucar.edu/pub/udunits/udunits-2.2.20.tar.gz
+wget http://www.mirrorservice.org/sites/ftp.ossp.org/pkg/lib/uuid/uuid-1.6.2.tar.gz
+#
+# -------------------
+# Untar packages
+# -------------------
+tar xf hdf5-1.8.17.tar
+tar xzf netcdf-4.4.0.tar.gz
+tar xzf udunits-2.2.20.tar.gz
+tar xzf uuid-1.6.2.tar.gz
+#
+# -------------------
+# BUILD libuuid
+# -------------------
+#
+cd uuid-1.6.2
+./configure --prefix=$PREFIX
+make 
+make install
+#
+# -------------------
+# build udnits2
+# -------------------
+#
+cd ../udunits-2.2.20
+./configure --prefix=$PREFIX
+make
+make install
+#
+# -------------------
+# build hdf5
+# -------------------
+#
+cd ../hdf5-1.8.17
+./configure --prefix=$PREFIX
+make  
+make install
+#
+# -------------------
+# build netcdf4
+# -------------------
+#
+export CFLAGS="-I$HOME/build/include"
+export LDFLAGS="-L$HOME/build/lib"
+
+cd ../netcdf-4.4.0
+./configure --prefix=$PREFIX --enable-netcdf4
+make 
+make install
+
+
+#
+# -------------------
+# build cmor
+# -------------------
+cd ..
+git clone https://github.com/PCMDI/cmor.git
+cd cmor
+git checkout cmor3
+
+./configure --prefix=$PREFIX --with-python --with-uuid --with-udunits --with-netcdf=$PREFIX/ 
+make 
+
+#
+#  My pyhton 2.7 is located in /usr/local/lib so I need sudo
+#
+sudo make install
+sudo make python
diff --git a/compile_line.txt.in b/compile_line.txt.in
index 8a63c29..d31b223 100644
--- a/compile_line.txt.in
+++ b/compile_line.txt.in
@@ -1,4 +1,5 @@
-# The following line will compile "C" code mycode.c with cmor, additional libraries mycode.c may requires should be added to this line
+# The following line will compile "C" code mycode.c with cmor,
+# additional libraries mycode.c may requires should be added to this line
  @CC@ @DEBUG@ @MACROS@ @CFLAGS@ @CPPFLAGS@  mycode.c -L at prefix@/lib -I at prefix@/include  -L. -lcmor @NCCFLAGS@ @NCLDFLAGS@ @UDUNITS2LDFLAGS@ @UDUNITS2FLAGS@ @UUIDLDFLAGS@ @UUIDFLAGS@ @ZLDFLAGS@ -o mycode
 
 # The following line will compile "FORTRAN" code mycode.f90 with cmor, additional libraries mycode.f90 may requires should be added to this line
diff --git a/configure b/configure
index e141c09..44fb12d 100755
--- a/configure
+++ b/configure
@@ -1,8 +1,8 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for cmor 2.9.0.
+# Generated by GNU Autoconf 2.69 for cmor 3.0.0.
 #
-# Report bugs to <doutriaux1 at llnl.gov>.
+# Report bugs to <nadeau11 at llnl.gov>.
 #
 #
 # Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
@@ -266,11 +266,11 @@ fi
     $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should"
     $as_echo "$0: be upgraded to zsh 4.3.4 or later."
   else
-    $as_echo "$0: Please tell bug-autoconf at gnu.org and
-$0: doutriaux1 at llnl.gov about your system, including any
-$0: error possibly output before this message. Then install
-$0: a modern shell, or manually run the script under such a
-$0: shell if you do have one."
+    $as_echo "$0: Please tell bug-autoconf at gnu.org and nadeau11 at llnl.gov
+$0: about your system, including any error possibly output
+$0: before this message. Then install a modern shell, or
+$0: manually run the script under such a shell if you do
+$0: have one."
   fi
   exit 1
 fi
@@ -580,9 +580,9 @@ MAKEFLAGS=
 # Identity of this package.
 PACKAGE_NAME='cmor'
 PACKAGE_TARNAME='cmor'
-PACKAGE_VERSION='2.9.0'
-PACKAGE_STRING='cmor 2.9.0'
-PACKAGE_BUGREPORT='doutriaux1 at llnl.gov'
+PACKAGE_VERSION='3.0.0'
+PACKAGE_STRING='cmor 3.0.0'
+PACKAGE_BUGREPORT='nadeau11 at llnl.gov'
 PACKAGE_URL=''
 
 ac_default_prefix=/usr/local/cmor
@@ -1249,7 +1249,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 2.9.0 to adapt to many kinds of systems.
+\`configure' configures cmor 3.0.0 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1315,7 +1315,7 @@ fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of cmor 2.9.0:";;
+     short | recursive ) echo "Configuration of cmor 3.0.0:";;
    esac
   cat <<\_ACEOF
 
@@ -1354,7 +1354,7 @@ Some influential environment variables:
 Use these variables to override the choices made by `configure' or to help
 it to find libraries and programs with nonstandard names/locations.
 
-Report bugs to <doutriaux1 at llnl.gov>.
+Report bugs to <nadeau11 at llnl.gov>.
 _ACEOF
 ac_status=$?
 fi
@@ -1417,7 +1417,7 @@ fi
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-cmor configure 2.9.0
+cmor configure 3.0.0
 generated by GNU Autoconf 2.69
 
 Copyright (C) 2012 Free Software Foundation, Inc.
@@ -1635,7 +1635,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 2.9.0, which was
+It was created by cmor $as_me 3.0.0, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
@@ -2144,7 +2144,7 @@ CMOR_VERSION=${PACKAGE_VERSION}" (commit: ${GIT_TAG})"
 ac_config_files="$ac_config_files Makefile setup.py compile_line.txt include/cmor_locale.h"
 
 
-INCFILES="include/cmor.h  include/cmor_func_def.h include/cmor_md5.h "`ls -x --width=10000 include/cdTime/*.h include/cdTime/cdunifpp/*.h`
+INCFILES="include/cmor.h include/cmor_func_def.h include/cmor_md5.h `ls include/cdTime/*.h include/cdTime/cdunifpp/*.h include/json-c/*.h | tr \"\n\" \" \" `"
 
 
 
@@ -2228,7 +2228,7 @@ if test ${enable_debug} == "yes" ; then
   DEBUG="-g"
 fi
 
-LIBFILES="cmor.o cmor_axes.o cmor_variables.o cmor_tables.o cdTimeConv.o cdUtil.o timeConv.o timeArith.o cmor_grids.o cmor_md5.o "
+LIBFILES="cmor.o cmor_axes.o cmor_CV.o cmor_variables.o cmor_tables.o cdTimeConv.o cdUtil.o timeConv.o timeArith.o cmor_grids.o cmor_md5.o arraylist.o  json_c_version.o  json_object_iterator.o json_util.o linkhash.o random_seed.o debug.o json_object.o json_tokener.o libjson.o printbuf.o"
 LIBFFILES="cmor_cfortran_interface.o cmor_fortran_interface.o"
 
 # Check whether --enable-fortran was given.
@@ -4255,6 +4255,7 @@ fi
    NCLDFLAGS=""
   fi
 fi
+LIBS=""
 
 USERCFLAGS=${CFLAGS}
 USERFFLAGS=${FFLAGS}
@@ -4411,12 +4412,15 @@ $as_echo "\"yes\"" >&6; }
   fi
 fi
 LIBS=${OLIBS}
-CFLAGS=${CFLAGS}" -Iinclude -Iinclude/cdTime"
+CFLAGS=${CFLAGS}" -Iinclude/json-c -Iinclude -Iinclude/cdTime"
 LDFLAGS=${SV_LDFLAGS}
 MAINDIR=`pwd`
 
 # Library sources
-LIBSOURCES="Src/cmor.c Src/cmor_variables.c Src/cmor_axes.c Src/cmor_tables.c Src/cmor_grids.c Src/cdTime/cdTimeConv.c Src/cdTime/cdUtil.c Src/cdTime/timeConv.c Src/cdTime/timeArith.c Src/cmor_cfortran_interface.c Src/cmor_md5.c"
+#LIBSOURCES="Src/cmor.c Src/cmor_variables.c Src/cmor_axes.c Src/cmor_tables.c Src/cmor_grids.c Src/cdTime/cdTimeConv.c Src/cdTime/cdUtil.c Src/cdTime/timeConv.c Src/cdTime/timeArith.c Src/cmor_cfortran_interface.c Src/cmor_md5.c Src/json-c/arraylist.cSrc/json-c/json_c_version.c  Src/json-c/json_object_iterator.c Src/json-c/json_util.c Src/json-c/linkhash.c  Src/json-cmor/random_seed.c Src/json-c/debug.c Src/json-c/json_object.c Src/json-c/json_tokener.c Src/json-c/libjson.c Src/json-c/p [...]
+#LIBSOURCES=`ls -x --width=10000 Src/*.c Src/cdTime/*.c Src/json-c/*.c`
+LIBSOURCES=`ls Src/*.c Src/cdTime/*.c Src/json-c/*.c | tr "\n" " "`
+
 LIBFSOURCES="Src/cmor_fortran_interface.f90"
 
 
@@ -4962,7 +4966,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 2.9.0, which was
+This file was extended by cmor $as_me 3.0.0, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -5009,13 +5013,13 @@ Usage: $0 [OPTION]... [TAG]...
 Configuration files:
 $config_files
 
-Report bugs to <doutriaux1 at llnl.gov>."
+Report bugs to <nadeau11 at llnl.gov>."
 
 _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 2.9.0
+cmor config.status 3.0.0
 configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 
diff --git a/configure.ac b/configure.ac
index b9cd377..18946f3 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,8 +1,8 @@
-dnl                                                -*- Autoconf -*-
-dnl  Process this file with autoconf to produce a configure script.
+dnl
+dnl Process this file with autoconf to produce a configure script.
 
 dnl AC_PREREQ(2.59)
-AC_INIT(cmor, 2.9.1, doutriaux1 at llnl.gov)
+AC_INIT(cmor, 3.0.0, nadeau11 at llnl.gov)
 
 GIT_TAG=`./get_git_version.sh`
 
@@ -25,7 +25,7 @@ CMOR_VERSION=${PACKAGE_VERSION}" (commit: ${GIT_TAG})"
 AC_PREFIX_DEFAULT([/usr/local/cmor])
 AC_CONFIG_FILES([Makefile setup.py compile_line.txt include/cmor_locale.h])
 
-INCFILES="include/cmor.h  include/cmor_func_def.h include/cmor_md5.h "`ls -x --width=10000 include/cdTime/*.h include/cdTime/cdunifpp/*.h`
+INCFILES="include/cmor.h include/cmor_func_def.h include/cmor_md5.h `ls include/cdTime/*.h include/cdTime/cdunifpp/*.h include/json-c/*.h | tr \"\n\" \" \" `"
 AC_SUBST(RTAG)
 AC_SUBST(FTAG)
 
@@ -93,7 +93,7 @@ if test ${enable_debug} == "yes" ; then
   DEBUG="-g"
 fi
 
-LIBFILES="cmor.o cmor_axes.o cmor_variables.o cmor_tables.o cdTimeConv.o cdUtil.o timeConv.o timeArith.o cmor_grids.o cmor_md5.o "
+LIBFILES="cmor.o cmor_axes.o cmor_CV.o cmor_variables.o cmor_tables.o cdTimeConv.o cdUtil.o timeConv.o timeArith.o cmor_grids.o cmor_md5.o arraylist.o  json_c_version.o  json_object_iterator.o json_util.o linkhash.o random_seed.o debug.o json_object.o json_tokener.o libjson.o printbuf.o"
 LIBFFILES="cmor_cfortran_interface.o cmor_fortran_interface.o"
 
 dnl ##########################################################
@@ -240,6 +240,7 @@ else
    NCLDFLAGS=""
   fi
 fi
+LIBS=""
 
 USERCFLAGS=${CFLAGS}
 USERFFLAGS=${FFLAGS}
@@ -291,12 +292,15 @@ if [ test ${HAS_NC4} == "no" ] ; then
   fi
 fi
 LIBS=${OLIBS}
-CFLAGS=${CFLAGS}" -Iinclude -Iinclude/cdTime"
+CFLAGS=${CFLAGS}" -Iinclude/json-c -Iinclude -Iinclude/cdTime"
 LDFLAGS=${SV_LDFLAGS}
 MAINDIR=`pwd`
 
 # Library sources
-LIBSOURCES="Src/cmor.c Src/cmor_variables.c Src/cmor_axes.c Src/cmor_tables.c Src/cmor_grids.c Src/cdTime/cdTimeConv.c Src/cdTime/cdUtil.c Src/cdTime/timeConv.c Src/cdTime/timeArith.c Src/cmor_cfortran_interface.c Src/cmor_md5.c"
+#LIBSOURCES="Src/cmor.c Src/cmor_variables.c Src/cmor_axes.c Src/cmor_tables.c Src/cmor_grids.c Src/cdTime/cdTimeConv.c Src/cdTime/cdUtil.c Src/cdTime/timeConv.c Src/cdTime/timeArith.c Src/cmor_cfortran_interface.c Src/cmor_md5.c Src/json-c/arraylist.cSrc/json-c/json_c_version.c  Src/json-c/json_object_iterator.c Src/json-c/json_util.c Src/json-c/linkhash.c  Src/json-cmor/random_seed.c Src/json-c/debug.c Src/json-c/json_object.c Src/json-c/json_tokener.c Src/json-c/libjson.c Src/json-c/p [...]
+#LIBSOURCES=`ls -x --width=10000 Src/*.c Src/cdTime/*.c Src/json-c/*.c`
+LIBSOURCES=`ls Src/*.c Src/cdTime/*.c Src/json-c/*.c | tr "\n" " "`
+
 LIBFSOURCES="Src/cmor_fortran_interface.f90"
 
 
diff --git a/data/tas_ccsr-95a.xml b/data/tas_ccsr-95a.xml
new file mode 100644
index 0000000..52cefe9
--- /dev/null
+++ b/data/tas_ccsr-95a.xml
@@ -0,0 +1,168 @@
+<?xml version="1.0"?>
+<!DOCTYPE dataset SYSTEM "http://www-pcmdi.llnl.gov/software/cdms/cdml.dtd">
+<dataset
+	institution	="Tokyo, Japan"
+	production	="CCSR/NIES AGCM (T21 L20) 1995 "
+	cdms_filemap	="[[[abs_time,tas,bounds_time],[[0,12,-,-,tas_ccsr-95a_1979.01-1979.12.nc],[12,24,-,-,tas_ccsr-95a_1980.01-1980.12.nc],[24,36,-,-,tas_ccsr-95a_1981.01-1981.12.nc],[36,48,-,-,tas_ccsr-95a_1982.01-1982.12.nc],[48,60,-,-,tas_ccsr-95a_1983.01-1983.12.nc],[60,72,-,-,tas_ccsr-95a_1984.01-1984.12.nc]]],[[bounds_latitude,bounds_longitude,weights_latitude],[[-,-,-,-,tas_ccsr-95a_1979.01-1979.12.nc]]]]"
+	directory	=""
+	calendar	="noleap"
+	Conventions	=""
+	id	="none"
+	history	="original not LATS-generated
+have been rewritten in conformance with GDT conventions 
+(described at http://www-pcmdi.gov/drach/GDT_convention.html) 
+[2006-5-5 21:54:46] /home/mccoy20/utils/cdat/bin/cdscan -x tas_cssr.xml tas_ccsr-95a_1979.01-1979.12.nc tas_ccsr-95a_1980.01-1980.12.nc tas_ccsr-95a_1981.01-1981.12.nc tas_ccsr-95a_1982.01-1982.12.nc tas_ccsr-95a_1983.01-1983.12.nc tas_ccsr-95a_1984.01-1984.12.nc"
+	>
+	<attr datatype="String" name="model">ccsr-95a</attr>
+	<attr datatype="String" name="title">AMIP 1 Model Output</attr>
+	<axis
+		datatype	="Float"
+		units	=""
+		length	="2"
+		id	="bound"
+		>
+		[ 0.  1.]
+		</axis>
+	<axis
+		datatype	="Double"
+		bounds	="bounds_latitude"
+		long_name	="Latitude"
+		length	="32"
+		units	="degrees_north"
+		id	="latitude"
+		axis	="Y"
+		>
+		[-85.76100159 -80.26899719 -74.74500275 -69.21299744 -63.67900085 -58.14300156
+      -52.60699844 -47.06999969 -41.5320015  -35.99499893 -30.45800018
+      -24.92000008 -19.38199997 -13.84399986  -8.30669975  -2.76889992
+        2.76889992   8.30669975  13.84399986  19.38199997  24.92000008
+       30.45800018  35.99499893  41.5320015   47.06999969  52.60699844
+       58.14300156  63.67900085  69.21299744  74.74500275  80.26899719
+       85.76100159]
+		</axis>
+	<axis
+		modulo	="360.0"
+		datatype	="Double"
+		bounds	="bounds_longitude"
+		long_name	="Longitude"
+		length	="64"
+		units	="degrees_east"
+		topology	="circular"
+		id	="longitude"
+		axis	="X"
+		>
+		[   0.       5.625   11.25    16.875   22.5     28.125   33.75    39.375
+        45.      50.625   56.25    61.875   67.5     73.125   78.75    84.375
+        90.      95.625  101.25   106.875  112.5    118.125  123.75   129.375
+       135.     140.625  146.25   151.875  157.5    163.125  168.75   174.375
+       180.     185.625  191.25   196.875  202.5    208.125  213.75   219.375
+       225.     230.625  236.25   241.875  247.5    253.125  258.75   264.375
+       270.     275.625  281.25   286.875  292.5    298.125  303.75   309.375
+       315.     320.625  326.25   331.875  337.5    343.125  348.75   354.375]
+		</axis>
+	<axis
+		name_in_file	="time"
+		datatype	="Double"
+		partition	="[ 0 12 12 24 24 36 36 48 48 60 60 72]"
+		bounds	="bounds_time"
+		length	="72"
+		units	="days since 1979-1-1 0"
+		calendar	="noleap"
+		id	="time"
+		>
+		[   15.5    45.     74.5   105.    135.5   166.    196.5   227.5   258. 
+        288.5   319.    349.5   380.5   410.    439.5   470.    500.5   531. 
+        561.5   592.5   623.    653.5   684.    714.5   745.5   775.    804.5
+        835.    865.5   896.    926.5   957.5   988.   1018.5  1049.   1079.5
+       1110.5  1140.   1169.5  1200.   1230.5  1261.   1291.5  1322.5  1353. 
+       1383.5  1414.   1444.5  1475.5  1505.   1534.5  1565.   1595.5  1626. 
+       1656.5  1687.5  1718.   1748.5  1779.   1809.5  1840.5  1870.   1899.5
+       1930.   1960.5  1991.   2021.5  2052.5  2083.   2113.5  2144.   2174.5]
+		</axis>
+	<axis
+		datatype	="Double"
+		positive	="up"
+		long_name	="Height above Earth's Surface"
+		length	="1"
+		units	="m"
+		id	="zh"
+		axis	="Z"
+		>
+		[ 2.]
+		</axis>
+	<variable
+		datatype	="Int"
+		units	="calendar_month as %Y%m.f"
+		id	="abs_time"
+		long_name	="Time"
+		>
+		<domain
+			>
+			<domElem start="0" length="72" name="time"/>
+			</domain>
+		</variable>
+	<variable
+		datatype	="Double"
+		units	="degrees_north"
+		id	="bounds_latitude"
+		long_name	="Latitude Bounds"
+		>
+		<domain
+			>
+			<domElem start="0" length="32" name="latitude"/>
+			<domElem start="0" length="2" name="bound"/>
+			</domain>
+		</variable>
+	<variable
+		datatype	="Double"
+		units	="degrees_east"
+		id	="bounds_longitude"
+		long_name	="Longitude Bounds"
+		>
+		<domain
+			>
+			<domElem start="0" length="64" name="longitude"/>
+			<domElem start="0" length="2" name="bound"/>
+			</domain>
+		</variable>
+	<variable
+		datatype	="Double"
+		units	="days since 1979-1-1 0"
+		id	="bounds_time"
+		long_name	="Time Bounds"
+		>
+		<domain
+			>
+			<domElem start="0" length="72" name="time"/>
+			<domElem start="0" length="2" name="bound"/>
+			</domain>
+		</variable>
+	<variable
+		datatype	="Float"
+		subgrid	="time:mean"
+		long_name	="Surface Air Temperature"
+		units	="K"
+		missing_value	="1e+20"
+		id	="tas"
+		axis	="TZYX"
+		>
+		<domain
+			>
+			<domElem start="0" length="72" name="time"/>
+			<domElem start="0" length="1" name="zh"/>
+			<domElem start="0" length="32" name="latitude"/>
+			<domElem start="0" length="64" name="longitude"/>
+			</domain>
+		</variable>
+	<variable
+		datatype	="Double"
+		units	="unity"
+		id	="weights_latitude"
+		long_name	="Latitude Weights"
+		>
+		<domain
+			>
+			<domElem start="0" length="32" name="latitude"/>
+			</domain>
+		</variable>
+	</dataset>
diff --git a/include/cdTime/cfortran.h b/include/cdTime/cfortran.h
index 8ecd155..9d96a6e 100644
--- a/include/cdTime/cfortran.h
+++ b/include/cdTime/cfortran.h
@@ -1,6 +1,6 @@
-/* cfortran.h  4.3 */
-/* www-zeus.desy.de/~burow   OR   anonymous ftp at zebra.desy.de */
-/* Burkhard Burow  burow at desy.de                 1990 - 1998. */
+/* cfortran.h  4.4 */
+/* http://www-zeus.desy.de/~burow/cfortran/                   */
+/* Burkhard Burow  burow at desy.de                 1990 - 2002. */
 
 #ifndef __CFORTRAN_LOADED
 #define __CFORTRAN_LOADED
@@ -11,11 +11,108 @@
    MODIFYING, COPYING AND DISTRIBUTING THE CFORTRAN.H PACKAGE.
 */
 
+/* THIS PACKAGE, I.E. CFORTRAN.H, THIS DOCUMENT, AND THE CFORTRAN.H EXAMPLE
+PROGRAMS ARE PROPERTY OF THE AUTHOR WHO RESERVES ALL RIGHTS. THIS PACKAGE AND
+THE CODE IT PRODUCES MAY BE FREELY DISTRIBUTED WITHOUT FEES, SUBJECT
+(AT YOUR CHOICE) EITHER TO THE GNU LIBRARY GENERAL PUBLIC LICENSE
+AT http://www.gnu.org/licenses/lgpl.html OR TO THE FOLLOWING RESTRICTIONS:
+- YOU MUST ACCOMPANY ANY COPIES OR DISTRIBUTION WITH THIS (UNALTERED) NOTICE.
+- YOU MAY NOT RECEIVE MONEY FOR THE DISTRIBUTION OR FOR ITS MEDIA 
+  (E.G. TAPE, DISK, COMPUTER, PAPER.)
+- YOU MAY NOT PREVENT OTHERS FROM COPYING IT FREELY.
+- YOU MAY NOT DISTRIBUTE MODIFIED VERSIONS WITHOUT CLEARLY DOCUMENTING YOUR
+  CHANGES AND NOTIFYING THE AUTHOR.
+- YOU MAY NOT MISREPRESENTED THE ORIGIN OF THIS SOFTWARE, EITHER BY EXPLICIT
+  CLAIM OR BY OMISSION.
+
+THE INTENT OF THE ABOVE TERMS IS TO ENSURE THAT THE CFORTRAN.H PACKAGE NOT BE
+USED FOR PROFIT MAKING ACTIVITIES UNLESS SOME ROYALTY ARRANGEMENT IS ENTERED
+INTO WITH ITS AUTHOR.
+              
+THIS SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
+EXPRESSED OR IMPLIED. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+SOFTWARE IS WITH YOU. SHOULD THE SOFTWARE PROVE DEFECTIVE, YOU ASSUME THE COST
+OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. THE AUTHOR IS NOT RESPONSIBLE
+FOR ANY SUPPORT OR SERVICE OF THE CFORTRAN.H PACKAGE.
+
+                                              Burkhard Burow 
+                                              burow at desy.de
+*/
+
+/* The following modifications were made by the authors of CFITSIO or by me. 
+ * They are flagged below with CFITSIO, the author's initials, or KMCCARTY.
+ * PDW = Peter Wilson
+ * DM  = Doug Mink
+ * LEB = Lee E Brotzman
+ * MR  = Martin Reinecke
+ * WDP = William D Pence
+ * BR  = Bastien ROUCARIES
+ * -- Kevin McCarty, for Debian (19 Dec. 2005) */
+
+/*******
+   Modifications:
+      Oct 1997: Changed symbol name extname to appendus (PDW/HSTX)
+                (Conflicted with a common variable name in FTOOLS)
+      Nov 1997: If g77Fortran defined, also define f2cFortran (PDW/HSTX)
+      Feb 1998: Let VMS see the NUM_ELEMS code. Lets programs treat
+                single strings as vectors with single elements
+      Nov 1999: If macintoxh defined, also define f2cfortran (for Mac OS-X)
+      Apr 2000: If WIN32 defined, also define PowerStationFortran and
+                VISUAL_CPLUSPLUS (Visual C++)
+      Jun 2000: If __GNUC__ and linux defined, also define f2cFortran
+                (linux/gcc environment detection)
+      Apr 2002: If __CYGWIN__ is defined, also define f2cFortran
+      Nov 2002: If __APPLE__ defined, also define f2cfortran (for Mac OS-X)
+
+      Nov 2003: If __INTEL_COMPILER or INTEL_COMPILER defined, also define
+                f2cFortran (KMCCARTY)
+      Dec 2005: If f2cFortran is defined, enforce REAL functions in FORTRAN
+                returning "double" in C.  This was one of the items on
+		Burkhard's TODO list. (KMCCARTY)
+      Dec 2005: Modifications to support 8-byte integers. (MR)
+		USE AT YOUR OWN RISK!
+      Feb 2006  Added logic to typedef the symbol 'LONGLONG' to an appropriate
+                intrinsic 8-byte integer datatype  (WDP)
+      Apr 2006: Modifications to support gfortran (and g77 with -fno-f2c flag)
+                since by default it returns "float" for FORTRAN REAL function.
+                (KMCCARTY)
+      May 2008: Revert commenting out of "extern" in COMMON_BLOCK_DEF macro.
+		Add braces around do-nothing ";" in 3 empty while blocks to
+		get rid of compiler warnings.  Thanks to ROOT developers
+		Jacek Holeczek and Rene Brun for these suggestions. (KMCCARTY)
+      Aug 2008: If __GNUC__ is defined and no FORTRAN compiler is specified
+		via a #define or -D, default to gfortran behavior rather than
+		g77 behavior. (KMCCARTY)
+      Oct 2009: Add warning if guessing default fortran. Move g77 above guessing bloc
+ *******/
+
 /* 
   Avoid symbols already used by compilers and system *.h:
   __ - OSF1 zukal06 V3.0 347 alpha, cc -c -std1 cfortest.c
 
- */
+*/
+
+/* 
+   Determine what 8-byte integer data type is available.
+  'long long' is now supported by most compilers, but older
+  MS Visual C++ compilers before V7.0 use '__int64' instead. (WDP)
+*/
+
+#ifndef LONGLONG_TYPE   /* this may have been previously defined */
+#if defined(_MSC_VER)   /* Microsoft Visual C++ */
+
+#if (_MSC_VER < 1300)   /* versions earlier than V7.0 do not have 'long long' */
+    typedef __int64 LONGLONG;
+#else                   /* newer versions do support 'long long' */
+    typedef long long LONGLONG; 
+#endif
+
+#else
+    typedef long long LONGLONG; 
+#endif
+
+#define LONGLONG_TYPE
+#endif  
 
 
 /* First prepare for the C compiler. */
@@ -75,7 +172,13 @@ only C calling FORTRAN subroutines will work using K&R style.*/
 
 /* Remainder of cfortran.h depends on the Fortran compiler. */
 
-#if defined(CLIPPERFortran) || defined(pgiFortran)
+/* 11/29/2003 (KMCCARTY): add *INTEL_COMPILER symbols here */
+/* 04/05/2006 (KMCCARTY): add gFortran symbol here */
+#if defined(CLIPPERFortran) || defined(pgiFortran) || defined(__INTEL_COMPILER) || defined(INTEL_COMPILER) || defined(gFortran)
+#define f2cFortran
+#endif
+
+#if defined(g77Fortran)                        /* 11/03/97 PDW (CFITSIO) */
 #define f2cFortran
 #endif
 
@@ -84,12 +187,37 @@ only C calling FORTRAN subroutines will work using K&R style.*/
 #if !(defined(NAGf90Fortran)||defined(f2cFortran)||defined(hpuxFortran)||defined(apolloFortran)||defined(sunFortran)||defined(IBMR2Fortran)||defined(CRAYFortran))
 #if !(defined(mipsFortran)||defined(DECFortran)||defined(vmsFortran)||defined(CONVEXFortran)||defined(PowerStationFortran)||defined(AbsoftUNIXFortran)||defined(AbsoftProFortran)||defined(SXFortran))
 /* If no Fortran compiler is given, we choose one for the machines we know.   */
+#if defined(__GNUC__) || defined(WIN32) /* 10/2009 BR: warm if guess */
+#warning "Please specify the fortran compiler using -D flags. Try to guess the compiler used"
+#endif
 #if defined(lynx) || defined(VAXUltrix)
 #define f2cFortran    /* Lynx:      Only support f2c at the moment.
                          VAXUltrix: f77 behaves like f2c.
                            Support f2c or f77 with gcc, vcc with f2c. 
                            f77 with vcc works, missing link magic for f77 I/O.*/
 #endif
+/* 04/13/00 DM (CFITSIO): Add these lines for NT */
+/*   with PowerStationFortran and and Visual C++ */
+#if defined(WIN32) && !defined(__CYGWIN__)
+#define PowerStationFortran   
+#define VISUAL_CPLUSPLUS
+#endif
+#if        defined(__CYGWIN__)                 /* 04/11/02 LEB (CFITSIO) */
+#define       f2cFortran 
+#define	      gFortran /* 8/26/08 (KMCCARTY) */
+#endif
+#if        defined(__GNUC__) && defined(linux) /* 06/21/00 PDW (CFITSIO) */
+#define       f2cFortran 
+#define	      gFortran /* 8/26/08 (KMCCARTY) */
+#endif
+#if defined(macintosh)                         /* 11/1999 (CFITSIO) */
+#define f2cFortran
+#define	      gFortran /* 8/26/08 (KMCCARTY) */
+#endif
+#if defined(__APPLE__)                         /* 11/2002 (CFITSIO) */
+#define f2cFortran
+#define	      gFortran /* 8/26/08 (KMCCARTY) */
+#endif
 #if defined(__hpux)             /* 921107: Use __hpux instead of __hp9000s300 */
 #define       hpuxFortran       /*         Should also allow hp9000s7/800 use.*/
 #endif
@@ -117,12 +245,6 @@ only C calling FORTRAN subroutines will work using K&R style.*/
 #if      defined(__alpha) && defined(__unix__)
 #define              DECFortran
 #endif
-#if      defined(__ia64) && defined(__unix__)
-#define              LinuxFortran
-#endif
-#if      defined(__x86_64__) && defined(__unix__)
-#define              LinuxFortran
-#endif
 #if   defined(__convex__)
 #define           CONVEXFortran
 #endif
@@ -137,6 +259,7 @@ only C calling FORTRAN subroutines will work using K&R style.*/
 #if !(defined(mipsFortran)||defined(DECFortran)||defined(vmsFortran)||defined(CONVEXFortran)||defined(PowerStationFortran)||defined(AbsoftUNIXFortran)||defined(AbsoftProFortran)||defined(SXFortran))
 /* If your compiler barfs on ' #error', replace # with the trigraph for #     */
  #error "cfortran.h:  Can't find your environment among:\
+    - GNU gcc (gfortran) on Linux.                                       \
     - MIPS cc and f77 2.0. (e.g. Silicon Graphics, DECstations, ...)     \
     - IBM AIX XL C and FORTRAN Compiler/6000 Version 01.01.0000.0000     \
     - VAX   VMS CC 3.1 and FORTRAN 5.4.                                  \
@@ -153,11 +276,14 @@ only C calling FORTRAN subroutines will work using K&R style.*/
     - VAXUltrix: vcc,cc or gcc with f2c. gcc or cc with f77.             \
     -            f77 with vcc works; but missing link magic for f77 I/O. \
     -            NO fort. None of gcc, cc or vcc generate required names.\
-    - f2c    : Use #define    f2cFortran, or cc -Df2cFortran             \
+    - f2c/g77:   Use #define    f2cFortran, or cc -Df2cFortran           \
+    - gfortran:  Use #define    gFortran,   or cc -DgFortran             \
+                 (also necessary for g77 with -fno-f2c option)           \
     - NAG f90: Use #define NAGf90Fortran, or cc -DNAGf90Fortran          \
     - Absoft UNIX F77: Use #define AbsoftUNIXFortran or cc -DAbsoftUNIXFortran \
     - Absoft Pro Fortran: Use #define AbsoftProFortran \
-    - Portland Group Fortran: Use #define pgiFortran"
+    - Portland Group Fortran: Use #define pgiFortran \
+    - Intel Fortran: Use #define INTEL_COMPILER"
 /* Compiler must throw us out at this point! */
 #endif
 #endif
@@ -170,7 +296,8 @@ only C calling FORTRAN subroutines will work using K&R style.*/
 
 /* Throughout cfortran.h we use: UN = Uppercase Name.  LN = Lowercase Name.   */
 
-#if defined(f2cFortran) || defined(NAGf90Fortran) || defined(DECFortran) || defined(mipsFortran) || defined(apolloFortran) || defined(sunFortran) || defined(CONVEXFortran) || defined(SXFortran) || defined(extname)
+/* "extname" changed to "appendus" below (CFITSIO) */
+#if defined(f2cFortran) || defined(NAGf90Fortran) || defined(DECFortran) || defined(mipsFortran) || defined(apolloFortran) || defined(sunFortran) || defined(CONVEXFortran) || defined(SXFortran) || defined(appendus)
 #define CFC_(UN,LN)            _(LN,_)      /* Lowercase FORTRAN symbols.     */
 #define orig_fcallsc(UN,LN)    CFC_(UN,LN)
 #else 
@@ -459,7 +586,7 @@ static char *kill_trailing(      s,      t) char *s; char t;
 {char *e; 
 e = s + strlen(s);
 if (e>s) {                           /* Need this to handle NULL string.*/
-  while (e>s && *--e==t);            /* Don't follow t's past beginning. */
+  while (e>s && *--e==t) {;}         /* Don't follow t's past beginning. */
   e[*e==t?0:1] = '\0';               /* Handle s[0]=t correctly.       */
 } return s; }
 
@@ -475,7 +602,7 @@ static char *kill_trailingn(      s,      t,       e) char *s; char t; char *e;
 { 
 if (e==s) *e = '\0';                 /* Kill the string makes sense here.*/
 else if (e>s) {                      /* Watch out for neg. length string.*/
-  while (e>s && *--e==t);            /* Don't follow t's past beginning. */
+  while (e>s && *--e==t){;}          /* Don't follow t's past beginning. */
   e[*e==t?0:1] = '\0';               /* Handle s[0]=t correctly.       */
 } return s; }
 
@@ -518,7 +645,7 @@ typedef DSC$DESCRIPTOR_A(1) fstringvector;
                     *( (F).dsc$l_m[0]=(F).dsc$bounds[0].dsc$l_u=(ELEMNO)  ),   \
   (F).dsc$a_a0    =  ( (F).dsc$a_pointer=(C) ) - (F).dsc$w_length          ,(F))
 
-#else
+#endif      /* PDW: 2/10/98 (CFITSIO) -- Let VMS see NUM_ELEMS definitions */
 #define _NUM_ELEMS      -1
 #define _NUM_ELEM_ARG   -2
 #define NUM_ELEMS(A)    A,_NUM_ELEMS
@@ -540,13 +667,18 @@ if (num_term == _NUM_ELEMS || num_term == _NUM_ELEM_ARG)
   return term_char;
 if (num_term <=0) num_term = (int)elem_len;
 for (num=0; ; num++) {
-  for (i=0; i<(unsigned)num_term && *strv==term_char; i++,strv++);
+  for (i=0; i<(unsigned)num_term && *strv==term_char; i++,strv++){;}
   if (i==(unsigned)num_term) break;
   else strv += elem_len-i;
 }
+if (0) {  /* to prevent not used warnings in gcc (added by ROOT) */
+   c2fstrv(0, 0, 0, 0); f2cstrv(0, 0, 0, 0); kill_trailing(0, 0);
+   vkill_trailing(0, 0, 0, 0); num_elem(0, 0, 0, 0);
+}
 return (int)num;
 }
-#endif
+/* #endif removed 2/10/98 (CFITSIO) */
+
 /*-------------------------------------------------------------------------*/
 
 /*           UTILITIES FOR C TO USE STRINGS IN FORTRAN COMMON BLOCKS       */
@@ -657,8 +789,8 @@ typedef void (*cfCAST_FUNCTION)(CF_NULL_PROTO);
 #define   PSTRINGV_cfV(T,A,B,F) static fstringvector B =                       \
           {0,DSC$K_DTYPE_T,DSC$K_CLASS_A,NULL,0,0,{0,0,1,1,1},1,0,NULL,0,{1,0}};
 #else
-#define     STRING_cfV(T,A,B,F) struct {unsigned int clen, flen;} B;
-#define    STRINGV_cfV(T,A,B,F) struct {char *s, *fs; unsigned flen;} B;
+#define     STRING_cfV(T,A,B,F) struct {unsigned int clen, flen; char *nombre;} B;
+#define    STRINGV_cfV(T,A,B,F) struct {char *s, *fs; unsigned flen; char *nombre;} B;
 #define    PSTRING_cfV(T,A,B,F) int     B;
 #define   PSTRINGV_cfV(T,A,B,F) struct{char *fs; unsigned int sizeofA,flen;}B;
 #endif
@@ -776,7 +908,7 @@ typedef void (*cfCAST_FUNCTION)(CF_NULL_PROTO);
 #define  DEFAULT_cfW(A,B)
 #define  LOGICAL_cfW(A,B)
 #define PLOGICAL_cfW(A,B) *B=F2CLOGICAL(*B);
-#define   STRING_cfW(A,B) (A[B.clen]!='\0'?A[B.clen]='\0':0); /* A?="constnt"*/
+#define   STRING_cfW(A,B) (B.nombre=A,B.nombre[B.clen]!='\0'?B.nombre[B.clen]='\0':0); /* A?="constnt"*/
 #define  PSTRING_cfW(A,B) kill_trailing(A,' ');
 #ifdef vmsFortran
 #define  STRINGV_cfW(A,B) _cf_free(B.dsc$a_pointer);
@@ -1324,6 +1456,7 @@ do{VVCF(T1,A1,B1)  VVCF(T2,A2,B2)  VVCF(T3,A3,B3)  VVCF(T4,A4,B4)  VVCF(T5,A5,B5
 #define     INTVVVVVVV_cfTYPE int
 #define LOGICALVVVVVVV_cfTYPE int
 #define    LONGVVVVVVV_cfTYPE long
+#define LONGLONGVVVVVVV_cfTYPE LONGLONG   /* added by MR December 2005 */
 #define   SHORTVVVVVVV_cfTYPE short
 #define          PBYTE_cfTYPE INTEGER_BYTE
 #define        PDOUBLE_cfTYPE DOUBLE_PRECISION 
@@ -1331,6 +1464,7 @@ do{VVCF(T1,A1,B1)  VVCF(T2,A2,B2)  VVCF(T3,A3,B3)  VVCF(T4,A4,B4)  VVCF(T5,A5,B5
 #define           PINT_cfTYPE int
 #define       PLOGICAL_cfTYPE int
 #define          PLONG_cfTYPE long
+#define      PLONGLONG_cfTYPE LONGLONG  /* added by MR December 2005 */
 #define         PSHORT_cfTYPE short
 
 #define CFARGS0(A,T,V,W,X,Y,Z) _3(T,_cf,A)
@@ -1348,6 +1482,7 @@ do{VVCF(T1,A1,B1)  VVCF(T2,A2,B2)  VVCF(T3,A3,B3)  VVCF(T4,A4,B4)  VVCF(T5,A5,B5
 #define            INT_cfINT(N,A,B,X,Y,Z)        DOUBLE_cfINT(N,A,B,X,Y,Z)
 #define        LOGICAL_cfINT(N,A,B,X,Y,Z)        DOUBLE_cfINT(N,A,B,X,Y,Z)
 #define           LONG_cfINT(N,A,B,X,Y,Z)        DOUBLE_cfINT(N,A,B,X,Y,Z)
+#define       LONGLONG_cfINT(N,A,B,X,Y,Z)        DOUBLE_cfINT(N,A,B,X,Y,Z) /* added by MR December 2005 */
 #define          SHORT_cfINT(N,A,B,X,Y,Z)        DOUBLE_cfINT(N,A,B,X,Y,Z)
 #define          PBYTE_cfINT(N,A,B,X,Y,Z)       PDOUBLE_cfINT(N,A,B,X,Y,Z)
 #define        PDOUBLE_cfINT(N,A,B,X,Y,Z) _(CFARGS,N)(A,PINT,B,X,Y,Z,0)
@@ -1355,6 +1490,7 @@ do{VVCF(T1,A1,B1)  VVCF(T2,A2,B2)  VVCF(T3,A3,B3)  VVCF(T4,A4,B4)  VVCF(T5,A5,B5
 #define           PINT_cfINT(N,A,B,X,Y,Z)       PDOUBLE_cfINT(N,A,B,X,Y,Z)
 #define       PLOGICAL_cfINT(N,A,B,X,Y,Z)       PDOUBLE_cfINT(N,A,B,X,Y,Z)
 #define          PLONG_cfINT(N,A,B,X,Y,Z)       PDOUBLE_cfINT(N,A,B,X,Y,Z)
+#define      PLONGLONG_cfINT(N,A,B,X,Y,Z)       PDOUBLE_cfINT(N,A,B,X,Y,Z) /* added by MR December 2005 */
 #define         PSHORT_cfINT(N,A,B,X,Y,Z)       PDOUBLE_cfINT(N,A,B,X,Y,Z)
 #define          BYTEV_cfINT(N,A,B,X,Y,Z)       DOUBLEV_cfINT(N,A,B,X,Y,Z)
 #define         BYTEVV_cfINT(N,A,B,X,Y,Z)      DOUBLEVV_cfINT(N,A,B,X,Y,Z)
@@ -1398,6 +1534,13 @@ do{VVCF(T1,A1,B1)  VVCF(T2,A2,B2)  VVCF(T3,A3,B3)  VVCF(T4,A4,B4)  VVCF(T5,A5,B5
 #define      LONGVVVVV_cfINT(N,A,B,X,Y,Z)   DOUBLEVVVVV_cfINT(N,A,B,X,Y,Z)
 #define     LONGVVVVVV_cfINT(N,A,B,X,Y,Z)  DOUBLEVVVVVV_cfINT(N,A,B,X,Y,Z)
 #define    LONGVVVVVVV_cfINT(N,A,B,X,Y,Z) DOUBLEVVVVVVV_cfINT(N,A,B,X,Y,Z)
+#define      LONGLONGV_cfINT(N,A,B,X,Y,Z)       DOUBLEV_cfINT(N,A,B,X,Y,Z) /* added by MR December 2005 */
+#define     LONGLONGVV_cfINT(N,A,B,X,Y,Z)      DOUBLEVV_cfINT(N,A,B,X,Y,Z) /* added by MR December 2005 */
+#define    LONGLONGVVV_cfINT(N,A,B,X,Y,Z)     DOUBLEVVV_cfINT(N,A,B,X,Y,Z) /* added by MR December 2005 */
+#define   LONGLONGVVVV_cfINT(N,A,B,X,Y,Z)    DOUBLEVVVV_cfINT(N,A,B,X,Y,Z) /* added by MR December 2005 */
+#define  LONGLONGVVVVV_cfINT(N,A,B,X,Y,Z)   DOUBLEVVVVV_cfINT(N,A,B,X,Y,Z) /* added by MR December 2005 */
+#define LONGLONGVVVVVV_cfINT(N,A,B,X,Y,Z)  DOUBLEVVVVVV_cfINT(N,A,B,X,Y,Z) /* added by MR December 2005 */
+#define LONGLONGVVVVVVV_cfINT(N,A,B,X,Y,Z) DOUBLEVVVVVVV_cfINT(N,A,B,X,Y,Z) /* added by MR December 2005 */
 #define         SHORTV_cfINT(N,A,B,X,Y,Z)       DOUBLEV_cfINT(N,A,B,X,Y,Z)
 #define        SHORTVV_cfINT(N,A,B,X,Y,Z)      DOUBLEVV_cfINT(N,A,B,X,Y,Z)
 #define       SHORTVVV_cfINT(N,A,B,X,Y,Z)     DOUBLEVVV_cfINT(N,A,B,X,Y,Z)
@@ -1457,7 +1600,12 @@ do{VVCF(T1,A1,B1)  VVCF(T2,A2,B2)  VVCF(T3,A3,B3)  VVCF(T4,A4,B4)  VVCF(T5,A5,B5
 #define      BYTE_cfPU(A)   CFextern INTEGER_BYTE      FCALLSC_QUALIFIER A
 #define    DOUBLE_cfPU(A)   CFextern DOUBLE_PRECISION  FCALLSC_QUALIFIER A
 #if ! (defined(FLOATFUNCTIONTYPE)&&defined(ASSIGNFLOAT)&&defined(RETURNFLOAT))
+#if defined (f2cFortran) && ! defined (gFortran)
+/* f2c/g77 return double from FORTRAN REAL functions. (KMCCARTY, 2005/12/09) */
+#define     FLOAT_cfPU(A)   CFextern DOUBLE_PRECISION  FCALLSC_QUALIFIER A
+#else
 #define     FLOAT_cfPU(A)   CFextern FORTRAN_REAL      FCALLSC_QUALIFIER A
+#endif
 #else				   	                   
 #define     FLOAT_cfPU(A)   CFextern FLOATFUNCTIONTYPE FCALLSC_QUALIFIER A
 #endif				   	                   
@@ -1595,6 +1743,7 @@ do{VVCF(T1,A1,B1)  VVCF(T2,A2,B2)  VVCF(T3,A3,B3)  VVCF(T4,A4,B4)  VVCF(T5,A5,B5
 #define            INT_cfSTR(N,T,A,B,C,D,E) _(CFARGS,N)(T,DEFAULT,A,B,C,D,E)
 #define        LOGICAL_cfSTR(N,T,A,B,C,D,E) _(CFARGS,N)(T,LOGICAL,A,B,C,D,E)
 #define           LONG_cfSTR(N,T,A,B,C,D,E) _(CFARGS,N)(T,DEFAULT,A,B,C,D,E)
+#define       LONGLONG_cfSTR(N,T,A,B,C,D,E) _(CFARGS,N)(T,DEFAULT,A,B,C,D,E) /* added by MR December 2005 */
 #define          SHORT_cfSTR(N,T,A,B,C,D,E) _(CFARGS,N)(T,DEFAULT,A,B,C,D,E)
 #define          BYTEV_cfSTR(N,T,A,B,C,D,E) _(CFARGS,N)(T,DEFAULT,A,B,C,D,E)
 #define         BYTEVV_cfSTR(N,T,A,B,C,D,E) _(CFARGS,N)(T,DEFAULT,A,B,C,D,E)
@@ -1638,6 +1787,13 @@ do{VVCF(T1,A1,B1)  VVCF(T2,A2,B2)  VVCF(T3,A3,B3)  VVCF(T4,A4,B4)  VVCF(T5,A5,B5
 #define      LONGVVVVV_cfSTR(N,T,A,B,C,D,E) _(CFARGS,N)(T,DEFAULT,A,B,C,D,E)
 #define     LONGVVVVVV_cfSTR(N,T,A,B,C,D,E) _(CFARGS,N)(T,DEFAULT,A,B,C,D,E)
 #define    LONGVVVVVVV_cfSTR(N,T,A,B,C,D,E) _(CFARGS,N)(T,DEFAULT,A,B,C,D,E)
+#define      LONGLONGV_cfSTR(N,T,A,B,C,D,E) _(CFARGS,N)(T,DEFAULT,A,B,C,D,E) /* added by MR December 2005 */
+#define     LONGLONGVV_cfSTR(N,T,A,B,C,D,E) _(CFARGS,N)(T,DEFAULT,A,B,C,D,E) /* added by MR December 2005 */
+#define    LONGLONGVVV_cfSTR(N,T,A,B,C,D,E) _(CFARGS,N)(T,DEFAULT,A,B,C,D,E) /* added by MR December 2005 */
+#define   LONGLONGVVVV_cfSTR(N,T,A,B,C,D,E) _(CFARGS,N)(T,DEFAULT,A,B,C,D,E) /* added by MR December 2005 */
+#define  LONGLONGVVVVV_cfSTR(N,T,A,B,C,D,E) _(CFARGS,N)(T,DEFAULT,A,B,C,D,E) /* added by MR December 2005 */
+#define LONGLONGVVVVVV_cfSTR(N,T,A,B,C,D,E) _(CFARGS,N)(T,DEFAULT,A,B,C,D,E) /* added by MR December 2005 */
+#define LONGLONGVVVVVVV_cfSTR(N,T,A,B,C,D,E) _(CFARGS,N)(T,DEFAULT,A,B,C,D,E) /* added by MR December 2005 */
 #define         SHORTV_cfSTR(N,T,A,B,C,D,E) _(CFARGS,N)(T,DEFAULT,A,B,C,D,E)
 #define        SHORTVV_cfSTR(N,T,A,B,C,D,E) _(CFARGS,N)(T,DEFAULT,A,B,C,D,E)
 #define       SHORTVVV_cfSTR(N,T,A,B,C,D,E) _(CFARGS,N)(T,DEFAULT,A,B,C,D,E)
@@ -1651,6 +1807,7 @@ do{VVCF(T1,A1,B1)  VVCF(T2,A2,B2)  VVCF(T3,A3,B3)  VVCF(T4,A4,B4)  VVCF(T5,A5,B5
 #define           PINT_cfSTR(N,T,A,B,C,D,E) _(CFARGS,N)(T,DEFAULT,A,B,C,D,E)
 #define       PLOGICAL_cfSTR(N,T,A,B,C,D,E) _(CFARGS,N)(T,PLOGICAL,A,B,C,D,E)
 #define          PLONG_cfSTR(N,T,A,B,C,D,E) _(CFARGS,N)(T,DEFAULT,A,B,C,D,E)
+#define      PLONGLONG_cfSTR(N,T,A,B,C,D,E) _(CFARGS,N)(T,DEFAULT,A,B,C,D,E) /* added by MR December 2005 */
 #define         PSHORT_cfSTR(N,T,A,B,C,D,E) _(CFARGS,N)(T,DEFAULT,A,B,C,D,E)
 #define         STRING_cfSTR(N,T,A,B,C,D,E) _(CFARGS,N)(T,STRING,A,B,C,D,E)
 #define        PSTRING_cfSTR(N,T,A,B,C,D,E) _(CFARGS,N)(T,PSTRING,A,B,C,D,E)
@@ -1679,9 +1836,9 @@ do{VVCF(T1,A1,B1)  VVCF(T2,A2,B2)  VVCF(T3,A3,B3)  VVCF(T4,A4,B4)  VVCF(T5,A5,B5
              B.dsc$w_length=strlen(A):  (A[C-1]='\0',B.dsc$w_length=strlen(A), \
        memset((A)+B.dsc$w_length,' ',C-B.dsc$w_length-1), B.dsc$w_length=C-1));
 #else
-#define   STRING_cfC(M,I,A,B,C) (B.clen=strlen(A),                             \
+#define   STRING_cfC(M,I,A,B,C) (B.nombre=A,B.clen=strlen(A),                             \
                 C==sizeof(char*)||C==(unsigned)(B.clen+1)?B.flen=B.clen:       \
-                        (memset((A)+B.clen,' ',C-B.clen-1),A[B.flen=C-1]='\0'));
+                        (memset(B.nombre+B.clen,' ',C-B.clen-1),B.nombre[B.flen=C-1]='\0'));
 #define  PSTRING_cfC(M,I,A,B,C) (C==sizeof(char*)? B=strlen(A):                \
                     (A[C-1]='\0',B=strlen(A),memset((A)+B,' ',C-B-1),B=C-1));
 #endif
@@ -1963,6 +2120,7 @@ static _Icf(2,U,F,CFFUN(UN),0)() {_(F,_cfE) _Icf(3,GZ,F,UN,LN) ABSOFT_cf1(F));_(
 #define            INT_cfT(M,I,A,B,D) *A
 #define        LOGICAL_cfT(M,I,A,B,D)  F2CLOGICAL(*A)
 #define           LONG_cfT(M,I,A,B,D) *A
+#define       LONGLONG_cfT(M,I,A,B,D) *A /* added by MR December 2005 */
 #define          SHORT_cfT(M,I,A,B,D) *A
 #define          BYTEV_cfT(M,I,A,B,D)  A
 #define        DOUBLEV_cfT(M,I,A,B,D)  A
@@ -1970,6 +2128,7 @@ static _Icf(2,U,F,CFFUN(UN),0)() {_(F,_cfE) _Icf(3,GZ,F,UN,LN) ABSOFT_cf1(F));_(
 #define           INTV_cfT(M,I,A,B,D)  A
 #define       LOGICALV_cfT(M,I,A,B,D)  A
 #define          LONGV_cfT(M,I,A,B,D)  A
+#define      LONGLONGV_cfT(M,I,A,B,D)  A /* added by MR December 2005 */
 #define         SHORTV_cfT(M,I,A,B,D)  A
 #define         BYTEVV_cfT(M,I,A,B,D)  (void *)A /* We have to cast to void *,*/
 #define        BYTEVVV_cfT(M,I,A,B,D)  (void *)A /* since we don't know the   */
@@ -2007,6 +2166,12 @@ static _Icf(2,U,F,CFFUN(UN),0)() {_(F,_cfE) _Icf(3,GZ,F,UN,LN) ABSOFT_cf1(F));_(
 #define      LONGVVVVV_cfT(M,I,A,B,D)  (void *)A
 #define     LONGVVVVVV_cfT(M,I,A,B,D)  (void *)A
 #define    LONGVVVVVVV_cfT(M,I,A,B,D)  (void *)A
+#define     LONGLONGVV_cfT(M,I,A,B,D)  (void *)A /* added by MR December 2005 */
+#define    LONGLONGVVV_cfT(M,I,A,B,D)  (void *)A /* added by MR December 2005 */
+#define   LONGLONGVVVV_cfT(M,I,A,B,D)  (void *)A /* added by MR December 2005 */
+#define  LONGLONGVVVVV_cfT(M,I,A,B,D)  (void *)A /* added by MR December 2005 */
+#define LONGLONGVVVVVV_cfT(M,I,A,B,D)  (void *)A /* added by MR December 2005 */
+#define LONGLONGVVVVVVV_cfT(M,I,A,B,D)  (void *)A /* added by MR December 2005 */
 #define        SHORTVV_cfT(M,I,A,B,D)  (void *)A
 #define       SHORTVVV_cfT(M,I,A,B,D)  (void *)A
 #define      SHORTVVVV_cfT(M,I,A,B,D)  (void *)A
@@ -2019,6 +2184,7 @@ static _Icf(2,U,F,CFFUN(UN),0)() {_(F,_cfE) _Icf(3,GZ,F,UN,LN) ABSOFT_cf1(F));_(
 #define           PINT_cfT(M,I,A,B,D)  A
 #define       PLOGICAL_cfT(M,I,A,B,D)  ((*A=F2CLOGICAL(*A)),A)
 #define          PLONG_cfT(M,I,A,B,D)  A
+#define      PLONGLONG_cfT(M,I,A,B,D)  A /* added by MR December 2005 */
 #define         PSHORT_cfT(M,I,A,B,D)  A
 #define          PVOID_cfT(M,I,A,B,D)  A
 #if defined(apolloFortran) || defined(hpuxFortran800) || defined(AbsoftUNIXFortran)
@@ -2089,12 +2255,18 @@ static _Icf(2,U,F,CFFUN(UN),0)() {_(F,_cfE) _Icf(3,GZ,F,UN,LN) ABSOFT_cf1(F));_(
 #define     INT_cfFZ(UN,LN) int   FCALLSC_QUALIFIER fcallsc(UN,LN)(
 #define LOGICAL_cfFZ(UN,LN) int   FCALLSC_QUALIFIER fcallsc(UN,LN)(
 #define    LONG_cfFZ(UN,LN) long  FCALLSC_QUALIFIER fcallsc(UN,LN)(
+#define LONGLONG_cfFZ(UN,LN) LONGLONG FCALLSC_QUALIFIER fcallsc(UN,LN)( /* added by MR December 2005 */
 #define   SHORT_cfFZ(UN,LN) short FCALLSC_QUALIFIER fcallsc(UN,LN)(
 #define    VOID_cfFZ(UN,LN) void  FCALLSC_QUALIFIER fcallsc(UN,LN)(
 #ifndef __CF__KnR
 /* The void is req'd by the Apollo, to make this an ANSI function declaration.
    The Apollo promotes K&R float functions to double. */
-#define   FLOAT_cfFZ(UN,LN) FORTRAN_REAL FCALLSC_QUALIFIER fcallsc(UN,LN)(void
+#if defined (f2cFortran) && ! defined (gFortran)
+/* f2c/g77 return double from FORTRAN REAL functions. (KMCCARTY, 2005/12/09) */
+#define FLOAT_cfFZ(UN,LN) DOUBLE_PRECISION FCALLSC_QUALIFIER fcallsc(UN,LN)(void
+#else
+#define FLOAT_cfFZ(UN,LN) FORTRAN_REAL FCALLSC_QUALIFIER fcallsc(UN,LN)(void
+#endif
 #ifdef vmsFortran
 #define  STRING_cfFZ(UN,LN) void  FCALLSC_QUALIFIER fcallsc(UN,LN)(fstring *AS
 #else
@@ -2110,7 +2282,12 @@ static _Icf(2,U,F,CFFUN(UN),0)() {_(F,_cfE) _Icf(3,GZ,F,UN,LN) ABSOFT_cf1(F));_(
 #endif
 #else
 #if ! (defined(FLOATFUNCTIONTYPE)&&defined(ASSIGNFLOAT)&&defined(RETURNFLOAT))
+#if defined (f2cFortran) && ! defined (gFortran)
+/* f2c/g77 return double from FORTRAN REAL functions. (KMCCARTY, 2005/12/09) */
+#define   FLOAT_cfFZ(UN,LN) DOUBLE_PRECISION  FCALLSC_QUALIFIER fcallsc(UN,LN)(
+#else
 #define   FLOAT_cfFZ(UN,LN) FORTRAN_REAL      FCALLSC_QUALIFIER fcallsc(UN,LN)(
+#endif
 #else
 #define   FLOAT_cfFZ(UN,LN) FLOATFUNCTIONTYPE FCALLSC_QUALIFIER fcallsc(UN,LN)(
 #endif
@@ -2124,13 +2301,19 @@ static _Icf(2,U,F,CFFUN(UN),0)() {_(F,_cfE) _Icf(3,GZ,F,UN,LN) ABSOFT_cf1(F));_(
 #define    BYTE_cfF(UN,LN)     BYTE_cfFZ(UN,LN)
 #define  DOUBLE_cfF(UN,LN)   DOUBLE_cfFZ(UN,LN)
 #ifndef __CF_KnR
+#if defined (f2cFortran) && ! defined (gFortran)
+/* f2c/g77 return double from FORTRAN REAL functions. (KMCCARTY, 2005/12/09) */
+#define   FLOAT_cfF(UN,LN)  DOUBLE_PRECISION FCALLSC_QUALIFIER fcallsc(UN,LN)(
+#else
 #define   FLOAT_cfF(UN,LN)  FORTRAN_REAL FCALLSC_QUALIFIER fcallsc(UN,LN)(
+#endif
 #else
 #define   FLOAT_cfF(UN,LN)    FLOAT_cfFZ(UN,LN)
 #endif
 #define     INT_cfF(UN,LN)      INT_cfFZ(UN,LN)
 #define LOGICAL_cfF(UN,LN)  LOGICAL_cfFZ(UN,LN)
 #define    LONG_cfF(UN,LN)     LONG_cfFZ(UN,LN)
+#define LONGLONG_cfF(UN,LN) LONGLONG_cfFZ(UN,LN) /* added by MR December 2005 */
 #define   SHORT_cfF(UN,LN)    SHORT_cfFZ(UN,LN)
 #define    VOID_cfF(UN,LN)     VOID_cfFZ(UN,LN)
 #define  STRING_cfF(UN,LN)   STRING_cfFZ(UN,LN),
@@ -2193,6 +2376,7 @@ string. */
 #define LOGICAL_cfI  return C2FLOGICAL(A0);
 #endif
 #define    LONG_cfI  return A0;
+#define LONGLONG_cfI  return A0; /* added by MR December 2005 */
 #define   SHORT_cfI  return A0;
 #define  STRING_cfI  return   ;
 #define    VOID_cfI  return   ;
diff --git a/include/cmor.h b/include/cmor.h
index 4e27edf..95f103b 100644
--- a/include/cmor.h
+++ b/include/cmor.h
@@ -1,12 +1,12 @@
 #ifndef CMOR_H
 #define CMOR_H
 
-#define CMOR_VERSION_MAJOR 2
-#define CMOR_VERSION_MINOR 9
-#define CMOR_VERSION_PATCH 3
+#define CMOR_VERSION_MAJOR 3
+#define CMOR_VERSION_MINOR 1
+#define CMOR_VERSION_PATCH 0
 
 #define CMOR_CF_VERSION_MAJOR 1
-#define CMOR_CF_VERSION_MINOR 4
+#define CMOR_CF_VERSION_MINOR 6
 
 #define CMOR_MAX_STRING 1024
 #define CMOR_DEF_ATT_STR_LEN 256
@@ -19,6 +19,8 @@
 #define CMOR_MAX_ERRORS 10
 #define CMOR_MAX_TABLES 10
 #define CMOR_MAX_GRID_ATTRIBUTES 25
+#define CMOR_MAX_JSON_ARRAY 50
+#define CMOR_MAX_JSON_OBJECT 250
 
 #define CMOR_QUIET 0
 
@@ -29,20 +31,205 @@
 #define CMOR_WARNING 20
 #define CMOR_NORMAL 21
 #define CMOR_CRITICAL 22
+#define CMOR_NOT_SETUP 23
 
 #define CMOR_N_VALID_CALS 8
 
 #define CMOR_PRESERVE_4 10
-#define CMOR_APPEND_4 11
-#define CMOR_REPLACE_4 12
+#define CMOR_APPEND_4   11
+#define CMOR_REPLACE_4  12
+
 #define CMOR_PRESERVE_3 13
-#define CMOR_APPEND_3 14
-#define CMOR_REPLACE_3 15
+#define CMOR_APPEND_3   14
+#define CMOR_REPLACE_3  15
+
 #define CMOR_PRESERVE CMOR_PRESERVE_3
 #define CMOR_APPEND CMOR_APPEND_3
 #define CMOR_REPLACE CMOR_REPLACE_3
 
-#define CMOR_MAX_TRACKING_PREFIX_PROJECT_FILTER 1
+#define CMOR_INPUTFILENAME       GLOBAL_INTERNAL"dataset_json"
+#define CV_INPUTFILENAME         GLOBAL_INTERNAL"CV"
+/* -------------------------------------------------------------------- */
+/*      Define AXIS attribue strings                                    */
+/* -------------------------------------------------------------------- */
+
+#define AXIS_ATT_REQUIRED        "required"
+#define AXIS_ATT_ID              "id"
+#define AXIS_ATT_CLIMATOLOGY     "climatology"
+#define AXIS_ATT_OUTNAME         "out_name"
+#define AXIS_ATT_STANDARDNAME    "standard_name"
+#define AXIS_ATT_LONGNAME        "long_name"
+#define AXIS_ATT_CONVERTTO       "convert_to"
+#define AXIS_ATT_FORMULA         "formula"
+#define AXIS_ATT_ZFACTORS        "z_factors"
+#define AXIS_ATT_ZBOUNDSFACTORS  "z_bounds_factors"
+#define AXIS_ATT_UNITS           "units"
+#define AXIS_ATT_STOREDDIRECTION "stored_direction"
+#define AXIS_ATT_POSITIVE        "positive"
+#define AXIS_ATT_AXIS            "axis"
+#define AXIS_ATT_INDEXONLY       "index_only"
+#define AXIS_ATT_MUSTBOUNDS      "must_have_bounds"
+#define AXIS_ATT_MUSTCALLGRID    "must_call_cmmore_grid"
+#define AXIS_ATT_TYPE            "type"
+#define AXIS_ATT_VALIDMIN        "valid_min"
+#define AXIS_ATT_VALIDMAX        "valid_max"
+#define AXIS_ATT_TOLERANCE       "tolerance"
+#define AXIS_ATT_TOLONREQUESTS   "tol_on_requests"
+#define AXIS_ATT_VALUE           "value"
+#define AXIS_ATT_BOUNDVALUES     "bounds_values"
+#define AXIS_ATT_COORDSATTRIB    "coords_attrib"
+#define AXIS_ATT_BOUNDSREQUESTED "bounds_requested"
+#define AXIS_ATT_REQUESTEDBOUNDS "requested_bounds"
+#define AXIS_ATT_REQUESTED       "requested"
+
+#define TABLE_CONTROL_FILENAME    "CMIP6_CV.json"
+#define TABLE_FOUND               -1
+#define TABLE_ERROR                1
+#define TABLE_SUCCESS              0
+
+#define FILE_ERROR                 1
+#define FILE_PATH_TEMPLATE         "output_path_template"
+#define FILE_NAME_TEMPLATE         "output_file_template"
+#define FILE_OUTPUTPATH            "outpath"
+
+#define VARIABLE_ATT_UNITS            "units"
+#define VARIABLE_ATT_MISSINGVALUES    "missing_values"
+#define VARIABLE_ATT_FILLVAL          "_FillValue"
+#define VARIABLE_ATT_STANDARDNAME     "standard_name"
+#define VARIABLE_ATT_LONGNAME         "long_name"
+#define VARIABLE_ATT_FLAGVALUES       "flag_values"
+#define VARIABLE_ATT_FLAGMEANING      "flag_meaning"
+#define VARIABLE_ATT_COMMENT          "comment"
+#define VARIABLE_ATT_HISTORY          "history"
+#define VARIABLE_ATT_ORIGINALNAME     "original_name"
+#define VARIABLE_ATT_ORIGINALUNITS    "original_units"
+#define VARIABLE_ATT_POSITIVE         "positive"
+#define VARIABLE_ATT_CELLMETHODS      "cell_methods"
+#define VARIABLE_ATT_COORDINATES      "coordinates"
+#define VARIABLE_ATT_REQUIRED         "required"
+#define VARIABLE_ATT_DIMENSIONS       "dimensions"
+#define VARIABLE_ATT_ID               "id"
+#define VARIABLE_ATT_TYPE             "type"
+#define VARIABLE_ATT_UNITS            "units"
+#define VARIABLE_ATT_EXTCELLMEASURES  "ext_cell_measures"
+#define VARIABLE_ATT_CELLMEASURES     "cell_measures"
+#define VARIALBE_ATT_GRIDMAPPING      "grid_mapping"
+
+#define VARIABLE_ATT_VALIDMIN         "valid_min"
+#define VARIABLE_ATT_VALIDMAX         "valid_max"
+#define VARIABLE_ATT_MINMEANABS       "ok_min_mean_abs"
+#define VARIABLE_ATT_MAXMEANABS       "ok_max_mean_abs"
+#define VARIABLE_ATT_SHUFFLE          "shuffle"
+#define VARIABLE_ATT_DEFLATE          "deflate"
+#define VARIABLE_ATT_DEFLATELEVEL     "deflate_level"
+#define VARIABLE_ATT_MODELINGREALM    "modeling_realm"
+#define VARIALBE_ATT_FREQUENCY        "frequency"
+#define VARIABLE_ATT_FLAGVALUES       "flag_values"
+#define VARIABLE_ATT_FLAGMEANINGS     "flag_meanings"
+#define VARIABLE_ATT_OUTNAME          "out_name"
+
+#define GLOBAL_SEPARATORS             "><"
+#define GLOBAL_OPENOPTIONAL           "["
+#define GLOBAL_CLOSEOPTIONAL          "]"
+#define GLOBAL_INTERNAL               "_"
+#define GLOBAL_ATT_FORCING            "forcing"
+#define GLOBAL_ATT_PRODUCT            "product"
+#define GLOBAL_ATT_EXPERIMENTID       "experiment_id"
+#define GLOBAL_ATT_EXPERIMENT         "experiment"
+#define GLOBAL_ATT_MODELID            "model_id"
+#define GLOBAL_ATT_REALIZATION        "realization_index"
+#define GLOBAL_ATT_INITIA_IDX         "initialization_index"
+#define GLOBAL_ATT_PHYSICS_IDX        "physics_index"
+#define GLOBAL_ATT_FORCING_IDX        "forcing_index"
+#define GLOBAL_ATT_CMORVERSION        "cmor_version"
+#define GLOBAL_ATT_ACTIVITY_ID        "activity_id"
+#define GLOBAL_ATT_VAL_NODRIVER       "no-driver"
+#define GLOBAL_ATT_VARIABLE_ID        "variable_id"
+#define GLOBAL_ATT_SOURCE_ID          "source_id"
+#define GLOBAL_ATT_SOURCE             "source"
+#define GLOBAL_ATT_SOURCE_TYPE        "source_type"
+#define GLOBAL_ATT_CONVENTIONS        "Conventions"
+#define GLOBAL_ATT_CREATION_DATE      "creation_date"
+#define GLOBAL_ATT_HISTORY            "history"
+#define GLOBAL_ATT_TABLE_ID           "table_id"
+#define GLOBAL_ATT_TABLE_INFO         "table_info"
+#define GLOBAL_ATT_EXPERIMENT         "experiment"
+#define GLOBAL_ATT_TITLE              "title"
+#define GLOBAL_ATT_PARENT_EXPT_ID     "parent_experiment_id"
+#define GLOBAL_ATT_BRANCH_TIME        "branch_time"
+#define GLOBAL_ATT_REALM              "realm"
+#define GLOBAL_ATT_TRACKING_ID        "tracking_id"
+#define GLOBAL_ATT_VARIANT_LABEL      "variant_label"
+#define GLOBAL_ATT_DATASPECSVERSION   "data_specs_version"
+#define GLOBAL_ATT_FREQUENCY          "frequency"
+#define GLOBAL_ATT_LICENSE            "license"
+#define GLOBAL_ATT_TRACKING_PREFIX    "tracking_prefix"
+#define GLOBAL_ATT_CALENDAR           "calendar"
+#define GLOBAL_ATT_INSTITUTION_ID     "institution_id"
+#define GLOBAL_ATT_INSTITUTION        "institution"
+#define GLOBAL_ATT_FURTHERINFOURL     "further_info_url"
+#define GLOBAL_ATT_GRID_LABEL         "grid_label"
+#define GLOBAL_ATT_GRID_RESOLUTION    "grid_resolution"
+#define GLOBAL_ATT_TITLE_MSG          "%s model output prepared for %s"
+#define GLOBAL_ATT_EXTERNAL_VAR       "external_variables"
+#define GLOBAL_ATT_MIP_ERA            "mip_era"
+#define GLOBAL_CV_FILENAME            GLOBAL_INTERNAL"control_vocabulary_file"
+#define GLOBAL_IS_CMIP6               GLOBAL_INTERNAL"cmip6_option"
+
+#define JSON_KEY_HEADER               "Header"
+#define JSON_KEY_EXPERIMENT           "experiments"
+#define JSON_KEY_AXIS_ENTRY           "axis_entry"
+#define JSON_KEY_VARIABLE_ENTRY       "variable_entry"
+#define JSON_KEY_MAPPING_ENTRY        "mapping_entry"
+#define JSON_KEY_CV_ENTRY             "CV"
+
+#define CV_KEY_REQUIRED_GBL_ATTRS     "required_global_attributes"
+#define CV_KEY_INSTITUTION_IDS        "institution_ids"
+#define CV_KEY_EXPERIMENT_IDS         "experiment_ids"
+#define CV_KEY_SOURCE_IDS             "source_ids"
+#define CV_KEY_GRID_LABELS            "grid_labels"
+#define CV_KEY_GRID_RESOLUTION        "grid_resolution"
+#define CV_KEY_GRIDLABEL_GR            "gr"
+
+#define CV_EXP_ATTR_ADDSOURCETYPE     "additional_source_type"
+#define CV_EXP_ATTR_REQSOURCETYPE     "source_type"
+
+#define GLOBAL_INT_ATT_PARENT_EXPT    GLOBAL_INTERNAL"parent_experiment"
+#define GLOBAL_ATT_VERSION            GLOBAL_INTERNAL"version"
+
+
+#define TABLE_HEADER_VERSION          "cmor_version"
+#define TABLE_HEADER_GENERIC_LEVS     "generic_levels"
+#define TABLE_HEADER_CF_VERSION       "cf_version"
+#define TABLE_HEADER_CONVENTIONS      "Conventions"
+#define TABLE_HEADER_MIP_ERA          "mip_era"
+#define TABLE_HEADER_REALM            "realm"
+#define TABLE_HEADER_TABLE_DATE       "table_date"
+#define TABLE_HEADER_FORCINGS         "forcings"
+#define TABLE_HEADER_FREQUENCY        "frequency"
+#define TABLE_HEADER_TABLE_ID         "table_id"
+#define TABLE_HEADER_BASEURL          "baseURL"
+#define TABLE_HEADER_PRODUCT          "product"
+#define TABLE_EXPIDS                  "expt_id_ok"
+#define TABLE_HEADER_APRX_INTRVL      "approx_interval"
+#define TABLE_HEADER_APRX_INTRVL_ERR  "approx_interval_error"
+#define TABLE_HEADER_APRX_INTRVL_WRN  "approx_interval_warning"
+#define TABLE_HEADER_MISSING_VALUE    "missing_value"
+#define TABLE_HEADER_MAGIC_NUMBER     "magic_number"
+#define TABLE_HEADER_DATASPECSVERSION "data_specs_version"
+#define OUTPUT_TEMPLATE_RIPF          "run_variant"
+
+#define DIMENSION_LATITUDE            "latitude"
+#define DIMENSION_LONGITUDE           "longitude"
+#define DIMENSION_ALEVEL              "alevel"
+#define DIMENSION_ZLEVEL              "zlevel"
+#define DIMENSION_OLEVEL              "olevel"
+
+#define CMIP6                         "CMIP6"
+#define CMOR_DEFAULT_PATH_TEMPLATE    "<mip_era><institute_id><source_id><activity_id><experiment_id><variant_id><table><variable_id><grid_label><version>"
+#define CMOR_DEFAULT_FILE_TEMPLATE    "<variable_id><table><experiment_id><source_id><variant_id><grid_label>"
+#define CMOR_DEFAULT_FURTHERURL_TEMPLATE "http://furtherinfo.es-doc.org/<mip_era>/<institution_id><source_id><experiment_id><sub_experiment_id><variant_label>"
+#define EXTERNAL_VARIABLE_REGEX       "area:[[:blank:]]*([[:alpha:]]+)([[:blank:]]*volume:[[:blank:]]*([[:alpha:]]+))*"
 
 extern int USE_NETCDF_4;
 extern int CMOR_MODE;
@@ -65,235 +252,279 @@ extern char cmor_input_path[CMOR_MAX_STRING];
 extern char cmor_traceback_info[CMOR_MAX_STRING];
 
 typedef struct cmor_grid_ {
-  int id;
-  char mapping[CMOR_MAX_STRING];
-  int nattributes;
-  char attributes_names[CMOR_MAX_GRID_ATTRIBUTES][CMOR_MAX_STRING];
-  double attributes_values[CMOR_MAX_GRID_ATTRIBUTES];
-  int axes_ids[CMOR_MAX_DIMENSIONS];
-  int original_axes_ids[CMOR_MAX_DIMENSIONS];
-  int ndims;
-  int istimevarying;
-  int nvertices;
-  double *lons;
-  double *lats;
-  double *blons;
-  double *blats;
-/*   double *area; */
-/*   double *volumes; */
-  int associated_variables[6]; /* for lon/lat/blon/blat/area/volumes */
+    int id;
+    char mapping[CMOR_MAX_STRING];
+    int nattributes;
+    char attributes_names[CMOR_MAX_GRID_ATTRIBUTES][CMOR_MAX_STRING];
+    double attributes_values[CMOR_MAX_GRID_ATTRIBUTES];
+    int axes_ids[CMOR_MAX_DIMENSIONS];
+    int original_axes_ids[CMOR_MAX_DIMENSIONS];
+    int ndims;
+    int istimevarying;
+    int nvertices;
+    double *lons;
+    double *lats;
+    double *blons;
+    double *blats;
+/* -------------------------------------------------------------------- */
+/*      for lon/lat/blon/blat/area/volumes                              */
+/* -------------------------------------------------------------------- */
+    int associated_variables[6];
 } cmor_grid_t;
 
 extern cmor_grid_t cmor_grids[CMOR_MAX_GRIDS];
 
 typedef struct cmor_axis_def_ {
-  int table_id;
-  int climatology;
-  char id[CMOR_MAX_STRING];
-  char standard_name[CMOR_MAX_STRING];
-  char units[CMOR_MAX_STRING];
-  char axis;
-  char positive;
-  char long_name[CMOR_MAX_STRING];
-  char out_name[CMOR_MAX_STRING];
-  char type;
-  char stored_direction;
-  double valid_min;
-  double valid_max;
-  int n_requested;
-  double *requested;
-  char *crequested;
-  char cname[CMOR_MAX_STRING];
-  int n_requested_bounds;
-  double *requested_bounds;
-  double tolerance;
-  double value;
-  char cvalue[CMOR_MAX_STRING];
-  double bounds_value[2];
-  char required[CMOR_MAX_STRING];
-  char formula[CMOR_MAX_STRING];
-  char convert_to[CMOR_MAX_STRING];
-  char z_factors[CMOR_MAX_STRING];
-  char z_bounds_factors[CMOR_MAX_STRING];
-  char index_only;
-  int must_have_bounds;
-  int must_call_cmor_grid;
+    int table_id;
+    int climatology;
+    char id[CMOR_MAX_STRING];
+    char standard_name[CMOR_MAX_STRING];
+    char units[CMOR_MAX_STRING];
+    char axis;
+    char positive;
+    char long_name[CMOR_MAX_STRING];
+    char out_name[CMOR_MAX_STRING];
+    char type;
+    char stored_direction;
+    double valid_min;
+    double valid_max;
+    int n_requested;
+    double *requested;
+    char *crequested;
+    char cname[CMOR_MAX_STRING];
+    int n_requested_bounds;
+    double *requested_bounds;
+    double tolerance;
+    double value;
+    char cvalue[CMOR_MAX_STRING];
+    double bounds_value[2];
+    char required[CMOR_MAX_STRING];
+    char formula[CMOR_MAX_STRING];
+    char convert_to[CMOR_MAX_STRING];
+    char z_factors[CMOR_MAX_STRING];
+    char z_bounds_factors[CMOR_MAX_STRING];
+    char index_only;
+    int must_have_bounds;
+    int must_call_cmor_grid;
 } cmor_axis_def_t;
 
+enum CV_type {
+    CV_undef,
+    CV_integer,
+    CV_double,
+    CV_string,
+    CV_stringarray,
+    CV_object,
+};
+
+
+typedef struct cmor_CV_def_ {
+    int     table_id;
+    char    key[CMOR_MAX_STRING];
+    int     type;
+    int     nValue;
+    double  dValue;
+    char    szValue[CMOR_MAX_STRING];
+
+    char    aszValue[CMOR_MAX_JSON_OBJECT][CMOR_MAX_STRING];
+    int     anElements;
+    int     nbObjects;
+    struct cmor_CV_def_ *oValue;
+} cmor_CV_def_t;
+
 typedef struct cmor_axis_ {
-  int ref_table_id;
-  int ref_axis_id;
-  int isgridaxis;
-  char axis;
-  char iunits[CMOR_MAX_STRING];
-  char id[CMOR_MAX_STRING];
-  int length;
-  double *values;
-  int *wrapping;
-  double *bounds;
-  char **cvalues;
-  int revert;
-  int offset;
-  char type;
-  char attributes_values_char[CMOR_MAX_ATTRIBUTES][CMOR_MAX_STRING];
-  double attributes_values_num[CMOR_MAX_ATTRIBUTES];
-  char attributes_type[CMOR_MAX_ATTRIBUTES]; /*stores attributes type */
-  char attributes[CMOR_MAX_ATTRIBUTES][CMOR_MAX_STRING]; /*stores attributes names */
-  int nattributes ; /* number of character type attributes */
-  int hybrid_in;
-  int hybrid_out;
-  int store_in_netcdf;
+    int ref_table_id;
+    int ref_axis_id;
+    int isgridaxis;
+    char axis;
+    char iunits[CMOR_MAX_STRING];
+    char id[CMOR_MAX_STRING];
+    int length;
+    double *values;
+    int *wrapping;
+    double *bounds;
+    char **cvalues;
+    int revert;
+    int offset;
+    char type;
+    char attributes_values_char[CMOR_MAX_ATTRIBUTES][CMOR_MAX_STRING];
+    double attributes_values_num[CMOR_MAX_ATTRIBUTES];
+    char attributes_type[CMOR_MAX_ATTRIBUTES];	/*stores attributes type */
+    char attributes[CMOR_MAX_ATTRIBUTES][CMOR_MAX_STRING];	/*stores attributes names */
+    int nattributes;		/* number of character type attributes */
+    int hybrid_in;
+    int hybrid_out;
+    int store_in_netcdf;
 } cmor_axis_t;
 extern cmor_axis_t cmor_axes[CMOR_MAX_AXES];
 
 typedef struct cmor_variable_def_ {
-  int table_id;
-  char id[CMOR_MAX_STRING];
-  char standard_name[CMOR_MAX_STRING];
-  char units[CMOR_MAX_STRING];
-  char cell_methods[CMOR_MAX_STRING];
-  char cell_measures[CMOR_MAX_STRING];
-  char positive;
-  char flag_values[CMOR_MAX_STRING];
-  char flag_meanings[CMOR_MAX_STRING];
-  char long_name[CMOR_MAX_STRING];
-  char comment[CMOR_MAX_STRING];
-  int ndims;
-  int dimensions[CMOR_MAX_DIMENSIONS];
-  char type;
-  float valid_min;
-  float valid_max;
-  float ok_min_mean_abs;
-  float ok_max_mean_abs;
-  int shuffle;
-  int deflate;
-  int deflate_level;
-  char required[CMOR_MAX_STRING];
-  char realm[CMOR_MAX_STRING];
-  char frequency[CMOR_MAX_STRING];
-  char out_name[CMOR_MAX_STRING];
+    int table_id;
+    char id[CMOR_MAX_STRING];
+    char standard_name[CMOR_MAX_STRING];
+    char units[CMOR_MAX_STRING];
+    char cell_methods[CMOR_MAX_STRING];
+    char cell_measures[CMOR_MAX_STRING];
+    char positive;
+    char flag_values[CMOR_MAX_STRING];
+    char flag_meanings[CMOR_MAX_STRING];
+    char long_name[CMOR_MAX_STRING];
+    char comment[CMOR_MAX_STRING];
+    int ndims;
+    int dimensions[CMOR_MAX_DIMENSIONS];
+    char type;
+    float valid_min;
+    float valid_max;
+    float ok_min_mean_abs;
+    float ok_max_mean_abs;
+    int shuffle;
+    int deflate;
+    int deflate_level;
+    char required[CMOR_MAX_STRING];
+    char realm[CMOR_MAX_STRING];
+    char frequency[CMOR_MAX_STRING];
+    char out_name[CMOR_MAX_STRING];
 } cmor_var_def_t;
 
 typedef struct cmor_var_ {
-  int self;
-  int grid_id;
-  int sign;
-  int zfactor;
-  int ref_table_id;
-  int ref_var_id;
-  int initialized;
-  int closed;
-  int nc_var_id;
-  int nc_zfactors[CMOR_MAX_VARIABLES];
-  int nzfactor;
-  int ntimes_written;
-  double last_time_written;
-  double last_time_bounds_written[2];
-  int ntimes_written_coords[10];
-  int associated_ids[10];
-  int ntimes_written_associated[10];
-  int time_nc_id;
-  int time_bnds_nc_id;
-  char id[CMOR_MAX_STRING];
-  int ndims;
-  int singleton_ids[CMOR_MAX_DIMENSIONS];
-  int axes_ids[CMOR_MAX_DIMENSIONS];
-  int original_order[CMOR_MAX_DIMENSIONS];
-  char attributes_values_char[CMOR_MAX_ATTRIBUTES][CMOR_MAX_STRING];
-  double attributes_values_num[CMOR_MAX_ATTRIBUTES];
-  char attributes_type[CMOR_MAX_ATTRIBUTES]; /*stores attributes type */
-  char attributes[CMOR_MAX_ATTRIBUTES][CMOR_MAX_STRING]; /*stores attributes names */
-  int nattributes ; /* number of  attributes */
-  char type;
-  char itype;
-  double missing;
-  double omissing;
-  double tolerance;
-  float valid_min;
-  float valid_max;
-  float ok_min_mean_abs;
-  float ok_max_mean_abs;
-  int shuffle;
-  int deflate;
-  int deflate_level;
-  int nomissing;
-  char iunits[CMOR_MAX_STRING];
-  char ounits[CMOR_MAX_STRING];
-  int isbounds;
-  int needsinit; /* need to be init or associated to file */
-  int zaxis; /* for z vars, associated axis stored here */
-  double *values;
-  double first_time;
-  double last_time;
-  double first_bound;
-  double last_bound;
-  char base_path[CMOR_MAX_STRING];
-  char current_path[CMOR_MAX_STRING];
-  char suffix[CMOR_MAX_STRING];
-  int suffix_has_date;
+    int self;
+    int grid_id;
+    int sign;
+    int zfactor;
+    int ref_table_id;
+    int ref_var_id;
+    int initialized;
+    int closed;
+    int nc_var_id;
+    int nc_zfactors[CMOR_MAX_VARIABLES];
+    int nzfactor;
+    int ntimes_written;
+    double last_time_written;
+    double last_time_bounds_written[2];
+    int ntimes_written_coords[10];
+    int associated_ids[10];
+    int ntimes_written_associated[10];
+    int time_nc_id;
+    int time_bnds_nc_id;
+    char id[CMOR_MAX_STRING];
+    int ndims;
+    int singleton_ids[CMOR_MAX_DIMENSIONS];
+    int axes_ids[CMOR_MAX_DIMENSIONS];
+    int original_order[CMOR_MAX_DIMENSIONS];
+    char attributes_values_char[CMOR_MAX_ATTRIBUTES][CMOR_MAX_STRING];
+    double attributes_values_num[CMOR_MAX_ATTRIBUTES];
+    char attributes_type[CMOR_MAX_ATTRIBUTES];	/*stores attributes type */
+    char attributes[CMOR_MAX_ATTRIBUTES][CMOR_MAX_STRING];	/*stores attributes names */
+    int nattributes;		/* number of  attributes */
+    char type;
+    char itype;
+    double missing;
+    double omissing;
+    double tolerance;
+    float valid_min;
+    float valid_max;
+    float ok_min_mean_abs;
+    float ok_max_mean_abs;
+    int shuffle;
+    int deflate;
+    int deflate_level;
+    int nomissing;
+    char iunits[CMOR_MAX_STRING];
+    char ounits[CMOR_MAX_STRING];
+    int isbounds;
+    int needsinit;		/* need to be init or associated to file */
+    int zaxis;			/* for z vars, associated axis stored here */
+    double *values;
+    double first_time;
+    double last_time;
+    double first_bound;
+    double last_bound;
+    char base_path[CMOR_MAX_STRING];
+    char current_path[CMOR_MAX_STRING];
+    char suffix[CMOR_MAX_STRING];
+    int suffix_has_date;
 } cmor_var_t;
 
 extern cmor_var_t cmor_vars[CMOR_MAX_VARIABLES];
 
 typedef struct cmor_mappings_ {
-  int nattributes;
-  char id[CMOR_MAX_STRING];
-  char attributes_names[CMOR_MAX_GRID_ATTRIBUTES][CMOR_MAX_STRING];
-  char coordinates[CMOR_MAX_STRING];
+    int nattributes;
+    char id[CMOR_MAX_STRING];
+    char attributes_names[CMOR_MAX_GRID_ATTRIBUTES][CMOR_MAX_STRING];
+    char coordinates[CMOR_MAX_STRING];
 } cmor_mappings_t;
 
+typedef struct {
+    char key[CMOR_MAX_STRING];
+    char *value;
+} t_symstruct;
+
+
 typedef struct cmor_table_ {
-  int id;
-  int nvars;
-  int naxes;
-  int nexps;
-  int nmappings;
-  float cf_version;
-  float cmor_version;
-  char project_id[CMOR_MAX_STRING];
-  char table_id[CMOR_MAX_STRING];
-  char expt_ids[CMOR_MAX_ELEMENTS][CMOR_MAX_STRING];
-  char sht_expt_ids[CMOR_MAX_ELEMENTS][CMOR_MAX_STRING];
-  char date[CMOR_MAX_STRING];
-  cmor_axis_def_t axes[CMOR_MAX_ELEMENTS];
-  cmor_var_def_t vars[CMOR_MAX_ELEMENTS];
-  cmor_mappings_t mappings[CMOR_MAX_ELEMENTS];
-  float missing_value;
-  double interval;
-  float interval_warning;
-  float interval_error;
-  char URL[CMOR_MAX_STRING];
-  char tracking_prefix[CMOR_MAX_STRING];
-  char product[CMOR_MAX_STRING];
-  char realm[CMOR_MAX_STRING];
-  char path[CMOR_MAX_STRING];
-  char required_gbl_att[CMOR_MAX_STRING];
-  char frequency[CMOR_MAX_STRING];
-  char **forcings;
-  int nforcings;
-  unsigned char md5[16];
-  char generic_levels[CMOR_MAX_ELEMENTS][CMOR_MAX_STRING];
+    int id;
+    int nvars;
+    int naxes;
+    int nexps;
+    int nmappings;
+    float cf_version;
+    float cmor_version;
+    char mip_era[CMOR_MAX_STRING];
+    char Conventions[CMOR_MAX_STRING];
+    char data_specs_version[CMOR_MAX_STRING];
+    char szTable_id[CMOR_MAX_STRING];
+    char expt_ids[CMOR_MAX_ELEMENTS][CMOR_MAX_STRING];
+    char sht_expt_ids[CMOR_MAX_ELEMENTS][CMOR_MAX_STRING];
+    char date[CMOR_MAX_STRING];
+    cmor_axis_def_t axes[CMOR_MAX_ELEMENTS];
+    cmor_var_def_t vars[CMOR_MAX_ELEMENTS];
+    cmor_mappings_t mappings[CMOR_MAX_ELEMENTS];
+    cmor_CV_def_t *CV;
+    float missing_value;
+    double interval;
+    float interval_warning;
+    float interval_error;
+    char URL[CMOR_MAX_STRING];
+    char product[CMOR_MAX_STRING];
+    char realm[CMOR_MAX_STRING];
+    char path[CMOR_MAX_STRING];
+    char frequency[CMOR_MAX_STRING];
+    char **forcings;
+    int nforcings;
+    unsigned char md5[16];
+    char generic_levels[CMOR_MAX_ELEMENTS][CMOR_MAX_STRING];
 } cmor_table_t;
 
 extern cmor_table_t cmor_tables[CMOR_MAX_TABLES];
 
-extern const char cmor_tracking_prefix_project_filter[CMOR_MAX_TRACKING_PREFIX_PROJECT_FILTER][CMOR_MAX_STRING];
+//extern const char cmor_tracking_prefix_project_filter[CMOR_MAX_TRACKING_PREFIX_PROJECT_FILTER][CMOR_MAX_STRING];
+
+typedef struct  attributes {
+    char names[CMOR_MAX_STRING];
+    char values[CMOR_MAX_STRING];
+} attributes_def;
 
 typedef struct cmor_dataset_def_ {
-  char outpath[CMOR_MAX_STRING];
-  char conventions[CMOR_MAX_STRING];
-  char attributes_names[CMOR_MAX_ATTRIBUTES][CMOR_MAX_STRING];
-  char attributes_values[CMOR_MAX_ATTRIBUTES][CMOR_MAX_STRING];
-  int nattributes;
-  int realization;
-  int leap_year;
-  int leap_month;
-  int month_lengths[12];
-  int initiated;
-  int associate_file; /*flag to store associated variables separately */
-  int associated_file; /* ncid of associated file */
-  char associated_file_name[CMOR_MAX_STRING]; /*associated file path */
-  char tracking_id[CMOR_MAX_STRING]; /*associated tracking id */
+    char outpath[CMOR_MAX_STRING];
+    char conventions[CMOR_MAX_STRING];
+
+    char activity_id[CMOR_MAX_STRING];
+    char tracking_prefix[CMOR_MAX_STRING];
+    int nattributes;
+    attributes_def attributes[CMOR_MAX_ATTRIBUTES];
+  //  int realization;
+    int leap_year;
+    int leap_month;
+    int month_lengths[12];
+    int initiated;
+    int associate_file;		/*flag to store associated variables separately */
+    int associated_file;	/* ncid of associated file */
+    char associated_file_name[CMOR_MAX_STRING];	/*associated file path */
+    char tracking_id[CMOR_MAX_STRING];	/*associated tracking id */
+    char path_template[CMOR_MAX_STRING]; /* <keys> for each directory */
+    char file_template[CMOR_MAX_STRING]; /* <keys> for filename */
+    char furtherinfourl[CMOR_MAX_STRING]; /* further URL INFO template */
+    char finalfilename[CMOR_MAX_STRING]; /* Final output file */
+
 } cmor_dataset_def;
 
 extern cmor_dataset_def cmor_current_dataset;
diff --git a/include/cmor_func_def.h b/include/cmor_func_def.h
index b02cc54..26f2dbe 100644
--- a/include/cmor_func_def.h
+++ b/include/cmor_func_def.h
@@ -1,105 +1,304 @@
-/* this file contains function definitions for cmor */
-/* cmor.c */
+/* -------------------------------------------------------------------- */
+/*      this file contains function definitions for cmor                */
+/*      cmor.c                                                          */
+/*                                                                      */
+/* -------------------------------------------------------------------- */
 #ifndef CMOR_FUNC_H
 #define CMOR_FUNC_H
 #include <udunits2.h>
 #include "cdmsint.h"
 #include <stdio.h>
+#include "json.h"
+
+extern void cmor_md5( FILE * inputfile, unsigned char checksum[16] );
+
+extern void cmor_is_setup( void );
+extern void cmor_add_traceback( char *name );
+extern void cmor_pop_traceback( void );
+extern int cmor_prep_units( char *uunits, char *cunits,
+			    ut_unit ** user_units, ut_unit ** cmor_units,
+			    cv_converter ** ut_cmor_converter );
+extern int cmor_have_NetCDF4( void );
+extern int cmor_have_NetCDF41min( void );
+extern int cmor_have_NetCDF3( void );
+extern int cmor_have_NetCDF363( void );
+extern void cmor_handle_error( char error_msg[CMOR_MAX_STRING],
+			       int level );
+extern int cmor_setup( char *path, int *netcdf, int *verbosity, int *mode,
+		       char *logfile, int *cmor_create_subdirectories);
+
+extern int  cmor_outpath_exist(char *outpath);
+
+extern int cmor_put_nc_num_attribute( int ncid, int nc_var_id, char *name,
+				      char type, double value,
+				      char *var_name );
+extern int cmor_put_nc_char_attribute( int ncid, int nc_var_id, char *name,
+				       char *value, char *var_name );
+extern int cmor_set_cur_dataset_attribute( char *name, char *value,
+					   int optional );
+extern int cmor_set_cur_dataset_attribute_internal( char *name, char *value,
+                                           int optional );
+
+extern int cmor_get_cur_dataset_attribute( char *name, char *value );
+extern int cmor_has_cur_dataset_attribute( char *name );
+extern int cmor_get_table_attr( char *szToken, cmor_table_t * table, char *);
+
+extern int cmor_dataset_json(char *rcfile);
+
+extern int cmor_CreateFromTemplate(int vid, char *template, char *outpath,
+                                   char *sep);
+
+extern int cmor_addVersion(void);
+
+extern int cmor_set_associated_file(int var_id, int nVarRefTblID );
+
+extern int cmor_mkdir(const char *dir);
+extern int cmor_create_filename(char *outname, int vid );
+extern int cmor_IsFixed(int var_id);
+extern int cmor_addRIPF(char *);
+extern int cmor_set_refvar( int var_id, int *refvar, int ntimes_passed );
+extern int cmor_dataset( char *outpath,
+			 char *experiment_id,
+			 char *institution,
+			 char *source,
+			 char *calendar,
+			 int realization,
+			 char *contact,
+			 char *history,
+			 char *comment,
+			 char *references,
+			 int leap_year,
+			 int leap_month,
+			 int month_lengths[12],
+			 char *model_id,
+			 char *forcing,
+			 int initialization_method,
+			 int physics_version,
+			 char *institute_id,
+			 char *parent_experiment_id,
+			 double *branch_time,
+			 char *parent_experiment_rip );
+extern int strncpytrim( char *out, char *in, int max );
+extern int cmor_convert_string_to_list( char *values, char type,
+					void **target, int *nelts );
+extern int cmor_define_zfactors_vars( int var_id, int ncid, int *nc_dim,
+				      char *formula_terms, int *nzfactors,
+				      int *zfactors, int *nc_zfactors,
+				      int i, int dim_bnds );
+extern int cmor_create_output_path( int var_id, char *outpath );
+extern double cmor_convert_interval_to_seconds( double val, char *units );
+extern int cmor_validateFilename(char *outname, int var_id);
+
+extern int cmor_write( int var_id, void *data, char type,
+		       int ntimes_passed, double *time_vals,
+		       double *time_bounds, int *refvar );
+extern int cmor_close_variable( int var_id, char *file_name,
+				int *preserve );
+extern int cmor_close( void );
+
+extern int cmor_writeGblAttr(int var_id, int ncid, int ncafid);
+extern void cmor_setGblAttr( int );
+
+extern void cmor_generate_uuid( void );
+extern void cmor_define_dimensions(int var_id, int ncid,
+                            int ncafid, double *time_bounds,
+                            int *nc_dim,
+                            int *nc_vars, int *nc_bnds_vars,
+                            int *nc_vars_af,
+                            size_t *nc_dim_chunking, int *dim_bnds,
+                            int *zfactors, int *nc_zfactors,
+                            int *nc_dim_af);
+extern void cmor_create_var_attributes(int var_id, int ncid, int ncafid,
+                                       int *nc_vars, int *nc_bnds_vars,
+                                       int *nc_vars_af, int *nc_associated_vars,
+                                       int *nc_singletons, int *nc_singletons_bnds,
+                                       int *nc_zfactors, int *zfactors, int nzfactors,
+                                       size_t *nc_dim_chunking, char *outname);
+
+extern int cmor_grids_def(int var_id, int nGridID, int ncafid, int *nc_dim_af);
+extern void create_singleton_dimensions(int var_id, int ncid,
+        int *nc_singletons, int *nc_singletons_bnds, int *dim_bnds);
+
+
+
+
+/* ==================================================================== */
+/*      Control Vocabulary                                              */
+/* ==================================================================== */
+
+
+extern void cmor_CV_checkISOTime(char *szAttribute);
+extern void cmor_CV_set_att(cmor_CV_def_t *CV,
+                                char *key,
+                                json_object *joValue);
+extern void cmor_CV_checkExperiment( cmor_CV_def_t *CV);
+extern void cmor_CV_checkSourceID(cmor_CV_def_t *CV);
+extern void cmor_CV_checkSourceType(cmor_CV_def_t *CV, char *);
+
+extern int cmor_attNameCmp(const void *v1, const void *v2);
+
+extern void cmor_CV_checkGblAttributes( cmor_CV_def_t *CV );
+extern void cmor_CV_free(cmor_CV_def_t *CV);
+extern char *cmor_CV_get_value(cmor_CV_def_t *CV, char *key);
+extern void cmor_CV_init( cmor_CV_def_t *CV, int table_id );
+extern void cmor_CV_print(cmor_CV_def_t *CV);
+extern void cmor_CV_printall( void );
+extern cmor_CV_def_t *cmor_CV_search_child_key(cmor_CV_def_t *CV, char *key);
+extern cmor_CV_def_t * cmor_CV_rootsearch(cmor_CV_def_t *CV, char *key);
+
+extern void cmor_CV_checkFurtherInfoURL(int var_id);
+extern void cmor_CV_checkGrids(cmor_CV_def_t *CV);
+extern void cmor_CV_setInstitution( cmor_CV_def_t *CV);
+
+extern int cmor_CV_set_entry(cmor_table_t* table, json_object *value);
+extern int  cmor_CV_ValidateGblAttributes( char *name);
+extern int cmor_CV_ValidateAttribute(cmor_CV_def_t *CV, char *szValue);
+
+
+
+/* ==================================================================== */
+/*      cmor_axis.c                                                     */
+/* ==================================================================== */
+
+extern void cmor_init_axis_def( cmor_axis_def_t * axis, int table_id );
+extern int cmor_set_axis_def_att( cmor_axis_def_t * axis,
+				  char att[CMOR_MAX_STRING],
+				  char val[CMOR_MAX_STRING] );
+extern void cmor_trim_string( char *in, char *out );
+extern int cmor_calendar_c2i( char *calendar, cdCalenType * ical );
+extern int cmor_convert_time_units( char *inunits, char *outunits,
+				    char *loutunits );
+
+extern void cmor_write_all_attributes(int ncid, int ncafid, int var_id);
+
+extern int cmor_convert_time_values( void *values_in, char type,
+				     int nvalues, double *values_out,
+				     char *inunits, char *outunits,
+				     char *calin, char *calout );
+extern int cmor_set_axis_attribute( int id, char *attribute_name,
+				    char type, void *value );
+extern int cmor_get_axis_attribute( int id, char *attribute_name,
+				    char type, void *value );
+extern int cmor_has_axis_attribute( int id, char *attribute_name );
+extern int cmor_check_values_inside_bounds( double *values, double *bounds,
+					    int length, char *name );
+extern int cmor_check_monotonic( double *values, int length, char *name,
+				 int isbounds, int axis_id );
+extern int cmor_treat_axis_values( int axis_id, double *values, int length,
+				   int n_requested, char *units,
+				   char *name, int isbounds );
+extern int cmor_check_interval( int axis_id, char *interval,
+				double *values, int nvalues,
+				int isbounds );
+extern int cmor_axis( int *axis_id, char *name, char *units, int length,
+		      void *coord_vals, char type, void *cell_bounds,
+		      int cell_bounds_ndim, char *interval );
+/* ==================================================================== */
+/*       cmor_variable.c                                                */
+/* ==================================================================== */
+
+extern void cmor_init_var_def( cmor_var_def_t * var, int table_id );
+extern int cmor_is_required_variable_attribute( cmor_var_def_t var,
+						char *attribute_name );
+extern int cmor_has_required_variable_attributes( int var_id );
+extern int cmor_set_variable_attribute( int id, char *attribute_name,
+					char type, void *value );
+extern int cmor_get_variable_attribute( int id, char *attribute_name,
+					void *value );
+extern int cmor_has_variable_attribute( int id, char *attribute_name );
+extern int cmor_get_variable_attribute_names( int id, int *nattributes,
+					      char
+					      attributes_names[]
+					      [CMOR_MAX_STRING] );
+extern int cmor_get_variable_attribute_type( int id, char *attribute_name,
+					     char *type );
+extern int cmor_zfactor( int *zvar_id, int axis_id, char *name,
+			 char *units, int ndims, int axes_ids[], char type,
+			 void *values, void *bounds );
+extern int cmor_update_history( int var_id, char *add );
+extern int cmor_variable( int *var_id, char *name, char *units, int ndims,
+			  int axes_ids[], char type, void *missing,
+			  double *tolerance, char *positive,
+			  char *original_name, char *history,
+			  char *comment );
+extern int cmor_set_deflate( int var_id, int shuffle,
+                             int deflate, int deflate_level );
+
+extern int cmor_set_var_def_att( cmor_var_def_t * var,
+				 char att[CMOR_MAX_STRING],
+				 char val[CMOR_MAX_STRING] );
+extern int cmor_get_variable_time_length( int *var_id, int *length );
+extern int cmor_get_original_shape( int *var_id, int *shape_array,
+				    int *rank, int blank_time );
+extern int cmor_write_var_to_file( int ncid, cmor_var_t * avar, void *data,
+				   char itype, int ntimes_passed,
+				   double *time_vals,
+				   double *time_bounds );
+/* ==================================================================== */
+/*      cmor_grid.c                                                     */
+/* ==================================================================== */
+
+extern void cmor_set_mapping_attribute( cmor_mappings_t * mapping,
+					char att[CMOR_MAX_STRING],
+					char val[CMOR_MAX_STRING] );
+extern void cmor_init_grid_mapping( cmor_mappings_t * mapping, char *id );
+extern int cmor_copy_data( double **dest1, void *data, char type,
+			   int nelts );
+extern int cmor_has_grid_attribute( int gid, char *name );
+extern int cmor_get_grid_attribute( int gid, char *name, double *value );
+extern void cmor_convert_value( char *units, char *ctmp, double *tmp );
+extern int cmor_set_grid_attribute( int gid, char *name, double *value,
+				    char *units );
+extern int cmor_attribute_in_list( char *name, int n,
+				   char ( *atts )[CMOR_MAX_STRING] );
+extern int cmor_grid_valid_mapping_attribute_names( char *name, int *natt,
+						    char ( *att )
+						    [CMOR_MAX_STRING],
+						    int *ndims,
+						    char ( *dims )
+						    [CMOR_MAX_STRING] );
+extern int cmor_set_grid_mapping( int gid, char *name, int nparam,
+				  char **attributes_names, int lparams,
+				  double
+				  attributes_values
+				  [CMOR_MAX_GRID_ATTRIBUTES], char **units,
+				  int lnunits );
+extern int cmor_grid( int *grid_id, int ndims, int *axes_ids, char type,
+		      void *lat, void *lon, int nvertices, void *blat,
+		      void *blon );
+extern void cmor_init_table( cmor_table_t * table, int id );
+extern int cmor_set_dataset_att( cmor_table_t * table,
+				 char att[CMOR_MAX_STRING],
+				 char val[CMOR_MAX_STRING] );
+extern int cmor_set_experiment( cmor_table_t * table,
+                                char *att,
+                                char *var );
+
+extern int cmor_set_axis_entry(cmor_table_t* table,
+                               char *axis_entry,
+                               json_object *json);
+
+extern int cmor_set_variable_entry(cmor_table_t* table,
+                            char *variable_entry,
+                            json_object *json);
+
+extern int cmor_set_table( int table );
+extern int cmor_load_table( char table[CMOR_MAX_STRING], int *table_id );
+extern int cmor_load_table_internal( char table[CMOR_MAX_STRING],
+                                     int *table_id, int );
+
+extern json_object *cmor_open_inpathFile( char *szFilename);
+
+extern int cmor_load_ressources( char *szFilename );
+
+extern int cmor_time_varying_grid_coordinate( int *coord_grid_id,
+					      int grid_id, char *name,
+					      char *units, char type,
+					      void *missing,
+					      int *coordinate_type );
+extern void cmor_cat_unique_string( char *dest, char *src );
+extern int cmor_stringinstring( char *dest, char *src );
+extern void cmor_checkMissing(int varid, int var_id, char type);
+extern char *cmor_getFinalFilename( void );
 
-extern void cmor_md5 (FILE *inputfile,unsigned char checksum[16]);
-
-extern void cmor_is_setup(void);
-extern void cmor_add_traceback(char *name);
-extern void cmor_pop_traceback(void);
-extern int cmor_prep_units(char *uunits, char *cunits, ut_unit **user_units,ut_unit **cmor_units,cv_converter **ut_cmor_converter);
-extern int cmor_have_NetCDF4(void);
-extern int cmor_have_NetCDF41min(void);
-extern int cmor_have_NetCDF3(void);
-extern int cmor_have_NetCDF363(void);
-extern void cmor_handle_error(char error_msg[CMOR_MAX_STRING],int level);
-extern int cmor_setup(char *path,int *netcdf, int *verbosity, int *mode, char *logfile, int *cmor_create_subdirectories);
-extern int cmor_put_nc_num_attribute(int ncid,int nc_var_id,char *name, char type, double value, char *var_name);
-extern int cmor_put_nc_char_attribute(int ncid,int nc_var_id,char *name,char *value,char *var_name);
-extern int cmor_set_cur_dataset_attribute(char *name, char *value, int optional);
-extern int cmor_get_cur_dataset_attribute(char *name, char *value);
-extern int cmor_has_cur_dataset_attribute(char *name);
-extern int cmor_dataset(char *outpath, 
-			char *experiment_id,
-			char *institution, 
-			char *source,   
-			char *calendar, 
-			int realization, 
-			char *contact, 
-			char *history, 
-			char *comment, 
-			char *references,	 
-			int leap_year, 
-			int leap_month, 
-			int month_lengths[12],
-			char *model_id,
-			char *forcing,
-			int initialization_method,
-			int physics_version,
-			char *institute_id,
-			char *parent_experiment_id,
-			double *branch_time,
-			char *parent_experiment_rip);
-extern int strncpytrim(char *out, char *in, int max);
-extern int cmor_convert_string_to_list(char *values,char type, void **target, int *nelts);
-extern int cmor_define_zfactors_vars(int var_id,int ncid, int *nc_dim,char *formula_terms,int *nzfactors, int *zfactors, int *nc_zfactors,int i,int dim_bnds);
-extern int cmor_create_output_path(int var_id,char *outpath);
-extern double cmor_convert_interval_to_seconds(double val, char *units);
-extern int cmor_write(int var_id,void *data, char type, char *suffix, int ntimes_passed, double *time_vals, double *time_bounds, int *refvar);
-extern int cmor_close_variable(int var_id, char *file_name, int *preserve);
-extern int cmor_close(void);
-/* cmor_axis.c */
-extern void cmor_init_axis_def(cmor_axis_def_t *axis, int table_id);
-extern int cmor_set_axis_def_att(cmor_axis_def_t *axis,char att[CMOR_MAX_STRING],char val[CMOR_MAX_STRING] );
-extern void cmor_trim_string(char *in,char *out);
-extern int cmor_calendar_c2i(char *calendar, cdCalenType *ical);
-extern int cmor_convert_time_units( char *inunits, char *outunits, char *loutunits);
-extern int cmor_convert_time_values( void *values_in, char type, int nvalues, double *values_out, char *inunits, char *outunits, char *calin, char *calout);
-extern int cmor_set_axis_attribute(int id, char *attribute_name, char type, void *value);
-extern int cmor_get_axis_attribute(int id, char *attribute_name, char type, void *value);
-extern int cmor_has_axis_attribute(int id, char *attribute_name);
-extern int cmor_check_values_inside_bounds(double *values,double *bounds, int length, char *name);
-extern int cmor_check_monotonic(double *values,int length, char *name,int isbounds, int axis_id);
-extern int cmor_treat_axis_values(int axis_id, double *values, int length, int n_requested, char *units, char *name, int isbounds);
-extern int cmor_check_interval(int axis_id, char *interval, double *values, int nvalues, int isbounds);
-extern int cmor_axis(int *axis_id, char *name,char *units, int length,void *coord_vals, char type, void *cell_bounds,int cell_bounds_ndim,char *interval);
-/* cmor_variable.c */
-extern void cmor_init_var_def(cmor_var_def_t *var, int table_id);
-extern int cmor_is_required_variable_attribute(cmor_var_def_t var, char *attribute_name);
-extern int cmor_has_required_variable_attributes(int var_id);
-extern int cmor_set_variable_attribute(int id, char *attribute_name, char type, void *value);
-extern int cmor_get_variable_attribute(int id, char *attribute_name, void *value);
-extern int cmor_has_variable_attribute(int id, char *attribute_name);
-extern int cmor_get_variable_attribute_names(int id, int *nattributes,char attributes_names[][CMOR_MAX_STRING]);
-extern int cmor_get_variable_attribute_type(int id, char *attribute_name, char *type);
-extern int cmor_zfactor (int *zvar_id,int axis_id, char *name, char *units, int ndims, int axes_ids[], char type, void *values, void *bounds);
-extern int cmor_update_history(int var_id,char *add);
-extern int cmor_variable(int *var_id, char *name, char *units, int ndims, int axes_ids[], char type, void *missing, double *tolerance, char *positive, char*original_name, char *history, char *comment);
-extern int cmor_set_var_def_att(cmor_var_def_t *var,char att[CMOR_MAX_STRING],char val[CMOR_MAX_STRING] );
-extern int cmor_get_variable_time_length(int *var_id, int *length);
-extern int cmor_get_original_shape(int *var_id, int *shape_array, int *rank, int blank_time);
-extern int cmor_write_var_to_file(int ncid,cmor_var_t *avar,void *data,char itype, int ntimes_passed, double *time_vals, double *time_bounds);
-/* cmor_grid.c */
-extern void cmor_set_mapping_attribute(cmor_mappings_t *mapping,char att[CMOR_MAX_STRING],char val[CMOR_MAX_STRING] );
-extern void cmor_init_grid_mapping(cmor_mappings_t *mapping,char *id);
-extern int cmor_copy_data(double **dest1, void *data, char type, int nelts);
-extern int cmor_has_grid_attribute(int gid, char *name);
-extern int cmor_get_grid_attribute(int gid, char *name, double *value);
-extern void cmor_convert_value(char *units,char *ctmp,double *tmp);
-extern int cmor_set_grid_attribute(int gid, char *name, double *value, char *units);
-extern int cmor_attribute_in_list(char *name, int n, char (*atts)[CMOR_MAX_STRING]);
-extern int cmor_grid_valid_mapping_attribute_names(char *name, int *natt, char (*att)[CMOR_MAX_STRING],int *ndims, char (*dims)[CMOR_MAX_STRING]);
-extern int cmor_set_grid_mapping(int gid, char *name, int nparam, char **attributes_names, int lparams, double attributes_values[CMOR_MAX_GRID_ATTRIBUTES], char **units, int lnunits );
-extern int cmor_grid(int *grid_id, int ndims, int *axes_ids, char type, void *lat, void *lon, int nvertices, void *blat, void *blon);
-extern void cmor_init_table(cmor_table_t *table, int id);
-extern int cmor_set_dataset_att(cmor_table_t *table, char att[CMOR_MAX_STRING],char val[CMOR_MAX_STRING] );
-extern int cmor_set_table(int table);
-extern int cmor_load_table(char table[CMOR_MAX_STRING], int *table_id);
-extern int cmor_time_varying_grid_coordinate(int *coord_grid_id, int  grid_id, char *name, char *units, char type, void *missing, int *coordinate_type);
-extern void cmor_cat_unique_string (char* dest, char* src);
-extern int cmor_stringinstring (char* dest, char* src);
 #endif
diff --git a/include/cmor_locale.h b/include/cmor_locale.h
new file mode 100644
index 0000000..93fe01b
--- /dev/null
+++ b/include/cmor_locale.h
@@ -0,0 +1,4 @@
+#ifndef _CMOR_LOCALE
+#define _CMOR_LOCALE
+#define CMOR_PREFIX  "/software/cmor/cmor"
+#endif
diff --git a/include/cmor_md5.h b/include/cmor_md5.h
index 5fcf5f0..579214c 100644
--- a/include/cmor_md5.h
+++ b/include/cmor_md5.h
@@ -1,30 +1,29 @@
-/* See md5.c for explanation and copyright information.  */
-
-/*
- * $FreeBSD: src/contrib/cvs/lib/md5.h,v 1.2 1999/12/11 15:10:02 peter Exp $
- */
 
 #ifndef MD5_H
 #define MD5_H
 
-/* Unlike previous versions of this code, uint32 need not be exactly
-   32 bits, merely 32 bits or more.  Choosing a data type which is 32
-   bits instead of 64 is not important; speed is considerably more
-   important.  ANSI guarantees that "unsigned long" will be big enough,
-   and always using it seems to have few disadvantages.  */
+/* -------------------------------------------------------------------- */
+/*      Unlike previous versions of this code, uint32 need not be       */
+/*      exactly 32 bits, merely 32 bits or more.  Choosing a data       */
+/*      type which is 32 bits instead of 64 is not important; speed     */
+/*      is considerably more important.  ANSI guarantees that           */
+/*      "unsigned long" will be big enough, and always using it         */
+/*      seems to have few disadvantages.                                */
+/* -------------------------------------------------------------------- */
 typedef unsigned long cvs_uint32;
 
 struct cvs_MD5Context {
-	cvs_uint32 buf[4];
-	cvs_uint32 bits[2];
-	unsigned char in[64];
+    cvs_uint32 buf[4];
+    cvs_uint32 bits[2];
+    unsigned char in[64];
 };
 
-void cvs_MD5Init PROTO ((struct cvs_MD5Context *context));
-void cvs_MD5Update PROTO ((struct cvs_MD5Context *context,
-			   unsigned char const *buf, unsigned len));
-void cvs_MD5Final PROTO ((unsigned char digest[16],
-			  struct cvs_MD5Context *context));
-void cvs_MD5Transform PROTO ((cvs_uint32 buf[4], const unsigned char in[64]));
+void cvs_MD5Init PROTO( ( struct cvs_MD5Context * context ) );
+void cvs_MD5Update PROTO( ( struct cvs_MD5Context * context,
+			    unsigned char const *buf, unsigned len ) );
+void cvs_MD5Final PROTO( ( unsigned char digest[16],
+			   struct cvs_MD5Context * context ) );
+void cvs_MD5Transform
+PROTO( ( cvs_uint32 buf[4], const unsigned char in[64] ) );
 
-#endif /* !MD5_H */
+#endif				/* !MD5_H */
diff --git a/include/cmor_users_functions.mod b/include/cmor_users_functions.mod
new file mode 100644
index 0000000..8449c86
Binary files /dev/null and b/include/cmor_users_functions.mod differ
diff --git a/include/json-c/arraylist.h b/include/json-c/arraylist.h
new file mode 100644
index 0000000..caecdfa
--- /dev/null
+++ b/include/json-c/arraylist.h
@@ -0,0 +1,61 @@
+/*
+ * $Id: arraylist.h,v 1.4 2006/01/26 02:16:28 mclark Exp $
+ *
+ * Copyright (c) 2004, 2005 Metaparadigm Pte. Ltd.
+ * Michael Clark <michael at metaparadigm.com>
+ *
+ * This library is free software; you can redistribute it and/or modify
+ * it under the terms of the MIT license. See COPYING for details.
+ *
+ */
+
+#ifndef _arraylist_h_
+#define _arraylist_h_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define ARRAY_LIST_DEFAULT_SIZE 32
+
+typedef void (array_list_free_fn) (void *data);
+
+struct array_list
+{
+  void **array;
+  int length;
+  int size;
+  array_list_free_fn *free_fn;
+};
+
+extern struct array_list*
+array_list_new(array_list_free_fn *free_fn);
+
+extern void
+array_list_free(struct array_list *al);
+
+extern void*
+array_list_get_idx(struct array_list *al, int i);
+
+extern int
+array_list_put_idx(struct array_list *al, int i, void *data);
+
+extern int
+array_list_add(struct array_list *al, void *data);
+
+extern int
+array_list_length(struct array_list *al);
+
+extern void
+array_list_sort(struct array_list *arr, int(*compar)(const void *, const void *));
+
+extern void* array_list_bsearch(const void **key,
+		struct array_list *arr,
+		int (*sort_fn)(const void *, const void *));
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/include/json-c/bits.h b/include/json-c/bits.h
new file mode 100644
index 0000000..d14a1db
--- /dev/null
+++ b/include/json-c/bits.h
@@ -0,0 +1,35 @@
+/**
+ * @file
+ * @deprecated Use json_util.h instead.
+ *
+ * $Id: bits.h,v 1.10 2006/01/30 23:07:57 mclark Exp $
+ *
+ * Copyright (c) 2004, 2005 Metaparadigm Pte. Ltd.
+ * Michael Clark <michael at metaparadigm.com>
+ *
+ * This library is free software; you can redistribute it and/or modify
+ * it under the terms of the MIT license. See COPYING for details.
+ *
+ */
+
+#ifndef _bits_h_
+#define _bits_h_
+
+/**
+ * @deprecated
+ */
+#define hexdigit(x) (((x) <= '9') ? (x) - '0' : ((x) & 7) + 9)
+/**
+ * @deprecated
+ */
+#define error_ptr(error) ((void*)error)
+/**
+ * @deprecated
+ */
+#define error_description(error)  (json_tokener_get_error(error))
+/**
+ * @deprecated
+ */
+#define is_error(ptr) (ptr == NULL)
+
+#endif
diff --git a/include/json-c/config.h b/include/json-c/config.h
new file mode 100644
index 0000000..018a17f
--- /dev/null
+++ b/include/json-c/config.h
@@ -0,0 +1,175 @@
+/* config.h.  Generated from config.h.in by configure.  */
+/* config.h.in.  Generated from configure.ac by autoheader.  */
+
+/* Enable RDRANR Hardware RNG Hash Seed */
+/* #undef ENABLE_RDRAND */
+
+/* Define if .gnu.warning accepts long strings. */
+/* #undef HAS_GNU_WARNING_LONG */
+
+/* Define to 1 if you have the declaration of `INFINITY', and to 0 if you
+   don't. */
+#define HAVE_DECL_INFINITY 1
+
+/* Define to 1 if you have the declaration of `isinf', and to 0 if you don't.
+   */
+#define HAVE_DECL_ISINF 1
+
+/* Define to 1 if you have the declaration of `isnan', and to 0 if you don't.
+   */
+#define HAVE_DECL_ISNAN 1
+
+/* Define to 1 if you have the declaration of `nan', and to 0 if you don't. */
+#define HAVE_DECL_NAN 1
+
+/* Define to 1 if you have the declaration of `_finite', and to 0 if you
+   don't. */
+#define HAVE_DECL__FINITE 0
+
+/* Define to 1 if you have the declaration of `_isnan', and to 0 if you don't.
+   */
+#define HAVE_DECL__ISNAN 0
+
+/* Define to 1 if you have the <dlfcn.h> header file. */
+#define HAVE_DLFCN_H 1
+
+/* Define to 1 if you don't have `vprintf' but do have `_doprnt.' */
+/* #undef HAVE_DOPRNT */
+
+/* Define to 1 if you have the <endian.h> header file. */
+#define HAVE_ENDIAN_H 1
+
+/* Define to 1 if you have the <fcntl.h> header file. */
+#define HAVE_FCNTL_H 1
+
+/* Define to 1 if you have the <inttypes.h> header file. */
+#define HAVE_INTTYPES_H 1
+
+/* Define to 1 if you have the <limits.h> header file. */
+#define HAVE_LIMITS_H 1
+
+/* Define to 1 if you have the <locale.h> header file. */
+#define HAVE_LOCALE_H 1
+
+/* Define to 1 if your system has a GNU libc compatible `malloc' function, and
+   to 0 otherwise. */
+#define HAVE_MALLOC 1
+
+/* Define to 1 if you have the <memory.h> header file. */
+#define HAVE_MEMORY_H 1
+
+/* Define to 1 if you have the `open' function. */
+#define HAVE_OPEN 1
+
+/* Define to 1 if your system has a GNU libc compatible `realloc' function,
+   and to 0 otherwise. */
+#define HAVE_REALLOC 1
+
+/* Define to 1 if you have the `setlocale' function. */
+#define HAVE_SETLOCALE 1
+
+/* Define to 1 if you have the `snprintf' function. */
+#define HAVE_SNPRINTF 1
+
+/* Define to 1 if you have the <stdarg.h> header file. */
+#define HAVE_STDARG_H 1
+
+/* Define to 1 if you have the <stdint.h> header file. */
+#define HAVE_STDINT_H 1
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+#define HAVE_STDLIB_H 1
+
+/* Define to 1 if you have the `strcasecmp' function. */
+#define HAVE_STRCASECMP 1
+
+/* Define to 1 if you have the `strdup' function. */
+#define HAVE_STRDUP 1
+
+/* Define to 1 if you have the `strerror' function. */
+#define HAVE_STRERROR 1
+
+/* Define to 1 if you have the <strings.h> header file. */
+#define HAVE_STRINGS_H 1
+
+/* Define to 1 if you have the <string.h> header file. */
+#define HAVE_STRING_H 1
+
+/* Define to 1 if you have the `strncasecmp' function. */
+#define HAVE_STRNCASECMP 1
+
+/* Define to 1 if you have the <syslog.h> header file. */
+#define HAVE_SYSLOG_H 1
+
+/* Define to 1 if you have the <sys/cdefs.h> header file. */
+#define HAVE_SYS_CDEFS_H 1
+
+/* Define to 1 if you have the <sys/param.h> header file. */
+#define HAVE_SYS_PARAM_H 1
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#define HAVE_SYS_STAT_H 1
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#define HAVE_SYS_TYPES_H 1
+
+/* Define to 1 if you have the <unistd.h> header file. */
+#define HAVE_UNISTD_H 1
+
+/* Define to 1 if you have the `vasprintf' function. */
+#define HAVE_VASPRINTF 1
+
+/* Define to 1 if you have the `vprintf' function. */
+#define HAVE_VPRINTF 1
+
+/* Define to 1 if you have the `vsnprintf' function. */
+#define HAVE_VSNPRINTF 1
+
+/* Define to 1 if you have the `vsyslog' function. */
+#define HAVE_VSYSLOG 1
+
+/* Public define for json_inttypes.h */
+#define JSON_C_HAVE_INTTYPES_H 1
+
+/* Define to the sub-directory in which libtool stores uninstalled libraries.
+   */
+#define LT_OBJDIR ".libs/"
+
+/* Name of package */
+#define PACKAGE "json-c"
+
+/* Define to the address where bug reports for this package should be sent. */
+#define PACKAGE_BUGREPORT "json-c at googlegroups.com"
+
+/* Define to the full name of this package. */
+#define PACKAGE_NAME "json-c"
+
+/* Define to the full name and version of this package. */
+#define PACKAGE_STRING "json-c 0.12"
+
+/* Define to the one symbol short name of this package. */
+#define PACKAGE_TARNAME "json-c"
+
+/* Define to the home page for this package. */
+#define PACKAGE_URL ""
+
+/* Define to the version of this package. */
+#define PACKAGE_VERSION "0.12"
+
+/* Define to 1 if you have the ANSI C header files. */
+#define STDC_HEADERS 1
+
+/* Version number of package */
+#define VERSION "0.12"
+
+/* Define to empty if `const' does not conform to ANSI C. */
+/* #undef const */
+
+/* Define to rpl_malloc if the replacement function should be used. */
+/* #undef malloc */
+
+/* Define to rpl_realloc if the replacement function should be used. */
+/* #undef realloc */
+
+/* Define to `unsigned int' if <sys/types.h> does not define. */
+/* #undef size_t */
diff --git a/include/json-c/debug.h b/include/json-c/debug.h
new file mode 100644
index 0000000..80ca3e4
--- /dev/null
+++ b/include/json-c/debug.h
@@ -0,0 +1,71 @@
+/*
+ * $Id: debug.h,v 1.5 2006/01/30 23:07:57 mclark Exp $
+ *
+ * Copyright (c) 2004, 2005 Metaparadigm Pte. Ltd.
+ * Michael Clark <michael at metaparadigm.com>
+ * Copyright (c) 2009 Hewlett-Packard Development Company, L.P.
+ *
+ * This library is free software; you can redistribute it and/or modify
+ * it under the terms of the MIT license. See COPYING for details.
+ *
+ */
+
+#ifndef _DEBUG_H_
+#define _DEBUG_H_
+
+#include <stdlib.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+extern void mc_set_debug(int debug);
+extern int mc_get_debug(void);
+
+extern void mc_set_syslog(int syslog);
+
+extern void mc_debug(const char *msg, ...);
+extern void mc_error(const char *msg, ...);
+extern void mc_info(const char *msg, ...);
+
+#ifndef __STRING
+#define __STRING(x) #x
+#endif
+
+#ifndef PARSER_BROKEN_FIXED
+
+#define JASSERT(cond) do {} while(0)
+
+#else
+
+#define JASSERT(cond) do { \
+		if (!(cond)) { \
+			mc_error("cjson assert failure %s:%d : cond \"" __STRING(cond) "failed\n", __FILE__, __LINE__); \
+			*(int *)0 = 1;\
+			abort(); \
+		}\
+	} while(0)
+
+#endif
+
+#define MC_ERROR(x, ...) mc_error(x, ##__VA_ARGS__)
+
+#ifdef MC_MAINTAINER_MODE
+#define MC_SET_DEBUG(x) mc_set_debug(x)
+#define MC_GET_DEBUG() mc_get_debug()
+#define MC_SET_SYSLOG(x) mc_set_syslog(x)
+#define MC_DEBUG(x, ...) mc_debug(x, ##__VA_ARGS__)
+#define MC_INFO(x, ...) mc_info(x, ##__VA_ARGS__)
+#else
+#define MC_SET_DEBUG(x) if (0) mc_set_debug(x)
+#define MC_GET_DEBUG() (0)
+#define MC_SET_SYSLOG(x) if (0) mc_set_syslog(x)
+#define MC_DEBUG(x, ...) if (0) mc_debug(x, ##__VA_ARGS__)
+#define MC_INFO(x, ...) if (0) mc_info(x, ##__VA_ARGS__)
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/include/json-c/json.h b/include/json-c/json.h
new file mode 100644
index 0000000..e198f5d
--- /dev/null
+++ b/include/json-c/json.h
@@ -0,0 +1,33 @@
+/*
+ * $Id: json.h,v 1.6 2006/01/26 02:16:28 mclark Exp $
+ *
+ * Copyright (c) 2004, 2005 Metaparadigm Pte. Ltd.
+ * Michael Clark <michael at metaparadigm.com>
+ * Copyright (c) 2009 Hewlett-Packard Development Company, L.P.
+ *
+ * This library is free software; you can redistribute it and/or modify
+ * it under the terms of the MIT license. See COPYING for details.
+ *
+ */
+
+#ifndef _json_h_
+#define _json_h_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include "debug.h"
+#include "linkhash.h"
+#include "arraylist.h"
+#include "json_util.h"
+#include "json_object.h"
+#include "json_tokener.h"
+#include "json_object_iterator.h"
+#include "json_c_version.h"
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/include/json-c/json_c_version.h b/include/json-c/json_c_version.h
new file mode 100644
index 0000000..d77f1a7
--- /dev/null
+++ b/include/json-c/json_c_version.h
@@ -0,0 +1,22 @@
+/*
+ * Copyright (c) 2012 Eric Haszlakiewicz
+ *
+ * This library is free software; you can redistribute it and/or modify
+ * it under the terms of the MIT license. See COPYING for details.
+ */
+
+#ifndef _json_c_version_h_
+#define _json_c_version_h_
+
+#define JSON_C_MAJOR_VERSION 0
+#define JSON_C_MINOR_VERSION 12
+#define JSON_C_MICRO_VERSION 99
+#define JSON_C_VERSION_NUM ((JSON_C_MAJOR_VERSION << 16) | \
+                            (JSON_C_MINOR_VERSION << 8) | \
+                            JSON_C_MICRO_VERSION)
+#define JSON_C_VERSION "0.12.99"
+
+const char *json_c_version(void); /* Returns JSON_C_VERSION */
+int json_c_version_num(void);     /* Returns JSON_C_VERSION_NUM */
+
+#endif
diff --git a/include/json-c/json_config.h b/include/json-c/json_config.h
new file mode 100644
index 0000000..965ff1c
--- /dev/null
+++ b/include/json-c/json_config.h
@@ -0,0 +1,4 @@
+/* json_config.h.  Generated from json_config.h.in by configure.  */
+
+/* Define to 1 if you have the <inttypes.h> header file. */
+#define JSON_C_HAVE_INTTYPES_H 1
diff --git a/include/json-c/json_inttypes.h b/include/json-c/json_inttypes.h
new file mode 100644
index 0000000..e86f4cc
--- /dev/null
+++ b/include/json-c/json_inttypes.h
@@ -0,0 +1,19 @@
+
+#ifndef _json_inttypes_h_
+#define _json_inttypes_h_
+
+#include "json_config.h"
+
+#ifdef JSON_C_HAVE_INTTYPES_H
+/* inttypes.h includes stdint.h */
+#include <inttypes.h>
+
+#else
+#include <stdint.h>
+
+#define PRId64 "I64d"
+#define SCNd64 "I64d"
+
+#endif
+
+#endif
diff --git a/include/json-c/json_object.h b/include/json-c/json_object.h
new file mode 100644
index 0000000..99b8edf
--- /dev/null
+++ b/include/json-c/json_object.h
@@ -0,0 +1,698 @@
+/*
+ * $Id: json_object.h,v 1.12 2006/01/30 23:07:57 mclark Exp $
+ *
+ * Copyright (c) 2004, 2005 Metaparadigm Pte. Ltd.
+ * Michael Clark <michael at metaparadigm.com>
+ * Copyright (c) 2009 Hewlett-Packard Development Company, L.P.
+ *
+ * This library is free software; you can redistribute it and/or modify
+ * it under the terms of the MIT license. See COPYING for details.
+ *
+ */
+
+#ifndef _json_object_h_
+#define _json_object_h_
+
+#ifdef __GNUC__
+#define THIS_FUNCTION_IS_DEPRECATED(func) func __attribute__ ((deprecated))
+#elif defined(_MSC_VER)
+#define THIS_FUNCTION_IS_DEPRECATED(func) __declspec(deprecated) func
+#else
+#define THIS_FUNCTION_IS_DEPRECATED(func) func
+#endif
+
+#include "json_inttypes.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define JSON_OBJECT_DEF_HASH_ENTRIES 16
+
+/**
+ * A flag for the json_object_to_json_string_ext() and
+ * json_object_to_file_ext() functions which causes the output
+ * to have no extra whitespace or formatting applied.
+ */
+#define JSON_C_TO_STRING_PLAIN      0
+/**
+ * A flag for the json_object_to_json_string_ext() and
+ * json_object_to_file_ext() functions which causes the output to have
+ * minimal whitespace inserted to make things slightly more readable.
+ */
+#define JSON_C_TO_STRING_SPACED     (1<<0)
+/**
+ * A flag for the json_object_to_json_string_ext() and
+ * json_object_to_file_ext() functions which causes
+ * the output to be formatted.
+ *
+ * See the "Two Space Tab" option at http://jsonformatter.curiousconcept.com/
+ * for an example of the format.
+ */
+#define JSON_C_TO_STRING_PRETTY     (1<<1)
+/**
+ * A flag for the json_object_to_json_string_ext() and
+ * json_object_to_file_ext() functions which causes
+ * the output to be formatted.
+ *
+ * Instead of a "Two Space Tab" this gives a single tab character.
+ */
+#define JSON_C_TO_STRING_PRETTY_TAB (1<<3)
+/**
+ * A flag to drop trailing zero for float values
+ */
+#define JSON_C_TO_STRING_NOZERO     (1<<2)
+
+/**
+ * Don't escape forward slashes.
+ */
+#define JSON_C_TO_STRING_NOSLASHESCAPE (1<<4)
+
+/**
+ * A flag for the json_object_object_add_ex function which
+ * causes the value to be added without a check if it already exists.
+ * Note: it is the responsibilty of the caller to ensure that no
+ * key is added multiple times. If this is done, results are
+ * unpredictable. While this option is somewhat dangerous, it
+ * permits potentially large performance savings in code that
+ * knows for sure the key values are unique (e.g. because the
+ * code adds a well-known set of constant key values).
+ */
+#define JSON_C_OBJECT_ADD_KEY_IS_NEW (1<<1)
+/**
+ * A flag for the json_object_object_add_ex function which
+ * flags the key as being constant memory. This means that
+ * the key will NOT be copied via strdup(), resulting in a
+ * potentially huge performance win (malloc, strdup and
+ * free are usually performance hogs). It is acceptable to
+ * use this flag for keys in non-constant memory blocks if
+ * the caller ensure that the memory holding the key lives
+ * longer than the corresponding json object. However, this
+ * is somewhat dangerous and should only be done if really
+ * justified.
+ * The general use-case for this flag is cases where the
+ * key is given as a real constant value in the function
+ * call, e.g. as in
+ *   json_object_object_add_ex(obj, "ip", json,
+ *       JSON_C_OBJECT_KEY_IS_CONSTANT);
+ */
+#define JSON_C_OBJECT_KEY_IS_CONSTANT (1<<2)
+
+#undef FALSE
+#define FALSE ((json_bool)0)
+
+#undef TRUE
+#define TRUE ((json_bool)1)
+
+extern const char *json_number_chars;
+extern const char *json_hex_chars;
+
+/* CAW: added for ANSI C iteration correctness */
+struct json_object_iter
+{
+	char *key;
+	struct json_object *val;
+	struct lh_entry *entry;
+};
+
+/* forward structure definitions */
+
+typedef int json_bool;
+typedef struct printbuf printbuf;
+typedef struct lh_table lh_table;
+typedef struct array_list array_list;
+typedef struct json_object json_object;
+typedef struct json_object_iter json_object_iter;
+typedef struct json_tokener json_tokener;
+
+/**
+ * Type of custom user delete functions.  See json_object_set_serializer.
+ */
+typedef void (json_object_delete_fn)(struct json_object *jso, void *userdata);
+
+/**
+ * Type of a custom serialization function.  See json_object_set_serializer.
+ */
+typedef int (json_object_to_json_string_fn)(struct json_object *jso,
+						struct printbuf *pb,
+						int level,
+						int flags);
+
+/* supported object types */
+
+typedef enum json_type {
+  /* If you change this, be sure to update json_type_to_name() too */
+  json_type_null,
+  json_type_boolean,
+  json_type_double,
+  json_type_int,
+  json_type_object,
+  json_type_array,
+  json_type_string
+} json_type;
+
+/* reference counting functions */
+
+/**
+ * Increment the reference count of json_object, thereby grabbing shared
+ * ownership of obj.
+ *
+ * @param obj the json_object instance
+ */
+extern struct json_object* json_object_get(struct json_object *obj);
+
+/**
+ * Decrement the reference count of json_object and free if it reaches zero.
+ * You must have ownership of obj prior to doing this or you will cause an
+ * imbalance in the reference count.
+ *
+ * @param obj the json_object instance
+ * @returns 1 if the object was freed.
+ */
+int json_object_put(struct json_object *obj);
+
+/**
+ * Check if the json_object is of a given type
+ * @param obj the json_object instance
+ * @param type one of:
+     json_type_null (i.e. obj == NULL),
+     json_type_boolean,
+     json_type_double,
+     json_type_int,
+     json_type_object,
+     json_type_array,
+     json_type_string
+ */
+extern int json_object_is_type(const struct json_object *obj, enum json_type type);
+
+/**
+ * Get the type of the json_object.  See also json_type_to_name() to turn this
+ * into a string suitable, for instance, for logging.
+ *
+ * @param obj the json_object instance
+ * @returns type being one of:
+     json_type_null (i.e. obj == NULL),
+     json_type_boolean,
+     json_type_double,
+     json_type_int,
+     json_type_object,
+     json_type_array,
+     json_type_string
+ */
+extern enum json_type json_object_get_type(const struct json_object *obj);
+
+
+/** Stringify object to json format.
+ * Equivalent to json_object_to_json_string_ext(obj, JSON_C_TO_STRING_SPACED)
+ * The pointer you get is an internal of your json object. You don't
+ * have to free it, later use of json_object_put() should be sufficient.
+ * If you can not ensure there's no concurrent access to *obj use
+ * strdup().
+ * @param obj the json_object instance
+ * @returns a string in JSON format
+ */
+extern const char* json_object_to_json_string(struct json_object *obj);
+
+/** Stringify object to json format
+ * @see json_object_to_json_string() for details on how to free string.
+ * @param obj the json_object instance
+ * @param flags formatting options, see JSON_C_TO_STRING_PRETTY and other constants
+ * @returns a string in JSON format
+ */
+extern const char* json_object_to_json_string_ext(struct json_object *obj, int
+flags);
+
+/**
+ * Set a custom serialization function to be used when this particular object
+ * is converted to a string by json_object_to_json_string.
+ *
+ * If a custom serializer is already set on this object, any existing
+ * user_delete function is called before the new one is set.
+ *
+ * If to_string_func is NULL, the other parameters are ignored
+ * and the default behaviour is reset.
+ *
+ * The userdata parameter is optional and may be passed as NULL.  If provided,
+ * it is passed to to_string_func as-is.  This parameter may be NULL even
+ * if user_delete is non-NULL.
+ *
+ * The user_delete parameter is optional and may be passed as NULL, even if
+ * the userdata parameter is non-NULL.  It will be called just before the
+ * json_object is deleted, after it's reference count goes to zero
+ * (see json_object_put()).
+ * If this is not provided, it is up to the caller to free the userdata at
+ * an appropriate time. (i.e. after the json_object is deleted)
+ *
+ * @param jso the object to customize
+ * @param to_string_func the custom serialization function
+ * @param userdata an optional opaque cookie
+ * @param user_delete an optional function from freeing userdata
+ */
+extern void json_object_set_serializer(json_object *jso,
+	json_object_to_json_string_fn to_string_func,
+	void *userdata,
+	json_object_delete_fn *user_delete);
+
+/**
+ * Simply call free on the userdata pointer.
+ * Can be used with json_object_set_serializer().
+ *
+ * @param jso unused
+ * @param userdata the pointer that is passed to free().
+ */
+json_object_delete_fn json_object_free_userdata;
+
+/**
+ * Copy the jso->_userdata string over to pb as-is.
+ * Can be used with json_object_set_serializer().
+ *
+ * @param jso The object whose _userdata is used.
+ * @param pb The destination buffer.
+ * @param level Ignored.
+ * @param flags Ignored.
+ */
+json_object_to_json_string_fn json_object_userdata_to_json_string;
+
+
+/* object type methods */
+
+/** Create a new empty object with a reference count of 1.  The caller of
+ * this object initially has sole ownership.  Remember, when using
+ * json_object_object_add or json_object_array_put_idx, ownership will
+ * transfer to the object/array.  Call json_object_get if you want to maintain
+ * shared ownership or also add this object as a child of multiple objects or
+ * arrays.  Any ownerships you acquired but did not transfer must be released
+ * through json_object_put.
+ *
+ * @returns a json_object of type json_type_object
+ */
+extern struct json_object* json_object_new_object(void);
+
+/** Get the hashtable of a json_object of type json_type_object
+ * @param obj the json_object instance
+ * @returns a linkhash
+ */
+extern struct lh_table* json_object_get_object(const struct json_object *obj);
+
+/** Get the size of an object in terms of the number of fields it has.
+ * @param obj the json_object whose length to return
+ */
+extern int json_object_object_length(const struct json_object* obj);
+
+/** Add an object field to a json_object of type json_type_object
+ *
+ * The reference count will *not* be incremented. This is to make adding
+ * fields to objects in code more compact. If you want to retain a reference
+ * to an added object, independent of the lifetime of obj, you must wrap the
+ * passed object with json_object_get.
+ *
+ * Upon calling this, the ownership of val transfers to obj.  Thus you must
+ * make sure that you do in fact have ownership over this object.  For instance,
+ * json_object_new_object will give you ownership until you transfer it,
+ * whereas json_object_object_get does not.
+ *
+ * @param obj the json_object instance
+ * @param key the object field name (a private copy will be duplicated)
+ * @param val a json_object or NULL member to associate with the given field
+ *
+ * @return On success, <code>0</code> is returned.
+ * 	On error, a negative value is returned.
+ */
+extern int json_object_object_add(struct json_object* obj, const char *key,
+				   struct json_object *val);
+
+/** Add an object field to a json_object of type json_type_object
+ *
+ * The semantics are identical to json_object_object_add, except that an
+ * additional flag fields gives you more control over some detail aspects
+ * of processing. See the description of JSON_C_OBJECT_ADD_* flags for more
+ * details.
+ *
+ * @param obj the json_object instance
+ * @param key the object field name (a private copy will be duplicated)
+ * @param val a json_object or NULL member to associate with the given field
+ * @param opts process-modifying options. To specify multiple options, use 
+ *             arithmetic or (OPT1|OPT2)
+ */
+extern void json_object_object_add_ex(struct json_object* obj, const char *key,
+				   struct json_object *val, const unsigned opts);
+
+/** Get the json_object associate with a given object field
+ *
+ * *No* reference counts will be changed.  There is no need to manually adjust
+ * reference counts through the json_object_put/json_object_get methods unless
+ * you need to have the child (value) reference maintain a different lifetime
+ * than the owning parent (obj). Ownership of the returned value is retained
+ * by obj (do not do json_object_put unless you have done a json_object_get).
+ * If you delete the value from obj (json_object_object_del) and wish to access
+ * the returned reference afterwards, make sure you have first gotten shared
+ * ownership through json_object_get (& don't forget to do a json_object_put
+ * or transfer ownership to prevent a memory leak).
+ *
+ * @param obj the json_object instance
+ * @param key the object field name
+ * @returns the json_object associated with the given field name
+ * @deprecated Please use json_object_object_get_ex
+ */
+THIS_FUNCTION_IS_DEPRECATED(extern struct json_object* json_object_object_get(const struct json_object* obj,
+						  const char *key));
+
+/** Get the json_object associated with a given object field.
+ *
+ * This returns true if the key is found, false in all other cases (including
+ * if obj isn't a json_type_object).
+ *
+ * *No* reference counts will be changed.  There is no need to manually adjust
+ * reference counts through the json_object_put/json_object_get methods unless
+ * you need to have the child (value) reference maintain a different lifetime
+ * than the owning parent (obj).  Ownership of value is retained by obj.
+ *
+ * @param obj the json_object instance
+ * @param key the object field name
+ * @param value a pointer where to store a reference to the json_object
+ *              associated with the given field name.
+ *
+ *              It is safe to pass a NULL value.
+ * @returns whether or not the key exists
+ */
+extern json_bool json_object_object_get_ex(const struct json_object* obj,
+                                           const char *key,
+                                           struct json_object **value);
+
+/** Delete the given json_object field
+ *
+ * The reference count will be decremented for the deleted object.  If there
+ * are no more owners of the value represented by this key, then the value is
+ * freed.  Otherwise, the reference to the value will remain in memory.
+ *
+ * @param obj the json_object instance
+ * @param key the object field name
+ */
+extern void json_object_object_del(struct json_object* obj, const char *key);
+
+/**
+ * Iterate through all keys and values of an object.
+ *
+ * Adding keys to the object while iterating is NOT allowed.
+ *
+ * Deleting an existing key, or replacing an existing key with a
+ * new value IS allowed.
+ *
+ * @param obj the json_object instance
+ * @param key the local name for the char* key variable defined in the body
+ * @param val the local name for the json_object* object variable defined in
+ *            the body
+ */
+#if defined(__GNUC__) && !defined(__STRICT_ANSI__) && __STDC_VERSION__ >= 199901L
+
+# define json_object_object_foreach(obj,key,val) \
+	char *key = NULL; \
+	struct json_object *val __attribute__((__unused__)) = NULL; \
+	for(struct lh_entry *entry ## key = json_object_get_object(obj)->head, *entry_next ## key = NULL; \
+		({ if(entry ## key) { \
+			key = (char*)entry ## key->k; \
+			val = (struct json_object*)entry ## key->v; \
+			entry_next ## key = entry ## key->next; \
+		} ; entry ## key; }); \
+		entry ## key = entry_next ## key )
+
+#else /* ANSI C or MSC */
+
+# define json_object_object_foreach(obj,key,val) \
+	char *key;\
+	struct json_object *val; \
+	struct lh_entry *entry ## key; \
+	struct lh_entry *entry_next ## key = NULL; \
+	for(entry ## key = json_object_get_object(obj)->head; \
+		(entry ## key ? ( \
+			key = (char*)entry ## key->k, \
+			val = (struct json_object*)entry ## key->v, \
+			entry_next ## key = entry ## key->next, \
+			entry ## key) : 0); \
+		entry ## key = entry_next ## key)
+
+#endif /* defined(__GNUC__) && !defined(__STRICT_ANSI__) && __STDC_VERSION__ >= 199901L */
+
+/** Iterate through all keys and values of an object (ANSI C Safe)
+ * @param obj the json_object instance
+ * @param iter the object iterator
+ */
+#define json_object_object_foreachC(obj,iter) \
+ for(iter.entry = json_object_get_object(obj)->head; (iter.entry ? (iter.key = (char*)iter.entry->k, iter.val = (struct json_object*)iter.entry->v, iter.entry) : 0); iter.entry = iter.entry->next)
+
+/* Array type methods */
+
+/** Create a new empty json_object of type json_type_array
+ * @returns a json_object of type json_type_array
+ */
+extern struct json_object* json_object_new_array(void);
+
+/** Get the arraylist of a json_object of type json_type_array
+ * @param obj the json_object instance
+ * @returns an arraylist
+ */
+extern struct array_list* json_object_get_array(const struct json_object *obj);
+
+/** Get the length of a json_object of type json_type_array
+ * @param obj the json_object instance
+ * @returns an int
+ */
+extern int json_object_array_length(const struct json_object *obj);
+
+/** Sorts the elements of jso of type json_type_array
+*
+* Pointers to the json_object pointers will be passed as the two arguments
+* to @sort_fn
+*
+* @param obj the json_object instance
+* @param sort_fn a sorting function
+*/
+extern void json_object_array_sort(struct json_object *jso, int(*sort_fn)(const void *, const void *));
+
+/** Binary search a sorted array for a specified key object.
+ *
+ * It depends on your compare function what's sufficient as a key.
+ * Usually you create some dummy object with the parameter compared in
+ * it, to identify the right item you're actually looking for.
+ *
+ * @see json_object_array_sort() for hints on the compare function.
+ *
+ * @param key a dummy json_object with the right key
+ * @param jso the array object we're searching
+ * @param sort_fn the sort/compare function
+ *
+ * @return the wanted json_object instance
+ */
+extern struct json_object* json_object_array_bsearch(
+		const struct json_object *key,
+		const struct json_object *jso,
+		int (*sort_fn)(const void *, const void *));
+
+/** Add an element to the end of a json_object of type json_type_array
+ *
+ * The reference count will *not* be incremented. This is to make adding
+ * fields to objects in code more compact. If you want to retain a reference
+ * to an added object you must wrap the passed object with json_object_get
+ *
+ * @param obj the json_object instance
+ * @param val the json_object to be added
+ */
+extern int json_object_array_add(struct json_object *obj,
+				 struct json_object *val);
+
+/** Insert or replace an element at a specified index in an array (a json_object of type json_type_array)
+ *
+ * The reference count will *not* be incremented. This is to make adding
+ * fields to objects in code more compact. If you want to retain a reference
+ * to an added object you must wrap the passed object with json_object_get
+ *
+ * The reference count of a replaced object will be decremented.
+ *
+ * The array size will be automatically be expanded to the size of the
+ * index if the index is larger than the current size.
+ *
+ * @param obj the json_object instance
+ * @param idx the index to insert the element at
+ * @param val the json_object to be added
+ */
+extern int json_object_array_put_idx(struct json_object *obj, int idx,
+				     struct json_object *val);
+
+/** Get the element at specificed index of the array (a json_object of type json_type_array)
+ * @param obj the json_object instance
+ * @param idx the index to get the element at
+ * @returns the json_object at the specified index (or NULL)
+ */
+extern struct json_object* json_object_array_get_idx(const struct json_object *obj,
+						     int idx);
+
+/* json_bool type methods */
+
+/** Create a new empty json_object of type json_type_boolean
+ * @param b a json_bool TRUE or FALSE (1 or 0)
+ * @returns a json_object of type json_type_boolean
+ */
+extern struct json_object* json_object_new_boolean(json_bool b);
+
+/** Get the json_bool value of a json_object
+ *
+ * The type is coerced to a json_bool if the passed object is not a json_bool.
+ * integer and double objects will return FALSE if there value is zero
+ * or TRUE otherwise. If the passed object is a string it will return
+ * TRUE if it has a non zero length. If any other object type is passed
+ * TRUE will be returned if the object is not NULL.
+ *
+ * @param obj the json_object instance
+ * @returns a json_bool
+ */
+extern json_bool json_object_get_boolean(const struct json_object *obj);
+
+
+/* int type methods */
+
+/** Create a new empty json_object of type json_type_int
+ * Note that values are stored as 64-bit values internally.
+ * To ensure the full range is maintained, use json_object_new_int64 instead.
+ * @param i the integer
+ * @returns a json_object of type json_type_int
+ */
+extern struct json_object* json_object_new_int(int32_t i);
+
+
+/** Create a new empty json_object of type json_type_int
+ * @param i the integer
+ * @returns a json_object of type json_type_int
+ */
+extern struct json_object* json_object_new_int64(int64_t i);
+
+
+/** Get the int value of a json_object
+ *
+ * The type is coerced to a int if the passed object is not a int.
+ * double objects will return their integer conversion. Strings will be
+ * parsed as an integer. If no conversion exists then 0 is returned
+ * and errno is set to EINVAL. null is equivalent to 0 (no error values set)
+ *
+ * Note that integers are stored internally as 64-bit values.
+ * If the value of too big or too small to fit into 32-bit, INT32_MAX or
+ * INT32_MIN are returned, respectively.
+ *
+ * @param obj the json_object instance
+ * @returns an int
+ */
+extern int32_t json_object_get_int(const struct json_object *obj);
+
+/** Get the int value of a json_object
+ *
+ * The type is coerced to a int64 if the passed object is not a int64.
+ * double objects will return their int64 conversion. Strings will be
+ * parsed as an int64. If no conversion exists then 0 is returned.
+ *
+ * NOTE: Set errno to 0 directly before a call to this function to determine
+ * whether or not conversion was successful (it does not clear the value for
+ * you).
+ *
+ * @param obj the json_object instance
+ * @returns an int64
+ */
+extern int64_t json_object_get_int64(const struct json_object *obj);
+
+
+/* double type methods */
+
+/** Create a new empty json_object of type json_type_double
+ * @param d the double
+ * @returns a json_object of type json_type_double
+ */
+extern struct json_object* json_object_new_double(double d);
+
+/**
+ * Create a new json_object of type json_type_double, using
+ * the exact serialized representation of the value.
+ *
+ * This allows for numbers that would otherwise get displayed
+ * inefficiently (e.g. 12.3 => "12.300000000000001") to be
+ * serialized with the more convenient form.
+ *
+ * Note: this is used by json_tokener_parse_ex() to allow for
+ *   an exact re-serialization of a parsed object.
+ *
+ * An equivalent sequence of calls is:
+ * @code
+ *   jso = json_object_new_double(d);
+ *   json_object_set_serializer(d, json_object_userdata_to_json_string,
+ *       strdup(ds), json_object_free_userdata)
+ * @endcode
+ *
+ * @param d the numeric value of the double.
+ * @param ds the string representation of the double.  This will be copied.
+ */
+extern struct json_object* json_object_new_double_s(double d, const char *ds);
+
+/** Get the double floating point value of a json_object
+ *
+ * The type is coerced to a double if the passed object is not a double.
+ * integer objects will return their double conversion. Strings will be
+ * parsed as a double. If no conversion exists then 0.0 is returned and
+ * errno is set to EINVAL. null is equivalent to 0 (no error values set)
+ *
+ * If the value is too big to fit in a double, then the value is set to
+ * the closest infinity with errno set to ERANGE. If strings cannot be
+ * converted to their double value, then EINVAL is set & NaN is returned.
+ *
+ * Arrays of length 0 are interpreted as 0 (with no error flags set).
+ * Arrays of length 1 are effectively cast to the equivalent object and
+ * converted using the above rules.  All other arrays set the error to
+ * EINVAL & return NaN.
+ *
+ * NOTE: Set errno to 0 directly before a call to this function to
+ * determine whether or not conversion was successful (it does not clear
+ * the value for you).
+ *
+ * @param obj the json_object instance
+ * @returns a double floating point number
+ */
+extern double json_object_get_double(const struct json_object *obj);
+
+
+/* string type methods */
+
+/** Create a new empty json_object of type json_type_string
+ *
+ * A copy of the string is made and the memory is managed by the json_object
+ *
+ * @param s the string
+ * @returns a json_object of type json_type_string
+ */
+extern struct json_object* json_object_new_string(const char *s);
+
+extern struct json_object* json_object_new_string_len(const char *s, int len);
+
+/** Get the string value of a json_object
+ *
+ * If the passed object is not of type json_type_string then the JSON
+ * representation of the object is returned.
+ *
+ * The returned string memory is managed by the json_object and will
+ * be freed when the reference count of the json_object drops to zero.
+ *
+ * @param obj the json_object instance
+ * @returns a string
+ */
+extern const char* json_object_get_string(struct json_object *obj);
+
+/** Get the string length of a json_object
+ *
+ * If the passed object is not of type json_type_string then zero
+ * will be returned.
+ *
+ * @param obj the json_object instance
+ * @returns int
+ */
+extern int json_object_get_string_len(const struct json_object *obj);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/include/json-c/json_object_iterator.h b/include/json-c/json_object_iterator.h
new file mode 100644
index 0000000..44c9fb2
--- /dev/null
+++ b/include/json-c/json_object_iterator.h
@@ -0,0 +1,239 @@
+/**
+*******************************************************************************
+* @file json_object_iterator.h
+*
+* Copyright (c) 2009-2012 Hewlett-Packard Development Company, L.P.
+*
+* This library is free software; you can redistribute it and/or modify
+* it under the terms of the MIT license. See COPYING for details.
+*
+* @brief  json-c forces clients to use its private data
+*         structures for JSON Object iteration.  This API
+*         corrects that by abstracting the private json-c
+*         details.
+*
+* API attributes: <br>
+*   * Thread-safe: NO<br>
+*   * Reentrant: NO
+*
+*******************************************************************************
+*/
+
+
+#ifndef JSON_OBJECT_ITERATOR_H
+#define JSON_OBJECT_ITERATOR_H
+
+#include <stddef.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ * Forward declaration for the opaque iterator information.
+ */
+struct json_object_iter_info_;
+
+/**
+ * The opaque iterator that references a name/value pair within
+ * a JSON Object instance or the "end" iterator value.
+ */
+struct json_object_iterator {
+    const void* opaque_;
+};
+
+
+/**
+ * forward declaration of json-c's JSON value instance structure
+ */
+struct json_object;
+
+
+/**
+ * Initializes an iterator structure to a "default" value that
+ * is convenient for initializing an iterator variable to a
+ * default state (e.g., initialization list in a class'
+ * constructor).
+ *
+ * @code
+ * struct json_object_iterator iter = json_object_iter_init_default();
+ * MyClass() : iter_(json_object_iter_init_default())
+ * @endcode
+ *
+ * @note The initialized value doesn't reference any specific
+ *       pair, is considered an invalid iterator, and MUST NOT
+ *       be passed to any json-c API that expects a valid
+ *       iterator.
+ *
+ * @note User and internal code MUST NOT make any assumptions
+ *       about and dependencies on the value of the "default"
+ *       iterator value.
+ *
+ * @return json_object_iterator
+ */
+struct json_object_iterator
+json_object_iter_init_default(void);
+
+/** Retrieves an iterator to the first pair of the JSON Object.
+ *
+ * @warning 	Any modification of the underlying pair invalidates all
+ * 		iterators to that pair.
+ *
+ * @param obj	JSON Object instance (MUST be of type json_object)
+ *
+ * @return json_object_iterator If the JSON Object has at
+ *              least one pair, on return, the iterator refers
+ *              to the first pair. If the JSON Object doesn't
+ *              have any pairs, the returned iterator is
+ *              equivalent to the "end" iterator for the same
+ *              JSON Object instance.
+ *
+ * @code
+ * struct json_object_iterator it;
+ * struct json_object_iterator itEnd;
+ * struct json_object* obj;
+ *
+ * obj = json_tokener_parse("{'first':'george', 'age':100}");
+ * it = json_object_iter_begin(obj);
+ * itEnd = json_object_iter_end(obj);
+ *
+ * while (!json_object_iter_equal(&it, &itEnd)) {
+ *     printf("%s\n",
+ *            json_object_iter_peek_name(&it));
+ *     json_object_iter_next(&it);
+ * }
+ *
+ * @endcode
+ */
+struct json_object_iterator
+json_object_iter_begin(struct json_object* obj);
+
+/** Retrieves the iterator that represents the position beyond the
+ *  last pair of the given JSON Object instance.
+ *
+ *  @warning Do NOT write code that assumes that the "end"
+ *        iterator value is NULL, even if it is so in a
+ *        particular instance of the implementation.
+ *
+ *  @note The reason we do not (and MUST NOT) provide
+ *        "json_object_iter_is_end(json_object_iterator* iter)"
+ *        type of API is because it would limit the underlying
+ *        representation of name/value containment (or force us
+ *        to add additional, otherwise unnecessary, fields to
+ *        the iterator structure). The "end" iterator and the
+ *        equality test method, on the other hand, permit us to
+ *        cleanly abstract pretty much any reasonable underlying
+ *        representation without burdening the iterator
+ *        structure with unnecessary data.
+ *
+ *  @note For performance reasons, memorize the "end" iterator prior
+ *        to any loop.
+ *
+ * @param obj JSON Object instance (MUST be of type json_object)
+ *
+ * @return json_object_iterator On return, the iterator refers
+ *              to the "end" of the Object instance's pairs
+ *              (i.e., NOT the last pair, but "beyond the last
+ *              pair" value)
+ */
+struct json_object_iterator
+json_object_iter_end(const struct json_object* obj);
+
+/** Returns an iterator to the next pair, if any
+ *
+ * @warning	Any modification of the underlying pair
+ *       	invalidates all iterators to that pair.
+ *
+ * @param iter [IN/OUT] Pointer to iterator that references a
+ *         name/value pair; MUST be a valid, non-end iterator.
+ *         WARNING: bad things will happen if invalid or "end"
+ *         iterator is passed. Upon return will contain the
+ *         reference to the next pair if there is one; if there
+ *         are no more pairs, will contain the "end" iterator
+ *         value, which may be compared against the return value
+ *         of json_object_iter_end() for the same JSON Object
+ *         instance.
+ */
+void
+json_object_iter_next(struct json_object_iterator* iter);
+
+
+/** Returns a const pointer to the name of the pair referenced
+ *  by the given iterator.
+ *
+ * @param iter pointer to iterator that references a name/value
+ *             pair; MUST be a valid, non-end iterator.
+ *
+ * @warning	bad things will happen if an invalid or
+ *             	"end" iterator is passed.
+ *
+ * @return const char* Pointer to the name of the referenced
+ *         name/value pair.  The name memory belongs to the
+ *         name/value pair, will be freed when the pair is
+ *         deleted or modified, and MUST NOT be modified or
+ *         freed by the user.
+ */
+const char*
+json_object_iter_peek_name(const struct json_object_iterator* iter);
+
+
+/** Returns a pointer to the json-c instance representing the
+ *  value of the referenced name/value pair, without altering
+ *  the instance's reference count.
+ *
+ * @param iter 	pointer to iterator that references a name/value
+ *             	pair; MUST be a valid, non-end iterator.
+ *
+ * @warning	bad things will happen if invalid or
+ *             "end" iterator is passed.
+ *
+ * @return struct json_object* Pointer to the json-c value
+ *         instance of the referenced name/value pair;  the
+ *         value's reference count is not changed by this
+ *         function: if you plan to hold on to this json-c node,
+ *         take a look at json_object_get() and
+ *         json_object_put(). IMPORTANT: json-c API represents
+ *         the JSON Null value as a NULL json_object instance
+ *         pointer.
+ */
+struct json_object*
+json_object_iter_peek_value(const struct json_object_iterator* iter);
+
+
+/** Tests two iterators for equality.  Typically used to test
+ *  for end of iteration by comparing an iterator to the
+ *  corresponding "end" iterator (that was derived from the same
+ *  JSON Object instance).
+ *
+ *  @note The reason we do not (and MUST NOT) provide
+ *        "json_object_iter_is_end(json_object_iterator* iter)"
+ *        type of API is because it would limit the underlying
+ *        representation of name/value containment (or force us
+ *        to add additional, otherwise unnecessary, fields to
+ *        the iterator structure). The equality test method, on
+ *        the other hand, permits us to cleanly abstract pretty
+ *        much any reasonable underlying representation.
+ *
+ * @param iter1 Pointer to first valid, non-NULL iterator
+ * @param iter2 POinter to second valid, non-NULL iterator
+ *
+ * @warning	if a NULL iterator pointer or an uninitialized
+ *       	or invalid iterator, or iterators derived from
+ *       	different JSON Object instances are passed, bad things
+ *       	will happen!
+ *
+ * @return json_bool non-zero if iterators are equal (i.e., both
+ *         reference the same name/value pair or are both at
+ *         "end"); zero if they are not equal.
+ */
+json_bool
+json_object_iter_equal(const struct json_object_iterator* iter1,
+                       const struct json_object_iterator* iter2);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+
+#endif /* JSON_OBJECT_ITERATOR_H */
diff --git a/include/json-c/json_object_private.h b/include/json-c/json_object_private.h
new file mode 100644
index 0000000..67a77f8
--- /dev/null
+++ b/include/json-c/json_object_private.h
@@ -0,0 +1,55 @@
+/*
+ * $Id: json_object_private.h,v 1.4 2006/01/26 02:16:28 mclark Exp $
+ *
+ * Copyright (c) 2004, 2005 Metaparadigm Pte. Ltd.
+ * Michael Clark <michael at metaparadigm.com>
+ *
+ * This library is free software; you can redistribute it and/or modify
+ * it under the terms of the MIT license. See COPYING for details.
+ *
+ */
+
+#ifndef _json_object_private_h_
+#define _json_object_private_h_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define LEN_DIRECT_STRING_DATA 32 /**< how many bytes are directly stored in json_object for strings? */
+
+typedef void (json_object_private_delete_fn)(struct json_object *o);
+
+struct json_object
+{
+  enum json_type o_type;
+  json_object_private_delete_fn *_delete;
+  json_object_to_json_string_fn *_to_json_string;
+  int _ref_count;
+  struct printbuf *_pb;
+  union data {
+    json_bool c_boolean;
+    double c_double;
+    int64_t c_int64;
+    struct lh_table *c_object;
+    struct array_list *c_array;
+    struct {
+	union {
+		/* optimize: if we have small strings, we can store them
+		 * directly. This saves considerable CPU cycles AND memory.
+		 */
+		char *ptr;
+		char data[LEN_DIRECT_STRING_DATA];
+	} str;
+        int len;
+    } c_string;
+  } o;
+  json_object_delete_fn *_user_delete;
+  void *_userdata;
+};
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/include/json-c/json_tokener.h b/include/json-c/json_tokener.h
new file mode 100644
index 0000000..5a7a636
--- /dev/null
+++ b/include/json-c/json_tokener.h
@@ -0,0 +1,208 @@
+/*
+ * $Id: json_tokener.h,v 1.10 2006/07/25 03:24:50 mclark Exp $
+ *
+ * Copyright (c) 2004, 2005 Metaparadigm Pte. Ltd.
+ * Michael Clark <michael at metaparadigm.com>
+ *
+ * This library is free software; you can redistribute it and/or modify
+ * it under the terms of the MIT license. See COPYING for details.
+ *
+ */
+
+#ifndef _json_tokener_h_
+#define _json_tokener_h_
+
+#include <stddef.h>
+#include "json_object.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+enum json_tokener_error {
+  json_tokener_success,
+  json_tokener_continue,
+  json_tokener_error_depth,
+  json_tokener_error_parse_eof,
+  json_tokener_error_parse_unexpected,
+  json_tokener_error_parse_null,
+  json_tokener_error_parse_boolean,
+  json_tokener_error_parse_number,
+  json_tokener_error_parse_array,
+  json_tokener_error_parse_object_key_name,
+  json_tokener_error_parse_object_key_sep,
+  json_tokener_error_parse_object_value_sep,
+  json_tokener_error_parse_string,
+  json_tokener_error_parse_comment,
+  json_tokener_error_size
+};
+
+enum json_tokener_state {
+  json_tokener_state_eatws,
+  json_tokener_state_start,
+  json_tokener_state_finish,
+  json_tokener_state_null,
+  json_tokener_state_comment_start,
+  json_tokener_state_comment,
+  json_tokener_state_comment_eol,
+  json_tokener_state_comment_end,
+  json_tokener_state_string,
+  json_tokener_state_string_escape,
+  json_tokener_state_escape_unicode,
+  json_tokener_state_boolean,
+  json_tokener_state_number,
+  json_tokener_state_array,
+  json_tokener_state_array_add,
+  json_tokener_state_array_sep,
+  json_tokener_state_object_field_start,
+  json_tokener_state_object_field,
+  json_tokener_state_object_field_end,
+  json_tokener_state_object_value,
+  json_tokener_state_object_value_add,
+  json_tokener_state_object_sep,
+  json_tokener_state_array_after_sep,
+  json_tokener_state_object_field_start_after_sep,
+  json_tokener_state_inf
+};
+
+struct json_tokener_srec
+{
+  enum json_tokener_state state, saved_state;
+  struct json_object *obj;
+  struct json_object *current;
+  char *obj_field_name;
+};
+
+#define JSON_TOKENER_DEFAULT_DEPTH 32
+
+struct json_tokener
+{
+  char *str;
+  struct printbuf *pb;
+  int max_depth, depth, is_double, st_pos, char_offset;
+  enum json_tokener_error err;
+  unsigned int ucs_char;
+  char quote_char;
+  struct json_tokener_srec *stack;
+  int flags;
+};
+
+/**
+ * Be strict when parsing JSON input.  Use caution with
+ * this flag as what is considered valid may become more
+ * restrictive from one release to the next, causing your
+ * code to fail on previously working input.
+ *
+ * This flag is not set by default.
+ *
+ * @see json_tokener_set_flags()
+ */
+#define JSON_TOKENER_STRICT  0x01
+
+/**
+ * Given an error previously returned by json_tokener_get_error(),
+ * return a human readable description of the error.
+ *
+ * @return a generic error message is returned if an invalid error value is provided.
+ */
+const char *json_tokener_error_desc(enum json_tokener_error jerr);
+
+/**
+ * Retrieve the error caused by the last call to json_tokener_parse_ex(),
+ * or json_tokener_success if there is no error.
+ *
+ * When parsing a JSON string in pieces, if the tokener is in the middle
+ * of parsing this will return json_tokener_continue.
+ *
+ * See also json_tokener_error_desc().
+ */
+enum json_tokener_error json_tokener_get_error(struct json_tokener *tok);
+
+extern struct json_tokener* json_tokener_new(void);
+extern struct json_tokener* json_tokener_new_ex(int depth);
+extern void json_tokener_free(struct json_tokener *tok);
+extern void json_tokener_reset(struct json_tokener *tok);
+extern struct json_object* json_tokener_parse(const char *str);
+extern struct json_object* json_tokener_parse_verbose(const char *str, enum json_tokener_error *error);
+
+/**
+ * Set flags that control how parsing will be done.
+ */
+extern void json_tokener_set_flags(struct json_tokener *tok, int flags);
+
+/**
+ * Parse a string and return a non-NULL json_object if a valid JSON value
+ * is found.  The string does not need to be a JSON object or array;
+ * it can also be a string, number or boolean value.
+ *
+ * A partial JSON string can be parsed.  If the parsing is incomplete,
+ * NULL will be returned and json_tokener_get_error() will be return
+ * json_tokener_continue.
+ * json_tokener_parse_ex() can then be called with additional bytes in str
+ * to continue the parsing.
+ *
+ * If json_tokener_parse_ex() returns NULL and the error anything other than
+ * json_tokener_continue, a fatal error has occurred and parsing must be
+ * halted.  Then tok object must not be re-used until json_tokener_reset() is
+ * called.
+ *
+ * When a valid JSON value is parsed, a non-NULL json_object will be
+ * returned.  Also, json_tokener_get_error() will return json_tokener_success.
+ * Be sure to check the type with json_object_is_type() or
+ * json_object_get_type() before using the object.
+ *
+ * @b XXX this shouldn't use internal fields:
+ * Trailing characters after the parsed value do not automatically cause an
+ * error.  It is up to the caller to decide whether to treat this as an
+ * error or to handle the additional characters, perhaps by parsing another
+ * json value starting from that point.
+ *
+ * Extra characters can be detected by comparing the tok->char_offset against
+ * the length of the last len parameter passed in.
+ *
+ * The tokener does \b not maintain an internal buffer so the caller is
+ * responsible for calling json_tokener_parse_ex with an appropriate str
+ * parameter starting with the extra characters.
+ *
+ * This interface is presently not 64-bit clean due to the int len argument
+ * so the function limits the maximum string size to INT32_MAX (2GB).
+ * If the function is called with len == -1 then strlen is called to check
+ * the string length is less than INT32_MAX (2GB)
+ *
+ * Example:
+ * @code
+json_object *jobj = NULL;
+const char *mystring = NULL;
+int stringlen = 0;
+enum json_tokener_error jerr;
+do {
+	mystring = ...  // get JSON string, e.g. read from file, etc...
+	stringlen = strlen(mystring);
+	jobj = json_tokener_parse_ex(tok, mystring, stringlen);
+} while ((jerr = json_tokener_get_error(tok)) == json_tokener_continue);
+if (jerr != json_tokener_success)
+{
+	fprintf(stderr, "Error: %s\n", json_tokener_error_desc(jerr));
+	// Handle errors, as appropriate for your application.
+}
+if (tok->char_offset < stringlen) // XXX shouldn't access internal fields
+{
+	// Handle extra characters after parsed object as desired.
+	// e.g. issue an error, parse another object from that point, etc...
+}
+// Success, use jobj here.
+
+ at endcode
+ *
+ * @param tok a json_tokener previously allocated with json_tokener_new()
+ * @param str an string with any valid JSON expression, or portion of.  This does not need to be null terminated.
+ * @param len the length of str
+ */
+extern struct json_object* json_tokener_parse_ex(struct json_tokener *tok,
+						 const char *str, int len);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/include/json-c/json_util.h b/include/json-c/json_util.h
new file mode 100644
index 0000000..f6fc52c
--- /dev/null
+++ b/include/json-c/json_util.h
@@ -0,0 +1,51 @@
+/*
+ * $Id: json_util.h,v 1.4 2006/01/30 23:07:57 mclark Exp $
+ *
+ * Copyright (c) 2004, 2005 Metaparadigm Pte. Ltd.
+ * Michael Clark <michael at metaparadigm.com>
+ *
+ * This library is free software; you can redistribute it and/or modify
+ * it under the terms of the MIT license. See COPYING for details.
+ *
+ */
+
+#ifndef _json_util_h_
+#define _json_util_h_
+
+#include "json_object.h"
+
+#ifndef json_min
+#define json_min(a,b) ((a) < (b) ? (a) : (b))
+#endif
+
+#ifndef json_max
+#define json_max(a,b) ((a) > (b) ? (a) : (b))
+#endif
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define JSON_FILE_BUF_SIZE 4096
+
+/* utility functions */
+extern struct json_object* json_object_from_file(const char *filename);
+extern struct json_object* json_object_from_fd(int fd);
+extern int json_object_to_file(const char *filename, struct json_object *obj);
+extern int json_object_to_file_ext(const char *filename, struct json_object *obj, int flags);
+extern int json_parse_int64(const char *buf, int64_t *retval);
+extern int json_parse_double(const char *buf, double *retval);
+
+
+/**
+ * Return a string describing the type of the object.
+ * e.g. "int", or "object", etc...
+ */
+extern const char *json_type_to_name(enum json_type o_type);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/include/json-c/linkhash.h b/include/json-c/linkhash.h
new file mode 100644
index 0000000..ead4818
--- /dev/null
+++ b/include/json-c/linkhash.h
@@ -0,0 +1,342 @@
+/*
+ * $Id: linkhash.h,v 1.6 2006/01/30 23:07:57 mclark Exp $
+ *
+ * Copyright (c) 2004, 2005 Metaparadigm Pte. Ltd.
+ * Michael Clark <michael at metaparadigm.com>
+ * Copyright (c) 2009 Hewlett-Packard Development Company, L.P.
+ *
+ * This library is free software; you can redistribute it and/or modify
+ * it under the terms of the MIT license. See COPYING for details.
+ *
+ */
+
+#ifndef _linkhash_h_
+#define _linkhash_h_
+
+#include "json_object.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ * golden prime used in hash functions
+ */
+#define LH_PRIME 0x9e370001UL
+
+/**
+ * The fraction of filled hash buckets until an insert will cause the table
+ * to be resized.
+ * This can range from just above 0 up to 1.0.
+ */
+#define LH_LOAD_FACTOR 0.66
+
+/**
+ * sentinel pointer value for empty slots
+ */
+#define LH_EMPTY (void*)-1
+
+/**
+ * sentinel pointer value for freed slots
+ */
+#define LH_FREED (void*)-2
+
+/**
+ * default string hash function
+ */
+#define JSON_C_STR_HASH_DFLT 0
+
+/**
+ * perl-like string hash function
+ */
+#define JSON_C_STR_HASH_PERLLIKE 1
+
+/**
+ * This function sets the hash function to be used for strings.
+ * Must be one of the JSON_C_STR_HASH_* values.
+ * @returns 0 - ok, -1 if parameter was invalid
+ */
+int json_global_set_string_hash(const int h);
+
+struct lh_entry;
+
+/**
+ * callback function prototypes
+ */
+typedef void (lh_entry_free_fn) (struct lh_entry *e);
+/**
+ * callback function prototypes
+ */
+typedef unsigned long (lh_hash_fn) (const void *k);
+/**
+ * callback function prototypes
+ */
+typedef int (lh_equal_fn) (const void *k1, const void *k2);
+
+/**
+ * An entry in the hash table
+ */
+struct lh_entry {
+	/**
+	 * The key.
+	 */
+	void *k;
+	int k_is_constant;
+	/**
+	 * The value.
+	 */
+	const void *v;
+	/**
+	 * The next entry
+	 */
+	struct lh_entry *next;
+	/**
+	 * The previous entry.
+	 */
+	struct lh_entry *prev;
+};
+
+
+/**
+ * The hash table structure.
+ */
+struct lh_table {
+	/**
+	 * Size of our hash.
+	 */
+	int size;
+	/**
+	 * Numbers of entries.
+	 */
+	int count;
+
+	/**
+	 * The first entry.
+	 */
+	struct lh_entry *head;
+
+	/**
+	 * The last entry.
+	 */
+	struct lh_entry *tail;
+
+	struct lh_entry *table;
+
+	/**
+	 * A pointer onto the function responsible for freeing an entry.
+	 */
+	lh_entry_free_fn *free_fn;
+	lh_hash_fn *hash_fn;
+	lh_equal_fn *equal_fn;
+};
+
+
+/**
+ * Convenience list iterator.
+ */
+#define lh_foreach(table, entry) \
+for(entry = table->head; entry; entry = entry->next)
+
+/**
+ * lh_foreach_safe allows calling of deletion routine while iterating.
+ */
+#define lh_foreach_safe(table, entry, tmp) \
+for(entry = table->head; entry && ((tmp = entry->next) || 1); entry = tmp)
+
+
+
+/**
+ * Create a new linkhash table.
+ * @param size initial table size. The table is automatically resized
+ * although this incurs a performance penalty.
+ * @param free_fn callback function used to free memory for entries
+ * when lh_table_free or lh_table_delete is called.
+ * If NULL is provided, then memory for keys and values
+ * must be freed by the caller.
+ * @param hash_fn  function used to hash keys. 2 standard ones are defined:
+ * lh_ptr_hash and lh_char_hash for hashing pointer values
+ * and C strings respectively.
+ * @param equal_fn comparison function to compare keys. 2 standard ones defined:
+ * lh_ptr_hash and lh_char_hash for comparing pointer values
+ * and C strings respectively.
+ * @return On success, a pointer to the new linkhash table is returned.
+ * 	On error, a null pointer is returned.
+ */
+extern struct lh_table* lh_table_new(int size,
+				     lh_entry_free_fn *free_fn,
+				     lh_hash_fn *hash_fn,
+				     lh_equal_fn *equal_fn);
+
+/**
+ * Convenience function to create a new linkhash
+ * table with char keys.
+ * @param size initial table size.
+ * @param name table name.
+ * @param free_fn callback function used to free memory for entries.
+ * @return On success, a pointer to the new linkhash table is returned.
+ * 	On error, a null pointer is returned.
+ */
+extern struct lh_table* lh_kchar_table_new(int size,
+					   lh_entry_free_fn *free_fn);
+
+
+/**
+ * Convenience function to create a new linkhash
+ * table with ptr keys.
+ * @param size initial table size.
+ * @param name table name.
+ * @param free_fn callback function used to free memory for entries.
+ * @return On success, a pointer to the new linkhash table is returned.
+ * 	On error, a null pointer is returned.
+ */
+extern struct lh_table* lh_kptr_table_new(int size,
+					  lh_entry_free_fn *free_fn);
+
+
+/**
+ * Free a linkhash table.
+ * If a callback free function is provided then it is called for all
+ * entries in the table.
+ * @param t table to free.
+ */
+extern void lh_table_free(struct lh_table *t);
+
+
+/**
+ * Insert a record into the table.
+ * @param t the table to insert into.
+ * @param k a pointer to the key to insert.
+ * @param v a pointer to the value to insert.
+ *
+ * @return On success, <code>0</code> is returned.
+ * 	On error, a negative value is returned.
+ */
+extern int lh_table_insert(struct lh_table *t, void *k, const void *v);
+
+
+/**
+ * Insert a record into the table. This one accepts the key's hash in additon
+ * to the key. This is an exension to support functions that need to calculate
+ * the hash several times and allows them to do it just once and then pass
+ * in the hash to all utility functions. Depending on use case, this can be a 
+ * very considerate performance improvement.
+ * @param t the table to insert into.
+ * @param k a pointer to the key to insert.
+ * @param v a pointer to the value to insert.
+ * @param h hash value of the key to insert
+ * @param opts opts, a subset of JSON_OBJECT_ADD_* flags is supported
+ */
+extern int lh_table_insert_w_hash(struct lh_table *t, void *k, const void *v, const unsigned long h, const unsigned opts);
+
+
+/**
+ * Lookup a record into the table.
+ * @param t the table to lookup
+ * @param k a pointer to the key to lookup
+ * @return a pointer to the record structure of the value or NULL if it does not exist.
+ */
+extern struct lh_entry* lh_table_lookup_entry(struct lh_table *t, const void *k);
+
+/**
+ * Lookup a record into the table. This one accepts the key's hash in additon
+ * to the key. This is an exension to support functions that need to calculate
+ * the hash several times and allows them to do it just once and then pass
+ * in the hash to all utility functions. Depending on use case, this can be a 
+ * very considerate performance improvement.
+ * @param t the table to lookup
+ * @param k a pointer to the key to lookup
+ * @param h hash value of the key to lookup
+ * @return a pointer to the record structure of the value or NULL if it does not exist.
+ */
+extern struct lh_entry* lh_table_lookup_entry_w_hash(struct lh_table *t, const void *k, const unsigned long h);
+
+/**
+ * Lookup a record into the table
+ * @param t the table to lookup
+ * @param k a pointer to the key to lookup
+ * @return a pointer to the found value or NULL if it does not exist.
+ * @deprecated Use lh_table_lookup_ex instead.
+ */
+THIS_FUNCTION_IS_DEPRECATED(extern const void* lh_table_lookup(struct lh_table *t, const void *k));
+
+/**
+ * Lookup a record in the table
+ * @param t the table to lookup
+ * @param k a pointer to the key to lookup
+ * @param v a pointer to a where to store the found value (set to NULL if it doesn't exist).
+ * @return whether or not the key was found
+ */
+extern json_bool lh_table_lookup_ex(struct lh_table *t, const void *k, void **v);
+
+/**
+ * Delete a record from the table.
+ * If a callback free function is provided then it is called for the
+ * for the item being deleted.
+ * @param t the table to delete from.
+ * @param e a pointer to the entry to delete.
+ * @return 0 if the item was deleted.
+ * @return -1 if it was not found.
+ */
+extern int lh_table_delete_entry(struct lh_table *t, struct lh_entry *e);
+
+
+/**
+ * Delete a record from the table.
+ * If a callback free function is provided then it is called for the
+ * for the item being deleted.
+ * @param t the table to delete from.
+ * @param k a pointer to the key to delete.
+ * @return 0 if the item was deleted.
+ * @return -1 if it was not found.
+ */
+extern int lh_table_delete(struct lh_table *t, const void *k);
+
+extern int lh_table_length(struct lh_table *t);
+
+/**
+ * Prints a message to <code>stdout</code>,
+ * then exits the program with an exit code of <code>1</code>.
+ *
+ * @param msg Message format string, like for <code>printf</code>.
+ * @param ... Format args.
+ *
+ * @deprecated Since it is not a good idea to exit the entire program
+ * 	because of an internal library failure, json-c will no longer
+ * 	use this function internally.
+ * 	However, because its interface is public, it will remain part of
+ * 	the API on the off chance of legacy software using it externally.
+ */
+void lh_abort(const char *msg, ...);
+
+/**
+ * Resizes the specified table.
+ *
+ * @param t Pointer to table to resize.
+ * @param new_size New table size. Must be positive.
+ *
+ * @return On success, <code>0</code> is returned.
+ * 	On error, a negative value is returned.
+ */
+int lh_table_resize(struct lh_table *t, int new_size);
+
+
+/**
+ * Calculate the hash of a key for a given table.
+ * This is an exension to support functions that need to calculate
+ * the hash several times and allows them to do it just once and then pass
+ * in the hash to all utility functions. Depending on use case, this can be a 
+ * very considerate performance improvement.
+ * @param t the table (used to obtain hash function)
+ * @param k a pointer to the key to lookup
+ * @return the key's hash
+ */
+static inline unsigned long lh_get_hash(const struct lh_table *t, const void *k)
+{
+	return t->hash_fn(k);
+}
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/include/json-c/math_compat.h b/include/json-c/math_compat.h
new file mode 100644
index 0000000..baf3eb9
--- /dev/null
+++ b/include/json-c/math_compat.h
@@ -0,0 +1,31 @@
+#ifndef __math_compat_h
+#define __math_compat_h
+
+/* Define isnan, isinf, infinity and nan on Windows/MSVC */
+
+#ifndef HAVE_DECL_ISNAN
+# ifdef HAVE_DECL__ISNAN
+#include <float.h>
+#define isnan(x) _isnan(x)
+# endif
+#endif
+
+#ifndef HAVE_DECL_ISINF
+# ifdef HAVE_DECL__FINITE
+#include <float.h>
+#define isinf(x) (!_finite(x))
+# endif
+#endif
+
+#ifndef HAVE_DECL_INFINITY
+#include <float.h>
+#define INFINITY (DBL_MAX + DBL_MAX)
+#define HAVE_DECL_INFINITY
+#endif
+
+#ifndef HAVE_DECL_NAN
+#define NAN (INFINITY - INFINITY)
+#define HAVE_DECL_NAN
+#endif
+
+#endif
diff --git a/include/json-c/printbuf.h b/include/json-c/printbuf.h
new file mode 100644
index 0000000..b1bde7f
--- /dev/null
+++ b/include/json-c/printbuf.h
@@ -0,0 +1,77 @@
+/*
+ * $Id: printbuf.h,v 1.4 2006/01/26 02:16:28 mclark Exp $
+ *
+ * Copyright (c) 2004, 2005 Metaparadigm Pte. Ltd.
+ * Michael Clark <michael at metaparadigm.com>
+ *
+ * This library is free software; you can redistribute it and/or modify
+ * it under the terms of the MIT license. See COPYING for details.
+ *
+ *
+ * Copyright (c) 2008-2009 Yahoo! Inc.  All rights reserved.
+ * The copyrights to the contents of this file are licensed under the MIT License
+ * (http://www.opensource.org/licenses/mit-license.php)
+ */
+
+#ifndef _printbuf_h_
+#define _printbuf_h_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+struct printbuf {
+  char *buf;
+  int bpos;
+  int size;
+};
+
+extern struct printbuf*
+printbuf_new(void);
+
+/* As an optimization, printbuf_memappend_fast is defined as a macro
+ * that handles copying data if the buffer is large enough; otherwise
+ * it invokes printbuf_memappend_real() which performs the heavy
+ * lifting of realloc()ing the buffer and copying data.
+ * Your code should not use printbuf_memappend directly--use
+ * printbuf_memappend_fast instead.
+ */
+extern int
+printbuf_memappend(struct printbuf *p, const char *buf, int size);
+
+#define printbuf_memappend_fast(p, bufptr, bufsize)          \
+do {                                                         \
+  if ((p->size - p->bpos) > bufsize) {                       \
+    memcpy(p->buf + p->bpos, (bufptr), bufsize);             \
+    p->bpos += bufsize;                                      \
+    p->buf[p->bpos]= '\0';                                   \
+  } else {  printbuf_memappend(p, (bufptr), bufsize); }      \
+} while (0)
+
+#define printbuf_length(p) ((p)->bpos)
+
+/**
+ * Set len bytes of the buffer to charvalue, starting at offset offset.
+ * Similar to calling memset(x, charvalue, len);
+ *
+ * The memory allocated for the buffer is extended as necessary.
+ *
+ * If offset is -1, this starts at the end of the current data in the buffer.
+ */
+extern int
+printbuf_memset(struct printbuf *pb, int offset, int charvalue, int len);
+
+extern int
+sprintbuf(struct printbuf *p, const char *msg, ...);
+
+extern void
+printbuf_reset(struct printbuf *p);
+
+extern void
+printbuf_free(struct printbuf *p);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/include/json-c/random_seed.h b/include/json-c/random_seed.h
new file mode 100644
index 0000000..38490e9
--- /dev/null
+++ b/include/json-c/random_seed.h
@@ -0,0 +1,25 @@
+/*
+ * random_seed.h
+ *
+ * Copyright (c) 2013 Metaparadigm Pte. Ltd.
+ * Michael Clark <michael at metaparadigm.com>
+ *
+ * This library is free software; you can redistribute it and/or modify
+ * it under the terms of the MIT license. See COPYING for details.
+ *
+ */
+
+#ifndef seed_h
+#define seed_h
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+extern int json_c_get_random_seed(void);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/setup.py.in b/setup.py.in
index 302dcd4..25f88f7 100755
--- a/setup.py.in
+++ b/setup.py.in
@@ -3,13 +3,15 @@ from numpy.distutils.core import setup, Extension
 #from numpy.distutils.ccompiler import CCompiler
 import os,sys,string
 
-include_dirs = [numpy.lib.utils.get_include(),"include","include/cdTime"]
+include_dirs = [numpy.lib.utils.get_include(),"include","include/cdTime","include/json-c"]
 
 library_dirs = [ os.path.join("@prefix@","lib") ,'.']
 include_dirs.append(os.path.join("@prefix@","include"))
 libraries = []
 
-for st in ["@NCLDFLAGS@", "@NCCFLAGS@", "@UDUNITS2FLAGS@", "@UDUNITS2LDFLAGS@", "@UUIDFLAGS@", "@UUIDLDFLAGS@"]:
+for st in ["@NCLDFLAGS@", "@NCCFLAGS@",  
+           "@UDUNITS2FLAGS@", "@UDUNITS2LDFLAGS@",
+           "@UUIDFLAGS@", "@UUIDLDFLAGS@"]:
    sp = st.strip().split()
    for s in sp:
       if s[:2]=='-L':
@@ -20,7 +22,6 @@ for st in ["@NCLDFLAGS@", "@NCCFLAGS@", "@UDUNITS2FLAGS@", "@UDUNITS2LDFLAGS@",
         include_dirs.append(s[2:])
 
 srcfiles = "@LIBSOURCES@".split()
-srcfiles.insert(0,os.path.join("Src","_cmormodule.c"))
 
 macros=[]
 for m in "@MACROS@".split():
@@ -46,8 +47,8 @@ print 'src:',srcfiles
 print 'macros:',macros
 
 setup (name = "CMOR",
-       version='2.0',
-       author='Charles Doutriaux, PCMDI',
+       version='3.0',
+       author='Denis Nadeau, AIMS',
        description = "Python Interface to CMOR output library",
        url = "http://www-pcmdi.llnl.gov/cmor",
        packages = ['cmor'],

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-science/packages/cmor.git



More information about the debian-science-commits mailing list